]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
2 months agotests: Add test case to verify that SIDs can be re-added 18263/head
Carmine Scarpitta [Wed, 26 Feb 2025 14:38:06 +0000 (15:38 +0100)]
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>
2 months agotests: Add test case to verify `no static-sids` command
Carmine Scarpitta [Wed, 26 Feb 2025 14:36:00 +0000 (15:36 +0100)]
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>
2 months agovtysh: Add `no static-sids` command
Carmine Scarpitta [Thu, 27 Feb 2025 11:12:39 +0000 (12:12 +0100)]
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>
2 months agostaticd: Add `no` form for `static-sids` command
Carmine Scarpitta [Wed, 26 Feb 2025 14:34:19 +0000 (15:34 +0100)]
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>
2 months agostaticd: Convert `static-sids` command to DEFPY
Carmine Scarpitta [Wed, 26 Feb 2025 09:17:56 +0000 (10:17 +0100)]
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>
2 months agoMerge pull request #18254 from LabNConsulting/aceelindem/ospf6-abr-calc-addr-sanity
Donald Sharp [Wed, 26 Feb 2025 17:47:57 +0000 (12:47 -0500)]
Merge pull request #18254 from LabNConsulting/aceelindem/ospf6-abr-calc-addr-sanity

ospf6d: Fix use after free of router in OSPFv3 ABR route calculation.

2 months agoMerge pull request #18261 from y-bharath14/srib-tests-v1
Donald Sharp [Wed, 26 Feb 2025 17:41:16 +0000 (12:41 -0500)]
Merge pull request #18261 from y-bharath14/srib-tests-v1

tests: Fixed input dict at create_router_bgp

2 months agoMerge pull request #18237 from LabNConsulting/chopps/oper-walk-tree
Donald Sharp [Wed, 26 Feb 2025 16:19:11 +0000 (11:19 -0500)]
Merge pull request #18237 from LabNConsulting/chopps/oper-walk-tree

support pre-built oper state in libyang tree

2 months agoMerge pull request #18242 from kaffarell/master
Donald Sharp [Wed, 26 Feb 2025 16:18:22 +0000 (11:18 -0500)]
Merge pull request #18242 from kaffarell/master

fabricd: add option to treat dummy interfaces as loopback interfaces

2 months agoMerge pull request #18198 from cscarpitta/feature/srv6_staticd_ua
Russ White [Wed, 26 Feb 2025 14:52:08 +0000 (09:52 -0500)]
Merge pull request #18198 from cscarpitta/feature/srv6_staticd_ua

staticd: Add support for SRv6 uA behavior

2 months agotests: add oper test using existing libyang state tree 18237/head
Christian Hopps [Mon, 17 Feb 2025 03:59:38 +0000 (03:59 +0000)]
tests: add oper test using existing libyang state tree

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agolib: nb: fix bug with oper-state query on list data
Christian Hopps [Wed, 26 Feb 2025 13:34:59 +0000 (13:34 +0000)]
lib: nb: fix bug with oper-state query on list data

The capacity of the xpath string was not guaranteed to be sufficient to hold all
the key predicates and so would truncate. Calculate the required space and
guarantee that it is available.

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agolib: nb: notification add locking support for multi-threading
Christian Hopps [Tue, 25 Feb 2025 21:19:36 +0000 (21:19 +0000)]
lib: nb: notification add locking support for multi-threading

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agofabricd: add option to treat dummy interfaces as loopback interfaces 18242/head
Gabriel Goller [Tue, 25 Feb 2025 09:24:58 +0000 (10:24 +0100)]
fabricd: add option to treat dummy interfaces as loopback interfaces

Enable dummy-interfaces to be used as router-id interfaces in openfabric
networks. This allows multiple openfabric routers with different
router-ids on a single node when using IP unnumbered setup (interfaces
without IPs configured). Previously we were limited by having a single
loopback interface, allowing only one openfabric router per node.

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
2 months agoMerge pull request #18235 from donaldsharp/static_registering_unknown_vrf
Donatas Abraitis [Wed, 26 Feb 2025 08:00:59 +0000 (09:00 +0100)]
Merge pull request #18235 from donaldsharp/static_registering_unknown_vrf

staticd: Fix crash because registering unknown vrf

2 months agodoc: Add SRv6 uA SID configuration to staticd documentation 18198/head
Carmine Scarpitta [Thu, 13 Feb 2025 10:04:38 +0000 (11:04 +0100)]
doc: Add SRv6 uA SID configuration to staticd documentation

This commit adds detailed explanation on configuring SRv6 uA SIDs.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Add test case to verify the programming of SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 11:15:12 +0000 (12:15 +0100)]
tests: Add test case to verify the programming of SRv6 uA SIDs

This commit adds a test case to ensure staticd correctly programs SRv6
uA SIDs in the RIB.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend SRv6 SIDs show CLI to display uA SIDs
Carmine Scarpitta [Fri, 14 Feb 2025 16:22:00 +0000 (17:22 +0100)]
staticd: Extend SRv6 SIDs show CLI to display uA SIDs

This commit extends the SRv6 SIDs show CLI to display the configured
SRv6 uA SIDs.

```
segment-routing
 srv6
  static-sids
   sid fcbb:bbbb:1:fe40::/64 locator MAIN behavior uA interface sr0 nexthop 2001::2
  !
 !
!
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend CLI to unconfigure an SRv6 uA SID
Carmine Scarpitta [Thu, 13 Feb 2025 10:04:14 +0000 (11:04 +0100)]
staticd: Extend CLI to unconfigure an SRv6 uA SID

This commit extends the STATIC CLI to support the deletion of uA SIDs.

```
router(config)# no sid fcbb:bbbb:1:fe00::/64 locator MAIN behavior uA interface sr0 nexthop 2001::2
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend CLI to configure an SRv6 uA SID
Carmine Scarpitta [Thu, 13 Feb 2025 10:04:03 +0000 (11:04 +0100)]
staticd: Extend CLI to configure an SRv6 uA SID

This commit extends the STATIC CLI to support the configuration of uA
SIDs.

```
router(config)# sid fcbb:bbbb:1:fe00::/64 locator MAIN behavior uA interface sr0 nexthop 2001::2
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_srv6_sid_uninstall` to uninstall SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:03:18 +0000 (11:03 +0100)]
staticd: Extend `static_zebra_srv6_sid_uninstall` to uninstall SRv6 uA SIDs

This commit extends the `static_zebra_srv6_sid_uninstall` function to
allow staticd to remove SRv6 uA SIDs from the zebra RIB.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_srv6_sid_install` to install SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:02:59 +0000 (11:02 +0100)]
staticd: Extend `static_zebra_srv6_sid_install` to install SRv6 uA SIDs

This commit extends the `static_zebra_srv6_sid_install` function to
allow staticd to install SRv6 uA SIDs into the zebra RIB.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_release_srv6_sid` to release SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:02:23 +0000 (11:02 +0100)]
staticd: Extend `static_zebra_release_srv6_sid` to release SRv6 uA SIDs

When removing an SRv6 uA SID, staticd should ask SRv6 SID Manager to
release the SID.
Currently, `static_zebra_release_srv6_sid` does not allow to release uA
SIDs.

This commit extends `static_zebra_release_srv6_sid` to allow staticd to
release SRv6 uA SIDs.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_request_srv6_sid` to request SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:01:11 +0000 (11:01 +0100)]
staticd: Extend `static_zebra_request_srv6_sid` to request SRv6 uA SIDs

In order to configure an SRv6 uA SID in staticd, staticd should request
SRv6 SID Manager to allocate a SID bound to the uA behavior.
Currently, `static_zebra_request_srv6_sid` does not support requesting
SIDs bound to the uA behavior.

This commit extends the `static_zebra_request_srv6_sid` function to
enable staticd to request SIDs bound to the uA behavior.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Add nb callbacks to configure a nexthop for SRv6 uA behavior
Carmine Scarpitta [Thu, 13 Feb 2025 09:59:40 +0000 (10:59 +0100)]
staticd: Add nb callbacks to configure a nexthop for SRv6 uA behavior

An SRv6 uA SID is associated with the interface and (optionally) the
IPv6 address of the nexthop.

This commit adds the modify and destroy nortbound callbacks required to
set the nexthop.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Add nb callbacks to configure an interface for SRv6 uA behavior
Carmine Scarpitta [Thu, 13 Feb 2025 09:59:13 +0000 (10:59 +0100)]
staticd: Add nb callbacks to configure an interface for SRv6 uA behavior

An SRv6 uA SID is associated with the interface and (optionally) the
IPv6 address of the nexthop.

This commit adds the modify and destroy nortbound callbacks required to
set the interface.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoyang: Extend staticd YANG model to support the SRv6 uA behavior
Carmine Scarpitta [Thu, 13 Feb 2025 09:51:28 +0000 (10:51 +0100)]
yang: Extend staticd YANG model to support the SRv6 uA behavior

The SRv6 uA behavior is associated with a L3 adjacency.

This commit extends the staticd YANG model by adding two leafs
`interface` and `next-hop` under the `static-sids` container. This
extension allows us to associate an interface and a nexthop when
configuring an SRv6 uA SID.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agolib: Add ifindex to SRv6 SID context
Carmine Scarpitta [Mon, 24 Jun 2024 18:28:50 +0000 (20:28 +0200)]
lib: Add ifindex to SRv6 SID context

The uA behavior is associated with an interface and the IP address of
the nexthop. However, the current SID context data structure only
includes the IP address. It lacks the interface.

This commit extends the SID context data structure by adding the
ifindex. This extension allows daemons to allocate uA SIDs with
the required interface and IP address.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Fixed input dict at create_router_bgp 18261/head
Y Bharath [Tue, 25 Feb 2025 16:05:47 +0000 (21:35 +0530)]
tests: Fixed input dict at create_router_bgp

Missing comma between the key-value pairs

Signed-off-by: y-bharath14 <y.bharath@samsung.com>
2 months agoMerge pull request #18256 from Shbinging/fix_no_ip_split-horizon_poisoned-reverse
Russ White [Tue, 25 Feb 2025 15:45:55 +0000 (10:45 -0500)]
Merge pull request #18256 from Shbinging/fix_no_ip_split-horizon_poisoned-reverse

ripd: fix no ip rip split-horizon poisoned-reverse command

2 months agoMerge pull request #18119 from louis-6wind/bgp-hidden
Russ White [Tue, 25 Feb 2025 14:59:11 +0000 (09:59 -0500)]
Merge pull request #18119 from louis-6wind/bgp-hidden

bgpd: fix default instance when leaving the hidden state.

2 months agoMerge pull request #18243 from dksharp5/remove_everything
Mark Stapp [Tue, 25 Feb 2025 14:43:00 +0000 (09:43 -0500)]
Merge pull request #18243 from dksharp5/remove_everything

Drop unused code

2 months agozebra: add ZEBRA_IF_DUMMY flag for dummy interfaces
Gabriel Goller [Tue, 25 Feb 2025 09:13:34 +0000 (10:13 +0100)]
zebra: add ZEBRA_IF_DUMMY flag for dummy interfaces

Introduce ZEBRA_IF_DUMMY interface flag to identify Linux dummy interfaces [0].
These interfaces behave similarly to loopback interfaces and can be
specially handled by daemons.

[0]: https://github.com/torvalds/linux/blob/master/drivers/net/dummy.c

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
2 months agoripd: fix no ip rip split-horizon poisoned-reverse command 18256/head
Shbinging [Tue, 25 Feb 2025 08:07:45 +0000 (16:07 +0800)]
ripd: fix no ip rip split-horizon poisoned-reverse command

`no ip rip split-horizon poisoned-reverse` will undo poisoned-reverse and set default behavior which is split-horizon.
By contrast, `no ip rip split-horizon` will undo interface's split-horizon behavior.

Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
2 months agoospf6d: Fix use after free of router in OSPFv3 ABR route calculation. 18254/head
Acee Lindem [Mon, 24 Feb 2025 21:44:32 +0000 (21:44 +0000)]
ospf6d: Fix use after free of router in OSPFv3 ABR route calculation.

This PR fixes FRR issue https://github.com/FRRouting/frr/issues/18040. The
OSPFv3 route is locked during the ABR calculation since there are
scenarios under which it is freed. The OSPFv3 ABR computation is
sub-optimal and this PR doesn't attempt to rework it.

Signed-off-by: Acee Lindem <acee@lindem.com>
2 months agozebra: use provider function to receive data directly 18243/head
Donna Sharp [Mon, 24 Feb 2025 19:51:12 +0000 (14:51 -0500)]
zebra: use provider function to receive data directly

Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2 months agoospfd: remove unused function ins ospfd/ospf_lsa.c
Donna Sharp [Mon, 11 Nov 2024 23:55:54 +0000 (18:55 -0500)]
ospfd: remove unused function ins ospfd/ospf_lsa.c

Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2 months agoMerge pull request #18216 from gromit1811/bugfix_pim_vrf_register
Jafar Al-Gharaibeh [Mon, 24 Feb 2025 18:56:08 +0000 (12:56 -0600)]
Merge pull request #18216 from gromit1811/bugfix_pim_vrf_register

pimd: Fix PIM VRF support (send register/register stop in VRF)

2 months agoMerge pull request #18226 from nabahr/pim-vrf-bind
Donald Sharp [Mon, 24 Feb 2025 18:53:39 +0000 (13:53 -0500)]
Merge pull request #18226 from nabahr/pim-vrf-bind

pim: Fix vrf binding of autorp and mroute socket

2 months agoMerge pull request #18225 from nabahr/autorp-joins
Donald Sharp [Mon, 24 Feb 2025 18:53:21 +0000 (13:53 -0500)]
Merge pull request #18225 from nabahr/autorp-joins

pim: Fix autorp group joins

2 months agoMerge pull request #18236 from donaldsharp/zebra_multipath_num_operational_data
Christian Hopps [Mon, 24 Feb 2025 17:33:34 +0000 (12:33 -0500)]
Merge pull request #18236 from donaldsharp/zebra_multipath_num_operational_data

zebra: Add operational retrieval of Multipath Number

2 months agotests: check as number in show run 18119/head
Louis Scalbert [Fri, 14 Feb 2025 10:58:24 +0000 (11:58 +0100)]
tests: check as number in show run

Creates the default VRF instance after the other VRF instances. The
default VRF instance is created in hidden state. Check that AS number
in show run is correctly written.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: fix leaving hidden state
Louis Scalbert [Fri, 14 Feb 2025 14:03:00 +0000 (15:03 +0100)]
bgpd: fix leaving hidden state

Upon configuration of a VRF instance that references an absent default
VRF with "import vrf default", the default instance is created in hidden
state. However, the default instance is not properly un-hidden when
configured.

Restore the behavior prior to commit below.

Fixes: 9f7177af13 ("bgpd: fix duplicate BGP instance created with unified config")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agotests: add bgp_l3vpn_hidden topotest
Louis Scalbert [Fri, 14 Feb 2025 13:07:40 +0000 (14:07 +0100)]
tests: add bgp_l3vpn_hidden topotest

Test that leaving the hidden BGP instance state is working.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: update AS value of a hidden bgp instance
Alexander Skorichenko [Sat, 1 Feb 2025 00:52:17 +0000 (01:52 +0100)]
bgpd: update AS value of a hidden bgp instance

'import vrf VRF' could define a hidden bgp instance with
the default AS_UNSPECIFIED (i.e. = 1) value.
When a
router bgp AS vrf VRF
gets configured later on, replace this AS_UNSPECIFIED setting
with a requested value.

Fixes: 9680831518 ("bgpd: fix as_pretty mem leaks when un-hiding")
Signed-off-by: Alexander Skorichenko <askorichenko@netgate.com>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agoRevert "bgpd: fix bgp vrf instance creation from implicit"
Louis Scalbert [Fri, 14 Feb 2025 17:01:00 +0000 (18:01 +0100)]
Revert "bgpd: fix bgp vrf instance creation from implicit"

This reverts commit 2ff08af78e315c69795417d150cd23649f68c655.

The fix is obviously wrong.

Link: 2ff08af78e315c69795417d150cd23649f68c655
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: fix process_queue when un-hiding
Louis Scalbert [Wed, 12 Feb 2025 12:09:37 +0000 (13:09 +0100)]
bgpd: fix process_queue when un-hiding

bgp_process_queue_init() is not called in bgp_create() when leaving the
BGP instance hidden state because of the following goto:

> if (hidden) {
> bgp = bgp_old;
> goto peer_init;
> }

Upon reconfiguration of the default instance, the prefixes are never set
into a meta queue by mq_add_handler(). They are never processed for
zebra RIB installation and announcements of update/withdraw.

Do not delete the BGP process_queue when hiding.

Fixes: 4d0e7a49cf ("bgpd: VRF-Lite fix default bgp delete")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: fix default instance name when un-hiding
Louis Scalbert [Wed, 12 Feb 2025 11:56:49 +0000 (12:56 +0100)]
bgpd: fix default instance name when un-hiding

When unconfiguring a default BGP instance with VPN SAFI configurations,
the default BGP structure remains but enters a hidden state. Upon
reconfiguration, the instance name incorrectly appears as "VIEW ?"
instead of "VRF default". And the name_pretty pointer

The name_pretty pointer is replaced by another one with the incorrect
name. This also leads to a memory leak as the previous pointer is not
properly freed.

Do not rewrite the instance name.

Fixes: 4d0e7a49cf ("bgpd: VRF-Lite fix default bgp delete")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agolib: northbound: support pre-built oper state in libyang tree
Christian Hopps [Mon, 17 Feb 2025 09:43:11 +0000 (09:43 +0000)]
lib: northbound: support pre-built oper state in libyang tree

This also fixes a bug with specific (position specified) queries on keyless
lists. If the `get_next` callback is using the parent entry it will probably
crash as the code is passing the list_entry as both parent and child in the
specific lookup case.

There may currently be no code that uses the parent entry if the child entry is
non-NULL, though.

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agozebra: Add operational retrieval of Multipath Number 18236/head
Donald Sharp [Sun, 23 Feb 2025 16:04:43 +0000 (11:04 -0500)]
zebra: Add operational retrieval of Multipath Number

The multipath number specified is not available through
the yang data and is not retrievable.  Make it so.
At this point in time do not allow this to be set from
yang.  Perhaps in the future.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agostaticd: Fix crash because registering unknown vrf 18235/head
Donald Sharp [Sat, 22 Feb 2025 23:13:15 +0000 (18:13 -0500)]
staticd: Fix crash because registering unknown vrf

With recent commit:

c1adc8f1d6795124df022a36388df173d217a34e staticd has started to crash
aproximately 1/10 of the tine in the static_vrf topotest

(gdb) bt
0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140400982256064) at ./nptl/pthread_kill.c:44
1  __pthread_kill_internal (signo=6, threadid=140400982256064) at ./nptl/pthread_kill.c:78
2  __GI___pthread_kill (threadid=140400982256064, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
3  0x00007fb1a6442476 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26
4  0x00007fb1a6950823 in core_handler (signo=6, siginfo=0x7ffd6d832ff0, context=0x7ffd6d832ec0) at lib/sigevent.c:268
5  <signal handler called>
6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140400982256064) at ./nptl/pthread_kill.c:44
7  __pthread_kill_internal (signo=6, threadid=140400982256064) at ./nptl/pthread_kill.c:78
8  __GI___pthread_kill (threadid=140400982256064, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
9  0x00007fb1a6442476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
10 0x00007fb1a64287f3 in __GI_abort () at ./stdlib/abort.c:79
11 0x00007fb1a699a422 in _zlog_assert_failed (xref=0x55f7dfd3dac0 <_xref.117>,
   extra=0x55f7dfd30c30 "BUG: NH %pFX registered but not in hashtable") at lib/zlog.c:789
12 0x000055f7dfd1201f in static_zebra_nht_register (nh=0x55f7fd2ecd80, reg=true) at staticd/static_zebra.c:333
13 0x000055f7dfd29c9d in static_install_nexthop (nh=0x55f7fd2ecd80) at staticd/static_routes.c:299
14 0x000055f7dfd2a126 in static_fixup_vrf (vrf=0x55f7fd2333a0, stable=0x55f7fd271030, afi=AFI_IP, safi=SAFI_UNICAST)
   at staticd/static_routes.c:441
15 0x000055f7dfd2a2be in static_fixup_vrf_ids (vrf=0x55f7fd2333a0) at staticd/static_routes.c:494
16 0x000055f7dfd15b53 in static_vrf_enable (vrf=0x55f7fd2333a0) at staticd/static_vrf.c:124
17 0x00007fb1a696ffa5 in vrf_enable (vrf=0x55f7fd2333a0) at lib/vrf.c:325
18 0x00007fb1a6991c87 in zclient_vrf_add (cmd=33, zclient=0x55f7fd29f740, length=76, vrf_id=8) at lib/zclient.c:2701
19 0x00007fb1a6996cba in zclient_read (thread=0x7ffd6d834230) at lib/zclient.c:4764
20 0x00007fb1a696bd9b in event_call (thread=0x7ffd6d834230) at lib/event.c:2019
21 0x00007fb1a68e1a3a in frr_run (master=0x55f7fd102e10) at lib/libfrr.c:1246
22 0x000055f7dfd1081e in main (argc=7, argv=0x7ffd6d834478, envp=0x7ffd6d8344b8) at staticd/static_main.c:193

Tracking this down, the crash is because the nh believes that is already
registered but lookup fails, causing this assert.  Looking at the code
static_fixup_vrf is changing the vrf_id.  I put a zlog_debug right
before the change of the nh vrf_id and noticed that the vrf id was
UNKNOWN.  So, the code is attempting to register into zebra the nexthop
with a vrf unknown( which will be ignored ).

Modify the code in the registration process to notice that the nh is
still UNKNOWN and as such nothing should be done.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18231 from LabNConsulting/chopps/fix-case-choice-queries
Jafar Al-Gharaibeh [Sat, 22 Feb 2025 20:06:37 +0000 (14:06 -0600)]
Merge pull request #18231 from LabNConsulting/chopps/fix-case-choice-queries

Fix oper-state queries that involve choice/case nodes

2 months agotests: add unit-test for choice/case node queries 18231/head
Christian Hopps [Sat, 22 Feb 2025 14:09:38 +0000 (14:09 +0000)]
tests: add unit-test for choice/case node queries

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agolib: nb: fix oper-state queries that involve choice/case nodes
Christian Hopps [Sat, 22 Feb 2025 14:08:27 +0000 (14:08 +0000)]
lib: nb: fix oper-state queries that involve choice/case nodes

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agoMerge pull request #18210 from donaldsharp/fix_bestpath_evpn_issue
Jafar Al-Gharaibeh [Fri, 21 Feb 2025 23:11:13 +0000 (17:11 -0600)]
Merge pull request #18210 from donaldsharp/fix_bestpath_evpn_issue

bgpd: remove dmed check not required in bestpath selection

2 months agoMerge pull request #18224 from LabNConsulting/chopps/fe-client-docstrings
Jafar Al-Gharaibeh [Fri, 21 Feb 2025 23:07:26 +0000 (17:07 -0600)]
Merge pull request #18224 from LabNConsulting/chopps/fe-client-docstrings

tests: add docstrings to frontend mgmtd client

2 months agoMerge pull request #18223 from LabNConsulting/chopps/doc-mgmt-update
Jafar Al-Gharaibeh [Fri, 21 Feb 2025 23:07:02 +0000 (17:07 -0600)]
Merge pull request #18223 from LabNConsulting/chopps/doc-mgmt-update

doc: update mgmtd list of converted

2 months agopim: Fix autorp group joins 18225/head
Nathan Bahr [Fri, 21 Feb 2025 17:59:04 +0000 (17:59 +0000)]
pim: Fix autorp group joins

Group joining got broken when moving the autorp socket to open/close
as needed. This fixes it so autorp group joining is properly handled
as part of opening the socket.

Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
2 months agopim: Fix vrf binding of autorp and mroute socket 18226/head
Nathan Bahr [Fri, 21 Feb 2025 17:55:16 +0000 (17:55 +0000)]
pim: Fix vrf binding of autorp and mroute socket

Bind the autorp socket to the vrf device.
Also fixed mroute socket to use vrf_bind instead of directly
setting the socket option.

Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
2 months agotests: add docstrings to frontend mgmtd client 18224/head
Christian Hopps [Fri, 21 Feb 2025 18:47:15 +0000 (18:47 +0000)]
tests: add docstrings to frontend mgmtd client

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agodoc: update mgmtd list of converted 18223/head
Christian Hopps [Fri, 21 Feb 2025 18:44:51 +0000 (18:44 +0000)]
doc: update mgmtd list of converted

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agoMerge pull request #18218 from y-bharath14/srib-yang-v3
Donald Sharp [Fri, 21 Feb 2025 16:18:03 +0000 (11:18 -0500)]
Merge pull request #18218 from y-bharath14/srib-yang-v3

yang: Corrected Pyang errors or warnings

2 months agoyang: Corrected Pyang errors or warnings 18218/head
Y Bharath [Fri, 21 Feb 2025 09:33:31 +0000 (15:03 +0530)]
yang: Corrected Pyang errors or warnings

Corrected Pyang errors or warnings at frr-route-types.yang file

Signed-off-by: y-bharath14 <y.bharath@samsung.com>
2 months agoMerge pull request #18213 from donaldsharp/add_membership
Donatas Abraitis [Fri, 21 Feb 2025 09:10:57 +0000 (11:10 +0200)]
Merge pull request #18213 from donaldsharp/add_membership

*: Remove unneeded IPV6_JOIN|LEAVE_GROUP

2 months agopimd: Fix PIM VRF support (send register/register stop in VRF) 18216/head
Martin Buck [Fri, 21 Feb 2025 07:54:49 +0000 (08:54 +0100)]
pimd: Fix PIM VRF support (send register/register stop in VRF)

In 946195391406269003275850e1a4d550ea8db38b and
8ebcc02328c6b63ecf85e44fdfbf3365be27c127, transmission of PIM register and
register stop messages was changed to use a separate socket. However, that
socket is not bound to a possible VRF, so the messages were sent in the
default VRF instead. Call vrf_bind() once after socket creation and when the
VRF is ready to ensure transmission in the correct VRF. vrf_bind() handles
the non-VRF case (i.e. VRF_DEFAULT) automatically, so it may be called
unconditionally.

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2 months ago*: Remove unneeded IPV6_JOIN|LEAVE_GROUP 18213/head
Donald Sharp [Thu, 20 Feb 2025 21:16:35 +0000 (16:16 -0500)]
*: Remove unneeded IPV6_JOIN|LEAVE_GROUP

Headers include this stuff now.  No need for it
in our code base.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agobgpd: remove dmed check not required in bestpath selection 18210/head
Donald Sharp [Thu, 20 Feb 2025 19:28:15 +0000 (14:28 -0500)]
bgpd: remove dmed check not required in bestpath selection

As part of the upstream master commit (f3575f61c7 bgpd: Sort the
bgp_path_inf) the snippet of the code for dmed check condition
left out, which leads to an issue of selecting incorrect bestpath.

As an example:

During the bestpath selection local route looses to another path due
to dmed condition being hit.

The snippet of the logs:

2025/02/20 03:06:20.131441 BGP: [JW7VP-K1YVV]
[2]:[0]:[48]:[00:92:00:00:00:10](VRF default): Comparing path
27.0.0.7 flags Valid  with path Static announcement flags Selected Valid Attr Changed Unsorted
2025/02/20 03:06:20.131445 BGP: [SYTDR-QV6X9] [2]:[0]:[48]:[00:92:00:00:00:10]: path 27.0.0.7 loses to path Static announcement as ES 03:44:38:39:ff:ff:02:00:00:01 is same and local
2025/02/20 03:06:20.131452 BGP: [JW7VP-K1YVV] [2]:[0]:[48]:[00:92:00:00:00:10](VRF default): Comparing path 27.0.0.8 flags Valid  with path Static announcement flags Selected Valid Attr Changed Unsorted
2025/02/20 03:06:20.131456 BGP: [SYTDR-QV6X9] [2]:[0]:[48]:[00:92:00:00:00:10]: path 27.0.0.8 loses to path Static announcement as ES 03:44:38:39:ff:ff:02:00:00:01 is same and local
2025/02/20 03:06:20.131458 BGP: [WEWEC-8SE72] [2]:[0]:[48]:[00:92:00:00:00:10](VRF default): path Static announcement is the bestpath from AS 0   <<<< static is best
2025/02/20 03:06:20.131463 BGP: [Z3A78-GM3G5] bgp_best_selection: [2]:[0]:[48]:[00:92:00:00:00:10](VRF default) pi 27.0.0.7 dmed
2025/02/20 03:06:20.131467 BGP: [Z3A78-GM3G5] bgp_best_selection: [2]:[0]:[48]:[00:92:00:00:00:10](VRF default) pi 27.0.0.8 dmed
2025/02/20 03:06:20.131471 BGP: [N6CTF-2RSKS] [2]:[0]:[48]:[00:92:00:00:00:10](VRF default): After path selection, newbest is path 27.0.0.7 oldbest was Static announce

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #17666 from routingrocks/pim_fhr_rp
Mark Stapp [Thu, 20 Feb 2025 18:41:10 +0000 (13:41 -0500)]
Merge pull request #17666 from routingrocks/pim_fhr_rp

pimd: During prefix-list update, behave as PIM_UPSTREAM_NOTJOINED sta…

2 months agoMerge pull request #14227 from routingrocks/pim_data_fix
Jafar Al-Gharaibeh [Thu, 20 Feb 2025 16:56:05 +0000 (10:56 -0600)]
Merge pull request #14227 from routingrocks/pim_data_fix

pimd: Fix for data packet loss when FHR is LHR and RP

2 months agoMerge pull request #18194 from donaldsharp/more_orf_funniness
Donatas Abraitis [Wed, 19 Feb 2025 20:34:43 +0000 (22:34 +0200)]
Merge pull request #18194 from donaldsharp/more_orf_funniness

bgpd: Fix another crash in orf

2 months agoMerge pull request #18197 from donaldsharp/ospf_passive_test_removal
Donatas Abraitis [Wed, 19 Feb 2025 20:33:10 +0000 (22:33 +0200)]
Merge pull request #18197 from donaldsharp/ospf_passive_test_removal

tests: Remove warning about passive command

2 months agoMerge pull request #17914 from opensourcerouting/pim-nb-filter
Jafar Al-Gharaibeh [Wed, 19 Feb 2025 19:39:12 +0000 (13:39 -0600)]
Merge pull request #17914 from opensourcerouting/pim-nb-filter

pimd: filter neighbors by address

2 months agotests: Remove warning about passive command 18197/head
Donald Sharp [Wed, 19 Feb 2025 13:04:54 +0000 (08:04 -0500)]
tests: Remove warning about passive command

Several tests have warnings about the passive
command and how to use it.  Let's address this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agodoc: add allowed-neighbors command 17914/head
Rafael Zalamena [Thu, 23 Jan 2025 16:00:39 +0000 (13:00 -0300)]
doc: add allowed-neighbors command

Let users know about new command to filter PIM sessions based on peer
address.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agotopotests: test PIM neighbor filtering
Rafael Zalamena [Wed, 22 Jan 2025 14:07:15 +0000 (11:07 -0300)]
topotests: test PIM neighbor filtering

Add new topology for testing neighbor filtering and more features in
the future.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agopimd: allow restricting neighbors per interface
David Lamparter [Thu, 19 Aug 2021 14:46:30 +0000 (16:46 +0200)]
pimd: allow restricting neighbors per interface

Just filter incoming packets against a specified prefix-list.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2 months agoMerge pull request #18108 from opensourcerouting/fix/zebra_no_vni_validation
Donald Sharp [Wed, 19 Feb 2025 12:22:03 +0000 (07:22 -0500)]
Merge pull request #18108 from opensourcerouting/fix/zebra_no_vni_validation

zebra: Do not flush an existing vni configuration trying to remove wrong vni

2 months agoMerge pull request #18111 from opensourcerouting/gmp-leave
Donald Sharp [Wed, 19 Feb 2025 12:21:00 +0000 (07:21 -0500)]
Merge pull request #18111 from opensourcerouting/gmp-leave

pimd,pim6d: support IGMPv2/MLDv1 immediate leave

2 months agobgpd: Fix another crash in orf 18194/head
Donald Sharp [Tue, 18 Feb 2025 15:25:47 +0000 (10:25 -0500)]
bgpd: Fix another crash in orf

I was pointed at yet another crash in the orf code.  I think it
stems from basicaly the same problem as the last one.  Let's just
make sure that the orf_plist is handled appropriately.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18164 from Pdoijode/pdoijode/staticd-nht-register
Russ White [Tue, 18 Feb 2025 14:18:29 +0000 (09:18 -0500)]
Merge pull request #18164 from Pdoijode/pdoijode/staticd-nht-register

staticd: Failed to register nexthop after networking restart

2 months agoMerge pull request #18189 from Shbinging/fix_ip_rip_split-horizon
Russ White [Tue, 18 Feb 2025 14:16:46 +0000 (09:16 -0500)]
Merge pull request #18189 from Shbinging/fix_ip_rip_split-horizon

doc: correct `ip rip split-horizon` command in the documentation

2 months agoMerge pull request #18095 from opensourcerouting/zebra-check-class-e
Russ White [Tue, 18 Feb 2025 13:31:31 +0000 (08:31 -0500)]
Merge pull request #18095 from opensourcerouting/zebra-check-class-e

Use ipv4 class E addresses (240.0.0.0/4) as connected routes by default

2 months agoMerge pull request #17957 from pguibert6WIND/codepoint_add_some_flavors
Carmine Scarpitta [Tue, 18 Feb 2025 10:06:51 +0000 (11:06 +0100)]
Merge pull request #17957 from pguibert6WIND/codepoint_add_some_flavors

isisd, lib: add some codepoints usually shared with other vendors

2 months agodoc: correct `ip rip split-horizon` command in the RIP documentation. 18189/head
Shbinging [Mon, 17 Feb 2025 06:45:05 +0000 (14:45 +0800)]
doc: correct `ip rip split-horizon` command in the RIP documentation.

The previous version incorrectly spelled the command as `ip split-horizon`. The correct command is `ip rip split-horizon`, as indicated in the code at line 675 of rip_cli.c.

Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
2 months agoMerge pull request #18082 from LabNConsulting/chopps/fix-yang-config-destroy
Jafar Al-Gharaibeh [Tue, 18 Feb 2025 02:35:49 +0000 (20:35 -0600)]
Merge pull request #18082 from LabNConsulting/chopps/fix-yang-config-destroy

lib: nb: call child destroy CBs when YANG container is deleted

2 months agoMerge pull request #16796 from gtataranni/feat/logfmt
Donatas Abraitis [Mon, 17 Feb 2025 21:02:27 +0000 (23:02 +0200)]
Merge pull request #16796 from gtataranni/feat/logfmt

tools: add logfmt option for frr-reload.py

2 months agotools: add logfmt option for frr-reload.py 16796/head
Giovanni Tataranni [Thu, 19 Sep 2024 13:46:02 +0000 (15:46 +0200)]
tools: add logfmt option for frr-reload.py

Add the option of printing logs in logfmt format.

Additional machine readable information can be printed via the `extra`
argument.
Example:
```python
log.debug("exit context"), extra={"line": line, "ctx_keys": ctx_keys})

log.error(f"Failed to execute command {' '.join(cmd)}", extra={"cmd": cmd})
```

Signed-off-by: Giovanni Tataranni <g.tataranni@gmail.com>
2 months agoMerge pull request #18139 from y-bharath14/srib-yang-v2
Christian Hopps [Mon, 17 Feb 2025 10:13:57 +0000 (05:13 -0500)]
Merge pull request #18139 from y-bharath14/srib-yang-v2

yang: Default value for a key leaf to be ignored

2 months agoMerge pull request #18187 from cscarpitta/fix/fix_srv6_encap_src_addr_test_failures
Donald Sharp [Sun, 16 Feb 2025 13:09:18 +0000 (08:09 -0500)]
Merge pull request #18187 from cscarpitta/fix/fix_srv6_encap_src_addr_test_failures

tests: Fix intermittent failures in `srv6_encap_src_addr` topotest

2 months agotests: Fix intermittent failures in `srv6_encap_src_addr` topotest 18187/head
Carmine Scarpitta [Sun, 16 Feb 2025 09:59:05 +0000 (10:59 +0100)]
tests: Fix intermittent failures in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` runs a vtysh command to configure the SRv6
encapsulation source address and then immediately invokes an iproute2
command to verify that zebra has set this address in the kernel. There
is no wait between the two operations and the verification is attempted
only once. If the topotest does not find the expected address it fails
immediately.

The problem is that when topotest is run on a heavyily loaded system,
it can take some time for zebra to set the address in the kernel.
In this case, when the topotest checks the kernel address right after
running the vtysh command, it doesn't find the expected address because
zebra hasn't set it yet.

This commit gives zebra some time to configure the address. It keeps to
check that the address is the expected one for about 1 minute. If after
1 minute the address is not the expected one then the test fails.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Increase retry timeout in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:23:07 +0000 (10:23 +0100)]
tests: Increase retry timeout in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` topotest uses a waiting time that is too
small. For this reason during startup it prints a warning:

```
2025-02-16 09:23:47,704 WARNING: topo: Waiting time is too small (count=10, wait=1), using default values (count=20, wait=3)
```

This commit increases the waiting time to fix the warning.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Do not load bgpd config in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:14:16 +0000 (10:14 +0100)]
tests: Do not load bgpd config in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` topotest tries to load bgpd.conf file that
does not exist, which produces the following warning:

```
2025-02-16 09:23:35,151 WARNING: topo: missing config 'r1' for '/media/frr/tests/topotests/srv6_encap_src_addr/r1/bgpd.conf' creating empty file '/etc/frr/bgpd.conf'
```

Since this topotest doesn't actually use bgpd, there's no point in
loading the config file.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Do not load sharpd config in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:13:15 +0000 (10:13 +0100)]
tests: Do not load sharpd config in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` topotest tries to load sharpd.conf file that
does not exist, which produces the following warning:

```
2025-02-16 09:23:35,151 WARNING: topo: missing config 'r1' for '/media/frr/tests/topotests/srv6_encap_src_addr/r1/sharpd.conf' creating empty file '/etc/frr/sharpd.conf'
```

Since this topotest doesn't actually use sharpd, there's no point in
loading the config file.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Remove bgpd marker in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 08:51:22 +0000 (09:51 +0100)]
tests: Remove bgpd marker in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` does not use bgp. As such, it should not have
bgpd marker.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoMerge pull request #18109 from mjstapp/fix_evpn_vty_rt
Donatas Abraitis [Sat, 15 Feb 2025 20:11:00 +0000 (22:11 +0200)]
Merge pull request #18109 from mjstapp/fix_evpn_vty_rt

bgpd: fix vty output of evpn route-target AS4

2 months agoMerge pull request #18178 from cscarpitta/fix/isis_request_srv6_locator
Donald Sharp [Sat, 15 Feb 2025 14:39:04 +0000 (09:39 -0500)]
Merge pull request #18178 from cscarpitta/fix/isis_request_srv6_locator

isisd: Request SRv6 locator after zebra connection

2 months agoMerge pull request #18163 from opensourcerouting/sharpd-crash-command
Donald Sharp [Sat, 15 Feb 2025 14:17:10 +0000 (09:17 -0500)]
Merge pull request #18163 from opensourcerouting/sharpd-crash-command

sharpd: add `crashme` commands

2 months agoisisd: Request SRv6 locator after zebra connection 18178/head
Carmine Scarpitta [Sat, 15 Feb 2025 09:39:40 +0000 (10:39 +0100)]
isisd: Request SRv6 locator after zebra connection

When SRv6 is enabled and an SRv6 locator is specified in the IS-IS
configuration, IS-IS may attempt to request SRv6 locator information from
zebra before the connection is fully established. If this occurs, the
request fails with the following error:

```
2025/02/14 21:41:20 ISIS: [HR66R-TWQYD][EC 100663302] srv6_manager_get_locator: invalid zclient socket
````

As a result, IS-IS is unable to obtain the locator information,
preventing SRv6 from working.

This commit fixes the issue by ensuring IS-IS requests SRv6 locator
information once the connection with zebra is successfully established.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoisisd: Add helper function to request SRv6 locator information
Carmine Scarpitta [Sat, 15 Feb 2025 09:39:30 +0000 (10:39 +0100)]
isisd: Add helper function to request SRv6 locator information

This commit adds a function that iterates over all IS-IS areas and asks
the SRv6 Manager for information about the configured locators.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoMerge pull request #18160 from donaldsharp/orf_plist_argie_bargie
David Lamparter [Fri, 14 Feb 2025 21:28:09 +0000 (22:28 +0100)]
Merge pull request #18160 from donaldsharp/orf_plist_argie_bargie

bgpd: When removing the prefix list drop the pointer