summaryrefslogtreecommitdiff
path: root/lib/defaults.c
diff options
context:
space:
mode:
authoranlan_cs <vic.lan@pica8.com>2023-01-09 10:43:59 +0800
committeranlan_cs <vic.lan@pica8.com>2023-01-17 09:36:50 +0800
commitefa354a97886d8d77d2c65b72bafa8ef3ad3336a (patch)
treee8c9aad5032e964174c50308070178c860a0054b /lib/defaults.c
parenta8adf1b3cb313490a3f2ef5c03256e04546e0de4 (diff)
lib: fix wrong returned value for filter
When setting rule for access-list ( and prefix-list ) without sequence, it will automatically get a sequence by `acl_get_seq()`, and return `CMD_SUCCESS` for command even this sequence value is wrong. In this scene, `CMD_WARNING_CONFIG_FAILED` should be returned with a warning. So, add the check in `acl_get_seq()` and move `nb_cli_enqueue_change()` after the check of wrong sequence. Both `plist_remove_if_empty()` and `acl_remove_if_empty()` should ignore this check, there is no change on them. Before: ``` anlan(config)# access-list aa seq 4294967295 deny 6.6.6.6/32 anlan(config)# access-list aa deny 6.6.6.7/32 <- Return CMD_SUCCESS YANG error(s): Value "4294967300" is out of uint32's min/max bounds. Value "4294967300" is out of uint32's min/max bounds. Value "4294967300" is out of uint32's min/max bounds. Value "4294967300" is out of uint32's min/max bounds. Value "4294967300" is out of uint32's min/max bounds. YANG path: Schema location /frr-filter:lib/prefix-list/entry/sequence. % Failed to edit configuration. ``` After: ``` anlan(config)# access-list aa seq 4294967295 deny 6.6.6.6/32 anlan(config)# access-list aa deny 6.6.6.7/32 <- Return CMD_WARNING_CONFIG_FAILED % Malformed sequence value ``` Additionally, fixed the overflow issue on `acl_get_seq()` on **32bit** platforms. Just change the returned type of `acl_get_seq()` from `long` to `int64_t`. Before: ``` anlan(config)# access-list bb seq 4294967295 deny 6.6.6.6/32 anlan(config)# access-list bb deny 6.6.6.7/32 anlan(config)# do show run ... access-list bb seq 4294967295 deny 6.6.6.6/32 access-list bb seq 4 deny 6.6.6.7/32 <- Overflow ``` After: ``` anlan(config)# access-list bb seq 4294967295 deny 6.6.6.6/32 anlan(config)# access-list bb deny 6.6.6.7/32 % Malformed sequence value ``` Signed-off-by: anlan_cs <vic.lan@pica8.com>
Diffstat (limited to 'lib/defaults.c')
0 files changed, 0 insertions, 0 deletions