mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 03:53:38 +00:00
lib: ip prefix-list enforce expected ge le behavior
When specifying only an "le" for an existing ip prefix-list qualified with both an "le" and "ge" make sure to remove the "ge" property so it does not stay in the tree. E.g. Saying these two things in order: ip prefix-list test seq 1 permit 1.1.0.0/16 ge 18 le 24 ip prefix-list test seq 1 permit 1.1.0.0/16 ge 18 ... should result in the second statement "overwriting" the first like this: vxdev-arch# do show ip prefix-list ZEBRA: ip prefix-list foobar: 3 entries seq 1 permit 15.0.0.0/16 ge 18 Previously this did not happen and "le" would stick around since it was never given NB_OP_DESTROY and purged from the data tree. Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
This commit is contained in:
parent
d7e594edd2
commit
6907bb6bbf
@ -1360,14 +1360,31 @@ DEFPY_YANG(
|
|||||||
nb_cli_enqueue_change(vty, "./ipv4-prefix", NB_OP_MODIFY,
|
nb_cli_enqueue_change(vty, "./ipv4-prefix", NB_OP_MODIFY,
|
||||||
prefix_str);
|
prefix_str);
|
||||||
|
|
||||||
if (ge_str)
|
if (ge_str) {
|
||||||
nb_cli_enqueue_change(
|
nb_cli_enqueue_change(
|
||||||
vty, "./ipv4-prefix-length-greater-or-equal",
|
vty, "./ipv4-prefix-length-greater-or-equal",
|
||||||
NB_OP_MODIFY, ge_str);
|
NB_OP_MODIFY, ge_str);
|
||||||
if (le_str)
|
} else {
|
||||||
|
/*
|
||||||
|
* Remove old ge if not being modified
|
||||||
|
*/
|
||||||
|
nb_cli_enqueue_change(
|
||||||
|
vty, "./ipv4-prefix-length-greater-or-equal",
|
||||||
|
NB_OP_DESTROY, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (le_str) {
|
||||||
nb_cli_enqueue_change(
|
nb_cli_enqueue_change(
|
||||||
vty, "./ipv4-prefix-length-lesser-or-equal",
|
vty, "./ipv4-prefix-length-lesser-or-equal",
|
||||||
NB_OP_MODIFY, le_str);
|
NB_OP_MODIFY, le_str);
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* Remove old le if not being modified
|
||||||
|
*/
|
||||||
|
nb_cli_enqueue_change(
|
||||||
|
vty, "./ipv4-prefix-length-lesser-or-equal",
|
||||||
|
NB_OP_DESTROY, NULL);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
nb_cli_enqueue_change(vty, "./any", NB_OP_CREATE, NULL);
|
nb_cli_enqueue_change(vty, "./any", NB_OP_CREATE, NULL);
|
||||||
}
|
}
|
||||||
@ -1561,14 +1578,31 @@ DEFPY_YANG(
|
|||||||
nb_cli_enqueue_change(vty, "./ipv6-prefix", NB_OP_MODIFY,
|
nb_cli_enqueue_change(vty, "./ipv6-prefix", NB_OP_MODIFY,
|
||||||
prefix_str);
|
prefix_str);
|
||||||
|
|
||||||
if (ge_str)
|
if (ge_str) {
|
||||||
nb_cli_enqueue_change(
|
nb_cli_enqueue_change(
|
||||||
vty, "./ipv6-prefix-length-greater-or-equal",
|
vty, "./ipv6-prefix-length-greater-or-equal",
|
||||||
NB_OP_MODIFY, ge_str);
|
NB_OP_MODIFY, ge_str);
|
||||||
if (le_str)
|
} else {
|
||||||
|
/*
|
||||||
|
* Remove old ge if not being modified
|
||||||
|
*/
|
||||||
|
nb_cli_enqueue_change(
|
||||||
|
vty, "./ipv6-prefix-length-greater-or-equal",
|
||||||
|
NB_OP_DESTROY, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (le_str) {
|
||||||
nb_cli_enqueue_change(
|
nb_cli_enqueue_change(
|
||||||
vty, "./ipv6-prefix-length-lesser-or-equal",
|
vty, "./ipv6-prefix-length-lesser-or-equal",
|
||||||
NB_OP_MODIFY, le_str);
|
NB_OP_MODIFY, le_str);
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* Remove old le if not being modified
|
||||||
|
*/
|
||||||
|
nb_cli_enqueue_change(
|
||||||
|
vty, "./ipv6-prefix-length-lesser-or-equal",
|
||||||
|
NB_OP_DESTROY, NULL);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
nb_cli_enqueue_change(vty, "./any", NB_OP_CREATE, NULL);
|
nb_cli_enqueue_change(vty, "./any", NB_OP_CREATE, NULL);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user