Commit 5c99de3cd4 for frr
commit 5c99de3cd4d86e8b2bc92e2523349b7587872700
Author: Rajasekar Raja <rajasekarr@nvidia.com>
Date: Mon Oct 19 14:13:37 2026 -0700
zebra: fix assert on no wide-local-id-block for usid-f3216
Running "no wide-local-id-block" under "format usid-f3216" crashes
zebra. The F3216 range is reset, but the usid-f4816 check that
follows is a separate "if" instead of an "else if". For usid-f3216
that check is false, so it falls into the assert(0) meant for
unknown formats.
The usid-f4816 check came in with commit d75f0740c5ac ("zebra: Add
support for block-len 48, node-len 16, func-len 16"). Turn it into
an "else if", as the other SID format "no" commands already do.
ZEBRA: ---- signal ----
ZEBRA: ? ffff83a847dc fffffb9e4650 linux-vdso.so.1 (mapped at 0xffff83a84000)
ZEBRA: pthread_key_delete+0x1a8 ffff82682038 fffffb9e58b0 /lib/aarch64-linux-gnu/libc.so.6 (mapped at 0xffff82600000)
ZEBRA: raise+0x1c ffff8263a83c fffffb9e5980 /lib/aarch64-linux-gnu/libc.so.6 (mapped at 0xffff82600000)
ZEBRA: abort+0xe8 ffff82627134 fffffb9e59a0 /lib/aarch64-linux-gnu/libc.so.6 (mapped at 0xffff82600000)
ZEBRA: _zlog_assert_failed+0x19c ffff82ce3730 fffffb9e5af0 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: no_srv6_sid_format_usid_wlib+0x5b4 aaaab9131114 fffffb9e5c80 /usr/lib/frr/zebra (mapped at 0xaaaab8ea0000)
ZEBRA: cmd_execute_command_real+0x3d8 ffff82b693a8 fffffb9e5da0 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: cmd_execute_command+0xe4 ffff82b696d4 fffffb9e5ea0 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: cmd_execute+0x194 ffff82b69b54 fffffb9e5f30 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: vty_command+0x2d4 ffff82ca6dd8 fffffb9e6000 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: vty_execute+0x64 ffff82ca8144 fffffb9ea370 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: vtysh_read+0x21c ffff82caf77c fffffb9ea3f0 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: event_call+0x238 ffff82c9abec fffffb9ea710 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: frr_run+0x214 ffff82bc94b8 fffffb9eaac0 /usr/lib/frr/libfrr.so.0 (mapped at 0xffff829c0000)
ZEBRA: main+0x30c aaaab905165c fffffb9eacd0 /usr/lib/frr/zebra (mapped at 0xaaaab8ea0000)
ZEBRA: __libc_init_first+0x80 ffff82627400 fffffb9eae80 /lib/aarch64-linux-gnu/libc.so.6 (mapped at 0xffff82600000)
ZEBRA: __libc_start_main+0x98 ffff826274d8 fffffb9eaf90 /lib/aarch64-linux-gnu/libc.so.6 (mapped at 0xffff82600000)
ZEBRA: _start+0x30 aaaab9054cf0 fffffb9eaff0 /usr/lib/frr/zebra (mapped at 0xaaaab8ea0000)
ZEBRA: in thread vtysh_read scheduled from lib/vty.c:2944 vty_event()
Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
diff --git a/zebra/zebra_srv6_vty.c b/zebra/zebra_srv6_vty.c
index a494e54f37..531c092852 100644
--- a/zebra/zebra_srv6_vty.c
+++ b/zebra/zebra_srv6_vty.c
@@ -1483,8 +1483,7 @@ DEFPY(no_srv6_sid_format_usid_wlib,
SRV6_SID_FORMAT_USID_F3216_WLIB_START;
format->config.usid.wlib_end =
SRV6_SID_FORMAT_USID_F3216_WLIB_END;
- }
- if (strmatch(format->name, SRV6_SID_FORMAT_USID_F4816_NAME)) {
+ } else if (strmatch(format->name, SRV6_SID_FORMAT_USID_F4816_NAME)) {
format->config.usid.wlib_start = SRV6_SID_FORMAT_USID_F4816_WLIB_START;
format->config.usid.wlib_end = SRV6_SID_FORMAT_USID_F4816_WLIB_END;
} else {