summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2025-02-11 21:22:12 +0200
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2025-03-22 10:41:34 +0000
commit0af2a5fd0038aacbc21950e28c66958a83ac339f (patch)
treeccf692ec2ee67596f023b43beefd717bed158ac3
parent274b522fdd5fd0216f6e509255961c289e3ec11e (diff)
zebra: Do not flush an existing vni configuration trying to remove wrong vnimergify/bp/stable/10.3/pr-18108
Before: ``` pc.donatas.net(config)# do sh run | include vni vni 1 pc.donatas.net(config)# no vni 2 pc.donatas.net(config)# do sh run | include vni pc.donatas.net(config)# ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> (cherry picked from commit 44fe3981ee388f7c60ab2635309bce34774116e1)
-rw-r--r--zebra/zebra_cli.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/zebra/zebra_cli.c b/zebra/zebra_cli.c
index ca53eb2eb3..df1303b3e6 100644
--- a/zebra/zebra_cli.c
+++ b/zebra/zebra_cli.c
@@ -2351,12 +2351,32 @@ DEFPY_YANG (vni_mapping,
"VNI-ID\n"
"prefix-routes-only\n")
{
- if (!no)
+ const struct lyd_node *dnode;
+ const char *vrf;
+
+ if (!no) {
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/l3vni-id", NB_OP_MODIFY,
vni_str);
- else
- nb_cli_enqueue_change(vty, "./frr-zebra:zebra/l3vni-id", NB_OP_DESTROY,
- NULL);
+ } else {
+ if (vty->node == CONFIG_NODE) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode,
+ "/frr-vrf:lib/vrf[name='%s']/frr-zebra:zebra[l3vni-id='%lu']",
+ VRF_DEFAULT_NAME, vni))
+ nb_cli_enqueue_change(vty, "./frr-zebra:zebra/l3vni-id",
+ NB_OP_DESTROY, NULL);
+ } else {
+ dnode = yang_dnode_get(vty->candidate_config->dnode, VTY_CURR_XPATH);
+ if (dnode) {
+ vrf = yang_dnode_get_string(dnode, "name");
+
+ if (yang_dnode_existsf(vty->candidate_config->dnode,
+ "/frr-vrf:lib/vrf[name='%s']/frr-zebra:zebra[l3vni-id='%lu']",
+ vrf, vni))
+ nb_cli_enqueue_change(vty, "./frr-zebra:zebra/l3vni-id",
+ NB_OP_DESTROY, NULL);
+ }
+ }
+ }
if (filter)
nb_cli_enqueue_change(vty, "./frr-zebra:zebra/prefix-only",