FRR Mirror
  1. FRR Mirror

FRR

Public
AuthorCommitMessageCommit dateIssues
Donatas AbraitisGitHubDonatas Abraitis
3da324e3678MMerge pull request #21188 from soumyar-roy/soumya/nexthopLLbgpd: fix NHT for explicit link-local BGP peers
Donald SharpGitHubDonald Sharp
13f726016fcMMerge pull request #21210 from opensourcerouting/fix/bgp_route_refresh_borrbgpd: Do not process route-refresh for AFI/SAFI if it's not negotiated
Russ WhiteGitHubRuss White
51f40797ea7MMerge pull request #21043 from opensourcerouting/fix/memory_leak_fqdn_capabilitybgpd: Free hostname for FQDN capability if the parsing goes wrong
Donald SharpGitHubDonald Sharp
69b3aba54d9MMerge pull request #21204 from cscarpitta/fix_isis_link_paramsisisd: Fix missing neighbor address Sub-TLVs after link-params change
Donatas AbraitisDonatas Abraitis
25520d45d15bgpd: Do not process route-refresh for AFI/SAFI if it's not negotiatedWe shouldn't allow processing AFI/SAFI received in route-refresh message if we don't have this AFI/SAFI enabled for this peer. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Donatas AbraitisGitHubDonatas Abraitis
a4b2f06ec94MMerge pull request #21099 from enkechen-panw/bgp-ipv6-nexthopbgpd: add config "nexthop prefer-global" for ipv6 address family
Carmine ScarpittaCarmine Scarpitta
b477964e288tests: Verify neighbor addr Sub-TLVs after link-params resetAdd test_step11() to the isis_te_topo1 topotest suite to verify that the IPv4 and IPv6 Neighbor Address Sub-TLVs in the Extended IS Reachability TLV are correctly restored after link-params changes. The test removes link-params from r1-eth0 and then re-adds them, and checks that the neighbor address Sub-TLVs are still present in the TED on all routers after the reconfiguration. Signed-off-by:...
Carmine ScarpittaCarmine Scarpitta
bfa173f319aisisd: Fix missing neighbor address Sub-TLVs after link-params changeWhen link-params are removed from an interface, Zebra notifies IS-IS via the zebra_if_update_link_params hook, triggering isis_mpls_te_update(). That function calls isis_link_params_update(), which resets ext->status to keep only SR-related Sub-TLV flags — clearing EXT_NEIGH_ADDR and EXT_NEIGH_ADDR6, which control advertisement of the IPv4 and IPv6 Neighbor Address Sub-TLVs, so those Sub-TLVs d...
Donatas AbraitisGitHubDonatas Abraitis
df9b9ecf3b5MMerge pull request #20988 from enkechen-panw/cluster-cmpbgpd: include length in cluster_hash_cmp()
Enke ChenEnke Chen
826e380da86bgpd: include length in cluster_hash_cmp()For robustness, the lengths should be compared even when the pointers are equal. Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
Enke ChenEnke Chen
35044b86010tests: add topotest for bgp "nexthop prefer-global"Add a topotest for bgp "nexthop prefer-global". Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
Enke ChenEnke Chen
4e9fd325707doc: add documentation for bgp "nexthop prefer-global"Add documentation for bgp "nexthop prefer-global". Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
Enke ChenEnke Chen
1265922cc0abgpd: add config "nexthop prefer-global" for ipv6 address familyThis command is similar to "set ipv6 next-hop prefer-global" in a route-map, but it's global and is applied to the ipv6 routes from all neighbors. BGP may receive a link-local ipv6 address, and a global IPv6 address as the nexthops from a directly connected peer. The default in FRR is to use the link-local address. This config would override the default and use the global ipv6 address instead...
Mark StappGitHubMark Stapp
455cb9166b6MMerge pull request #21183 from quentinbaradat/fix/isis-spf-vertex-adj-memleakisisd: fix memory leak in remove_excess_adjs()
Donald SharpGitHubDonald Sharp
41e8ac5fe21MMerge pull request #21105 from Jafaral/bfd-scanbfdd: harden packet validation and reflector handling
Soumya RoySoumya Roy
1f6eea1f77btests: add NHT validation tests for explicit LL BGP peersSigned-off-by: Soumya Roy <souroy@nvidia.com>
Soumya RoySoumya Roy
92eeefbd64dbgpd: fix NHT for explicit link-local BGP peersWhen a BGP peer is configured with an explicit IPv6 link-local address (neighbor fe80::1 interface swp1), the NHT peer-tracking code skipped deriving the ifindex from the kernel-provided scope_id because peer->conf_if is NULL for this configuration style. This caused peer-tracking to create a BNC keyed with ifindex 0 while path-tracking created a separate BNC keyed with the real ifindex from s...
Quentin BaradatQuentin Baradat
d7c0d46f06bisisd: add unit test for remove_excess_adjs() memory leak fixAdd a test that verifies remove_excess_adjs() properly frees the isis_vertex_adj it removes from the list. The test uses FRR's per-MTYPE allocation counter (n_alloc) to assert that: - After remove_excess_adjs(): exactly one MTYPE_ISIS_VERTEX_ADJ allocation is freed (not just unlinked) - After full list cleanup: all allocations return to baseline Without the fix in the preceding commit, the ...
Donald SharpGitHubDonald Sharp
bf2a8cf4700MMerge pull request #21158 from Jafaral/fix-grpc-testtests: fix grpc_basic xdist collection mismatch
Donald SharpGitHubDonald Sharp
20d6c02f3c7MMerge pull request #21175 from Jafaral/ci-updateCI: fix node js deprecation warning, limit mergify backports github ci runs
Quentin BaradatQuentin Baradat
9aab8804be9isisd: fix memory leak in remove_excess_adjs()When the number of adjacencies for a vertex exceeds ISIS_MAX_PATH_SPLITS, remove_excess_adjs() calls list_delete_node() which frees the listnode but does NOT free the isis_vertex_adj data payload. This leaks one MTYPE_ISIS_VERTEX_ADJ allocation per call. In large-scale deployments, each SPF run triggers this path accumulating leaked memory. Valgrind trace: definitely lost: 3,332,608 bytes i...
Jafar Al-GharaibehJafar Al-Gharaibeh
567daf12404bfdd: cap IPv6 echo reflection to declared lengthValidate IPv6 echo payload length and reflect only bep->len bytes instead of raw receive length to avoid oversized reflection payloads. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
3a702f06b32bfdd: account for FP offset in echo length checksValidate echo packet length using bfd_offset + sizeof(*bep) so forwarding-plane packets are not parsed past received data. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
60429aa4659bfdd: fix recv errno filter logic in a few placesUse logical AND when filtering EAGAIN/EWOULDBLOCK/EINTR in bfd_recv_ipv4_fp(), bfd_recv_ipv4(), and bfd_recv_ipv6() so only real socket errors are logged. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
7312fb7086abfdd: tighten SBFD reflector packet sanity checksValidate TTL, version, and declared packet length before reflecting SBFD init packets, and only reflect cp->len bytes. Add debug logs for early packet drops. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
7786df14677bfdd: gate IPv6 echo reflection on known sessionsOnly reflect IPv6 echo packets when the source/local tuple maps to an existing BFD session, preventing unauthenticated reflection of arbitrary on-link packets. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
ef88ba31275bfdd: tighten auth header parsing skeletonRestructure bfd_check_auth() so A-bit packets are length-validated before reading auth fields, and keep explicit RFC 5880 auth-type switch branches for future implementation. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
d6f779ebbc0bfdd: validate control packet length before session lookupCheck recv length before casting/parsing the control packet so short or error reads cannot drive discriminator/session lookup with uninitialized data. Keep debug visibility for short and non-positive reads while dropping early. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehGitHubJafar Al-Gharaibeh
8653c6638a4MMerge pull request #21176 from opensourcerouting/fix/bgp_attr_encap_length_boundariesbgpd: Prevent heap use-after-free for tunnel encapsulation attribute
Jafar Al-GharaibehJafar Al-Gharaibeh
d213baa2e0fci: skip github ci for mergify PRsSkip this workflow when the PR actor is mergify[bot] to reduce load. We still run NeDEF CI, so if there are issues they would still be caught. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
6a93444aed1ci: upgrade GitHub actions for Node 24Bump checkout, upload-artifact, and download-artifact to Node 24-compatible major versions so CI remains compatible with the runner runtime migration away from Node 20. Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehGitHubJafar Al-Gharaibeh
df2f7ee818fMMerge pull request #21112 from opensourcerouting/fix/bgp_notify_wrong_strcat_sizebgpd: Return 0 if AS4 capability is malformed
Jafar Al-GharaibehGitHubJafar Al-Gharaibeh
b1fd7b93550MMerge pull request #21159 from mjstapp/fix_isis_lsp_countisisd: fix edge condition in max_lsp_count computation
Mark StappMark Stapp
77b53745e42isisd: fix edge condition in max_lsp_count computationFix an edge condition in the arithmetic in the max_lsp_count api. Signed-off-by: Mark Stapp <mjs@cisco.com>
Jafar Al-GharaibehJafar Al-Gharaibeh
ea85c7c6ffatests: fix grpc_basic xdist collection mismatchAdd a deterministic import check for grpc and grpc_tools before the subprocess-based --check call. When gRPC is not installed, all xdist workers skip consistently, avoiding the collection mismatch that causes pytest-xdist to abort with "Different tests were collected". Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Jafar Al-GharaibehGitHubJafar Al-Gharaibeh
1367b9f7358MMerge pull request #21127 from donaldsharp/slow_down_mgmt_configtests: Slow down test_config.py to allow for processing time to happen
Mark StappGitHubMark Stapp
510f9ff9066MMerge pull request #21124 from Manpreet-k0/bgp_crash_iolib: fix crash in thread_process_io_inner_loop on stale epoll event
Jafar Al-GharaibehGitHubJafar Al-Gharaibeh
c09e3032ab4MMerge pull request #21114 from donaldsharp/fix_multicast_pim_topo_testtests: Ensure upstream IIF is in correct state after interface events
Donald SharpGitHubDonald Sharp
3d21e619e51MMerge pull request #21028 from kzhang-amzn/fix/bgp-io-spinbgpd: fix I/O thread spinning when peer input queue is full
Donald SharpGitHubDonald Sharp
0cf063e2e9bMMerge pull request #21101 from mjstapp/fix_bgp_pkt_2bgpd: fix errors in several paths
Donald SharpGitHubDonald Sharp
d32c77d4c1fMMerge pull request #21108 from cscarpitta/fix_bgp_ls_tedbgpd: Fix issues in BGP-LS node/link/prefix origination
Ke ZhangKe Zhang
3d036e4e310tests: add topotest for BGP I/O thread CPU spin on full input queueAdd a stress test that replicates the I/O thread spin bug fixed in commit ed405bf22 ("bgpd: fix I/O thread spinning when peer input queue is full"). A raw BGP speaker (bgp_sender.py) blasts 10000 UPDATE messages via non-blocking I/O, each carrying a 15-ASN AS_PATH to increase per-route processing cost. The total data (~740 KB) exceeds the ibuf_work ring buffer (~96 KB), creating sustained TCP ...
Mark StappGitHubMark Stapp
e79dbf98da2MMerge pull request #21093 from donaldsharp/pim_issues_that_need_to_be_fixedPIM message-handling code fixes
Donatas AbraitisGitHubDonatas Abraitis
8d689889ce1MMerge pull request #21118 from mjstapp/fix_ldp_parsingldpd: improve tlv validation in several places
Donald SharpDonald Sharp
507729bbf3ctests: Slow down test_config.py to allow for processing time to happenThe code has this pattern: a) Input some cli b) Look for success The test is not being graceful in that under heavy load, a) might not have finished. Give the test system more time to get to an answer. Please note, I am actually still seeing a honest to goodness bug in mgmtd that this test is exposing, but the messages about the `cli is locked` and test failing for not being given enough ti...
Carmine ScarpittaCarmine Scarpitta
8fbdb4fa767bgpd: Fix missing present_tlvs bit for Link ID in link NLRIWhen originating/withdrawing a Link NLRI, link_remote_id is filled in the bgp_ls_nlri structure but BGP_LS_LINK_DESC_LINK_ID_BIT is not set in link_desc.present_tlvs. Fix by setting BGP_LS_LINK_DESC_LINK_ID_BIT in both bgp_ls_originate_link() and bgp_ls_withdraw_link(). Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Carmine ScarpittaCarmine Scarpitta
6e2323aabe6bgpd: Require valid TED objects in BGP-LS originate/withdraw APIsBGP-LS node/link/prefix originate and withdraw handlers are expected to receive valid TED objects. Add explicit checks at the beginning of each function and return early on invalid inputs, before any further processing. This makes the API contract clear, avoids NULL dereferences, and keeps the originate/withdraw paths consistent. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Carmine ScarpittaCarmine Scarpitta
46c3d1c8527bgpd: Include local-node ASN in link withdraw NLRIA Link NLRI contains two nodes: local node and remote node. Per RFC 9552, each node is identified by ASN, OSPF Area ID, and IGP Router ID. For the remote node, `bgp_ls_withdraw_link` sets ASN, OSPF Area ID, and IGP Router ID when generating the NLRI. For the local node, `bgp_ls_withdraw_link` sets only OSPF Area ID and IGP Router ID when generating the NLRI. Add ASN for the local node as wel...
Carmine ScarpittaCarmine Scarpitta
06036a10e40bgpd: Fix use-after-free in BGP-LS node origination`bgp_ls_originate_node()` could free `ls_attr` after `bgp_ls_populate_node_attr()` failure, then continue and pass the freed pointer to `bgp_ls_update()`. Fix by returning immediately after `bgp_ls_attr_free(ls_attr)` on populate failure. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Manpreet KaurManpreet Kaur
cbb00bad815lib: fix crash in thread_process_io_inner_loop on stale epoll eventWhen do_event_cancel() processes a pending cancellation at the top of event_fetch_inner_loop(), it removes the fd from the epoll_event_hash and calls EPOLL_CTL_DEL. However, epoll_wait() can still deliver events that were already queued in the kernel's ready list before the EPOLL_CTL_DEL took effect. When thread_process_io_inner_loop() processes such a stale event, the hash lookup returns NULL...