tests: bgp_soo: stabilise IPv4 path counts on CPE configsIssue in existing topotest:
E AssertionError: IPv4 advertised-routes json brief on cpe1 does
not match expected prefixes/shape
E assert Generated JSON diff error report:
E
E > $->advertisedRoutes->192.168.2.0/24->multiPathCount:
output has element with value '3' but in expected it has value '2'
Rootcause and fix:
The IPv6 BGP peers added to cpe1/cpe2 in 28b3ffef8b3f did not...
pimd: guard NULL rp lookup in pim_bsm_clear upstream refreshWhen BSM state is cleared, refresh each (*,G) upstream against the
current RP mapping. Skip the dereference when pim_rp_find_match_group()
returns NULL and treat it as no RP configured.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
pimd: guard NULL rp_all when instating BSM pending RP listpim_instate_pend_list() dereferenced the 224.0.0.0/4 RP without checking
whether pim_rp_find_match_group() succeeded. Treat a failed lookup like
an unconfigured RP and install from the pending BSM list instead.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
pimd: guard NULL rp lookup in pim_rp_del upstream refreshpim_rp_find_match_group() can return NULL during shutdown or when
only prefix-list RPs are configured. Treat a failed lookup like an
unset RP when refreshing (*,G) upstreams after RP deletion.
Fixes FRRouting/frr#6088.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
bgpd: refactor bgp_aggregate_{increment,decrement}The two functions share identical guard logic and loop structure; the
only difference is whether they call bgp_add_route_to_aggregate() or
bgp_remove_route_from_aggregate(). Factor the common body into a static
helper bgp_aggregate_adjust_count() controlled by a bool increment
parameter, and reduce bgp_aggregate_increment/decrement to thin wrappers.
Signed-off-by: Enke Chen <enchen@paloaltonet...
tests: fix bgp_soo topotest by separating IPv4/IPv6 address familiesThe bgp_soo topotest was flaky because IPv4 routes were being advertised
over both IPv4 and IPv6 BGP sessions due to the default behavior of
"bgp default ipv4-unicast" which auto-activates IPv4 unicast for all
neighbors.
This caused inconsistent path counts depending on timing:
- Sometimes multiPathCount showed 2 or 3 instead of expected values
- The duplicate paths from IPv6 sessions carrying...
yang: use relative path for remaining route-map when clausesf1ea52bee9 ("yang: use relative path instead of absolute one for
route-map") converted most absolute XPath expressions in route-map
YANG modules to relative paths, but missed 8 occurrences:
- frr-bgp-route-map.yang: rpki-extcommunity (1)
- frr-pim-route-map.yang: multicast match conditions (7)
Using absolute XPath is not optimal for finding the target node.
libyang's lyd_find_xpath() incu...
docker: Add snmptrapd to list of thingies to installsnmptrapd not being installed causes a test to skip.
Let's let the docker ci stuff run this test too.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: Add vrf name to more bestpath debugsFound more places where bestpath debugs did not print the bgp vrf
being operated on. Let's make it easier to understand which vrf
is being operated on.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
pimd: fix AutoRP holdtime parsing and minor cleanupUse ntohs for received holdtime and drop a duplicate prefix-list
lookup. Note in pim_socket_leave() that leave failures share the
joins_failed stat counter.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
mgmtd: fix link order for libmgmt_be_nblibmgmt_be_nb.la contains rip_cli.o and ripng_cli.o which reference
symbols from libfrr (if_rmap_init, group_distribute_list_ipv4_cli_show,
etc.). With the current link order, libmgmt_be_nb.la is added after
libfrr.la, so the linker doesn't know to pull in those symbols when
processing libfrr.
Move libmgmt_be_nb.la before libfrr.la in the link order so that its
undefined references are resolv...
doc: Note that snmptrapd needs to be installed as well.A test depends on snmptrapd being installed. Note it
in our documentation.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: Attempt to load the sch_netem moduleThe test_bfd_ospf_quicknbr_topo1.py was not attempting
to load the sch_netem module and as such was probably
never being run in any topotests at all. Let's try
to just modprobe the module and if it succeeds allow
the test to continue.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
tests: skip grpc_basic when FRR gRPC module is missingAfter dropping the collection-time grpc-query --check guard, CI always
collected grpc_basic when Python grpc was installed, but grpc.s (frr-grpc)
might not be installed. Zebra then failed to start with -M grpc and
surfaced as a misleading mgmtd connection timeout. Skip the module when
the northbound gRPC module is absent.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
ospf6d: bypass MinLSArrival for self-originated MaxAge LSAsDeployment / how this surfaced:
The failure was observed in an EVPN VXLAN L2VPN setup with the
following ingredients:
- Several VTEP nodes (TOR / border-TOR roles) terminating EVPN
type-2/3/5 routes.
- iBGP EVPN sessions between VTEPs, sourced from each VTEP's
IPv6 loopback (multi-hop iBGP through one or more spines).
- OSPFv3 (IPv6) as the underlay, advertising the VTEP loopback
...
tests: make gcov coverage robust under parallel topotestsUse -fprofile-update=atomic for gcov builds and tell lcov to ignore
corrupted counters so xdist runs can still produce coverage.info.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
tests: fail fast when --cov-topotest lacks gcov buildExit during pytest configure if no *.gcno files are found, instead of
running all topotests and failing with missing GCOV_* env var KeyErrors.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
Merge pull request #22093 from opensourcerouting/fix/move_link_bw_from_attr_extra_to_bgp_path_info_extrabgpd: Move link_bw from attr_extra to bgp_path_info_extra
tests: ignore pytest-xdist worker ids in analyze.py rerunsWhen parallel collection fails, xdist records errors named gw0, gw5, etc.
analyze.py turned those into nonexistent gw5.py rerun targets. Skip worker
ids so CI serial reruns only real topotest modules.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
tests: drop flaky grpc collection-time --check under xdistFollow-up to ea85c7c6ff ("fix grpc_basic xdist collection mismatch"):
that commit made missing grpc imports skip consistently, but the
per-worker grpc-query --check subprocess could still fail on some xdist
workers while others collected grpc_basic tests, aborting CI with
"Different tests were collected". Rely on the import guard only; proto
generation still runs when tests execute grpc-query.
...
topotests: skip support bundle collection after topology teardownTrack topology_stopped in Topogen and skip generate_support_bundle()
when teardown already ran, e.g. on module-level memleak failures.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
topotests: reap mutini zombies in xdist worker cleanupReap unreaped mutini/nsenter children after munet SIGKILL cleanup so
pytest-xdist workers exit instead of blocking the controller.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
tests: Modify conditional advertisement test to show that no change happensModify the test_bgp_conditional_advertisement_track_peer.py script
to ensure that the version # for a bgp prefix stays the same
after a cycle of the conditional advertisement fires.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>