Commit Graph

38290 Commits

Author SHA1 Message Date
Rafael Zalamena
2a7edc27d3 configure.ac: fix sed failure on FreeBSD
Simplify the sed expression to make sure it works on all platforms.

The previous expression failed on FreeBSD and it caused the SNMP_LIBS
variable to be empty. When SNMP_LIBS is empty it will cause binaries
and/or libraries to not link against the correct libraries.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2025-03-04 16:54:18 -03:00
Russ White
93c2dc28bc
Merge pull request #18306 from LabNConsulting/aceelindem/bfd-log-session-changes
bfdd: Add "log-session-changes" command to BFD configuration and operational state via YANG Northbound API.
2025-03-04 09:48:36 -05:00
Russ White
6f48c7d785
Merge pull request #18301 from pguibert6WIND/vpn_prefix_aggregate_export_and_accept
Vpn prefix aggregate export and accept
2025-03-04 09:39:52 -05:00
Russ White
0b094a772c
Merge pull request #18253 from dksharp5/yang_zebra
Allow retrieval of v4/v6 forwarding state via NB
2025-03-04 09:25:24 -05:00
Russ White
21dc0a4d16
Merge pull request #17961 from opensourcerouting/fix/bgp_reject_as_aggregate
bgpd: Do not advertise aggregate routes to contributing ASes
2025-03-04 09:18:38 -05:00
Acee Lindem
aa50f5ebb8 bfdd: Add BFD "log-session-changes" feature.
Add the BFD "log-session-changes" via the YANG and northbound API. Also
add the configured value to show and operational state.

Signed-off-by: Acee Lindem <acee@lindem.com>
2025-03-03 22:46:01 +00:00
Acee Lindem
4b0aeb6b29 yang: Add "log-session-changes" to BFD common session parameters.
Signed-off-by: Acee Lindem <acee@lindem.com>
2025-03-03 20:57:48 +00:00
Acee Lindem
dc942c5043 doc: Add "log-session-changes" documentation.
Signed-off-by: Acee Lindem <acee@lindem.com>
2025-03-03 20:23:13 +00:00
Acee Lindem
f5d1fe1af1 tests: Add "log-session-changes" to bfd_topo1 r1 and r2 configs.
Signed-off-by: Acee Lindem <acee@lindem.com>
2025-03-03 20:21:55 +00:00
Philippe Guibert
f8438393ac topotests: add a test to configure aggregated summary-only prefix on VPN
That configured aggregated prefix should be present, but all other
suppressed prefixes should not be exported.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-03-03 20:43:11 +01:00
Philippe Guibert
bf15730267 bgpd: fix syncs suppressed prefixes in VPN environments
By using the summary-only option for aggregated prefixes, the suppressed
prefixes are however exported as VPN prefixes, whereas they should not.

> r1# show bgp vrf vrf1 ipv4
> [..]
>  *>  172.31.1.0/24    0.0.0.0                  0         32768 ?
>  s>  172.31.1.1/32    0.0.0.0                  0         32768 ?
>  s>  172.31.1.2/32    0.0.0.0                  0         32768 ?
>  s>  172.31.1.3/32    0.0.0.0                  0         32768 ?
> [..]
> r1#
>
> r1# show bgp ipv4 vpn
> [..]
>  *>  172.31.1.0/24    0.0.0.0@4<               0         32768 ?
>     UN=0.0.0.0 EC{52:100} label=101 type=bgp, subtype=5
>  *>  172.31.1.1/32    0.0.0.0@4<               0         32768 ?
>     UN=0.0.0.0 EC{52:100} label=101 type=bgp, subtype=5
>  *>  172.31.1.2/32    0.0.0.0@4<               0         32768 ?
>     UN=0.0.0.0 EC{52:100} label=101 type=bgp, subtype=5
>  *>  172.31.1.3/32    0.0.0.0@4<               0         32768 ?
>     UN=0.0.0.0 EC{52:100} label=101 type=bgp, subtype=5
> [..]
> r1#

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-03-03 20:43:11 +01:00
Philippe Guibert
e0f585fcab topotests: add a test to unconfigure aggregated prefix on VPN
That test will ensure the VPN prefix associated is removed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-03-03 20:43:11 +01:00
Philippe Guibert
32088c43a8 bgpd: fix remove vpn aggregated prefix upon unconfiguration
When unconfiguring an aggregated prefix, the VPN prefix is not
removed. Fix this by refreshing the VPN leak when the aggregated route
is or is not available.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-03-03 20:43:11 +01:00
Philippe Guibert
bccf1e5447 topotests: add vpn test to control aggregated prefix is exported
Add a test in bgp_vpnv4_ebgp test to control that the aggregated prefix
is exported and selected as a VPN prefix.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-03-03 20:43:08 +01:00
Philippe Guibert
1cbbc94e55 bgpd: fix export, and selects l3vpn aggregated prefix
On a L3VPN setup, an aggretated prefix can not be exported and selected.
The below example illustrates the 172.31.0.0/24 aggregated prefix, which
is valid as a VRF prefix, but invalid as a VPN prefix:

> r1# show bgp ipv4 vpn 172.31.0.0/24
> BGP routing table entry for 444:1:172.31.0.0/24, version 0
> not allocated
> Paths: (1 available, no best path)
>   Not advertised to any peer
>   Local, (aggregated by 65500 192.0.2.1)
>     0.0.0.0 from 0.0.0.0 (192.0.2.1) vrf vrf1(4) announce-nh-self
>       Origin incomplete, metric 0, weight 32768, invalid, sourced,
local, atomic-aggregate
>       Extended Community: RT:52:100
>       Originator: 192.0.2.1
>       Remote label: 101
>       Last update: Mon Mar  3 14:35:04 2025
> r1# show bgp vrf vrf1 ipv4 172.31.0.0/24
> BGP routing table entry for 172.31.0.0/24, version 1
> Paths: (1 available, best #1, vrf vrf1)
>   Not advertised to any peer
>   Local, (aggregated by 65500 192.0.2.1)
>     0.0.0.0 from 0.0.0.0 (192.0.2.1)
>       Origin incomplete, metric 0, weight 32768, valid, aggregated,
local, atomic-aggregate, best (First path received)
>       Last update: Mon Mar  3 14:35:03 2025
> r1#

Actually, the aggregated prefix nexthop is considered, and 0.0.0.0 is
an invalid nexthop.

> r1# show bgp vrf vrf1 nexthop
> Current BGP nexthop cache:
>  0.0.0.0 invalid, #paths 1
>   Is not Registered
>   Last update: Thu Feb 13 18:33:43 2025

Fix this by considering the L3VPN prefix selected, if the VRF prefix
is selected too.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-03-03 18:51:18 +01:00
Mark Stapp
b66145b8ca
Merge pull request #18030 from fdumontet6WIND/mem_alloc_stream
zebra: reduce memory usage by streams when redistributing routes
2025-03-03 11:09:47 -05:00
Donald Sharp
21a8f5277b
Merge pull request #18294 from Orange-OpenSource/isisd
isisd: Correct edge insertion into TED
2025-03-03 07:37:42 -05:00
Olivier Dugeon
605fc1dd64 isisd: Correct edge insertion into TED
Edges are not correctly linked to Vertices during LSP processing. In function
lsp_to_edge_cb(), once edge created or updated from the LSP TLVs, the code try
to link the edge to destination vertices. In case the revert edge is not found,
the code try to found a destination vertex to link to. But, the sys_id used
for this operation corresponds to the source vertex. As a result, the edge is
attached as source and destination of the vertex. When Traffic Engineering is
stopped, TED is deleted which result into a double free of the edge attributes.
This cause a crash when attempt to free extended admin groupi the second time.

This patch removed wrong code which link twice the edge to the source vertex.

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
2025-03-03 10:16:55 +01:00
Donatas Abraitis
dfc2f24cb3
Merge pull request #18289 from cscarpitta/fix/fix_no_srv6_staticd
staticd: Fix `no srv6` command
2025-03-03 09:24:39 +02:00
Donatas Abraitis
c72af5e5d3
Merge pull request #18290 from cscarpitta/fix/fix_frr_reload_static_sids
tools: Fix `frr-reload.py` error related to `static-sids`
2025-03-03 09:13:56 +02:00
Carmine Scarpitta
a515de1c46 tools: Fix frr-reload.py error related to static-sids
```
[...]
segment-routing
 srv6
  static-sids
   sid fcbb:bbbb:1::/48 locator MAIN behavior uN
   sid fcbb:bbbb:1:fe10::/64 locator MAIN behavior uDT4 vrf Vrf10
   sid fcbb:bbbb:1:fe20::/64 locator MAIN behavior uDT6 vrf Vrf20
   sid fcbb:bbbb:1:fe30::/64 locator MAIN behavior uDT46 vrf Vrf30
   sid fcbb:bbbb:1:fe40::/64 locator MAIN behavior uA interface sr0 nexthop 2001::2
[...]
```

When the user has a configuration like the one above and runs the
command `frr-reload.py --reload`, the following error occurs:

```
[1129654|mgmtd] sending configuration
line 17: % Unknown command[76]:   sid fcbb:bbbb:1::/48 locator MAIN behavior uN
line 23: % Unknown command[76]:   sid fcbb:bbbb:1:fe10::/64 locator MAIN behavior uDT4 vrf Vrf10
line 29: % Unknown command[76]:   sid fcbb:bbbb:1:fe20::/64 locator MAIN behavior uDT6 vrf Vrf20
line 35: % Unknown command[76]:   sid fcbb:bbbb:1:fe30::/64 locator MAIN behavior uDT46 vrf Vrf30
line 41: % Unknown command[76]:   sid fcbb:bbbb:1:fe40::/64 locator MAIN behavior uA interface sr0 nexthop 2001::2
```

The problem is that in `frr-reload-py` all commands that start a new
multi-line context must be included in the `ctx_keyword` dictionary.
However, the `static-sids` command is not part of the `ctx_keyword`
dictionary.

This commit fixes the problem by adding `static-sids` to `ctx_keyword`.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-03-02 00:02:57 +01:00
Carmine Scarpitta
0e0eca6c5f tests: Add test case to verify that SIDs can be re-added
Add a test case to verify that staticd is able to re-install all SIDs
after disabling and re-enabling SRv6.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-03-01 23:24:50 +01:00
Carmine Scarpitta
58373a61d5 tests: Add test case to verify no srv6 command
Add a test case to verify that staticd removes all SIDs when the
`no srv6` command is executed.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-03-01 23:24:50 +01:00
Carmine Scarpitta
b94be4a1c5 staticd: Fix no srv6 command
A user can configure static SIDs as follows:

[...]
segment-routing
 srv6
  static-sids
   sid fcbb:bbbb:1::/48 locator MAIN behavior uN
   sid fcbb:bbbb:1:fe00::/64 locator MAIN behavior uDT46
[...]

When the user runs vtysh and executes the `no srv6` command, the
expectation is that staticd will deallocate all SIDs.

However, currently FRR does not behaves as expected. After the user
executes `no srv6`, the SIDs are still present.

The problem is that vtysh does not forward the `no srv6` command to
mgmtd/staticd.

The `no srv6` command is defined using the `DEFUN_YANG_NOSH` macro,
which instructs `xref2vtysh.py` to skip the `no srv6` command during
the generation of `vtysh_cmd.c`. As a result, vtysh is unaware that it
should forward the `no srv6` command to mgmtd/staticd.

This commit fixes the issue by replacing `DEFUN_YANG_NOSH` with
`DEFUN_YANG`. This change ensures that `xref2vtysh.py` includes the
`no srv6` command when generating `vtysh_cmd.c` and makes vtysh forward
the `no srv6` command to mgmtd/staticd.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-03-01 23:24:46 +01:00
Donna Sharp
9a073f663f zebra: allow retrieval of ipv6 forwarding state
Allow the retrieval of ipv6 forwarding state from
within the yang framework as that it was missing.

Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2025-03-01 14:45:18 -05:00
Donna Sharp
453154497e zebra: allow retrieval of ip forwarding state
There was no ability to retrieve the ip-forwarding state
of zebra.  Add this to yang under the state container.

Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2025-03-01 14:39:07 -05:00
Donald Sharp
575dfe4422
Merge pull request #18285 from opensourcerouting/pim-cs
pimd: fix null memory access on IGMP source limit
2025-02-28 11:45:58 -05:00
Rafael Zalamena
cacdff75a6 pimd: fix null memory access on IGMP source limit
When the IGMP group source limit is reached the function
`igmp_get_source_by_addr` won't return a `struct gm_source` so we must
test for that condition before attempting to access its fields.

Fixes coverity scan issue 1637406.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2025-02-28 11:34:36 -03:00
Donald Sharp
08af876bdc
Merge pull request #18263 from cscarpitta/fix/add_no_form_for_static_sids_cli
staticd: Add `no` form for `static-sids` command
2025-02-28 09:14:57 -05:00
Donatas Abraitis
d49561e32a
Merge pull request #18159 from pguibert6WIND/bgp_ecommlist_count
Bgp ecommlist count
2025-02-28 10:08:27 +02:00
Philippe Guibert
2b71dc2d91 topotests: add bgp ecommunity-list match test
Add a test suite that checks that it is possible to filter out
BGP updates based on the extcommunity-list match operation of the
route-map. Check also the extcommunity-limit option.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-27 22:25:52 +01:00
Philippe Guibert
52b1db86dc bgpd: add match ecommunity <exact|any> options
The exact-match and the any options are missing for the extended
communities. Add missing options that are present on the match
operations for communities and large-communities.

> route-map rmap permit 1
>  match extcommunity 1
> exit
> !
> route-map rmap permit 2
>  match extcommunity 2 any
> exit
> !
> route-map rmap permit 3
>  match extcommunity 3 exact-match
> exit

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-27 22:25:52 +01:00
Philippe Guibert
7ab6817037 yang: enlarge community-limit count from [1-1024] to [0-1024]
It should be possible to configure the community-limit count to 0.

Fixes: f19b8668b3 ("bgpd: add 'match community-count' command to restrict comm count")
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-27 22:25:52 +01:00
Philippe Guibert
c3084cacf4 bgpd: add 'match extcommunity-count' command to restrict comm count
Add a mechanism in route-map to filter out route-map which have a list
of extended communities greater than the given number.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-27 22:25:52 +01:00
Jafar Al-Gharaibeh
e27631e10a
Merge pull request #18264 from donaldsharp/mgmt_use_after_free
mgmtd: Prevent use after free
2025-02-27 14:39:18 -06:00
Mark Stapp
bc1253fa84
Merge pull request #18270 from donaldsharp/zclient_crash_in_label_chunk
lib: Prevent crash in getting label chunk
2025-02-27 11:51:26 -05:00
Francois Dumontet
8c9b007a0c zebra: reduce memory usage by streams when redistributing routes
required stream size is evaluated as a fix part and variable one.
the variable one depend on the number of nexthops.

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2025-02-27 16:51:05 +01:00
Donald Sharp
14c4678771 lib: Prevent crash in getting label chunk
ldpd has this crash:

(gdb) bt
0  __pthread_kill_implementation (no_tid=0, signo=11, threadid=140329211443648) at ./nptl/pthread_kill.c:44
1  __pthread_kill_internal (signo=11, threadid=140329211443648) at ./nptl/pthread_kill.c:78
2  __GI___pthread_kill (threadid=140329211443648, signo=signo@entry=11) at ./nptl/pthread_kill.c:89
3  0x00007fa0f0642476 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
4  0x00007fa0f0b51944 in core_handler (signo=11, siginfo=0x7fff562810b0, context=0x7fff56280f80) at lib/sigevent.c:268
5  <signal handler called>
6  0x00007fa0f0b9534d in lm_get_label_chunk (zclient=0x0, keep=0 '\000', base=0, chunk_size=64, start=0x7fff56281bdc, end=0x7fff56281be0) at lib/zclient.c:3667
7  0x0000564e0d1c011e in lde_get_label_chunk () at ldpd/lde.c:2211
8  0x0000564e0d1c05f8 in lde_get_next_label () at ldpd/lde.c:2318
9  0x0000564e0d1bcb29 in lde_update_label (fn=0x564e16653050) at ldpd/lde.c:783
10 0x0000564e0d1c1fbe in lde_kernel_update (fec=0x7fff56281cb0) at ldpd/lde_lib.c:422
11 0x0000564e0d1b96c0 in l2vpn_pw_init (pw=0x564e165d1fa0) at ldpd/l2vpn.c:242
12 0x0000564e0d1b2d32 in merge_l2vpn (xconf=0x564e166424f0, l2vpn=0x564e166160a0, xl=0x564e165eabb0) at ldpd/ldpd.c:1883
13 0x0000564e0d1b28ea in merge_l2vpns (conf=0x564e166424f0, xconf=0x564e16653650) at ldpd/ldpd.c:1813
14 0x0000564e0d1b1244 in merge_config (conf=0x564e166424f0, xconf=0x564e16653650) at ldpd/ldpd.c:1321
15 0x0000564e0d1bc485 in lde_dispatch_parent (thread=0x7fff56282060) at ldpd/lde.c:611
16 0x00007fa0f0b6cebc in event_call (thread=0x7fff56282060) at lib/event.c:2019
17 0x0000564e0d1baee7 in lde () at ldpd/lde.c:155
18 0x0000564e0d1ae4b8 in main (argc=0, argv=0x7fff56282298) at ldpd/ldpd.c:312
(gdb)

Since it is possible to be asking for label data before the zclient has
been connected, let's just return -1 in the case where zclient is not
initialized yet either, since this is effectively the same thing as
the sock being < 0.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-27 08:29:26 -05:00
Christian Hopps
3ea34a0b59
Merge pull request #18271 from cscarpitta/fix/fix_valgrind_error
staticd: Do not log uninitialized `nexthop` variable
2025-02-27 06:35:14 -05:00
Carmine Scarpitta
641f0c6deb tests: Add test case to verify that SIDs can be re-added
Add a test case to verify that staticd is able to re-install all SIDs
after deleting and re-adding them.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-27 12:19:25 +01:00
Carmine Scarpitta
303be67e6a tests: Add test case to verify no static-sids command
Add a test case to verify that staticd removes all SIDs when the
`no static-sids` command is executed.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-27 12:17:26 +01:00
Carmine Scarpitta
96134d1964 vtysh: Add no static-sids command
Previous commits introduced the `no` form for the `static-sids` command.
This change allow users to remove all static SIDs at once.

This commit makes the `no static-sids` command available in vtysh.

```
router# config
router(config)# segment-routing
router(sr)# srv6
router(srv6)# no static-sids
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-27 12:17:26 +01:00
Carmine Scarpitta
ab7a7541a6 staticd: Add no form for static-sids command
Currently, when the user tries to delete all static SIDs with the
`no static-sids` command, staticd returns an error.

```
router# config
router(config)# segment-routing
router(sr)# srv6
router(srv6)# no static-sids
% Unknown command: no  static-sids
```

The problem is the `static-sids` command does not support the `no` form.

This PR enables the `no` form for the `static-sids` command.

```
router# config
router(config)# segment-routing
router(sr)# srv6
router(srv6)# no static-sids
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-27 12:17:26 +01:00
Carmine Scarpitta
e7640f3885 staticd: Convert static-sids command to DEFPY
This commit converts the `static-sids` command from `DEFUN` to `DEFPY`
to simplify the parsing of the command string definition.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-27 12:14:02 +01:00
Carmine Scarpitta
a138ce525d staticd: Do not log uninitialized nexthop variable
When running valgrind, the following error is observed.

```
==2474568== Memcheck, a memory error detector
==2474568== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==2474568== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==2474568== Command: /usr/lib/frr/staticd --command-log-always --log file:staticd.log --log-level debug -d
==2474568== Parent PID: 2474525
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B32A: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B334: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B343: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B34D: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B35B: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B367: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B6B9: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B6C6: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B3AA: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B708: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B711: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B3DE: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B3E8: inet_ntop (ntop.c:105)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B499: puthex (ntop.c:64)
==2474568==    by 0x490B499: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B73D: puthex (ntop.c:66)
==2474568==    by 0x490B73D: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Conditional jump or move depends on uninitialised value(s)
==2474568==    at 0x490B747: puthex (ntop.c:68)
==2474568==    by 0x490B747: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Use of uninitialised value of size 8
==2474568==    at 0x490B4D2: puthex (ntop.c:69)
==2474568==    by 0x490B4D2: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Use of uninitialised value of size 8
==2474568==    at 0x490B4DD: puthex (ntop.c:70)
==2474568==    by 0x490B4DD: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Use of uninitialised value of size 8
==2474568==    at 0x490B4A8: puthex (ntop.c:65)
==2474568==    by 0x490B4A8: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== Use of uninitialised value of size 8
==2474568==    at 0x490B4BC: puthex (ntop.c:67)
==2474568==    by 0x490B4BC: inet_ntop (ntop.c:150)
==2474568==    by 0x49AB9CB: printfrr_i6 (prefix.c:1614)
==2474568==    by 0x4A24B19: printfrr_extp (glue.c:220)
==2474568==    by 0x4A2286E: vbprintfrr (vfprintf.c:626)
==2474568==    by 0x4A12AE2: zlog_msg_text (zlog.c:838)
==2474568==    by 0x4A11B83: vzlog_tls (zlog.c:497)
==2474568==    by 0x4A12561: vzlogx (zlog.c:722)
==2474568==    by 0x129AE8: zlog_ref (zlog.h:84)
==2474568==    by 0x12BD35: routing_control_plane_protocols_control_plane_protocol_staticd_segment_routing_srv6_local_sids_sid_paths_next_hop_modify (static_nb_config.c:1299)
==2474568==    by 0x498ABF8: nb_callback_modify (northbound.c:1579)
==2474568==    by 0x498BB35: nb_callback_configuration (northbound.c:1930)
==2474568==    by 0x498A03C: nb_candidate_validate_code (northbound.c:1287)
==2474568==    by 0x498A2C1: nb_candidate_commit_prepare (northbound.c:1358)
==2474568==    by 0x496F414: mgmt_be_txn_cfg_prepare (mgmt_be_client.c:579)
==2474568==    by 0x496FBB8: mgmt_be_process_cfgdata_req (mgmt_be_client.c:717)
==2474568==    by 0x49703A9: mgmt_be_client_handle_msg (mgmt_be_client.c:851)
==2474568==    by 0x49718B9: mgmt_be_client_process_msg (mgmt_be_client.c:1261)
==2474568==    by 0x4976810: mgmt_msg_procbufs (mgmt_msg.c:193)
==2474568==    by 0x497771A: msg_conn_proc_msgs (mgmt_msg.c:526)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568==
==2474568== HEAP SUMMARY:
==2474568==     in use at exit: 2,098 bytes in 8 blocks
==2474568==   total heap usage: 48,668 allocs, 48,660 frees, 15,837,383 bytes allocated
==2474568==
==2474568== 69 bytes in 1 blocks are still reachable in loss record 3 of 8
==2474568==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==2474568==    by 0x4D2058E: strdup (strdup.c:42)
==2474568==    by 0x496CA96: qstrdup (memory.c:118)
==2474568==    by 0x4A1DD4B: zlog_file_set_filename (zlog_targets.c:244)
==2474568==    by 0x4969ADA: set_log_file (log_vty.c:371)
==2474568==    by 0x4969CD0: command_setup_early_logging (log_vty.c:419)
==2474568==    by 0x49576FE: frr_init (libfrr.c:770)
==2474568==    by 0x1156C6: main (static_main.c:164)
==2474568==
==2474568== 69 bytes in 1 blocks are still reachable in loss record 4 of 8
==2474568==    at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==2474568==    by 0x4D2058E: strdup (strdup.c:42)
==2474568==    by 0x496CA96: qstrdup (memory.c:118)
==2474568==    by 0x4A1DD4B: zlog_file_set_filename (zlog_targets.c:244)
==2474568==    by 0x4969ADA: set_log_file (log_vty.c:371)
==2474568==    by 0x496A052: config_log_file_magic (log_vty.c:542)
==2474568==    by 0x496845F: config_log_file (log_vty_clippy.c:148)
==2474568==    by 0x4915E8B: cmd_execute_command_real (command.c:1003)
==2474568==    by 0x4916004: cmd_execute_command (command.c:1062)
==2474568==    by 0x49165B4: cmd_execute (command.c:1228)
==2474568==    by 0x49EB7EA: vty_command (vty.c:626)
==2474568==    by 0x49ED70E: vty_execute (vty.c:1389)
==2474568==    by 0x49EFF39: vtysh_read (vty.c:2408)
==2474568==    by 0x49E40E2: event_call (event.c:2019)
==2474568==    by 0x4958AD9: frr_run (libfrr.c:1246)
==2474568==    by 0x11581D: main (static_main.c:193)
==2474568==
==2474568== LEAK SUMMARY:
==2474568==    definitely lost: 0 bytes in 0 blocks
==2474568==    indirectly lost: 0 bytes in 0 blocks
==2474568==      possibly lost: 0 bytes in 0 blocks
==2474568==    still reachable: 138 bytes in 2 blocks
==2474568==         suppressed: 1,960 bytes in 6 blocks
==2474568==
==2474568== Use --track-origins=yes to see where uninitialised values come from
==2474568== For lists of detected and suppressed errors, rerun with: -s
==2474568== ERROR SUMMARY: 41 errors from 20 contexts (suppressed: 0 from 0)
```

The error is caused by staticd attempting to log the `nexthop` variable
before it is initialized.

Since logging that variable currently does not work and would not
provide any useful information anyway, this commit fixes the problem by
changing the staticd code to not log that variable.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-27 09:35:28 +01:00
Donald Sharp
598eaf37f8
Merge pull request #18254 from LabNConsulting/aceelindem/ospf6-abr-calc-addr-sanity
ospf6d: Fix use after free of router in OSPFv3 ABR route calculation.
2025-02-26 12:47:57 -05:00
Donald Sharp
62c0f3a4fb
Merge pull request #18261 from y-bharath14/srib-tests-v1
tests: Fixed input dict at create_router_bgp
2025-02-26 12:41:16 -05:00
Donald Sharp
62f35c7bdb mgmtd: Prevent use after free
ci is picking up this use after free on occasion:

    ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: 0x6030001d94a0
        0 0x7fab994b7f04 in __interceptor_malloc_usable_size ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:119
        1 0x7fab994264f6 in __sanitizer::BufferedStackTrace::Unwind(unsigned long, unsigned long, void*, bool, unsigned int) ../../../../src/libsanitizer/sanitizer_common/sanitizer_stacktrace.h:131
        2 0x7fab994264f6 in __asan::asan_malloc_usable_size(void const*, unsigned long, unsigned long) ../../../../src/libsanitizer/asan/asan_allocator.cpp:1058
        3 0x7fab99039bcf in mt_count_free lib/memory.c:78
        4 0x7fab99039bcf in qfree lib/memory.c:130
        5 0x7fab98ff971a in hash_clean lib/hash.c:290
        6 0x56110cdb0e7f in mgmt_txn_hash_destroy mgmtd/mgmt_txn.c:1881
        7 0x56110cdb0e7f in mgmt_txn_destroy mgmtd/mgmt_txn.c:2013
        8 0x56110cd8e5de in mgmt_terminate mgmtd/mgmt.c:91
        9 0x56110cd8e003 in sigint mgmtd/mgmt_main.c:90
        10 0x7fab990bf4b0 in frr_sigevent_process lib/sigevent.c:117
        11 0x7fab990ea7a1 in event_fetch lib/event.c:1740
        12 0x7fab9901a24e in frr_run lib/libfrr.c:1245
        13 0x56110cd8e21f in main mgmtd/mgmt_main.c:290
        14 0x7fab98af9249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
        15 0x7fab98af9304 in __libc_start_main_impl ../csu/libc-start.c:360
        16 0x56110cd8dd30 in _start (/usr/lib/frr/mgmtd+0x3ad30)

    0x6030001d94a0 is located 0 bytes inside of 24-byte region [0x6030001d94a0,0x6030001d94b8)
    freed by thread T0 here:
        0 0x7fab994b76a8 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:52
        1 0x7fab99039bf0 in qfree lib/memory.c:131
        2 0x7fab98ff93e1 in hash_release lib/hash.c:227
        3 0x56110cdaabdc in mgmt_txn_unlock mgmtd/mgmt_txn.c:1931
        4 0x56110cdab049 in mgmt_txn_delete mgmtd/mgmt_txn.c:1841
        5 0x56110cdab0ce in mgmt_txn_hash_free mgmtd/mgmt_txn.c:1864
        6 0x7fab98ff970b in hash_clean lib/hash.c:288
        7 0x56110cdb0e7f in mgmt_txn_hash_destroy mgmtd/mgmt_txn.c:1881
        8 0x56110cdb0e7f in mgmt_txn_destroy mgmtd/mgmt_txn.c:2013
        9 0x56110cd8e5de in mgmt_terminate mgmtd/mgmt.c:91
        10 0x56110cd8e003 in sigint mgmtd/mgmt_main.c:90
        11 0x7fab990bf4b0 in frr_sigevent_process lib/sigevent.c:117
        12 0x7fab990ea7a1 in event_fetch lib/event.c:1740
        13 0x7fab9901a24e in frr_run lib/libfrr.c:1245
        14 0x56110cd8e21f in main mgmtd/mgmt_main.c:290
        15 0x7fab98af9249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

    previously allocated by thread T0 here:
        0 0x7fab994b83b7 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
        1 0x7fab990392fd in qcalloc lib/memory.c:106
        2 0x7fab98ff8b4f in hash_get lib/hash.c:156
        3 0x56110cdb13ae in mgmt_txn_create_new mgmtd/mgmt_txn.c:1825
        4 0x56110cdb3b4d in mgmt_txn_notify_be_adapter_conn mgmtd/mgmt_txn.c:2212
        5 0x56110cd91178 in mgmt_be_adapter_conn_init mgmtd/mgmt_be_adapter.c:842
        6 0x7fab990ec6de in event_call lib/event.c:2019
        7 0x7fab9901a243 in frr_run lib/libfrr.c:1246
        8 0x56110cd8e21f in main mgmtd/mgmt_main.c:290
        9 0x7fab98af9249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

The only time that mgmt_txn_hash_free is called is in hash_clean.
There are other places that mgmt_txn_unlock/delete are called and
hash_release should be called.  Let's just notice when mgmtd is
being called from the hash_clean and not call hash_release (since
we know it is being released already)

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-26 12:34:05 -05:00
Donald Sharp
f62ab436e6
Merge pull request #18237 from LabNConsulting/chopps/oper-walk-tree
support pre-built oper state in libyang tree
2025-02-26 11:19:11 -05:00
Donald Sharp
594f65d888
Merge pull request #18242 from kaffarell/master
fabricd: add option to treat dummy interfaces as loopback interfaces
2025-02-26 11:18:22 -05:00