Commit Graph

34075 Commits

Author SHA1 Message Date
Donatas Abraitis
7685ffda19 bgpd: Update sub_sort when handling doppelganger connections
This is important especially for OPEN messages. Without this, we can't send
software-version capability which relies on OAD too.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-12 11:55:10 +02:00
Donatas Abraitis
bc53667dc7 bgpd: Use sub_sort also when creating a hash key for update-groups
If OAD is not set or set at least for one peer in peer-group, then split, and
create a separate update-group for those peers.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-12 11:38:23 +02:00
Donatas Abraitis
29d33bd57d bgpd: Add sub_sort for update group debug logging
When added OAD support, it's handy to know peer->sub_sort also when printing
update-group debug messages.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-12 11:34:29 +02:00
Donatas Abraitis
5077b6a025
Merge pull request #14983 from donaldsharp/dplane_fpm_nl_deleted
zebra: The dplane_fpm_nl return path leaks memory
2023-12-12 08:44:37 +02:00
Christian Hopps
29340e6b06 lib: fix the ASAN OneDefinitionRule violation.
Rename global client pointer variables and make the linkage static.

Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-11 19:53:03 -05:00
Donald Sharp
3d1f0c467b zebra: On shutdown properly free up ns memory
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-11 15:44:26 -05:00
Donald Sharp
f77095430d zebra: Cleanup linked list on shutdown in label manager
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-11 15:26:20 -05:00
Donald Sharp
7cabd9361c zebra: Properly unregister hook on shutdown
the zebra pseudo wire code was registering a callback
per vrf.  These callbacks are not per vrf based.  They
are vrf agnostic so this was a mistake.  Modify the code
to on startup register once and on shutdown unregister once.

Finally rename the zebra_pw_init and zebra_pw_exit functions
to more properly reflect when they are called.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-11 15:22:07 -05:00
Philippe Guibert
9cb66bdceb bgpd: move l3nhg functions in separate bgp_nhg.[ch] file
This rework separates l3nhg functionality from the nexthop
tracking code, by introducing two bgp_nhg.[ch] files. The
calling functions are renamed from bgp_l3nhg* to bgp_nhg*.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-12-11 21:03:33 +01:00
Donald Sharp
c783d5b698
Merge pull request #14981 from opensourcerouting/fix/remove_depracated_code
bgpd: Remove deprecated code for bgpStatusCodes/bgpOriginCodes
2023-12-11 13:53:49 -05:00
Donald Sharp
7f9c5c7fa2 zebra: The dplane_fpm_nl return path leaks memory
The route entry created when using a ctx to pass route
entry data backup to the master pthread in zebra is
being leaked.  Prevent this from happening.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-11 13:44:06 -05:00
Donatas Abraitis
7e219a2188 bgpd: Remove deprecated code for bgpStatusCodes/bgpOriginCodes
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-11 14:53:33 +02:00
Donald Sharp
d41c757763
Merge pull request #14967 from opensourcerouting/fix/bgpd_enforce_first_as_peer-groups
bgpd: Respect enforce-first-as command for peer-groups according to the defaults
2023-12-10 14:32:46 -05:00
Donald Sharp
f6864ec67d
Merge pull request #14962 from Orange-OpenSource/ospf-te
ospfd: Correct SID check size
2023-12-10 14:31:40 -05:00
Donald Sharp
fff267e4ee
Merge pull request #14968 from opensourcerouting/fix/missing_whitespace
zebra: Add missing whitespace when printing route entry status
2023-12-10 14:30:27 -05:00
Donald Sharp
dabef024f1
Merge pull request #14971 from opensourcerouting/o6-hidden-area
ospf6d: remove hidden obsolete command
2023-12-10 14:29:42 -05:00
Donald Sharp
df3e5ca61c
Merge pull request #14976 from vjardin/fixUbuntuModprobe
docker: fix /sbin/modprobe missing
2023-12-10 08:36:33 -05:00
Vincent Jardin
aa2e50621b docker: fix /sbin/modprobe missing
kmod is needed in order to get modprobe

Signed-off-by: Vincent Jardin <vjardin@free.fr>
2023-12-09 23:45:22 +00:00
Donatas Abraitis
00b23f22c5
Merge pull request #14975 from imzyxwvu/tidy-aggregate-duplication
bgpd: Remove duplicated code in `bgp_aggregate_route`
2023-12-09 20:03:00 +02:00
zyxwvu Shi
c2d97a2733 bgpd: Remove duplicated code in bgp_aggregate_route
Signed-off-by: zyxwvu Shi <i@shiyc.cn>
2023-12-09 19:26:45 +08:00
Rafael Zalamena
28f59691fa ospf6d: remove hidden obsolete commands
These commands were hidden in FRR 8.1 for the transition period and
never removed.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-12-08 10:51:39 -03:00
Rafael Zalamena
9f1a7ba972 topotests: remove obsolete OSPFv3 area config
Don't use 'interface WORD area A.B.C.D' for enabling OSPFv3 areas on
interfaces and instead use the standardized 'ipv6 ospf6 area A.B.C.D'.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2023-12-08 10:51:32 -03:00
Olivier Dugeon
397dbbcae6 ospfd: Correct SID check size
Segment Router Identifier (SID) could be an index (4 bytes) within a range
(SRGB or SRLB) or an MPLS label (3 bytes). Thus, before calling check_size
macro to verify SID TLVs size, it is mandatory to determine the SID type to
avoid wrong assert.

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
2023-12-08 13:47:34 +01:00
Donald Sharp
4a2ece949e
Merge pull request #14964 from pguibert6WIND/nhg_del_in_queue
zebra: enqueue NHG_DEL in rib_nhg meta queue
2023-12-08 07:36:44 -05:00
Donatas Abraitis
162433cb2a zebra: Add missing whitespace when printing route entry status
Before:

```
status: Removed ReplacingInstalled
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-08 13:57:56 +02:00
Donatas Abraitis
ec2375e089 bgpd: Respect enforce-first-as command for peer-groups according to the defaults
This was missed for peer-groups. Moved this default handling from peer_create()
to peer_new() which is also used by peer_group_get().

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-08 13:00:08 +02:00
Donatas Abraitis
8009047698 tests: Check if default-originate works combined with peer-groups + route-maps
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-08 12:41:44 +02:00
Donatas Abraitis
087d64a7d9 bgpd: Convert variable withdraw integer to bool
It holds only 0/1.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-12-08 11:58:59 +02:00
Donatas Abraitis
c659e1c349
Merge pull request #14963 from donaldsharp/bgp_nht_fix
bgpd: Ensure BGP does not stop monitoring nexthops
2023-12-08 11:40:37 +02:00
Donatas Abraitis
6b79b560ab
Merge pull request #14889 from fdumontet6WIND/snmpv2
bgpd: add multiple paths support for draft ietf bgp4v2 in nlriTable
2023-12-08 06:55:52 +02:00
Donald Sharp
2df4683af0
Merge pull request #14936 from LabNConsulting/chopps/mgmt-dbg-improve
Chopps/mgmt dbg improve
2023-12-07 11:20:54 -05:00
Philippe Guibert
4d60d9e2b4 zebra: enqueue NHG_DEL in rib_nhg meta queue
The NHG_DEL operation is done directly from ZAPI call, whereas
the NHG_ADD operation is done in the rib_nhg meta queue.

This may be problematic when ADD is followed by DEL. Imagine a
scenarion with two protocol NHIDs. <NH1> depends of <NH2> and
<NH3>. The deletion of <NH3> at the protocol level will trigger
2 messages to ZEBRA: NHG_ADD(<NH1>) and NHG_DEL(<NH3>).

Those operations are properly enqueued in ZAPI, but in the end,
the NHG_DEL is executed first. This causes NHG_ADD to unlink an
already freed NHG.

Fix this by consistently enqueuing NHG_DEL and NHG_ADD operations.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-12-07 17:20:20 +01:00
Mark Stapp
2648661ed5
Merge pull request #14795 from donaldsharp/zebra_notify_admin_lost
zebra: Fix non-notification of better admin won
2023-12-07 08:30:00 -05:00
Donatas Abraitis
24869b4a99
Merge pull request #14957 from donaldsharp/zebra_noprefixroute
Add ability to handle `noprefixroute` to zebra
2023-12-07 15:24:10 +02:00
Donald Sharp
40dd3946a6 bgpd: Ensure BGP does not stop monitoring nexthops
In some cases BGP can be monitoring the same prefix
in both the nexthop and import check tables.  If this
is the case, when unregistering one bnc from one table
make sure we are not still registered in the other

Example of the problem:

r1(config-router)# address-family ipv4 uni
r1(config-router-af)# no network 192.168.100.41/32
r1(config-router-af)# exit

r1# show bgp import-check-table
Current BGP import check cache:
r1# show bgp nexthop
Current BGP nexthop cache:
 192.168.100.41 valid [IGP metric 0], #paths 1, peer 192.168.100.41
  if r1-eth0
  Last update: Wed Dec  6 11:01:40 2023

BGP now believes it is only watching 192.168.100.41 in the nexthop
cache, but zebra doesn't have anything:

r1# show ip import-check
VRF default:
 Resolve via default: on
r1# show ip nht
VRF default:
 Resolve via default: on

So if anything happens to the route that is being matched for
192.168.100.41 bgp is no longer going to be notified about this.

The source of this problem is that zebra has dropped the two different
tables into 1 table, while bgp has 2 tables to track this.  The solution
to this problem (other than the rewrite that is being done ) is to have
BGP have a bit of smarts about looking in both tables for the bnc and
if found in both don't send the delete of the prefix tracking to zebra.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-06 11:42:01 -05:00
Donald Sharp
0d5c5472c9 tests: Add a noprefixroute test
Add a simple test case to ensure that the noprefixroute
code stays working in the future.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-06 09:27:52 -05:00
Donald Sharp
8a574840a4 zebra: Add connected with noprefixroute
Add ability for the connected routes to know
if they are a prefix route or not.

sharpd@eva:/work/home/sharpd/frr1$ ip addr show dev dummy1
13: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether aa:93:ce:ce:3f:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.55.1/24 scope global noprefixroute dummy1
       valid_lft forever preferred_lft forever
    inet 192.168.56.1/24 scope global dummy1
       valid_lft forever preferred_lft forever
    inet6 fe80::a893:ceff:fece:3f62/64 scope link
       valid_lft forever preferred_lft forever

sharpd@eva:/work/home/sharpd/frr1$ sudo vtysh -c "show int dummy1"
Interface dummy1 is up, line protocol is up
  Link ups:       0    last: (never)
  Link downs:     0    last: (never)
  vrf: default
  index 13 metric 0 mtu 1500 speed 0 txqlen 1000
  flags: <UP,BROADCAST,RUNNING,NOARP>
  Type: Ethernet
  HWaddr: aa:93:ce:ce:3f:62
  inet 192.168.55.1/24 noprefixroute
  inet 192.168.56.1/24
  inet6 fe80::a893:ceff:fece:3f62/64
  Interface Type Other
  Interface Slave Type None
  protodown: off

sharpd@eva:/work/home/sharpd/frr1$ sudo vtysh -c "show ip route"
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp13s0, 00:00:08
K>* 169.254.0.0/16 [0/1000] is directly connected, virbr2 linkdown, 00:00:08
L>* 192.168.44.1/32 is directly connected, dummy2, 00:00:08
L>* 192.168.55.1/32 is directly connected, dummy1, 00:00:08
C>* 192.168.56.0/24 is directly connected, dummy1, 00:00:08
L>* 192.168.56.1/32 is directly connected, dummy1, 00:00:08
L>* 192.168.119.205/32 is directly connected, enp13s0, 00:00:08

sharpd@eva:/work/home/sharpd/frr1$ ip route show
default via 192.168.119.1 dev enp13s0 proto dhcp metric 100
169.254.0.0/16 dev virbr2 scope link metric 1000 linkdown
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.45.0/24 dev virbr2 proto kernel scope link src 192.168.45.1 linkdown
192.168.56.0/24 dev dummy1 proto kernel scope link src 192.168.56.1
192.168.119.0/24 dev enp13s0 proto kernel scope link src 192.168.119.205 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown

sharpd@eva:/work/home/sharpd/frr1$ ip route show table 255
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
local 172.17.0.1 dev docker0 proto kernel scope host src 172.17.0.1
broadcast 172.17.255.255 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
local 192.168.44.1 dev dummy2 proto kernel scope host src 192.168.44.1
broadcast 192.168.44.255 dev dummy2 proto kernel scope link src 192.168.44.1
local 192.168.45.1 dev virbr2 proto kernel scope host src 192.168.45.1
broadcast 192.168.45.255 dev virbr2 proto kernel scope link src 192.168.45.1 linkdown
local 192.168.55.1 dev dummy1 proto kernel scope host src 192.168.55.1
broadcast 192.168.55.255 dev dummy1 proto kernel scope link src 192.168.55.1
local 192.168.56.1 dev dummy1 proto kernel scope host src 192.168.56.1
broadcast 192.168.56.255 dev dummy1 proto kernel scope link src 192.168.56.1
local 192.168.119.205 dev enp13s0 proto kernel scope host src 192.168.119.205
broadcast 192.168.119.255 dev enp13s0 proto kernel scope link src 192.168.119.205
local 192.168.122.1 dev virbr0 proto kernel scope host src 192.168.122.1
broadcast 192.168.122.255 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown

Fixes: #14952
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-06 09:27:52 -05:00
Donald Sharp
466ad88ce1 zebra: Add ability to note that a address is NOPREFIXROUTE
The linux kernel can send up a flag that tells us that the
connected address is not a PREFIXROUTE.  Add the ability
to note this and pass it up from the data plane.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-12-06 09:27:52 -05:00
Rafael Zalamena
cad5ee56be
Merge pull request #14922 from louis-6wind/fix-bfd-static-source
staticd: fix changing to source auto in bfd monitor
2023-12-06 09:51:32 -03:00
Russ White
04fe6df770
Merge pull request #14937 from pguibert6WIND/fix_nhid_suppress
sharpd: fix deleting nhid when suppressing nexthop from nh group
2023-12-06 07:40:57 -05:00
Donatas Abraitis
27855cbc70
Merge pull request #14913 from chiragshah6/mdev1
pbrd: fix map seq installed flag in json
2023-12-06 07:56:45 +02:00
Chirag Shah
64745d413c pbrd: fix map seq installed flag in json
Ticket:#3638598
Testing:

Post fix:
tor-2# show pbr map json
[
  {
    "name":"global-vrf-PBR-map",
    "valid":true,
    "policies":[
      {
        "id":1,
        "sequenceNumber":10,
        "ruleNumber":309,
        "vrfUnchanged":false,
        "installed":true,   <<<< now display correct value
        "installedReason":"Valid",
        "vrfName":"sym_1",
        "matchSrc":"10.1.200.0\/24",
        "matchDst":"10.6.200.0\/24"
      }
    ]
  }

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-12-05 11:30:50 -08:00
Russ White
03e3b34b4d
Merge pull request #14870 from opensourcerouting/ospfd-shutdown-leaks
ospfd: fix deferred shutdown handling
2023-12-05 14:02:35 -05:00
Christian Hopps
38b44aeeb2 tests: client testing
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-05 13:39:40 -05:00
Christian Hopps
71ede2db9e mgmtd: enable conn debug when user enables mgmtd debugs
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-05 13:39:40 -05:00
Christian Hopps
c37c19a9ec lib: mgmtd: enable conn debugs when user enables client debug
Signed-off-by: Christian Hopps <chopps@labn.net>
2023-12-05 13:39:40 -05:00
Donald Sharp
83018e2178
Merge pull request #14934 from LabNConsulting/chopps/new-munet-0.13.10
tests: import munet 0.13.10
2023-12-05 13:24:39 -05:00
Russ White
edb1cb8dab
Merge pull request #14947 from pguibert6WIND/nexthop_num_no_recurse_static
lib: fix nexthop_group_nexthop_num_no_recurse() is static
2023-12-05 11:55:21 -05:00
Donald Sharp
ad80021260
Merge pull request #14920 from LabNConsulting/chopps/rr-support
tests: add support for running things under `rr`.
2023-12-05 11:42:10 -05:00
Russ White
0a79e117d6
Merge pull request #12600 from donaldsharp/local_routes
*: Introduce Local Host Routes to FRR
2023-12-05 11:00:44 -05:00