Commit Graph

38067 Commits

Author SHA1 Message Date
Mark Stapp
75bc4a47b7
Merge pull request #18049 from donaldsharp/fpm_keep_on_trying
zebra: Allow fpm_listener to continue to try to read
2025-02-12 08:47:02 -05:00
Jafar Al-Gharaibeh
d275f551c3
Merge pull request #18069 from cscarpitta/fix/bgp_request_srv6_locator
bgpd: Request SRv6 locator after zebra connection
2025-02-11 20:59:22 -06:00
Jafar Al-Gharaibeh
c821a7a207
Merge pull request #18078 from pguibert6WIND/nhrp_incomplete_msg
nhrpd: fix dont consider incomplete L2 entry
2025-02-11 20:57:09 -06:00
Russ White
9af82a24ce
Merge pull request #18037 from pguibert6WIND/bmp_bgp_open_router_id_and_as_val
Bmp bgp open router id and as val
2025-02-11 13:43:09 -05:00
Donald Sharp
54dc8382eb zebra: Allow fpm_listener to continue to try to read
Currently when the fpm_listener attempts to read say X
bytes it may only get Y( which is less than X ).  In this
case we should assume that the dplane_fpm_nl code is just
being slow, as that we know it is possible for it to send
a partial fpm message.  Let's just loosen the constraints
a bit and allow data to flow.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-11 12:42:02 -05:00
Donald Sharp
f64104bd97
Merge pull request #18060 from opensourcerouting/lib-crashlog-signals
lib: crash handlers must be allowed on threads
2025-02-11 12:25:28 -05:00
Russ White
c2159b7f53
Merge pull request #18081 from chiragshah6/bgp_dev6
bgpd: fix bgp vrf instance creation from implicit
2025-02-11 12:19:45 -05:00
Russ White
b814cc5706
Merge pull request #18034 from donaldsharp/unneeded_isisd
isisd: Remove unneeded modify functions
2025-02-11 08:50:09 -05:00
Russ White
b040b83c35
Merge pull request #17870 from opensourcerouting/fix/bgp_show_ip_bgp_cmd_internal
bgpd: Show internal data for BGP routes
2025-02-11 08:44:43 -05:00
Russ White
5518a8c916
Merge pull request #17370 from louis-6wind/fix-vpn-leaking
bgpd: fix for the validity and the presence of prefixes in the BGP VPN table.
2025-02-11 08:41:03 -05:00
Philippe Guibert
3202323052 nhrpd: fix dont consider incomplete L2 entry
Sometimes, NHRP receives L2 information on a cache entry with the
0.0.0.0 IP address. NHRP considers it as valid and updates the binding
with the new IP address.

> Feb 09 20:09:54 aws-sin-vpn01 nhrpd[2695]: [QQ0NK-1H449] Netlink: new-neigh 10.2.114.238 dev dmvpn1 lladdr 162.251.180.10 nud 0x2 cache used 0 type 4
> Feb 09 20:10:35 aws-sin-vpn01 nhrpd[2695]: [QQ0NK-1H449] Netlink: new-neigh 10.2.114.238 dev dmvpn1 lladdr 162.251.180.10 nud 0x4 cache used 1 type 4
> Feb 09 20:10:48 aws-sin-vpn01 nhrpd[2695]: [QQ0NK-1H449] Netlink: del-neigh 10.2.114.238 dev dmvpn1 lladdr 162.251.180.10 nud 0x4 cache used 1 type 4
> Feb 09 20:10:49 aws-sin-vpn01 nhrpd[2695]: [QQ0NK-1H449] Netlink: who-has 10.2.114.238 dev dmvpn1 lladdr (unspec) nud 0x1 cache used 1 type 4
> Feb 09 20:10:49 aws-sin-vpn01 nhrpd[2695]: [QVXNM-NVHEQ] Netlink: update binding for 10.2.114.238 dev dmvpn1 from c 162.251.180.10 peer.vc.nbma 162.251.180.10 to lladdr (unspec)
> Feb 09 20:10:49 aws-sin-vpn01 nhrpd[2695]: [QQ0NK-1H449] Netlink: new-neigh 10.2.114.238 dev dmvpn1 lladdr 0.0.0.0 nud 0x2 cache used 1 type 4
> Feb 09 20:11:30 aws-sin-vpn01 nhrpd[2695]: [QQ0NK-1H449] Netlink: new-neigh 10.2.114.238 dev dmvpn1 lladdr 0.0.0.0 nud 0x4 cache used 1 type 4

Actually, the 0.0.0.0 IP addressed mentiones in the 'who-has' message is
wrong because the nud state value means that value is incomplete and
should not be handled as a valid entry. Instead of considering it, fix
this by by invalidating the current binding. This step is necessary in
order to permit NHRP to trigger resolution requests again.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-11 11:50:52 +01:00
Philippe Guibert
323d8edcd7 bgpd: fix bmp loc-rib peer up message should use correct AS number
The transmitted AS value in te tx open message of the peer up loc-rib
message is set to 0. Actually, it should reflect the AS value of the
current BGP instance.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-11 11:49:28 +01:00
Philippe Guibert
2a143041f8 bgpd: fix loc-rib open message should use router-id
When forging BMP open message, the BGP router-id of tx open message of
the BMP LOC-RIB peer up message is always set to 0.0.0.0, whatever the
configured value of 'bgp router-id'.

Actually, when forging a peer up LOC-RIB message, the BGP router-id
value should be taken from the main BGP instance, and not from the peer
bgp identifier. Fix this by refreshing the router-id whenever a peer up
loc-rib message should be sent.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2025-02-11 11:49:28 +01:00
Chirag Shah
2ff08af78e bgpd: fix bgp vrf instance creation from implicit
In bgp route leak, when import vrf x is executed,
it creates bgp instance as hidden with asn value as unspecified.

When router bgp x is configured ensure the correct as,
asnotation is applied otherwise running config shows asn value as 0.

This can lead to frr-reload failure when any FRR config change.

Fix:
Move asn and asnotiation, as_pretty value in common done section,
so when bgp_create gets existing instance but before returning
update asn and required fields in common section.

In bgp_create(): when returning for hidden at least update asn
and required when bgp instance created implicitly due to vrf leak.

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

Before fix:
show running:

router bgp 0 vrf purple
 bgp router-id 10.10.3.11
 !
 address-family ipv4 unicast
  redistribute static
  import vrf blue
 exit-address-family
 !
 address-family ipv6 unicast
  import vrf blue
 exit-address-family
 !
 address-family l2vpn evpn
  advertise ipv4 unicast
  advertise ipv6 unicast
 exit-address-family
exit

Testing:

1) following snippet config:
router bgp 63420 vrf blue
 import vrf purple
router bgp 63420 vrf purple
 import vrf blue
2) restart frr leads to the running config with 0 asn value.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2025-02-10 19:08:00 -08:00
Donald Sharp
baf4c1a78f
Merge pull request #18077 from y-bharath14/srib-babeld-code-maintainability
babeld: Improve code clarity and maintainability
2025-02-10 09:48:23 -05:00
David Lamparter
a97be61de8
Merge pull request #17775 from gromit1811/pr_journald_bugfix 2025-02-10 09:27:50 +01:00
Y Bharath
db8e385752 babeld: Improve code clarity and maintainability
Improve code clarity and maintainability

Signed-off-by: y-bharath14 <y.bharath@samsung.com>
2025-02-10 11:43:05 +05:30
Carmine Scarpitta
16640b615d bgpd: Request SRv6 locator after zebra connection
When SRv6 is enabled and an SRv6 locator is specified in the BGP
configuration, BGP 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/06 16:37:32 BGP: [HR66R-TWQYD][EC 100663302] srv6_manager_get_locator: invalid zclient socket
````

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

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

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2025-02-09 00:54:29 +01:00
Russ White
2ef76a3350
Merge pull request #17871 from opensourcerouting/feature/bgp_link_local_capability
bgpd: Implement Link-Local Next Hop capability
2025-02-07 14:00:59 -05:00
Donald Sharp
eebe460168
Merge pull request #18045 from LabNConsulting/ziemba/250205-rfapi-mem-cleanup
bgpd: rfapi: fix mem leak when killed
2025-02-07 11:20:08 -05:00
David Lamparter
13a6ac5b4c lib: crash handlers must be allowed on threads
Blocking all signals on non-main threads is not the way to go, at least
the handlers for SIGSEGV, SIGBUS, SIGILL, SIGABRT and SIGFPE need to run
so we get backtraces.  Otherwise the process just exits.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2025-02-07 13:37:43 +01:00
Jafar Al-Gharaibeh
452732024e
Merge pull request #18048 from opensourcerouting/msdpt3f
pimd: fix DR election race on startup
2025-02-06 21:40:45 -06:00
Rafael Zalamena
fd66ede08b
Merge pull request #14105 from routingrocks/pim_ageout_fix
pimd: Fix for FHR mroute taking longer to age out
2025-02-06 21:25:45 -03:00
Rafael Zalamena
8644524606 pimd: fix DR election race on startup
In case interface address is learnt during configuration, make sure to
run DR election when configuring PIM/PIM passive on interface.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2025-02-06 19:30:51 -03:00
Russ White
f04f611633
Merge pull request #18033 from donaldsharp/isis_leak_lists
isisd: Do not leak a linked list in the circuit
2025-02-06 13:14:50 -05:00
G. Paul Ziemba
125a480b53 bgpd: rfapi: if BGP is terminating, free peer BPIs now instead of using timer
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2025-02-06 08:45:01 -08:00
Jafar Al-Gharaibeh
92b8e14460
Merge pull request #18038 from opensourcerouting/msdp-filter-leak
pimd: fix memory leak and assign allocation type
2025-02-06 10:31:31 -06:00
Rajesh Varatharaj
afed39ea2b pimd: Fix for FHR mroute taking longer to age out
Issue:
When there is no traffic for a group, the LHR and RP take the default KAT+Join timer expiry of
a maximum of 480 seconds to clear the S,G . However, in the FHR, we update the state from JOINED
to NOT Joined, downstream state from PPto NOINFO.  This restarts the ET timer, causing S,G on FHR to
take more than 10 minutes to age out.

In other words,
Consider a case where (S,G) is in Join state. When the traffic stops and the KAT (210) expires,
 the Join expiry timer restarts. At this time, if we receive a prune, the expectation is to set
 PPT to 0 (RFC 4601 sec 4.5.2).
 When the PPT expires, we move to the noinfo state and restart the expiry timer one more time. We remove the
 (S,G) entry only after ~10 minutes when there is no active traffic.

Summary:
KAT Join ET 210 + PP ET 210 + NOINFO ET 210.

Solution:
Delete the ifchannel when in noinfo state, and KAT is not running.

Ticket: #13703

Signed-off-by: Rajesh Varatharaj <rvaratharaj@nvidia.com>
2025-02-06 10:19:46 -06:00
Jafar Al-Gharaibeh
92288c9069
Merge pull request #17865 from donaldsharp/coverity_2024_new_hotness
Coverity 2024 new hotness
2025-02-06 10:15:55 -06:00
Martin Winter
075f44a417
Merge pull request #18029 from donaldsharp/more_support_bundle_data
tools: Add some more support bundle commands
2025-02-06 15:12:49 +01:00
Mark Stapp
e46bd54541
Merge pull request #18025 from donaldsharp/remove_sbfd_pymark
tests: Remove improper pymark
2025-02-06 08:58:27 -05:00
Rafael Zalamena
d1440dadff pimd: fix memory leak and assign allocation type
Use a memory allocation specific type for filter names (to help detect memory
leaks) and fix a memory leak when releasing peer memory.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2025-02-06 10:17:19 -03:00
Donald Sharp
bbb764c0f0 isisd: Remove unneeded modify functions
Our infrastructure was complaining about this:

2025/02/05 19:38:42 ISIS: [ZKB8W-3S2Q4][EC 100663330] unneeded 'modify' callback for '/frr-isisd:isis/instance/fast-reroute/level-1/lfa/tiebreaker/type'
2025/02/05 19:38:42 ISIS: [ZKB8W-3S2Q4][EC 100663330] unneeded 'modify' callback for '/frr-isisd:isis/instance/fast-reroute/level-2/lfa/tiebreaker/type'

Seems we don't need it.  Let's just remove it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-05 20:46:25 -05:00
Donald Sharp
3510a37b11 isisd: Do not leak a linked list in the circuit
Address sanitizer was telling us that linked lists
were being leaked.  No need to do so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-05 20:15:01 -05:00
Russ White
a02ec27693
Merge pull request #17987 from pguibert6WIND/evpn_bgp_l2_attr_ext_community
bgpd: add L2 attr community support as per RFC8214
2025-02-05 10:17:46 -05:00
Donald Sharp
0b42b4ce6d
Merge pull request #17901 from opensourcerouting/nexthop_hashing
lib: actually hash all 16 bytes of IPv6 addresses, not just 4
2025-02-05 09:14:58 -05:00
Donald Sharp
2bda884dfd tools: Add some more support bundle commands
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-05 09:08:11 -05:00
Russ White
3fabd4f4f9
Merge pull request #18014 from donaldsharp/nexthop_leak
Nexthop leak
2025-02-05 08:32:13 -05:00
Donald Sharp
b7d58011bd
Merge pull request #18018 from forrestchu/sbfd
doc: fix sbfd.rst doc warnings
2025-02-05 08:17:52 -05:00
Donald Sharp
3b9595e91c tests: Remove improper pymark
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-05 08:16:03 -05:00
Jafar Al-Gharaibeh
8d71ce9d7d
Merge pull request #18000 from donaldsharp/bgp_eoiu_mem_leak
bgpd: Fix up memory leak in processing eoiu marker
2025-02-04 23:20:42 -06:00
wumu.zsl
6c45ec3929 doc: fix sbfd.rst doc warnings
Signed-off-by: wumu.zsl <wumu.zsl@alibaba-inc.com>
2025-02-05 02:18:23 +00:00
Donald Sharp
abbfcc49f9 zebra: Fix srv6 segment nexthop memory leak.
The srv6 segment was being set but never freed
on the statically allocated nexthop.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-04 15:13:48 -05:00
Russ White
1cbb4b9e3d
Merge pull request #17962 from donaldsharp/fpm_problems
Fpm problems
2025-02-04 15:09:05 -05:00
Donald Sharp
29dcfd415f zebra: Stop leaking labels when receiving nexthops from kernel
This leak is happening:
Direct leak of 96 byte(s) in 2 object(s) allocated from:
    0 0x7f6922eb83b7 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
    1 0x7f6922a38ebb in qcalloc lib/memory.c:106
    2 0x7f6922a553d6 in nexthop_add_srv6_seg6 lib/nexthop.c:652
    3 0x562825e56b38 in parse_nexthop_unicast zebra/rt_netlink.c:589
    4 0x562825e58c4a in netlink_route_change_read_unicast_internal zebra/rt_netlink.c:1291
    5 0x562825e58eef in netlink_route_change_read_unicast zebra/rt_netlink.c:1321
    6 0x562825e64921 in netlink_route_change zebra/rt_netlink.c:1494
    7 0x562825e43407 in netlink_information_fetch zebra/kernel_netlink.c:407
    8 0x562825e439b5 in netlink_parse_info zebra/kernel_netlink.c:1148
    9 0x562825e44060 in kernel_read zebra/kernel_netlink.c:510
    10 0x7f6922aeca72 in event_call lib/event.c:1984
    11 0x7f6922a19e01 in frr_run lib/libfrr.c:1246
    12 0x562825e4b0b9 in main zebra/main.c:543
    13 0x7f692250c249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

Just check to see if it has been allocated.  The nexthop is a stack
variable so it's a bit odd.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2025-02-04 15:00:12 -05:00
Russ White
063c8cc6e5
Merge pull request #17988 from cscarpitta/feature/srv6-ipv4-traffic-steering
staticd: Add CLI to support steering of IPv4 traffic over SRv6 SID list
2025-02-04 11:45:02 -05:00
Russ White
4349cab51b
Merge pull request #17953 from donaldsharp/limit_ip_protocol
lib: Remove System routes from ip protocol route map choices
2025-02-04 11:43:10 -05:00
Russ White
d57353db2b
Merge pull request #17918 from lsang6WIND/bgp_evpn_route_map
Add bgpevpn route type-2 route map filter tests
2025-02-04 11:42:42 -05:00
Russ White
e6228f7880
Merge pull request #17896 from opensourcerouting/fix/bgp_oad_extended_communities
bgpd: Send non-transitive extended communities from/to OAD peers
2025-02-04 11:42:16 -05:00
Russ White
24fa9eede4
Merge pull request #16593 from baozhen-H3C/202408151540
isisd: 'tiebreaker' command line funtionality is inconsistent with its implementation
2025-02-04 11:39:29 -05:00