]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: fix srv6 locator flags propagated to isis
authorPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 22 Aug 2023 20:40:12 +0000 (22:40 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 23 Apr 2024 12:25:48 +0000 (14:25 +0200)
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 <philippe.guibert@6wind.com>
lib/zclient.c

index 4cbd04c11693b68f3a1d6d906819ba30d77ff81b..645df1cb28ec15b40f7c0a437d1ff166176ce4d0 100644 (file)
@@ -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: