Within unit tests the output of vtysh commands is compared to hand
made reference files. For some reason the output of those vtysh
commands contains Windows Style newlines which results in error
outputs which make it hard to identify this problem.
Since there seems to be no benefit in checking those newlines
anyway this commit just normalizes them.
Signed-off-by: GalaxyGorilla <sascha@netdef.org>
Move the FOREACH_AFI_SAFI macro from bgpd.h to zebra.h( GLOBAL's YOUALL )
Then convert all the places that have the two level for loop to
iterate over all afi/safis
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
1. Added convergence step just after BGP-GR capablities are exchanged and clear bgp
is performed , reason for this is, in few machine bgp sessions are taking more time
to come up.
Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
1. Removed UTP test cases keeping only functional test as part of these suites
2. Added convergence step just after BGP-GR capablities are exchanged and clear bgp
is performed, reason for this is, in few machine bgp sessions are taking more time
to come up.
Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
Reduce the number of routes used in the route-scale test: we're
having memory troubles, and this may help the CI run with fewer
false failures. Also re-orged the route-scale test code a bit
so it can be driven from the json file, with fewer hard-coded
values.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Add support to compare the number of RIB nexthops, rather than the
specific nexthop addresses. Use this in the bgp_ecmp topotests that
test maximum-paths - testing the specific nexthops is wrong there,
it's not deterministic and we get spurious failures.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Make tests more robust to changing show outputs by searching for
item of interest rather than using a fixed index.
Signed-off-by: Pat Ruddy <pat@voltanet.io>
When all the uplinks are disabled the access ports used for multihoming
are error-disabled/protodowned.
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
1. The default startup-delay for multihomed devices is three minutes. While
that is necessary/reasonable for a real network it is not needed for a
test env. Lower the startup-delay to 1s to keep the test run time low.
2. Configure uplinks for mh uplink-tracking
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Add the following Anycast-SIDs on routers rt4 and rt5:
* segment-routing prefix 10.10.10.10/32 index 100 no-php-flag n-flag-clear
* segment-routing prefix 2001:db8:1000::10/128 index 101 no-php-flag n-flag-clear
The updated JSON data will then check whether the Anycast-SIDs are
being processed as expected (e.g. rt1 should use ECMP to rt2 and rt3,
rt2 should use rt4 only as it's directly connected, etc).
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
When computing backup nexthops for routes that contain a Prefix-SID,
the original Prefix-SID label should be present at the end of
backup label stacks (after the repair labels). This commit fixes
that oversight in the original TI-LFA code. The SPF unit tests and
TI-LFA topotes were also updated accordingly.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Embed Prefix-SID information inside SPF data structures so that
Prefix-SIDs can be installed together with their associated routes
at the end of the SPF algorithm. This is different from the current
implementation where Prefix-SIDs are parsed and processed separately,
which is vastly suboptimal.
Advantages of the new code:
* No need to parse the LSPDB an additional time to detect and process
SR-related changes;
* Routes are installed with their Prefix-SID labels in the same ZAPI
message. This can prevent packet dropping for a few milliseconds
after each SPF run if there are BGP-labeled routes (e.g. L3VPN) that
recurse on IGP labeled routes;
* Much easier to support Anycast-SIDs, as the SPF code will naturally
figure out the best nexthops and use only them (that can't be done
in any reasonable way if the Prefix-SID Sub-TVLs are processed
separately);
* Less code to maintain and reduced memory footprint;
The "show isis segment-routing prefix-sids" command was removed as
it doesn't make sense anymore now that "show isis route" exists.
Prefix-SIDs are a property of routes, so what was done was to extend
the "show isis route" command with a new "prefix-sid" option that
changes the output table to show the Prefix-SID information associated
to each route.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This is preparatory change for the upcoming SR Prefix-SID
refactoring.
Since Prefix-SID information will be stored inside IS-IS routes
(instead of being maintained separately), it will be necessary to
have local routes in order to store local Prefix-SID information.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Change thread_cancel to take a ** to an event, NULL-check
before dereferencing, and NULL the caller's pointer. Update
many callers to use the new signature.
Signed-off-by: Mark Stapp <mjs@voltanet.io>
Add test for new aggregate address option: test aggregate address option
without converged routes, then test again with a different route map
with converged routes.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Create appropriate accessor functions for the rn->lock
data. We should be accessing this data through accessor
functions since it is private data to the data structure.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Skip comparing neighbor-extended-circuit-id in yang output. They
are not consistent.
This is similar to commit ecc11c93b7 which fixed the same
problem in the IS-IS SR topotest.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
1. Suite: evpn_type5_test_topo1 was added to pytest.ini during triaging phase as
there was bug: https://github.com/FRRouting/frr/issues/6867, which is fixed. Enabling
suite to be run in CI.
Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
1. Adding test to verify well known communities: no-export, local-AS, internet
2. Exection time is 90 sec
Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
The code pattern:
for (ALL_LSDB(lsdb, lsa)) {
remove_lsa(lsa)
}
has a use after free in ALL_LSDB, since we ask for the next pointer,
after it has been freed.
Modify the code such that we grab the next pointer before we can
possibly free it.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Force faster generation of lsp's and also cause the
networks to converge faster. All affected tests
run faster now.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
The bgp_l3vpn_to_bgp_vrf test is looking for a prefix
on multiple routers that the ordered received is non-deterministic.
As such the regex's are failing occassionaly when the
route is received in an unexpected order.
One possible order:
(#89) scripts/check_routes.py:120 COMMAND:ce3:vtysh -c "show bgp ipv4 uni 6.0.1.0":2 available, best .*192.168.1.1.* Local.* 99.0.0.3 from 0.0.0.0 .99.0.0.3.* Origin IGP, metric 200, localpref 50, weight 32768, valid, sourced, local, best .Weight.* Community: 0:67.* Extended Community: RT:89:123.* Large Community: 12:34:56.* Local.* 192.168.1.1 from 192.168.1.1 .192.168.1.1.* Origin IGP, metric 98, localpref 123, valid, internal.* Community: 0:67.* Extended Community: RT:52:100 RT:89:123.* Large Community: 12:34:56:pass:Redundant route 1 details c:
COMMAND OUTPUT:BGP routing table entry for 6.0.1.0/24^M
Paths: (2 available, best #1, table default)^M
Advertised to non peer-group peers:^M
192.168.1.1^M
Local^M
99.0.0.3 from 0.0.0.0 (99.0.0.3)^M
Origin IGP, metric 200, localpref 50, weight 32768, valid, sourced, local, best (Weight)^M
Community: 0:67^M
Extended Community: RT:89:123^M
Large Community: 12:34:56^M
Last update: Wed Oct 7 11:12:22 2020^M
Local^M
192.168.1.1 from 192.168.1.1 (192.168.1.1)^M
Origin IGP, metric 98, localpref 123, valid, internal^M
Community: 0:67^M
Extended Community: RT:52:100 RT:89:123^M
Large Community: 12:34:56^M
Last update: Wed Oct 7 11:12:41 2020:
R:89 ce3 Redundant route 1 details c 1 0
Second possible order:
(#89) scripts/check_routes.py:120 COMMAND:ce3:vtysh -c "show bgp ipv4 uni 6.0.1.0":2 available, best .*192.168.1.1.* Local.* 99.0.0.3 from 0.0.0.0 .99.0.0.3.* Origin IGP, metric 200, localpref 50, weight 32768, valid, sourced, local, best .Weight.* Community: 0:67.* Extended Community: RT:89:123.* Large Community: 12:34:56.* Local.* 192.168.1.1 from 192.168.1.1 .192.168.1.1.* Origin IGP, metric 98, localpref 123, valid, internal.* Community: 0:67.* Extended Community: RT:52:100 RT:89:123.* Large Community: 12:34:56:pass:Redundant route 1 details c:
COMMAND OUTPUT:BGP routing table entry for 6.0.1.0/24^M
Paths: (2 available, best #2, table default)^M
Advertised to non peer-group peers:^M
192.168.1.1^M
Local^M
192.168.1.1 from 192.168.1.1 (192.168.1.1)^M
Origin IGP, metric 98, localpref 123, valid, internal^M
Community: 0:67^M
Extended Community: RT:52:100 RT:89:123^M
Large Community: 12:34:56^M
Last update: Wed Oct 7 11:14:45 2020^M
Local^M
99.0.0.3 from 0.0.0.0 (99.0.0.3)^M
Origin IGP, metric 200, localpref 50, weight 32768, valid, sourced, local, best (Weight)^M
Community: 0:67^M
Extended Community: RT:89:123^M
Large Community: 12:34:56^M
Last update: Wed Oct 7 11:14:27 2020:
R:89 ce3 Redundant route 1 details c 0 1
BGP displays the paths in the order received since it's just a linked list.
For this test modify/add the luCommands to track that we may
receive the paths in a non-deterministic order.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Signed-off-by: Quentin Young <qlyoung@nvidia.com>