summaryrefslogtreecommitdiff
path: root/zebra/zebra_srv6.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_srv6.c')
-rw-r--r--zebra/zebra_srv6.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/zebra/zebra_srv6.c b/zebra/zebra_srv6.c
index a6db66bbcc..0ca77a4974 100644
--- a/zebra/zebra_srv6.c
+++ b/zebra/zebra_srv6.c
@@ -2280,7 +2280,7 @@ static int srv6_manager_get_sid_internal(struct zebra_srv6_sid **sid,
sid_value ? sid_value : &in6addr_any, locator_name);
/* Notify client about SID alloc failure */
- zsend_srv6_sid_notify(client, ctx, sid_value, 0, 0,
+ zsend_srv6_sid_notify(client, ctx, sid_value, 0, 0, NULL,
ZAPI_SRV6_SID_FAIL_ALLOC);
} else if (ret == 0) {
if (IS_ZEBRA_DEBUG_PACKET)
@@ -2294,6 +2294,8 @@ static int srv6_manager_get_sid_internal(struct zebra_srv6_sid **sid,
zsend_srv6_sid_notify(client, ctx, &(*sid)->value, (*sid)->func,
(*sid)->wide_func,
+ (*sid)->locator ? (*sid)->locator->name
+ : NULL,
ZAPI_SRV6_SID_ALLOCATED);
} else {
if (IS_ZEBRA_DEBUG_PACKET)
@@ -2308,6 +2310,9 @@ static int srv6_manager_get_sid_internal(struct zebra_srv6_sid **sid,
for (ALL_LIST_ELEMENTS_RO((*sid)->client_list, node, c))
zsend_srv6_sid_notify(c, ctx, &(*sid)->value,
(*sid)->func, (*sid)->wide_func,
+ (*sid)->locator
+ ? (*sid)->locator->name
+ : NULL,
ZAPI_SRV6_SID_ALLOCATED);
}
@@ -2366,6 +2371,7 @@ static int srv6_manager_release_sid_internal(struct zserv *client,
struct zebra_srv6_sid_ctx *zctx;
struct listnode *node, *nnode;
char buf[256];
+ const char *locator_name = NULL;
if (IS_ZEBRA_DEBUG_PACKET)
zlog_debug("%s: releasing SRv6 SID associated with ctx %s",
@@ -2374,6 +2380,9 @@ static int srv6_manager_release_sid_internal(struct zserv *client,
/* Lookup Zebra SID context and release it */
for (ALL_LIST_ELEMENTS(srv6->sids, node, nnode, zctx))
if (memcmp(&zctx->ctx, ctx, sizeof(struct srv6_sid_ctx)) == 0) {
+ if (zctx->sid && zctx->sid->locator)
+ locator_name =
+ (const char *)zctx->sid->locator->name;
ret = release_srv6_sid(client, zctx);
break;
}
@@ -2383,10 +2392,10 @@ static int srv6_manager_release_sid_internal(struct zserv *client,
srv6_sid_ctx2str(buf, sizeof(buf), ctx));
if (ret == 0)
- zsend_srv6_sid_notify(client, ctx, NULL, 0, 0,
+ zsend_srv6_sid_notify(client, ctx, NULL, 0, 0, locator_name,
ZAPI_SRV6_SID_RELEASED);
else
- zsend_srv6_sid_notify(client, ctx, NULL, 0, 0,
+ zsend_srv6_sid_notify(client, ctx, NULL, 0, 0, locator_name,
ZAPI_SRV6_SID_FAIL_RELEASE);
return ret;