Commit Graph

36830 Commits

Author SHA1 Message Date
Enke Chen
5adaa9ec7f bgpd: allow value 0 in aigp-metric setting
The value of 0 is accepted from peers, and can also be set by the
route-map "set aigp-metric igp-metric". For coonsistency, it should
be allowed in "set aigp-metric <value>" as well.

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit e07f38a43f)
2024-10-21 08:34:21 +00:00
Donatas Abraitis
6b3836f78e
Merge pull request #17146 from FRRouting/mergify/bp/dev/10.2/pr-17091
bgpd: fix several issues in sourcing AIGP attribute (backport #17091)
2024-10-17 14:26:04 +03:00
Enke Chen
6c776ee834 tests: add a new topotest to bgp_aigp
Add a new topotest for getting the aigp from the "igp-metric"
for a redistributed route (ospf route in the test).

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit 51612593f7)
2024-10-17 05:56:00 +00:00
Enke Chen
8bce9aa126 bgpd: fix several issues in sourcing AIGP attribute
Fix several issues in sourcing AIGP attribute:

1) AIGP should not be set as default for a redistributed route or a
   static network. It should be set by config instead.

2) AIGP sourced by "set aigp-metric igp-metric" in a route-map does
   not set the correct value for a redistributed route.

3) When redistribute a connected route like loopback, the AGIP (with
   value 0) is sourced by "set aigp-metric igp-metric", but the
   attribute is not propagated as the attribute flag is not set.

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit f65356d8bb)
2024-10-17 05:56:00 +00:00
Donald Sharp
d8fc147d2c
Merge pull request #17143 from FRRouting/mergify/bp/dev/10.2/pr-17020
zebra: fix heap-use-after free on ns shutdown (backport #17020)
2024-10-16 15:23:38 -04:00
Donald Sharp
a8c5175284
Merge pull request #17129 from FRRouting/mergify/bp/dev/10.2/pr-17116
zebra: unlock node only after operation in zebra_free_rnh() (backport #17116)
2024-10-16 12:49:30 -04:00
Philippe Guibert
bcdc8249b9 zebra: fix heap-use-after free on ns shutdown
The following ASAN issue has been observed:

> ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000acba4 at pc 0x55910c5694d0 bp 0x7ffe3a8ac850 sp 0x7ffe3a8ac840
> READ of size 4 at 0x6160000acba4 thread T0
>         #0 0x55910c5694cf in ctx_info_from_zns zebra/zebra_dplane.c:3315
>     #1 0x55910c569696 in dplane_ctx_ns_init zebra/zebra_dplane.c:3331
>     #2 0x55910c56bf61 in dplane_ctx_nexthop_init zebra/zebra_dplane.c:3680
>     #3 0x55910c5711ca in dplane_nexthop_update_internal zebra/zebra_dplane.c:4490
>     #4 0x55910c571c5c in dplane_nexthop_delete zebra/zebra_dplane.c:4717
>     #5 0x55910c61e90e in zebra_nhg_uninstall_kernel zebra/zebra_nhg.c:3413
>     #6 0x55910c615d8a in zebra_nhg_decrement_ref zebra/zebra_nhg.c:1919
>     #7 0x55910c6404db in route_entry_update_nhe zebra/zebra_rib.c:454
>     #8 0x55910c64c904 in rib_re_nhg_free zebra/zebra_rib.c:2822
>     #9 0x55910c655be2 in rib_unlink zebra/zebra_rib.c:4212
>     #10 0x55910c6430f9 in zebra_rtable_node_cleanup zebra/zebra_rib.c:968
>     #11 0x7f26f275b8a9 in route_node_free lib/table.c:75
>     #12 0x7f26f275bae4 in route_table_free lib/table.c:111
>     #13 0x7f26f275b749 in route_table_finish lib/table.c:46
>     #14 0x55910c65db17 in zebra_router_free_table zebra/zebra_router.c:191
>     #15 0x55910c65dfb5 in zebra_router_terminate zebra/zebra_router.c:244
>     #16 0x55910c4f40db in zebra_finalize zebra/main.c:249
>     #17 0x7f26f2777108 in event_call lib/event.c:2011
>     #18 0x7f26f264180e in frr_run lib/libfrr.c:1212
>     #19 0x55910c4f49cb in main zebra/main.c:531
>     #20 0x7f26f2029d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
>     #21 0x7f26f2029e3f in __libc_start_main_impl ../csu/libc-start.c:392
>     #22 0x55910c4b0114 in _start (/usr/lib/frr/zebra+0x1ae114)

It happens with FRR using the kernel. During shutdown, the
namespace identifier is attempted to be obtained by zebra, in an
attempt to prepare zebra dataplane nexthop messages.

Fix this by accessing the ns structure.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
(cherry picked from commit 7ae70eb5ef)
2024-10-16 14:49:50 +00:00
Donald Sharp
eb83a1f5fc
Merge pull request #17127 from FRRouting/mergify/bp/dev/10.2/pr-17107
tests: iproute2_check_path_selection call the actual command (backport #17107)
2024-10-16 05:50:32 -04:00
Enke Chen
5aae058522 zebra: unlock node only after operation in zebra_free_rnh()
Move route_unlock_node() after rnh_list_del().

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit 5b6ff51b8a)
2024-10-16 05:13:50 +00:00
Donald Sharp
9ef2d1b183 tests: iproute2_check_path_selection call the actual command
For some reason this was missing.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit c8a947e12b)
2024-10-16 02:26:43 +00:00
Donald Sharp
ee96c3ceb0
Merge pull request #17120 from FRRouting/mergify/bp/dev/10.2/pr-17088
zebra: Prevent a kernel route from being there when a connected should (backport #17088)
2024-10-15 17:55:22 -04:00
Donald Sharp
cf9c02a8b1 zebra: Prevent a kernel route from being there when a connected should
There exists a series of events where a kernel route is learned
first( that happens to be exactly what a connected route should be )
and FRR ends up with both a kernel route and a connected route,
leaving us in a very strange spot.  This code change just mirrors
the existing code of if there is a connected route drop the kernel
route.  Here we just do the reverse, if we have a kernel route
already and a connected should be created, remove the kernel and
keep the connected.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 74e25198e7)
2024-10-15 19:05:50 +00:00
Donald Sharp
dc1a3111bf
Merge pull request #17108 from FRRouting/mergify/bp/dev/10.2/pr-17093
bgpd: fix route selection with AIGP (backport #17093)
2024-10-15 13:11:55 -04:00
Enke Chen
52fcb77955 tests: fix and adjust topotest/bgp_aigp
Fix and adjust the topotest post the fix for route selection with
AIGP.

When there are multiple	IGP domains (OSPF in this case), the nexthop
for a BGP route with the AIGP attribute must be resolved in its own
IGP domain.

The changes in r2/bgpd.conf and r3/bgpd.conf are needed as incorrect
IGP metrics are received from NHT for the recursive nexthops. Once
the issue is resolved, the changes can be reverted.

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit 1ee7e63a6c)
2024-10-15 14:24:41 +00:00
Enke Chen
0527820a18 bgpd: fix route selection with AIGP
The nexthop metric should be added to AIGP when calculating the
bestpath in bgp_path_info_cmp().

Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
(cherry picked from commit 081422e8e7)
2024-10-15 14:24:41 +00:00
Donatas Abraitis
42e33e677c
Merge pull request #17094 from FRRouting/mergify/bp/dev/10.2/pr-17074
bgpd: fix evpn mh esi down (backport #17074)
2024-10-15 10:50:30 +03:00
Chirag Shah
8b6dd7a14d bgpd: fix evpn mh esi flap remove local routes
In symmetric routing, when local ESI is down,
the MH peer learnt local mac-ip
prefix is installed into teannt vrf (given l3vni).

When ESI is back up and associated to evi/vni then
remove the local synced mac-ip imported routes from the
tenant vrf as local neigh/arp is present.

Ticket: #3878699
Testing:

peer advertised mac-ip route:
*> [2]:[0]:[48]:[aa:aa:aa:00:00:01]:[32]:[45.0.0.51] RD 27.0.0.4:9
                    27.0.0.4 (spine-1)
                                                           0 64435 65016 i
                    ESI:03:44:38:39:ff:ff:01:00:00:01
                    RT:65016:1000 RT:65016:4000 ET:8 Rmac:44:38:39:ff:ff:16

When local ESI is flapped
torm-11:# ip neigh show 45.0.0.51
45.0.0.51 dev vlan1000 lladdr aa:aa:aa:00:00:01 REACHABLE proto zebra

Before fix:
(The imported route remained in tenant-vrf)
torm-11:# ip route show vrf vrf1 45.0.0.51
45.0.0.51 nhid 257 proto bgp metric 20

After fix:

torm-11# ip route show vrf vrf1 45.0.0.51
torm-11#

trace:
2024/10/11 18:19:29 BGP: [JMP3T-178G8] route [2]:[0]:[48]:[00:02:00:00:00:08]:[32]:[21.1.0.5]
is matched on local esi 03:00:00:00:77:01:04:00:00:0e, uninstall from VRF tenant1 route table

Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit 3f00709a39)
2024-10-15 05:21:51 +00:00
Donald Sharp
177c6d2070
Merge pull request #17066 from FRRouting/mergify/bp/dev/10.2/pr-17059
bgpd: Move some non BGP-specific route-map functions to lib (backport #17059)
2024-10-11 12:14:53 -04:00
Donatas Abraitis
c3bf0d6d7c
Merge pull request #17063 from FRRouting/mergify/bp/dev/10.2/pr-17037
bgpd: fix ipv6 nexthop-local unchanged (backport #17037)
2024-10-11 16:24:46 +03:00
Donatas Abraitis
3be4912e00 bgpd: Move some non BGP-specific route-map functions to lib
They are managed under `frr-route-map`, not under `frr-bgp-route-map`.

Fixes: https://github.com/FRRouting/frr/issues/17055

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit b9a9be492e)
2024-10-11 11:16:15 +00:00
Louis Scalbert
ead451f633 topotests: add bgp_nexthop_ipv6
Add bgp_nexthop_ipv6 to check the ipv6 link-local nexthop conformity in
several situations.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
(cherry picked from commit 6dc4d95061)
2024-10-11 05:36:39 +00:00
Louis Scalbert
74d91dea4b bgpd: reset ipv6 invalid link-local nexthop
If the "nexthop-local unchanged" setting is enabled, it preserves the
IPv6 link-local nexthop from the originating peer. However, if the
originating and destination peers are not on the same network segment,
the originating peer's IPv6 link-local address will be unreachable from
the destination peer.

In such cases, reset the IPv6 link-local nexthop, even if "nexthop-local
unchanged" is set on the destination peer.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
(cherry picked from commit 5bb99ccad2)
2024-10-11 05:36:38 +00:00
Louis Scalbert
43dfda6621 bgpd: do not insert link-local with local unchanged
Do not add an IPv6 link-local nexthop if the originating peer does not
provide one and the nexthop-local unchanged setting is enabled.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
(cherry picked from commit 34c1dd076e)
2024-10-11 05:36:38 +00:00
Louis Scalbert
2d85fc9939 Revert "bgpd: Exclude case for remote prefix w/o link-local"
This reverts commit 5f6a61f91f.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
(cherry picked from commit 38ad215feb)
2024-10-11 05:36:38 +00:00
Donatas Abraitis
235ee0c88c
Merge pull request #17056 from FRRouting/mergify/bp/dev/10.2/pr-17054
tools: Add missing mgmtd into logrotate/rsyslogd (backport #17054)
2024-10-10 19:10:34 +03:00
Donatas Abraitis
edb5bff96e tools: Add missing mgmtd into logrotate/rsyslogd
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit f57a56bca0)
2024-10-10 12:56:01 +00:00
Donatas Abraitis
697b657240
Merge pull request #17048 from FRRouting/mergify/bp/dev/10.2/pr-17042
zebra: Fix crash in pw code (backport #17042)
2024-10-10 09:20:25 +03:00
Donald Sharp
4353b81bbf zebra: Fix crash in pw code
Recent PR #17009 introduced a crash in pw handing
for deletion.  Let's fix that problem.

Fixes: #17041
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 154a89bc31)
2024-10-09 18:49:06 +00:00
Russ White
b8c458622d
Merge pull request #17023 from donaldsharp/dplane_problems
zebra: Allow dplane to pass larger number of nexthops down to dataplane
2024-10-08 11:45:27 -04:00
Russ White
a4fb596e3e
Merge pull request #17009 from donaldsharp/pw_cleanup
Pw cleanup
2024-10-08 10:56:28 -04:00
Russ White
374fda66df
Merge pull request #16945 from opensourcerouting/fix/bgp_received-routes_with_soft_inbound
bgpd: Show unmodified version of received-routes per neighbor
2024-10-08 10:16:24 -04:00
Russ White
8c00963a7a
Merge pull request #16942 from baozhen-H3C/202409271079
TI-LFA incorrectly included pseudo-nodes when calculating PQ space.
2024-10-08 10:15:19 -04:00
Russ White
02e5a059ee
Merge pull request #16941 from opensourcerouting/fix/issue_16877
bgpd: Relax the same prefix and nexthop to be valid
2024-10-08 10:14:30 -04:00
Donald Sharp
e3c7a0456a
Merge pull request #17022 from opensourcerouting/vrrp-cmsg-next
vrrpd: iterate over all ancillary messages
2024-10-08 09:31:18 -04:00
Donald Sharp
9f8968fc5a *: Allow 16 bit size for nexthops
Currently FRR is limiting the nexthop count to a uint8_t not a
uint16_t.  This leads to issues when the nexthop count is 256
which results in the count to overflow to 0 causing problems
in the code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-08 09:26:57 -04:00
Russ White
382e4e9338
Merge pull request #15903 from y-bharath14/srib-topotests-v1
tests: catch exception during switch shutdown
2024-10-08 08:27:12 -04:00
Donatas Abraitis
4bf780fce9
Merge pull request #17014 from anlancs/fix/isisd-topo-check
isisd: fix wrong check for MT commands
2024-10-08 08:10:22 +03:00
Donatas Abraitis
ecfcd6c20a
Merge pull request #17024 from Jafaral/fix-autorp
pimd: fix a possible crash when enabling debug autorp
2024-10-08 08:03:52 +03:00
Donald Sharp
a8af2b2a9d zebra: Do not retry in 30 seconds on pw reachability failure
Currently the zebra pw code has setup a retry to install the
pw after 30 seconds when it is decided that reachability to
the pw is gone.  This causes a failure mode where the
pw code just goes and re-installs the pw after 30 seconds
in the non-reachability case.  Instead it should just be
reinstalling after reachability is restored.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-07 20:36:45 -04:00
Donald Sharp
f50b1f7c22 zebra: Move pw status settting until after we get results
Currently the pw code sets the status of the pw for install
and uninstall immediately when notifying the dplane.  This
is incorrect in that we do not actually know the status at
this point in time.  When we get the result is when to set
the status.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-10-07 20:36:45 -04:00
Jafar Al-Gharaibeh
a49acba1d4 pimd: fix a possible crash when enabling debug autorp
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2024-10-07 18:22:06 -05:00
Igor Ryzhov
c10e4d336b
Merge pull request #17015 from LabNConsulting/chopps/load-internal-ietf-yang-library
lib: add flag to have libyang load internal ietf-yang-library module
2024-10-07 20:33:23 +03:00
Rafael Zalamena
5e1a3cd2ad vrrpd: iterate over all ancillary messages
Assign the return of `CMSG_NXTHDR` so we can really iterate over the
ancillary data.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2024-10-07 13:05:10 -03:00
Donatas Abraitis
ded59bcc72
Merge pull request #17013 from dksharp5/removal_functions
Removal functions
2024-10-07 11:47:01 +03:00
Donatas Abraitis
86a2c829eb
Merge pull request #17012 from dksharp5/remove_function
zebra: remove unused function rib_lookup_ipv4
2024-10-07 11:45:05 +03:00
Christian Hopps
e8648a0c72 lib: add flag to have libyang load internal ietf-yang-library module
Mgmtd makes use of libyang's internal ietf-yang-library module to add
support for said module to FRR management. Previously, mgmtd was loading
this module explicitly; however, that required that libyang's
`ietf-yang-library.yang` module definition file be co-located with FRR's
yang files so that it (and ietf-datastore.yang) would be found when
searched for by libyang using FRRs search path. This isn't always the
case depending on how the user compiles and installs libyang so mgmtd
was failing to run in some cases.

Instead of doing it the above way we simply tell libyang to load it's
internal version of ietf-yang-library when we initialize the libyang
context.

This required adding a boolean to a couple of the init functions which
is why so many files are touched (although all the changes are minimal).

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-10-07 03:32:44 +00:00
anlan_cs
424cec61c0 isisd: fix wrong check for MT commands
```
anlan# show run
!
interface eth0
 ip router isis A
exit
!
router isis A
 metric-style narrow <- NOT wide
exit
!
end
anlan (config)# int eth0
anlan (config-if)# no isis topology ipv6-unicast
% Configuration failed.

Error type: validation
Error description: Multi topology IS-IS can only be used with wide metrics
```

The MT commands are mainly controlled by the binded area, not by interface.
Currently if there is any MT configuration in the area, `metric-style` must
be with the `wide` mode, this requirement is sufficient.  So, the
unnecessary/wrong check for MT in the interface should be removed.

Signed-off-by: anlan_cs <anlan_cs@126.com>
2024-10-07 09:12:42 +08:00
Donna Sharp
f62dfc5d53 lib,zebra: remove unused ZEBRA_VRF_UNREGISTER
Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2024-10-06 19:40:49 -04:00
Donna Sharp
103f24485c zebra: remove unsued function from tc_netlink.c
Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2024-10-06 19:30:56 -04:00
Donna Sharp
7a63799a84 zebra: remove unused function from if_netlink.c
Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2024-10-06 19:25:44 -04:00