Commit Graph

3281 Commits

Author SHA1 Message Date
Christian Hopps
c27b054efe tests: add ability to show all types of valgrind memleaks
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-11-07 15:29:37 -05:00
Donald Sharp
2a65f05d77 lib: Remove unused WQ_RETRY_XXX enums
These enum's have been around since 2005 and FRR
still does not have any users of these particular
values.  After almost 20 years, let's simplify the
code slightly and remove them.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-11-03 18:06:01 +00:00
Donald Sharp
8e3a96e846
Merge pull request #14546 from adrianomarto/ospf6-point-to-multipoint
OSPF6 point to multipoint
2023-10-31 18:20:04 -04:00
Russ White
644386fe48
Merge pull request #14388 from pguibert6WIND/redistribute_table_bgp_2
Redistribute table bgp without copying data to the default routing table
2023-10-31 13:23:57 -04:00
Russ White
95f841c9be
Merge pull request #14661 from opensourcerouting/feature/enable_enforce_first_as_by_default
bgpd: Enable `enforce-first-as` by default
2023-10-31 10:40:23 -04:00
Russ White
49dc248e5c
Merge pull request #14343 from pguibert6WIND/bgp_label_manual_allocate_label_mgr
Bgp label manual allocate label mgr
2023-10-31 10:31:11 -04:00
Christian Hopps
62af972148 tests: add gdb integration with valgrind
Allows you to run daemons under valgrind integrated with gdb. When daemons are
run with the ``--gdb-daemons/--gdb-routers`` options they will be wired up to
valgrind using vgdb (valgrind tool) so gdb will stop when valgrind errors are
encountered.

Signed-off-by: Christian Hopps <chopps@labn.net>
2023-10-30 07:12:27 -04:00
mobash-rasool
ed0cfbecc7
Merge pull request #14635 from opensourcerouting/fix/ospf6d_loopback_cost
ospf6d: Set loopback interface cost to 0
2023-10-30 09:49:58 +05:30
Donald Sharp
2fef2017ed
Merge pull request #14662 from opensourcerouting/fix/drop_broken_tests
tests: Drop a couple unnecessary unit tests
2023-10-27 10:14:40 -04:00
Donatas Abraitis
322462920e bgpd: Enable enforce-first-as by default
It's been for a while disabled by default, but this seems reasonable to flip it.

We had `bgp enforce-first-as` as a global BGP knob to enable/disable this
behavior globally, later we introduced `enforce-first-as` per neighbor, with disabled
by default. Now let's enable this by default by bringing a global `bgp enforce-first-as`
command back.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-27 14:27:02 +03:00
Donatas Abraitis
26d0f530a3 tests: Disable debug log for bgp_vpnv4_asbr.r2
For the same reason as we disable debug logs for CI everywhere.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-27 14:09:02 +03:00
Christian Hopps
8e630c2946 tests: have unit-test check more paths for the grpc.so module
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-10-26 21:39:13 -04:00
Donatas Abraitis
dede6261d8 bgpd: Drop unnecessary unit test for software-version capability
It's tested above, and was just copied from extended-nexthop as an example
which is broken too.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-26 17:24:42 +03:00
Donatas Abraitis
39d6b2888c tests: Drop broken unit test for extended-nexthop capability
extended-nexthop capability can't be unset to interface-based peers.

Anyway, this is always silently ignored:

```
✖ [test] peer\capability extended-nexthop
► prepare: initialize bgp test environment
► case 01: set peer-flag [capability extended-nexthop] on [IP-TEST]
► error: execution of command [no neighbor IP-TEST capability extended-nexthop] has failed with code [13]
failed
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-26 17:22:02 +03:00
Donatas Abraitis
8aeb17d692 tests: Adopt ospf6_gr_topo1 tests for OSPFv3 loopback cost as 0
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-26 07:39:29 +03:00
Donatas Abraitis
d7e9714643 tests: Use igpMetric as 10 not 20, after OSPFv3 loopback cost changes
Fixes: fa3140f7927838c432a02ee4f1c1847387b7be6d ("ospf6d: Set loopback interface cost to 0")

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-26 07:39:29 +03:00
Donatas Abraitis
e8615867d0 tests: Check if OSPFv3 loopback interface gets cost as 0
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-25 10:33:50 +03:00
Russ White
f239b0f05a
Merge pull request #14639 from donaldsharp/zebra_nexthop_search_up
zebra: Allow longer prefix matches for nexthops
2023-10-24 16:13:20 -04:00
Donatas Abraitis
26373fbedd
Merge pull request #14333 from fdumontet6WIND/bgp4v2_snmp
bgpd: add support of traps for bgp4-mibv2
2023-10-24 21:34:47 +03:00
Francois Dumontet
9d14c70b88 tests: add bgp4v2 MIB traps test
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-10-24 17:16:47 +02:00
Francois Dumontet
50c95b6be9 tests: add bgp4 MIB traps test
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-10-24 17:16:47 +02:00
Francois Dumontet
6261c2b994 tests: lib add support of snmptrapd daemon
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-10-24 17:16:47 +02:00
Russ White
27a78f80d8
Merge pull request #13979 from gpnaveen/bgp_unique_rid
tests: Adding a bgp router id chaos test case.
2023-10-24 06:09:58 -04:00
Donatas Abraitis
614d7873d5
Merge pull request #14634 from LabNConsulting/chopps/gdb-use-emacs
tests: add --gdb-use-emacs option
2023-10-24 08:58:40 +03:00
Donald Sharp
a272a2b364 zebra: Allow longer prefix matches for nexthops
Zebra currently does a shortest prefix match for
resolving nexthops for a prefix.  This is typically
an ok thing to do but fails in several specific scenarios.
If a nexthop matches to a route that is not usable, nexthop
resolution just gives up and refuses to use that particular
route.  For example if zebra currently has a covering prefix
say a 10.0.0.0/8.  And about the same time it receives a
10.1.0.0/16 ( a more specific than the /8 ) and another
route A, who's nexthop is 10.1.1.1.  Imagine the 10.1.0.0/16
is processed enough to know we want to install it and the
prefix is sent to the dataplane for installation( it is queued )
and then route A is processed, nexthop resolution will fail
and the route A will be left in limbo as uninstallable.

Let's modify the nexthop resolution code in zebra such that
if a nexthop's most specific match is unusable, continue looking
up the table till we get to the 0.0.0.0/0 route( if it's even
installed ).  If we find a usable route for the nexthop accept
it and use it.

The bgp_default_originate topology test is frequently failing
with this exact problem:

B>* 0.0.0.0/0 [200/0] via 192.168.1.1, r2-r1-eth0, weight 1, 00:00:21
B   1.0.1.17/32 [200/0] via 192.168.0.1 inactive, weight 1, 00:00:21
B>* 1.0.2.17/32 [200/0] via 192.168.1.1, r2-r1-eth0, weight 1, 00:00:21
C>* 1.0.3.17/32 is directly connected, lo, 00:02:00
B>* 1.0.5.17/32 [20/0] via 192.168.2.2, r2-r3-eth1, weight 1, 00:00:32
B>* 192.168.0.0/24 [200/0] via 192.168.1.1, r2-r1-eth0, weight 1, 00:00:21
B   192.168.1.0/24 [200/0] via 192.168.1.1 inactive, weight 1, 00:00:21
C>* 192.168.1.0/24 is directly connected, r2-r1-eth0, 00:02:00
C>* 192.168.2.0/24 is directly connected, r2-r3-eth1, 00:02:00
B>* 192.168.3.0/24 [20/0] via 192.168.2.2, r2-r3-eth1, weight 1, 00:00:32
B   198.51.1.1/32 [200/0] via 192.168.0.1 inactive, weight 1, 00:00:21
B>* 198.51.1.2/32 [20/0] via 192.168.2.2, r2-r3-eth1, weight 1, 00:00:32

Notice that the 1.0.1.17/32 route is inactive but the nexthop
192.168.0.1 is covered by both the 192.168.0.0/24 prefix( shortest match )
*and* the 0.0.0.0/0 route ( longest match ).  When looking at the logs
the 1.0.1.17/32 route was not being installed because the matching
route was not in a usable state, which is because the 192.168.0.0/24
route was in the process of being installed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-10-23 08:15:11 -04:00
Christian Hopps
a921202a85 tests: add --gdb-use-emacs option
When specified `--gdb-use-emacs` will launch the daemon with gdb inside a
running emacs server using `emacsclient --eval` commands.

Signed-off-by: Christian Hopps <chopps@labn.net>
2023-10-23 05:11:32 -04:00
Philippe Guibert
deac143c6e topotests: add bgp_redistribute_table test
There is no test that ensures the test of the 'redistribute
table-direct' facility. Add a test that checks that routes
created before and after BGP is started, is correctly imported.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-20 13:28:52 +02:00
Donatas Abraitis
3c94151258 tests: Check if BGP conditional advertisement works fine with static routes
If we modify the prefix-list that is used to define the routes to be
advertised, all of them MUST be advertised.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-20 12:58:33 +03:00
Donald Sharp
627888864d
Merge pull request #14614 from opensourcerouting/feature/bgpd_handle_orf_capability_via_dynamic_capability
bgpd: Handle ORF capability using dynamic capabilities
2023-10-19 16:01:24 -04:00
Louis Scalbert
3cae026428 topotests: add bgp_l3vpn_label_export test
There is no test that checks for the label allocation mechanisms
involved when using BGP and/or LDP.
- Some configuration changes are applied in the BGP configuration,
and the impact is checked on the BGP contexts, and on the label
manager.
- The label manager dynamic range is reconfigured, BGP auto mode
is checked against the new range, along with LDP when restarting.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-18 17:46:28 +02:00
Philippe Guibert
8a400bb70a topotests: bgp_srv6l3vpn_to_bgp_vrf[2,3], ignore tableVersion
The expected tableVersion is wrong, when checking r1 table.

The tableVersion value increments at each route updates. The
previous commit brought an additional route update with the
'vpn_leak_postchange_all()' call.

Keep the function call, and do not check the table version
in bgp_srv6l3vpn_to_bgp_vrf[2,3] tests.

Fixes: 205b62ffae2c ("bgpd: fix hardset l3vpn label available in mpls pool")

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-18 17:45:29 +02:00
Donatas Abraitis
4b843e759b tests: Rename test_bgp_dynamic_capability_role
Was copied, but forgot to rename accordingly.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-18 12:31:22 +03:00
Philippe Guibert
dfb56806af topotests: fix bgp_vpnv[4,6]_per_nexthop prefix not updated
The bgp_vpnv[4,6]_table_check() functions analyze the
expected label value of VPN prefixes present in the BGP table.
However, it doesn't verify if the prefixes exist before doing
this. Consequently, the tests will fail if the prefixes do not
show up immediately.
Ensure that all expected VPN prefixes are present before
executing the function.

Fixes: ae5a6bc1f6 ("topotests: add bgp mpls allocation per next-hop test")
Fixes: 37a02a8dcb ("topotests: add bgp_vpnv6 test allocation")

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-18 09:41:02 +02:00
Philippe Guibert
9d32589b58 zebra, test: mark mpls label chunks as dynamic or static
The zebra label manager stores the mpls label chunks,
but does not record if the label request was for a
dynamic or a static chunk.

For all label requests accepted, mark the label chunk
if the 'base' parameter is set to MPLS_LABEL_BASE_ANY,
unmark it otherwise.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-18 09:41:02 +02:00
Philippe Guibert
4a81210169 topotests: fix accept_own test, bgp label value conflict with ldp
When configuring manual label value in BGP L3VPN, the label
allocation conflicts with the LDP label pool which is in use.
Choose BGP label values different that the ones from LDP.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-18 09:41:02 +02:00
Philippe Guibert
cb86d8e3a4 bgpd: fix label allocation should not be allocated at startup
BGP always asks zebra for a chunk of MPLS label even if it doesn't need it.
Fix this by correcting the rounding up "labels_needed" formula.

Fixes: 80853c2ec7 ("bgpd: improve labelpool performance at scale")
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-10-18 09:41:02 +02:00
Donatas Abraitis
1fb08e91d7 tests: Check if ORF capability works with BGP dynamic capabilities
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-17 16:00:00 +03:00
Donald Sharp
c8d568487c
Merge pull request #14599 from opensourcerouting/fix/issue_14419
tests: Check if evpn route-map match by route type works
2023-10-16 10:20:23 -04:00
Donatas Abraitis
c7a9af861a tests: Check if evpn route-map match by route type works
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-10-15 19:46:34 +03:00
Donald Sharp
50e6ba26a4
Merge pull request #14582 from cloudscale-ch/denis/topotest-for-14488
tests: Add OSPF test for issue 14488
2023-10-14 09:42:49 -04:00
Donatas Abraitis
0a8ce5f3f3
Merge pull request #14553 from donaldsharp/zebra_weighted_ecmp
Zebra weighted ecmp
2023-10-13 23:09:18 +03:00
Denis Krienbühl
616e1fa9df
tests: Add OSPF test for issue 14488
OSPF on IPv4/IPv6 removes the wrong routes in certain cases, causing
issues when removing and re-enabling interfaces. This test proofs that.

These tests all pass with https://github.com/FRRouting/frr/pull/13340
and the latest master (d2324b7b4a).

See https://github.com/FRRouting/frr/issues/14488

Signed-off-by: Denis Krienbühl <denis.krienbuehl@cloudscale.ch>
2023-10-13 17:16:19 +02:00
Igor Ryzhov
7d67b9ff28 build: add -Wimplicit-fallthrough
Also:
- replace all /* fallthrough */ comments with portable fallthrough;
pseudo keyword to accomodate both gcc and clang
- add missing break; statements as required by older versions of gcc
- cleanup some code to remove unnecessary fallthrough

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-10-12 21:23:18 +03:00
Donald Sharp
3d8ba5c5ac tests: Fixup bgp_link_bw_ip test to new behavior
Old behavior was metric values between 1-100,
now we have metric values between 1-255.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-10-12 13:35:48 -04:00
Russ White
97d8e5cecd
Merge pull request #14537 from opensourcerouting/feature/bgpd_aod
bgpd: Implement EBGP-OAD peering type
2023-10-11 10:22:26 -04:00
Russ White
9ff1a8c550
Merge pull request #14528 from opensourcerouting/feature/bgpd_handle_addpath_capability_via_dynamic_capability
bgpd: Handle Addpath capability using dynamic capabilities
2023-10-11 10:16:18 -04:00
Donald Sharp
0dc12c9003 Revert "lib: register bgp link-state afi/safi"
This reverts commit 1642a68d60.
2023-10-10 16:45:57 -04:00
Donald Sharp
c4edb3a453 Revert "tests: add bgp_linkstate_topo1"
This reverts commit a0e6cd4c8f.
2023-10-10 16:43:17 -04:00
Donald Sharp
547a0d02aa Revert "tests: add link-state attribute display in bgp_linkstate_topo1"
This reverts commit 5727195cbf.
2023-10-10 16:33:07 -04:00
Adriano Marto Reis
108adcddbb tests: Ajusting the test to the new OSPF6 behaviour
Now OSPF6 shares the /128 prefix by default. Adjusting the expected
number of next hops according to that.

Signed-off-by: Adriano Marto Reis <adrianomarto@gmail.com>
2023-10-10 12:09:07 +10:00