bgpd: Skip route clearing for peers that were never establishedWhen bgp_fsm_change_status() transitions a peer to Clearing or Deleted
state, it still unconditionally calls bgp_clear_route_all() which walks the
entire BGP table. For peers that were not in Established state (e.g.,
doppelganger peers from TCP collision resolution), this walk is pure overhead
The previous fix(e0ae285) uses peer->established which is a monotonically
increasing counter that is ...
bgpd: use bgp_node_match() instead of bgp_node_get() in aggregate countbgp_node_get() creates a transient node in the aggregate table for the
route prefix just to anchor a parent walk, which is wasteful.
bgp_node_match() does a longest-prefix match and returns only nodes
where aggregate data is actually present, without creating any new node.
Return early if bgp_node_match() returns NULL, meaning no covering
aggregate exists for the route prefix.
Signed-off-by: E...
tests: Ensure that `no network ...` actually worksShow that the no network command works properly for
VPN routes in bgp.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: Allow `no network ....` form for safi = EVPN or MPLS_VPNCurrently when you negate a network statement for bgp:
router bgp 3295425
address-family ipv4 vpn
network 10.0.0.0/24 rd 1:1 label 2000
You get `no such network`. Fix the code to allow for deletion:
eva# do show bgp ipv4 vpn
BGP table version is 1, local router ID is 192.168.122.1, vrf id 0
Default local pref 100, local AS 329395
Status codes: s suppressed, d damped, h history, u unsort...
tests: Add topotest for BGP-LS SRv6 extensionsAdd a new topotest that validates BGP-LS SRv6 behavior end-to-end.
The test brings up an IS-IS SRv6 domain with a BGP-LS producer and
consumer, verifies session and capability negotiation, and checks that
the expected SRv6-related BGP-LS NLRIs and attributes are originated
and received correctly.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
bgpd: Fix missing link-state attributes in BGP-LS route JSON outputshow bgp link-state link-state json does not include BGP-LS link-state
attributes, so SRv6/BGP-LS attribute data is not visible in JSON output.
When rendering SAFI_BGP_LS paths, add linkStateAttrs by serializing
attr->ls_attr with bgp_ls_attr_to_json().
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
bgpd: Add support for SRv6 Endpoint Behavior TLVRFC 9514 defines SRv6 Endpoint Behavior TLV (1250) for SRv6 SID
attributes in BGP-LS.
Extend BGP-LS attribute handling to support TLV 1250: add endpoint
behavior data fields, parse and encode logic with validation, and
include this TLV in attribute comparison and JSON/CLI output.
Also populate SRv6 SID NLRI attributes from TED prefix data so endpoint
behavior (and related SID structure data) ...
bgpd: Add support for SRv6 SID NLRIRFC 9514 defines SRv6 SID NLRI (type 6) for BGP-LS.
Add SRv6 SID NLRI data structures and descriptor TLV definitions, and
implement encode/decode, size/hash/compare/validate, copy/free, and
string/JSON/CLI display handling for the new NLRI type.
Extend TED processing to originate and withdraw SRv6 SID NLRIs from
SRv6-capable prefix entries, alongside the existing prefix NLRI flow.
Signed-off...
bgpd: Add support for SRv6 Locator TLVRFC 9514 defines SRv6 Locator TLV (1162) for BGP-LS prefix attributes.
Extend BGP-LS attribute handling to support TLV 1162: add locator data
model fields, parse and encode logic with length/duplicate checks, and
skip any trailing sub-TLV payload.
Also include locator fields in attribute comparison and expose them in
JSON/CLI output, then populate them from TED SRv6 locator prefix data.
Sign...
bgpd: Add support for SRv6 LAN End.X SID TLVsRFC 9514 defines SRv6 LAN End.X SID TLVs for IS-IS (1107) and OSPFv3
(1108) link attributes.
Extend BGP-LS attribute handling to support these TLVs: add LAN End.X
SID data model fields, parse and encode logic for both IS-IS and OSPF
formats, and support optional SID Structure sub-TLV parsing/encoding.
Also add compare/copy/free handling, JSON/CLI rendering, and TED-to-
BGP-LS population so LA...
bgpd: Add support for SRv6 End.X SID TLVRFC 9514 defines SRv6 End.X SID TLV (1106) for BGP-LS link attributes.
Extend BGP-LS attribute handling to support TLV 1106: add End.X SID
data model fields, parse and encode logic (including optional SID
Structure sub-TLV), and lifecycle handling for compare/copy/free.
Also populate End.X SID attributes from TED link adjacency data and
expose them in JSON and CLI output.
Signed-off-by: Carm...
bgpd: Add support for SRv6 SID Structure TLVRFC 9514 defines SRv6 SID Structure TLV (1252) for BGP-LS SRv6 SID
attributes.
Extend BGP-LS attribute handling to support TLV 1252: add SID Structure
data model fields, parse and encode logic, and validation for TLV size
and total bit-length constraints.
Also include SID Structure in attribute comparison and expose it in
JSON and CLI output for BGP-LS route inspection.
Signed-off-by: Carmin...
bgpd: Add support for SRv6 Capabilities TLVRFC 9514 defines SRv6 Capabilities TLV (1038) for BGP-LS node
attributes.
Extend BGP-LS attribute handling to support this TLV: add data model
fields and flags, parse and encode TLV 1038, include it in attribute
comparison, and expose it in JSON/CLI output.
Also populate SRv6 capability flags from TED node data so capabilities
are exported in originated BGP-LS updates.
Signed-off-by: Carmine...
isisd: Advertise link endpoint attributes when SRv6 is enabledToday IS-IS advertises additional link attributes (for example, link endpoint
identifiers such as interface indexes and addresses) only when MPLS-TE is
enabled. These attributes are also required for SRv6 use cases.
Extend IS-IS to advertise the same link attribute information when SRv6 is
enabled.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
isisd: Distribute link-state dataIntroduce a dedicated distribute-link-state setting to export IS-IS link-state
data to external consumers.
- Add YANG leaf
- Add CLI command and northbound callback wiring
- Extend IS-IS to export topology information to the link-state database
when distribute-link-state is enabled
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
isisd: Export SRv6 SID Structure in TE link-state attributesRFC 9352 defines optional SID Structure sub-sub-TLVs for SRv6 SIDs.
When building TE link-state data, IS-IS currently exports SRv6 End,
End.X, and LAN End.X SID information but does not carry SID Structure.
Extend isis_te to copy SID Structure (LB/LN/FN/ARG lengths) from SRv6
sub-sub-TLVs into exported link-state attributes and prefix SID data.
Signed-off-by: Carmine Scarpitta <cscarpit@cisc...
lib: Store SRv6 SID Structure for End/End.X SIDs in link-state objectsRFC 9352 defines SRv6 SID sub-TLVs, with optional SID Structure
information.
IS-IS already parses these TLVs, but SID Structure is not stored in
LSDB link-state objects.
Extend the link-state library to store SID Structure for SRv6 End and
End.X SIDs.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
bgpd: warmboot failure when wfi enabledFIB Install pending are not set for EVPN routes during GR, so WFI feature will
not work for EVPN routes during GR.
fix is we stop the selct defer timer for evnp routes, so that
warmboot WFI flows are not processed for evpn routes.
Ticket: #4834366
Testing:
mlx-4600-05# show bgp router
BGP started gracefully at Tue Jan 20 17:58:06 2026
Graceful restart completed at Tue Jan 20 17:58:15 2026
BGP...
pimd: cap neighbors and reject PIM when iface has no PIMCap the neighbor list per interface (PIM_NEIGHBOR_LIST_MAX) to bound memory
and DR-election work when many spoofed Hellos appear.
Reject Hello / Join/Prune / Assert when PIM is not enabled on the receiving
interface (with optional packet debug).
Document neighbor-filter-prefix-list in YANG as an optional extra filter on PIM
neighbor source addresses.
Signed-off-by: Jafar Al-Gharaibeh <jafar@...
bgpd: Modify show commands to include sin6_scope_idWhen displaying LL peerings in bgp, include the sin6_scope_id
as a value to be dumped as well.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
lib: Modify sockunion_cmp to include the sin6 interface idWhen using LL's in a sockunion, the sin6_scope_id is being
set to allow for differentiation at the socket level,
yet it is not being included in the test for a sockunion_cmp,
modify the code to do this.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: EVPN rd all option for route outputTicket: #4992460
Testing:
Before fix:
btor-11# show bgp l2vpn evpn route rd all prefix 2060:1:1:110::/64
% Malformed Route Distinguisher
After fix:
btor-11# show bgp l2vpn evpn route rd all prefix 2060:1:1:110::/64
Route Distinguisher: 144.1.1.6:9
BGP routing table entry for 144.1.1.6:9:[5]:[0]:[64]:[2060:1:1:110::]
Paths: (1 available, best #1)
Not advertised to any peer
Route [5]:[0]...
bgpd: Add command to display EVPN type-5 per-prefixAdd support for command
show bgp l2vpn evpn route rd <rd> prefix <prefix> [json]
This is currently a Cumulus-specific change. Multiple of the EVPN operational
commands need to be unified with upstream changes which have now caught up
to display most of the needed information of the global EVPN table but differ
in some aspects from existing Cumulus commands. The unification also needs
to handle...