summaryrefslogtreecommitdiff
path: root/sharpd
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2023-12-05 09:56:41 +0100
committerPhilippe Guibert <philippe.guibert@6wind.com>2023-12-05 10:06:12 +0100
commitf806ec101f1d0b154c0cf0bf488d351ab397de7b (patch)
treeb341e78258a8d921fa05d4de4acda6d8aadaa668 /sharpd
parent82c1d82d7767570af287b8fa8d887ba8a40015e3 (diff)
sharpd: fix avoid twice sending NHG_DEL for a nexthop-group
After removing the nexthop of a nexthop group, when the nexthop group is removed, a nhg removal failure happens: > ubuntu2204(config)# nexthop-group CCC > ubuntu2204(config-nh-group)# nexthop 192.0.2.211 loop1 > ubuntu2204(config-nh-group)# no nexthop 192.0.2.211 loop1 > [..] > 2023/12/05 08:59:22 SHARP: [H3QKG-WH8ZV] Removed nhg 179687505 > ubuntu2204(config-nh-group)# exi > ubuntu2204(config)# no nexthop-group CCC > [..] > 2023/12/05 08:59:27 SHARP: [N030J-V0SFN] Failed removal of nhg 179687505 The NHG_DEL message is sent twice at the nexthop deletion, and at the nexthop-group deletion. Avoid sending it twice. Fixes: 82beaf6ae520 ("sharpd: fix deleting nhid when suppressing nexthop from nh group") Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'sharpd')
-rw-r--r--sharpd/sharp_nht.c3
-rw-r--r--sharpd/sharp_zebra.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/sharpd/sharp_nht.c b/sharpd/sharp_nht.c
index 8c02f1f213..6d64fcfb25 100644
--- a/sharpd/sharp_nht.c
+++ b/sharpd/sharp_nht.c
@@ -174,7 +174,8 @@ static void sharp_nhgroup_delete_cb(const char *name)
if (!snhg)
return;
- nhg_del(snhg->id);
+ if (sharp_nhgroup_id_is_installed(snhg->id))
+ nhg_del(snhg->id);
sharp_nhg_rb_del(&nhg_head, snhg);
XFREE(MTYPE_NHG, snhg);
}
diff --git a/sharpd/sharp_zebra.c b/sharpd/sharp_zebra.c
index 7c79256517..ff4895189d 100644
--- a/sharpd/sharp_zebra.c
+++ b/sharpd/sharp_zebra.c
@@ -934,6 +934,7 @@ static int nhg_notify_owner(ZAPI_CALLBACK_ARGS)
zlog_debug("Failed install of nhg %u", id);
break;
case ZAPI_NHG_REMOVED:
+ sharp_nhgroup_id_set_installed(id, false);
zlog_debug("Removed nhg %u", id);
break;
case ZAPI_NHG_REMOVE_FAIL: