From 77de4e87f933a9617425acd15df0f408972a95bf Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Tue, 22 Aug 2023 22:40:12 +0200 Subject: [PATCH] lib: fix srv6 locator flags propagated to isis When usid is not used, the isis_srv6_topo1 test does not work. The SID prefix allocated by isis is different when the usid flags is set or not. When the flags is not transmitted to isis, the SID allocated is supposed to be a 128 bit mask length SID, which is not what the isis_srv6_topo1 test is supposed to obtain. Fix this by exchanging the flags locator value in the zclient api. Fixes: 9b7491e1fc04 ("lib: Add support for flags to the SRv6 locator") Signed-off-by: Philippe Guibert --- lib/zclient.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/zclient.c b/lib/zclient.c index 4cbd04c11693..645df1cb28ec 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -1125,6 +1125,7 @@ int zapi_srv6_locator_encode(struct stream *s, const struct srv6_locator *l) stream_put(s, l->name, strlen(l->name)); stream_putw(s, l->prefix.prefixlen); stream_put(s, &l->prefix.prefix, sizeof(l->prefix.prefix)); + stream_putc(s, l->flags); return 0; } @@ -1140,6 +1141,7 @@ int zapi_srv6_locator_decode(struct stream *s, struct srv6_locator *l) STREAM_GETW(s, l->prefix.prefixlen); STREAM_GET(&l->prefix.prefix, s, sizeof(l->prefix.prefix)); l->prefix.family = AF_INET6; + STREAM_GETC(s, l->flags); return 0; stream_failure: