]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
11 months agoMerge pull request #13821 from FRRouting/mergify/bp/stable/8.5/pr-13800
Mark Stapp [Tue, 20 Jun 2023 18:22:27 +0000 (14:22 -0400)]
Merge pull request #13821 from FRRouting/mergify/bp/stable/8.5/pr-13800

fix crashes in rip and ripng (backport #13800)

11 months agoRevert "ripngd: Cleanup memory allocations on shutdown"
Igor Ryzhov [Thu, 15 Jun 2023 14:42:05 +0000 (17:42 +0300)]
Revert "ripngd: Cleanup memory allocations on shutdown"

This reverts commit b1d29673ca16e558aea5d632da181555c83980cf.

This commit introduced a crash. When the VRF is deleted, the RIPNG
instance should not be freed, because the NB infrastructure still stores
the pointer to it. The instance should be deleted only when it's actually
deleted from the configuration.

To reproduce the crash:
```
frr# conf t
frr(config)# vrf vrf1
frr(config-vrf)# exit
frr(config)# router ripng vrf vrf1
frr(config-router)# exit
frr(config)# no vrf vrf1
frr(config)# no router ripng vrf vrf1
vtysh: error reading from ripngd: Resource temporarily unavailable (11)Warning: closing connection to ripngd because of an I/O error!
frr(config)#
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
(cherry picked from commit 9f6dade90e5e4686f67ae17b42c2873ec7ca6532)

11 months agoRevert "ripd: Cleanup memory allocations on shutdown"
Igor Ryzhov [Thu, 15 Jun 2023 14:35:30 +0000 (17:35 +0300)]
Revert "ripd: Cleanup memory allocations on shutdown"

This reverts commit 3d1588d8ed537e3dbf120e1b2a5ad5b3c00c7897.

This commit introduced a crash. When the VRF is deleted, the RIP instance
should not be freed, because the NB infrastructure still stores the
pointer to it. The instance should be deleted only when it's actually
deleted from the configuration.

To reproduce the crash:
```
frr# conf t
frr(config)# vrf vrf1
frr(config-vrf)# exit
frr(config)# router rip vrf vrf1
frr(config-router)# exit
frr(config)# no vrf vrf1
frr(config)# no router rip vrf vrf1
vtysh: error reading from ripd: Resource temporarily unavailable (11)Warning: closing connection to ripd because of an I/O error!
frr(config)#
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
(cherry picked from commit 054ca9b9ee760e23ac5d9f8d26d50e8fca78a887)

12 months agoFRR Release 8.5.2 frr-8.5.2
Jafar Al-Gharaibeh [Fri, 16 Jun 2023 04:47:44 +0000 (23:47 -0500)]
FRR Release 8.5.2

* Bug Fixes

bfdd
    Fix malformed session with vrf
    Remove redundant nb destroy callbacks

bgpd
    Ensure stream received has enough data
    Fix bgpd core when unintern attr
    Fix the json output of show bgp all json to be in a valid format
    Make sure aigp attribute is non-transitive
    Using no pretty json output for l2vpn-evpn routes

doc
    Add `neighbor aigp` command for bgp

lib
    Fix memory leak in in link state
    Fix vtysh core when handling questionmark
    Link state memory corruption

ospfd
    Fix interface param type update
    Fix memory leaks w/ `show ip ospf int x json` commands
    Ospf opaque lsa stale processing fix and topotests.
    Respect loopback's cost that is set and set loopback costs to 0

pim6d
    Fix crash in ipv6 pim command

pimd
    Pim not sending register packets after changing from non dr to dr

tests
    Adjust aigp metric numbers for ibgp setup

tools
    Fix list value remove in frr-reload

vtysh
    Give actual pam error messages

zebra
    Evpn handle del event for dup detected mac
    Fix dp_out_queued counter to actually reflect real life
    Fix evpn dup detected local mac del event
    Reduce creation and fix memory leak of frrscripting pointers
    Unlock the route node when sending route notifications

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
12 months agoMerge pull request #13781 from FRRouting/mergify/bp/stable/8.5/pr-12454
Donald Sharp [Tue, 13 Jun 2023 19:07:46 +0000 (15:07 -0400)]
Merge pull request #13781 from FRRouting/mergify/bp/stable/8.5/pr-12454

bgpd: Ensure stream received has enough data (backport #12454)

12 months agoMerge pull request #13784 from FRRouting/mergify/bp/stable/8.5/pr-13612
Donald Sharp [Tue, 13 Jun 2023 19:06:52 +0000 (15:06 -0400)]
Merge pull request #13784 from FRRouting/mergify/bp/stable/8.5/pr-13612

ospfd: fix interface param type update (backport #13612)

12 months agoospfd: fix interface param type update
Chirag Shah [Fri, 26 May 2023 20:43:50 +0000 (13:43 -0700)]
ospfd: fix interface param type update

interface link update event needs
to be handle properly in ospf interface
cache.

Example:
When vrf (interface) is created its default type
would be set to BROADCAST because ifp->status
is not set to VRF.
Subsequent link event sets ifp->status to vrf,
ospf interface update need to compare current type
to new default type which would be VRF (OSPF_IFTYPE_LOOPBACK).
Since ospf type param was created in first add event,
ifp vrf link event didn't update ospf type param which
leads to treat vrf as non loopback interface.

Ticket:#3459451
Testing Done:

Running config suppose to bypass rendering default
network broadcast for loopback/vrf types.

Before fix:

vrf vrf1
 vni 4001
exit-vrf
!
interface vrf1
 ip ospf network broadcast
exit

After fix: (interface vrf1 is not displayed).

vrf vrf1
 vni 4001
exit-vrf

Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit 0d005b2d5c294d9d0a8db9d8beca83b97e0fd8ff)

12 months agobgpd: Ensure stream received has enough data
Donald Sharp [Tue, 6 Dec 2022 15:23:11 +0000 (10:23 -0500)]
bgpd: Ensure stream received has enough data

BGP_PREFIX_SID_SRV6_L3_SERVICE attributes must not
fully trust the length value specified in the nlri.
Always ensure that the amount of data we need to read
can be fullfilled.

Reported-by: Iggy Frankovic <iggyfran@amazon.com>
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 06431bfa7570f169637ebb5898f0b0cc3b010802)

12 months agoMerge pull request #13738 from FRRouting/mergify/bp/stable/8.5/pr-13645
Jafar Al-Gharaibeh [Thu, 8 Jun 2023 21:02:09 +0000 (16:02 -0500)]
Merge pull request #13738 from FRRouting/mergify/bp/stable/8.5/pr-13645

bfdd: remove redundant nb destroy callbacks (backport #13645)

12 months agobfdd: remove redundant nb destroy callbacks
Igor Ryzhov [Wed, 31 May 2023 12:28:08 +0000 (15:28 +0300)]
bfdd: remove redundant nb destroy callbacks

Fixes warning logs:
```
2023/05/29 20:11:50 BFD: [ZKB8W-3S2Q4][EC 100663330] unneeded 'destroy' callback for '/frr-bfdd:bfdd/bfd/profile/minimum-ttl'
2023/05/29 20:11:50 BFD: [ZKB8W-3S2Q4][EC 100663330] unneeded 'destroy' callback for '/frr-bfdd:bfdd/bfd/sessions/multi-hop/minimum-ttl'
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
(cherry picked from commit f7884aedf7a1249e3aae71b6a66c9a0f0915c4ef)

12 months agoMerge pull request #13714 from FRRouting/mergify/bp/stable/8.5/pr-13693
Donald Sharp [Wed, 7 Jun 2023 12:07:20 +0000 (08:07 -0400)]
Merge pull request #13714 from FRRouting/mergify/bp/stable/8.5/pr-13693

tools: fix list value remove in frr-reload (backport #13693)

12 months agotools: fix list value remove in frr-reload
Chirag Shah [Tue, 6 Jun 2023 04:48:12 +0000 (21:48 -0700)]
tools: fix list value remove in frr-reload

There might be a time element(s) from
temporary list are removed more than once
which leads to valueError in certain python3
version.

commit-id 1543f58b5 did not handle valueError
properly. This caused regression where
prefix-list config leads to delete followed
by add.

The new fix should just pass the exception as
value removal from list_to_add or list_to_del
is best effort.
This allows prefix-list config has no change
then removes the lines from lines_to_del and
lines_to_add properly.

Ticket:#3490252
Testing:

Configure prefix-list in frr.conf and perform
multiple frr-reload. After first reload operatoin
subsequent ones should not result in delete followed
by add of the prefix-list but rather no-op operation.

(Pdb) lines_to_add
[(('ip prefix-list FOO permit 10.2.1.0/24',), None)]
(Pdb) lines_to_del
[(('ip prefix-list FOO seq 5 permit 10.2.1.0/24',), None),
 (('ip prefix-list FOO seq 10 permit 10.2.1.0/24',), None)]
(Pdb) lines_to_del_to_del
[(('ip prefix-list FOO seq 5 permit 10.2.1.0/24',), None),
 (('ip prefix-list FOO seq 10 permit 10.2.1.0/24',), None)]
(Pdb) lines_to_add_to_del
[(('ip prefix-list FOO permit 10.2.1.0/24',), None),
 (('ip prefix-list FOO permit 10.2.1.0/24',), None)]
(Pdb) c
> /usr/lib/frr/frr-reload.py(1562)ignore_delete_re_add_lines()
-> return (lines_to_add, lines_to_del)
(Pdb) lines_to_add
[]
(Pdb) lines_to_del
[]

Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit 9845c09d61a7e509bfae369648cb5f9893455ac4)

12 months agoMerge pull request #13694 from FRRouting/mergify/bp/stable/8.5/pr-13649
Donatas Abraitis [Tue, 6 Jun 2023 11:12:59 +0000 (14:12 +0300)]
Merge pull request #13694 from FRRouting/mergify/bp/stable/8.5/pr-13649

zebra: Unlock the route node when sending route notifications (backport #13649)

12 months agozebra: Unlock the route node when sending route notifications
Donald Sharp [Wed, 31 May 2023 15:40:07 +0000 (11:40 -0400)]
zebra: Unlock the route node when sending route notifications

When using a context to send route notifications to upper
level protocols, the code was using a locking function to
get the route node.  There is no need for this to be locked
as such FRR should free it up.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 82c6e4fea54eb65e153e6bc45bb718367b0b5132)

12 months agoMerge pull request #13662 from FRRouting/mergify/bp/stable/8.5/pr-13637
Donald Sharp [Fri, 2 Jun 2023 00:33:02 +0000 (20:33 -0400)]
Merge pull request #13662 from FRRouting/mergify/bp/stable/8.5/pr-13637

lib: fix vtysh core when handling questionmark (backport #13637)

12 months agolib: fix vtysh core when handling questionmark
Yuan Yuan [Tue, 30 May 2023 19:20:09 +0000 (19:20 +0000)]
lib: fix vtysh core when handling questionmark

When issue vtysh command with ?, the initial buf size for the
element is 16. Then it would loop through each element in the cmd
output vector. If the required size for printing out the next
element is larger than the current buf size, realloc the buf memory
by doubling the current buf size regardless of the actual size
that's needed. This would cause vtysh core when the doubled size
is not enough for the next element.

Signed-off-by: Yuan Yuan <yyuanam@amazon.com>
(cherry picked from commit f8aa257997a6a6f69ec5d5715ab04d7cbfae1d1c)

12 months agoMerge pull request #13655 from FRRouting/mergify/bp/stable/8.5/pr-13450
Donatas Abraitis [Thu, 1 Jun 2023 10:26:38 +0000 (13:26 +0300)]
Merge pull request #13655 from FRRouting/mergify/bp/stable/8.5/pr-13450

pim6d: Fix crash in ipv6 pim command (backport #13450)

12 months agopim6d: Fix crash in ipv6 pim command
Sarita Patra [Fri, 5 May 2023 17:52:33 +0000 (10:52 -0700)]
pim6d: Fix crash in ipv6 pim command

Problem:
Execute the below commands, pim6d core happens.
interface ens193
 ip address 69.0.0.2/24
 ipv6 address 8000::1/120
 ipv6 mld
 ipv6 pim
We see crash only if the interface is not configured, and
we are executing PIM/MLD commands.

RootCause:
Interface ens193 is not configured. So, it will have
ifindex = 0 and mroute_vif_index = -1.
Currently, we don't enable MLD on an interface if
mroute_vif_index < 0. So, pim_ifp->MLD = NULL.
In the API pim_if_membership_refresh(), we are accessing
pim_ifp->MLD NULL pointer which leads to crash.

Fix:
Added NULL check before accessing pim_ifp->MLD pointer in
the API pim_if_membership_refresh().

Issue: #13385

Signed-off-by: Sarita Patra <saritap@vmware.com>
(cherry picked from commit 6d1d2c27a318bbcc9b5b77d73642e3d1f6d72ac2)

12 months agoMerge pull request #13642 from FRRouting/mergify/bp/stable/8.5/pr-13634
Donatas Abraitis [Wed, 31 May 2023 08:21:05 +0000 (11:21 +0300)]
Merge pull request #13642 from FRRouting/mergify/bp/stable/8.5/pr-13634

bgpd: fix bgpd core when unintern attr (backport #13634)

12 months agobgpd: fix bgpd core when unintern attr
Yuan Yuan [Tue, 30 May 2023 18:53:32 +0000 (18:53 +0000)]
bgpd: fix bgpd core when unintern attr

When the remote peer is neither EBGP nor confed, aspath is the
shadow copy of attr->aspath in bgp_packet_attribute(). Striping
AS4_PATH should not be done on the aspath directly, since
that would lead to bgpd core dump when unintern the attr.

Signed-off-by: Yuan Yuan <yyuanam@amazon.com>
(cherry picked from commit 32af4995aae647cf9d7c70347ec37b57279ea807)

12 months agoMerge pull request #13614 from FRRouting/mergify/bp/stable/8.5/pr-13608
Donatas Abraitis [Sat, 27 May 2023 17:05:27 +0000 (20:05 +0300)]
Merge pull request #13614 from FRRouting/mergify/bp/stable/8.5/pr-13608

vtysh: Give actual pam error messages (backport #13608)

12 months agovtysh: Give actual pam error messages
Donald Sharp [Fri, 26 May 2023 11:44:11 +0000 (07:44 -0400)]
vtysh: Give actual pam error messages

Code was was written where the pam error message put out
was the result from a previous call to the pam modules
instead of the current call to the pam module.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 8495b425bd056d405704df9e756560942d6815c1)

12 months agoMerge pull request #13580 from FRRouting/mergify/bp/stable/8.5/pr-13577
Donatas Abraitis [Wed, 24 May 2023 11:14:57 +0000 (14:14 +0300)]
Merge pull request #13580 from FRRouting/mergify/bp/stable/8.5/pr-13577

Fixing show bgp all json format and convert evpn to no pretty output (backport #13577)

12 months agobgpd: Using no pretty json output for l2vpn-Evpn routes
Rajasekar Raja [Mon, 22 May 2023 21:14:30 +0000 (14:14 -0700)]
bgpd: Using no pretty json output for l2vpn-Evpn routes

The output of show bgp all json is inconsistent across Address-families
i.e. ipv4/ipv6 is a no pretty format while l2vpn-evpn is in a pretty
format. For huge scale (lots of routes with lots of paths), it is better
to use no_pretty format.

Before fix:
torm-11# sh bgp all json
{
"ipv4Unicast":{
 "vrfId": 0,
 "vrfName": "default",
 "tableVersion": 1,
 "routerId": "27.0.0.15",
 "defaultLocPrf": 100,
 "localAS": 65000,
 "routes": { } }
,
"l2VpnEvpn":{
"routes":{
  "27.0.0.15:2":{
    "rd":"27.0.0.15:2",
    "[1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[::]:[0]":{
      "prefix":"[1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[::]:[0]",
      "prefixLen":352,
      "paths":[
<SNIP>.............

After fix:
torm-11# sh bgp all json
{
"ipv4Unicast":{
 "vrfId": 0,
 "vrfName": "default",
 "tableVersion": 1,
 "routerId": "27.0.0.15",
 "defaultLocPrf": 100,
 "localAS": 65000,
 "routes": { } }
,
"l2VpnEvpn":{
"routes":{"27.0.0.15:2":{"rd":"27.0.0.15:2","[1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[::]:[0]":{"prefix":"[1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[::]:[0]","prefixLen":352,"paths":[[{"valid":true,"bestpath":true,"selectionReason":"First path received","pathFrom":"external","routeType":1,"weight":32768,"peerId":"(unspec)","path":"","origin":"IGP","extendedCommunity"
<SNIP>.............

Issue: 3472865

Ticket:#3472865

Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
(cherry picked from commit 82465ca7f91c36ea06647f24e218231e6c8854de)

12 months agobgpd: Fix the json output of show bgp all json to be in a valid format
Rajasekar Raja [Mon, 22 May 2023 20:08:34 +0000 (13:08 -0700)]
bgpd: Fix the json output of show bgp all json to be in a valid format

In the json output of show bgp all json, the l2VpnEvpn afi-safi is
missing the 'routes' key making the json output format invalid.

Before Fix:
torm-11# sh bgp all json
{
<SNIP>....................
"l2VpnEvpn":{
{
  "27.0.0.15:2":{
    "rd":"27.0.0.15:2",
    "[4]:[03:44:38:39:ff:ff:01:00:00:01]:[32]:[27.0.0.15]":{
      "prefix":"[4]:[03:44:38:39:ff:ff:01:00:00:01]:[32]:[27.0.0.15]",
      "prefixLen":352,
      "paths":[
<SNIP>....................

After Fix:
torm-11# sh bgp all json
{
<SNIP>....................
"l2VpnEvpn":{
"routes":{
  "27.0.0.15:2":{
    "rd":"27.0.0.15:2",
    "[1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[::]:[0]":{
      "prefix":"[1]:[0]:[03:44:38:39:ff:ff:01:00:00:01]:[128]:[::]:[0]",
      "prefixLen":352,
      "paths":[

Issue: 3472865
Ticket:#3472865

Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
(cherry picked from commit be66fa05c90bff66b7427e13ccb80bf8ecab2f38)

12 months agoMerge pull request #13573 from FRRouting/mergify/bp/stable/8.5/pr-13506
Donatas Abraitis [Mon, 22 May 2023 19:05:40 +0000 (22:05 +0300)]
Merge pull request #13573 from FRRouting/mergify/bp/stable/8.5/pr-13506

bfdd: Fix malformed session with vrf (backport #13506)

12 months agobfdd: Fix malformed session with vrf
anlan_cs [Wed, 10 May 2023 14:04:33 +0000 (22:04 +0800)]
bfdd: Fix malformed session with vrf

With this configuration:

```
bfd
 peer 33:33::66 local-address 33:33::88 vrf vrf8 interface enp1s0
 exit
 !
exit
```

The bfd session can't be established with error:

```
bfdd[18663]: [YA0Q5-C0BPV] control-packet: wrong vrfid. [mhop:no peer:33:33::66 local:33:33::88 port:2 vrf:61]
```

The vrf check should use the carefully adjusted `vrfid`, which is
based on globally/reliable interface.  We can't believe the
`bvrf->vrf->vrf_id` because the `/proc/sys/net/ipv4/udp_l3mdev_accept`
maybe is set "1" in VRF-lite backend even with security drawback.

Just correct the vrf check.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
(cherry picked from commit b17c179664da7331a4669a1cf548e4e9c48a5477)

13 months agoMerge pull request #13520 from FRRouting/mergify/bp/stable/8.5/pr-13444
Mark Stapp [Fri, 12 May 2023 21:08:26 +0000 (17:08 -0400)]
Merge pull request #13520 from FRRouting/mergify/bp/stable/8.5/pr-13444

zebra: Fix dp_out_queued counter to actually reflect real life (backport #13444)

13 months agozebra: Fix dp_out_queued counter to actually reflect real life
Donald Sharp [Fri, 5 May 2023 14:37:11 +0000 (10:37 -0400)]
zebra: Fix dp_out_queued counter to actually reflect real life

The prov->dp_out_queued counter was never being decremented
when a ctx was pulled off of the list.  Let's change it to
accurately reflect real life.

Broken:
janelle.pinkbelly.org# show zebra dplane providers detailed
Zebra dataplane providers:
Kernel (1): in: 330872, q: 0, q_max: 100, out: 330872, q: 330872, q_max: 330872
janelle.pinkbelly.org#

Fixed:
sharpd@janelle:/tmp/topotests$ vtysh -c "show zebra dplane providers detailed"
Zebra dataplane providers:
Kernel (1): in: 221495, q: 0, q_max: 100, out: 221495, q: 0, q_max: 100
sharpd@janelle:/tmp/topotests$

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 995d810d08109d8c7eca0d23710a2043711411d9)

13 months agoMerge pull request #13504 from FRRouting/mergify/bp/stable/8.5/pr-13489
Jafar Al-Gharaibeh [Thu, 11 May 2023 04:00:36 +0000 (23:00 -0500)]
Merge pull request #13504 from FRRouting/mergify/bp/stable/8.5/pr-13489

ospfd: OSPF opaque LSA stale processing fix and topotests. (backport #13489)

13 months ago ospfd: OSPF opaque LSA stale processing fix and topotests.
Acee [Tue, 9 May 2023 20:51:03 +0000 (16:51 -0400)]
    ospfd: OSPF opaque LSA stale processing fix and topotests.

        1. Fix OSPF opaque LSA processing to preserve the stale opaque
            LSAs in the Link State Database for 60 seconds consistent with
            what is done for other LSA types.
         2. Add a topotest that tests for cases where ospfd is restarted
            and a stale OSPF opaque LSA exists in the OSPF routing domain
            both when the LSA is purged and when the LSA is reoriginagted
            with a more recent instance.

Signed-off-by: Acee <aceelindem@gmail.com>
(cherry picked from commit 4e7eb1e62ce54ebcf78622682de962fdeff20b80)

13 months agoMerge pull request #13502 from FRRouting/mergify/bp/stable/8.5/pr-13485
Donald Sharp [Wed, 10 May 2023 18:21:35 +0000 (14:21 -0400)]
Merge pull request #13502 from FRRouting/mergify/bp/stable/8.5/pr-13485

ospfd: Respect loopback's cost that is set and set loopback costs to 0 (backport #13485)

13 months agoospfd: Respect loopback's cost that is set and set loopback costs to 0
Donald Sharp [Tue, 9 May 2023 17:10:35 +0000 (13:10 -0400)]
ospfd: Respect loopback's cost that is set and set loopback costs to 0

When setting an loopback's cost, set the value to 0, unless the operator
has assigned a value for the loopback's cost.

RFC states:

If the state of the interface is Loopback, add a Type 3
link (stub network) as long as this is not an interface
to an unnumbered point-to-point network. The Link ID
should be set to the IP interface address, the Link Data
set to the mask 0xffffffff (indicating a host route),
and the cost set to 0.

FRR is going to allow this to be overridden if the operator specifically
sets a value too.

Fixes: #13472
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit dd2bc4fb406cc9284d35ef623ebb8838cb158bc8)

13 months agoMerge pull request #13497 from opensourcerouting/fix/backport_05dbe64457e4a7b2ccae03c...
Donald Sharp [Wed, 10 May 2023 16:07:13 +0000 (12:07 -0400)]
Merge pull request #13497 from opensourcerouting/fix/backport_05dbe64457e4a7b2ccae03cce3c955364641f789

doc: Add `neighbor aigp` command for BGP

13 months agodoc: Add `neighbor aigp` command for BGP
Donatas Abraitis [Tue, 9 May 2023 18:21:34 +0000 (21:21 +0300)]
doc: Add `neighbor aigp` command for BGP

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
13 months agoMerge pull request #13474 from opensourcerouting/fix/backport_53afb27eb892a107c9426a0...
Donald Sharp [Tue, 9 May 2023 17:35:56 +0000 (13:35 -0400)]
Merge pull request #13474 from opensourcerouting/fix/backport_53afb27eb892a107c9426a01dbba82bee6fa86a7

bgpd: AIGP should be non-transitive (backport)

13 months agoMerge pull request #13475 from opensourcerouting/fix/backport_871b46e7eb86009f1bea3cf...
Donald Sharp [Tue, 9 May 2023 17:35:33 +0000 (13:35 -0400)]
Merge pull request #13475 from opensourcerouting/fix/backport_871b46e7eb86009f1bea3cf397a8d2c38ceacd40

lib: Fix memory leaks in Link State library (backport)

13 months agoMerge pull request #13483 from opensourcerouting/fix/backport_d8be1399720ca36485b6a22...
Donald Sharp [Tue, 9 May 2023 17:30:51 +0000 (13:30 -0400)]
Merge pull request #13483 from opensourcerouting/fix/backport_d8be1399720ca36485b6a2209b143679b01b83cb

zebra: Reduce creation and fix memory leak of frrscripting pointers

13 months agozebra: Reduce creation and fix memory leak of frrscripting pointers
Donald Sharp [Fri, 5 May 2023 15:05:12 +0000 (11:05 -0400)]
zebra: Reduce creation and fix memory leak of frrscripting pointers

There are two issues being addressed:

a) The ZEBRA_ON_RIB_PROCESS_HOOK_CALL script point
was creating a fs pointer per dplane ctx in
rib_process_dplane_results().

b) The fs pointer was not being deleted and directly
leaked.

For (a) Move the creation of the fs to outside
the do while loop.

For (b) At function end ensure that the pointer
is actually deleted.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agotests: Adjust AIGP metric numbers for iBGP setup
Donatas Abraitis [Mon, 8 May 2023 20:22:26 +0000 (23:22 +0300)]
tests: Adjust AIGP metric numbers for iBGP setup

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
13 months agolib: Link State memory corruption
Olivier Dugeon [Fri, 21 Apr 2023 16:09:28 +0000 (18:09 +0200)]
lib: Link State memory corruption

In function ls_find_subnet(), prefix argument is directly copied into
subnet.key structure to find corresponding subnet in RB Tree. This could leadr
to a memory corruption. Function prefix_copy() must be used instead.

This patch replaces the direct prefix copy by a call to prefix_copy() function
to avoid this memory issue.

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
13 months agolib: Fix memory leak in in Link State
Olivier Dugeon [Fri, 21 Apr 2023 16:16:34 +0000 (18:16 +0200)]
lib: Fix memory leak in in Link State

When using ls_stream2ted() function to parse Opaque Link State message to local
TED, in case of vertex or subnet deletion, the function return a pointer to the
deleted ls_element instead of NULL. This could lead into a potential pointer
corruption when caller try to access to the deleted ls_element.

This patch ensure that the ls_element pointer return by ls_stream2ted()
function is NULL when the message event is a delete operation for vertex and
subnet. Note that edge deletion was correctly handled.

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
13 months agobgpd: Make sure AIGP attribute is non-transitive
Donatas Abraitis [Mon, 8 May 2023 19:49:10 +0000 (22:49 +0300)]
bgpd: Make sure AIGP attribute is non-transitive

The AIGP attribute is an optional, non-transitive BGP path attribute.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
13 months agoMerge pull request #13442 from FRRouting/mergify/bp/stable/8.5/pr-13436
Donatas Abraitis [Fri, 5 May 2023 16:49:41 +0000 (19:49 +0300)]
Merge pull request #13442 from FRRouting/mergify/bp/stable/8.5/pr-13436

ospfd: Fix memory leaks w/ `show ip ospf int X json` commands (backport #13436)

13 months agoospfd: Fix memory leaks w/ `show ip ospf int X json` commands
Donald Sharp [Thu, 4 May 2023 16:53:42 +0000 (12:53 -0400)]
ospfd: Fix memory leaks w/ `show ip ospf int X json` commands

FRR has a memory leak in the case when int X does not
exist and a memory leak when int X does exist.  Fix
these

Fixes: #13434
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 74e21732db129f7287d5ab227e45f305c5dbf34e)

13 months agoMerge pull request #13420 from FRRouting/mergify/bp/stable/8.5/pr-13020
Jafar Al-Gharaibeh [Thu, 4 May 2023 14:01:03 +0000 (09:01 -0500)]
Merge pull request #13420 from FRRouting/mergify/bp/stable/8.5/pr-13020

pimd: PIM not sending register packets after changing from non DR to DR (backport #13020)

13 months agopimd: PIM not sending register packets after changing from non DR to DR
Sai Gomathi N [Fri, 17 Mar 2023 10:51:16 +0000 (03:51 -0700)]
pimd: PIM not sending register packets after changing from non DR to DR

When the router is non dr for an interface, it installs mroute to drop
the packets from directly connected source. This was done to avoid packets
coming to cpu as nocache hit. Later when it gets change from non-DR to DR,
these entries are not cleared. So the packets are still dropped.
This causes register packets not getting generated.
So cleaning up the mroute entries and channel oil without
upstream reference which was created to drop.

Co-authored-by: Saravanan K <saravanank@vmware.com>
Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
(cherry picked from commit 1c883aef96013753f5467ba5e5028dee0f0a82c5)

13 months agoMerge pull request #13371 from FRRouting/mergify/bp/stable/8.5/pr-13330
Donatas Abraitis [Mon, 24 Apr 2023 19:07:10 +0000 (22:07 +0300)]
Merge pull request #13371 from FRRouting/mergify/bp/stable/8.5/pr-13330

zebra: EVPN handle duplicate detected local mac delete event (backport #13330)

13 months agozebra:fix evpn dup detected local mac del event
Chirag Shah [Sat, 22 Oct 2022 23:00:14 +0000 (16:00 -0700)]
zebra:fix evpn dup detected local mac del event

The current local mac delete event send to flag with force
always which breaks the duplicate detected MACs where
it requires to be resynced from bgpd to earlier state.

Ticket:#3233019
Issue:3233019

Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit 89844a967858d34de99bad8dcb410b4ab4e1dece)

13 months agozebra: evpn handle del event for dup detected mac
Chirag Shah [Wed, 1 Dec 2021 04:42:01 +0000 (20:42 -0800)]
zebra: evpn handle del event for dup detected mac

Upon receiving local mobility event for MAC + NEIGH,
both are detected as duplicate upon hitting DAD threshold.

Duplicated detected ( freezed) MAC + NEIGH are not known
to bgpd.

If locally learnt MAC + NEIGH are deleted in kernel,
the MAC is marked as AUTO after sending delete event
to bgpd.

Bgpd only reinstalls best route for MAC_IP route (NEIGH)
but not for MAC event.
This puts a situation where MAC is AUTO state and
associated neigh as remote.

Fix:
DUPLICATE + LOCAL MAC deletion, set MAC delete request
as reinstall from bgpd.

Ticket:#2873307
Reviewed By:
Testing Done:

Freeze MAC + two NEIGHs in local mobility event.
Delete MAC and NEIGH from kerenl.
bgp rsync remote mac route which puts MAC to remote state.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit ad7685de2871996469d370192af7afafc234a3ca)

13 months agoFRR Release 8.5.1 frr-8.5.1
Jafar Al-Gharaibeh [Sat, 22 Apr 2023 18:03:13 +0000 (13:03 -0500)]
FRR Release 8.5.1

* Bug Fixes

bgpd
  - Fix crash due to community aliases size
  - Aggregate-address memory leak fix
  - Bmp fix peer-up ports byte order
  - Check 7 bytes for long-lived graceful-restart capability
  - Copy the password from the previous peer on peer_xfer_config()
  - Do not allow a `no router bgp xxx` when autoimport is happening
  - Do not allow l3vni changes when shutting down
  - Do not announce routes immediatelly on filter updates
  - Do not call bgp_soft_reconfig_in() twice in a row on policy change
  - Evpn-mh esi not active suppress ead-es route
  - Fix crash for `show bgp ... neighbor received-routes detail|prefix`
  - Fix debug output for route-map names when using a unsuppress-map
  - Fix ecommunity parsing for as4
  - Fix for ain->attr corruption during path update
  - Increase buffer size used for dumping bgp to mrt files
  - Limit flowspec to no attribute means a implicit withdrawal
  - Prevent null pointer deref when outputting data

lib
   - Adjust only `any` flag for prefix-list entries if destroying
   - Destroy `any` flag when creating a prefix-list entry with prefix
   - Fix clear route-map cmd using defpy
   - Fix link state memory leak
   - Include clippy generated commands for routemap.c
   - On bfd peer shutdown actually stop event

ospfd
   - Cleanup some memory leaks on shutdown in ospf_apiserver.c
   - Fix for vitual-link crash in signal handler
   - Fix ospf_lsa memory leak
   - Fix ospf_ti_lfa drop of an entire table
   - Fixing summary origination after range configuration
   - Free up q_space in early return path
   - Log adjacency changes with neighbor ip in addition to neighbor id

pbrd
   - Fix mismatching in match src-dst

pim6d
   - Fixing mroutes not created after disabling and enabling pimv6.

pimd
   - Fix use after free issue for ifp's moving vrfs
   - In_multicast needs host order
   - Process no-forward bsm packet

ripd
   - Fix malformed route-map
   - Fix memory leak for ripd's route-map

staticd
   - Tell bfd that we are shutting down

tools
   - Fix missing remote-as configuration when reload
   - Frr-reload fix list value not present
   - Make check flag really work for reload
   - Set correct directory of vtysh for frr-reload.py

zebrad
   - Add link_nsid to zebra interface
   - Cleanup ctx leak on shutdown and turn off event
   - Evpn mh sync mac install as inactive
   - Fix for heap-use-after-free in evpn
   - Fix race during shutdown
   - Install directly connected route after interface flap

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
13 months agoMerge pull request #13344 from opensourcerouting/fix/backport_8cb4892c0669d916557d693...
Donald Sharp [Fri, 21 Apr 2023 11:10:36 +0000 (07:10 -0400)]
Merge pull request #13344 from opensourcerouting/fix/backport_8cb4892c0669d916557d693b878420faec8e6e2a

bgpd: [8.5] Fix lcom->str string length to correctly cover aliases

13 months agobgpd: Fix lcom->str string length to correctly cover aliases
Donald Sharp [Thu, 20 Apr 2023 20:27:20 +0000 (16:27 -0400)]
bgpd: Fix lcom->str string length to correctly cover aliases

If you have a very large number of large communities whose
string length happened to be greater than BUFSIZ FRR's bgpd
would crash.  This is because bgpd would write beyond
the end of the string.

Originally the code auto-calculated the string size appropriately
but commit ed0e57e3f079352714c3a3a8a5b0dddf4aadfe1d modified
the string length to be a hard coded BUFSIZ.  When a route-map
like this is added:

route-map LARGE-OUT permit 10
 set large-community 4635:0:0 4635:1:906 4635:1:2906 4635:1:4515 4635:1:4594 4635:1:4641 4635:1:4760 4635:1:7979 4635:1:9253 4635:1:9293 4635:1:9304 4635:1:9908 4635:1:13335 4635:1:16265 4635:1:17924 4635:1:18013 4635:1:20940 4635:1:22822 4635:1:24429 4635:1:24482 4635:1:32590 4635:1:32934 4635:1:36692 4635:1:38008 4635:1:38819 4635:1:41378 4635:1:45753 4635:1:46489 4635:1:49544 4635:1:51847 4635:1:54574 4635:1:54994 4635:1:55720 4635:1:56059 4635:1:57724 4635:1:65021 4635:1:134823 4635:1:136907 4635:1:146961 24115:0:24115 24115:1:906 24115:1:2906 24115:1:4515 24115:1:4594 24115:1:4641 24115:1:4760 24115:1:7979 24115:1:9253 24115:1:9293 24115:1:9304 24115:1:9908 24115:1:13335 24115:1:16265 24115:1:17924 24115:1:18013 24115:1:20940 24115:1:22822 24115:1:24429 24115:1:24482 24115:1:32590 24115:1:32934 24115:1:36692 24115:1:38008 24115:1:38819 24115:1:41378 24115:1:45753 24115:1:46489 24115:1:49544 24115:1:51847 24115:1:54574 24115:1:54994 24115:1:55720 24115:1:56059 24115:1:57724 24115:1:65021 24115:1:134823 24115:1:136907 24115:1:100000 24115:1:100001 24115:1:100002
exit

BGP would have issues and crash.

Modify the code to correctly determine the string length of the communities
and to also double check if the string has an alias and ensure that the
string is still sufficiently large enough.  If not auto size it again.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agoMerge pull request #13338 from FRRouting/mergify/bp/stable/8.5/pr-13329
Jafar Al-Gharaibeh [Thu, 20 Apr 2023 04:06:24 +0000 (23:06 -0500)]
Merge pull request #13338 from FRRouting/mergify/bp/stable/8.5/pr-13329

bgpd: Fix for ain->attr corruption during path update (backport #13329)

13 months agobgpd: Fix for ain->attr corruption during path update
Pooja Jagadeesh Doijode [Wed, 19 Apr 2023 01:40:06 +0000 (18:40 -0700)]
bgpd: Fix for ain->attr corruption during path update

1. Consider a established L2VPN EVPN BGP peer with soft-reconfiguartion
   inbound configured

2. When the interface of this directly connected BGP peer is shutdown,
   bgp_soft_reconfig_table_update() is called, which memsets the evpn buffer
   and calls bgp_update() with received attributes stored in ain table(ain->attr).
   In bgp_update(), evpn_overlay attribute in ain->attr (which is an interned
   attr) was modified by doing a memcpy

3. Above action causes 2 attributes in the attrhash (which were previously different)
   to match!

4. Later during fsm change event of the peer, bgp_adj_in_remove() is called
   to clean up the ain->attr. But, because 2 attrs in attrhash match, it causes
   BGP to assert in bgp_attr_unintern()

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
(cherry picked from commit 6e076ba5231cba2e22dcbdc48a9c13df046a2e47)

14 months agoMerge pull request #13317 from FRRouting/mergify/bp/stable/8.5/pr-13312
Donatas Abraitis [Sun, 16 Apr 2023 15:58:32 +0000 (18:58 +0300)]
Merge pull request #13317 from FRRouting/mergify/bp/stable/8.5/pr-13312

zebra: EVPN MH ES-peer Sync MAC installed as inactive (backport #13312)

14 months agoMerge pull request #13315 from FRRouting/mergify/bp/stable/8.5/pr-13302
Donatas Abraitis [Sun, 16 Apr 2023 15:58:22 +0000 (18:58 +0300)]
Merge pull request #13315 from FRRouting/mergify/bp/stable/8.5/pr-13302

tools: fix missing remote-as configuration when reload (backport #13302)

14 months agozebra: evpn mh sync mac install as inactive
Chirag Shah [Fri, 14 Apr 2023 19:57:23 +0000 (12:57 -0700)]
zebra: evpn mh sync mac install as inactive

EVPN MH ES reduendant VTEPs need to install
sync MAC as notify inactive and generate
ND:Proxy stamped extended community on Type-2
route.

Ticket:#3436621
Issue:3436621

Testing Done:

tor-11 originates type-2 MAC route:

tor-11# bridge -d fdb show | grep 00:65:00:00:00:01
00:65:00:00:00:01 dev hostbond1 vlan 1000 notify master bridge static

tor-12 receives sync MAC route:

Before fix:
----------
tor-12:/# bridge -d fdb show | grep 00:65:00:00:00:01
00:65:00:00:00:01 dev hostbond1 vlan 1000 notify master bridge static

After fix: inactive is set to MAC entry
----------
tor-12:/#bridge -d fdb show | grep 00:65:00:00:00:01
00:65:00:00:00:01 dev hostbond1 vlan 1000 notify inactive master bridge
static

Notice the difference in `inactive` post notify on tor-12
with the fix.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit 4a1f91a366bacc8178afcc3d2712e08a3ba3e1ba)

14 months agotools: Make check flag really work for reload
anlan_cs [Fri, 14 Apr 2023 22:41:41 +0000 (06:41 +0800)]
tools: Make check flag really work for reload

The check flag of `found_pg_cmd` is already there, but not used.
So, make it really work for reload.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
(cherry picked from commit 9ea17a5d4978eb3d8ab3d192dd1cc8abf3e414e2)

14 months agotools: fix missing remote-as configuration when reload
anlan_cs [Fri, 14 Apr 2023 00:32:32 +0000 (08:32 +0800)]
tools: fix missing remote-as configuration when reload

From commit `411d1a2`, `bgp_delete_nbr_remote_as_line()` is added to
remove some specific bgp neighbors.  But, when reloading the following
configuration, it will wrongly remove some good ones:
`neighbor 66.66.66.6 remote-as internal`:

```
router bgp 66
 bgp router-id 172.16.204.6
 neighbor ANLAN peer-group
 neighbor ANLAN remote-as internal
 neighbor 66.66.66.6 remote-as internal <- LOST
 neighbor 66.66.66.60 peer-group ANLAN
```

The reason is that "66.66.66.6" is included in "66.66.66.60" literally,
then it is mistakenly thought to be a match.  Just fix it with
excat match.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
(cherry picked from commit a70895e83ae49b15f13e0801e0743d788b0cb595)

14 months agoMerge pull request #13307 from FRRouting/mergify/bp/stable/8.5/pr-13297
Donald Sharp [Fri, 14 Apr 2023 14:30:13 +0000 (10:30 -0400)]
Merge pull request #13307 from FRRouting/mergify/bp/stable/8.5/pr-13297

ospf6d: missing ECMP NHs in certain topologies (backport #13297)

14 months agoMerge pull request #13305 from FRRouting/mergify/bp/stable/8.5/pr-13301
Donald Sharp [Fri, 14 Apr 2023 13:54:04 +0000 (09:54 -0400)]
Merge pull request #13305 from FRRouting/mergify/bp/stable/8.5/pr-13301

bgpd: Fix crash for `show bgp ... neighbor received-routes detail|PREFIX (backport #13301)

14 months agoospf6d: missing ECMP NHs in certain topologies
lynne [Wed, 23 Jun 2021 17:15:17 +0000 (13:15 -0400)]
ospf6d: missing ECMP NHs in certain topologies

When ospf6 is started up and SPF is run depending on which route is
selected as the parent route we could miss adding a NH.   If one
possible parent route has two equal cost paths and the second possible
parent route has only one depending on which one is selected first
determines if we have have one or two NHs.

In the network below when creating a route 2001:db8:3:4::/64 in R2.
When SPF is run there are two possible parent routes R3 and R4.

     2001:db8:1:2  +-----+   2001:db8:2:5
    +--------------+  2  +---------------+
    |          ::2 |     | ::2           |
    |              +-----+               |
    |                                    |
 ::1|                                    |
+-----+                                  |::5
|  1  |2001:db8:1:3+-----+2001:db8:3:5+-----+2001:db8:5:6+-----+
|     +------------+  3  +------------+  5  +------------+  6  |
+-----+ ::1    ::3 |     |::3     ::5 |     |::5      ::6|     |
 ::1|              +-----+            +-----+            +-----+
    |                 |::3
    |                 | 2001:db8:3:4
    |                 |
    |                 |::4
    | 2001:db8:1:4 +-----+
    +--------------+  4  |
               ::4 |     |
                   +-----+

The problem was if we first created the route to 2001:db8:3:4::/64 with R3
as the parent route all is fine.  The code was merging the NH from the parent
route and R3 has 2 NH, one pointing to R1 and one to R5.   But if route
2001:db8:3:4::/64 was first created with parent as R4, it has only one NH
pointing to R1, and then later a new vertex was created pointing to R3 the
code would only copy the nhs from the vertex not from the parent route.   The
vertex always has just one NH.   But the parent route could have more.  So
when we would bringup this setup one time we would see one NH for
2001:db8:3:4::/64 and the next time we would see two NHs.  The code has been
modified so that it behaves the same when the route is first created, or when
a vertex is created, it selects the NHs from the parent route.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
(cherry picked from commit 637e6f293b84c8c21d91224267a85ced30e9f8cf)

14 months agobgpd: Fix crash for `show bgp ... neighbor received-routes detail|PREFIX`
Donatas Abraitis [Thu, 13 Apr 2023 20:37:06 +0000 (23:37 +0300)]
bgpd: Fix crash for `show bgp ... neighbor received-routes detail|PREFIX`

BGP: Received signal 11 at 1681287514 (si_addr 0x8, PC 0x559ab42eb1d9); aborting...
BGP: /lib/libfrr.so.0(zlog_backtrace_sigsafe+0x71) [0x7f4356b19af1]
BGP: /lib/libfrr.so.0(zlog_signal+0xf9) [0x7f4356b19cf9]
BGP: /lib/libfrr.so.0(+0xf5af5) [0x7f4356b4baf5]
BGP: /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420) [0x7f43568ab420]
BGP: /usr/lib/frr/bgpd(prefix_rd2str+0x29) [0x559ab42eb1d9]
BGP: /usr/lib/frr/bgpd(route_vty_out_detail_header+0x7ca) [0x559ab43061ba]
BGP: /usr/lib/frr/bgpd(+0x1771a6) [0x559ab430a1a6]
BGP: /usr/lib/frr/bgpd(+0x177f06) [0x559ab430af06]
BGP: /usr/lib/frr/bgpd(+0x178c8b) [0x559ab430bc8b]
BGP: /usr/lib/frr/bgpd(+0x179e7e) [0x559ab430ce7e]
BGP: /lib/libfrr.so.0(+0x9417e) [0x7f4356aea17e]
BGP: /lib/libfrr.so.0(cmd_execute_command+0x111) [0x7f4356aea321]
BGP: /lib/libfrr.so.0(cmd_execute+0xd0) [0x7f4356aea4c0]
BGP: /lib/libfrr.so.0(+0x10d5de) [0x7f4356b635de]
BGP: /lib/libfrr.so.0(+0x10d81d) [0x7f4356b6381d]
BGP: /lib/libfrr.so.0(+0x110b03) [0x7f4356b66b03]
BGP: /lib/libfrr.so.0(event_call+0x81) [0x7f4356b5df91]
BGP: /lib/libfrr.so.0(frr_run+0xe8) [0x7f4356b11b58]
BGP: /usr/lib/frr/bgpd(main+0x385) [0x559ab4281d55]
BGP: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f43566c9083]
BGP: /usr/lib/frr/bgpd(_start+0x2e) [0x559ab428437e]
BGP: in thread vtysh_read scheduled from lib/vty.c:2833 vty_event()

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit ea5a8e4d5846778611fe1fd6e395bf3cbb33ebaa)

14 months agoMerge pull request #13296 from FRRouting/mergify/bp/stable/8.5/pr-13097
Donald Sharp [Thu, 13 Apr 2023 14:39:57 +0000 (10:39 -0400)]
Merge pull request #13296 from FRRouting/mergify/bp/stable/8.5/pr-13097

pim6d: mroutes not created after disabling and enabling PIMv6. (backport #13097)

14 months agoMerge pull request #13295 from FRRouting/mergify/bp/stable/8.5/pr-13244
Donald Sharp [Thu, 13 Apr 2023 14:39:06 +0000 (10:39 -0400)]
Merge pull request #13295 from FRRouting/mergify/bp/stable/8.5/pr-13244

pimd: Process no-forward BSM packet (backport #13244)

14 months agopim6d: Fixing mroutes not created after disabling and enabling PIMv6.
Abhishek N R [Fri, 24 Mar 2023 04:55:06 +0000 (21:55 -0700)]
pim6d: Fixing mroutes not created after disabling and enabling PIMv6.

After doing "no ipv6 pim" and "ipv6 pim" on receiver interface in LHR,
mroutes were not created.

When we enable pim after disabling it, we refresh the membership on pim interface.
First we clear the membership on the interface, then we add it back.
For PIMv6 we were only clearing it, membership was not added back. So mroutes were not created.

Now added code to fetch all the local membership information into PIM.

Fixes: #12005, #12820
Signed-off-by: Abhishek N R <abnr@vmware.com>
(cherry picked from commit 00fed6ed3b412c24a3c9aff455065b39f8ec8f6b)

14 months agopimd: Process no-forward BSM packet
Sarita Patra [Mon, 10 Apr 2023 05:30:44 +0000 (22:30 -0700)]
pimd: Process no-forward BSM packet

Topology Used:
=============
Cisco---FRR4----FRR2

Initially PIM nbr is down between FRR4----FRR2 from FRR2 side
Cisco is sending BSR packet to FRR4.

Problem Statement:
=================
No shutdown the PIM neighbor on FRR2 towards FRR4.
FRR2, receives BSR packet immediately as the new neighbor
comes up. This BSR packet is having no-forward bit set.
FRR2 is not able to process the BSR packet, and drop the
BSR packet.

Root Cause:
==========
When PIMD comes up, we start BSM timer for 60 seconds.
Here, the value accept_nofwd_bsm is setting to false.

FRR2, when receives no-forward BSR packet, it is getting
accept_nofwd_bsm value as false.

So, it drops, the no-forward BSM packet.

Fix:
===
Set accept_nofwd_bsm as false after first BSM packet received.

Signed-off-by: Sarita Patra <saritap@vmware.com>
(cherry picked from commit 8b462d557905200d98c7a8965b3d223637c3c5dd)

14 months agoMerge pull request #13278 from FRRouting/mergify/bp/stable/8.5/pr-13269
Jafar Al-Gharaibeh [Wed, 12 Apr 2023 21:35:37 +0000 (16:35 -0500)]
Merge pull request #13278 from FRRouting/mergify/bp/stable/8.5/pr-13269

ospfd: Fix ospf_lsa memory leak (backport #13269)

14 months agoMerge pull request #13280 from FRRouting/mergify/bp/stable/8.5/pr-13193
Jafar Al-Gharaibeh [Wed, 12 Apr 2023 21:35:17 +0000 (16:35 -0500)]
Merge pull request #13280 from FRRouting/mergify/bp/stable/8.5/pr-13193

lib: link state leak fix (backport #13193)

14 months agoMerge pull request #13257 from FRRouting/mergify/bp/stable/8.5/pr-13226
Donald Sharp [Wed, 12 Apr 2023 18:24:11 +0000 (14:24 -0400)]
Merge pull request #13257 from FRRouting/mergify/bp/stable/8.5/pr-13226

ripd: Fix memory leak for ripd's route-map (backport #13226)

14 months agoMerge pull request #13274 from FRRouting/mergify/bp/stable/8.5/pr-13249
Donald Sharp [Wed, 12 Apr 2023 17:38:30 +0000 (13:38 -0400)]
Merge pull request #13274 from FRRouting/mergify/bp/stable/8.5/pr-13249

zebra: Mark connected route as installed after interface flap event (backport #13249)

14 months agolib: Fix link state memory leak
Keelan10 [Mon, 3 Apr 2023 07:41:04 +0000 (11:41 +0400)]
lib: Fix link state memory leak

Free link message data when a delete event is recorded.

Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
(cherry picked from commit c123d2dee012620b8f43711062a10c49b9247a9c)

14 months agoospfd: Fix ospf_lsa memory leak
Keelan10 [Wed, 12 Apr 2023 09:36:40 +0000 (13:36 +0400)]
ospfd: Fix ospf_lsa memory leak

Free translated LSA when LSA installation fails

Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
(cherry picked from commit c0ccfbfd45514251bb1f91ec9138dca138f88f57)

14 months agozebra: Install directly connected route after interface flap
Pooja Jagadeesh Doijode [Mon, 10 Apr 2023 23:03:23 +0000 (16:03 -0700)]
zebra: Install directly connected route after interface flap

Issue:
After vlan flap, zebra was not marking the selected/best route as installed.

As a result, when a static route was configured with nexthop as directly
connected interface's(vlan) IP, the static route was not being installed
in the kernel since its nexthop was unresolved. The nexthop was marked
unresolved because zebra failed to mark the best route as installed after
interface flap.

This was happening because, in dplane_route_update_internal() if the old and
new context type, and nexthop group id are the same, then zebra doesn't send
down a route replace request to kernel. But, the installed (ROUTE_ENTRY_INSTALLED)
flag is set when zebra receives a response from kernel. Since the
request to kernel was being skipped for the route entry, installed flag
was not being set

Fix:
In dplane_route_update_internal() if the old and new context type, and
nexthop group id are the same, then before returning, installed flag will
be set on the route-entry if it's not set already.

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
(cherry picked from commit e25a0b138a196c7daf389989ebffbd09d345cd53)

14 months agoMerge pull request #13265 from mjstapp/fix_dplane_shut_race_8_5
Jafar Al-Gharaibeh [Wed, 12 Apr 2023 04:39:54 +0000 (23:39 -0500)]
Merge pull request #13265 from mjstapp/fix_dplane_shut_race_8_5

zebra: fix race during shutdown

14 months agoMerge pull request #13266 from FRRouting/mergify/bp/stable/8.5/pr-12959
Jafar Al-Gharaibeh [Wed, 12 Apr 2023 04:39:27 +0000 (23:39 -0500)]
Merge pull request #13266 from FRRouting/mergify/bp/stable/8.5/pr-12959

zebra: Add link_nsid to zebra interface (backport #12959)

14 months agozebra: Add link_nsid to zebra interface
Xiao Liang [Tue, 21 Feb 2023 06:00:36 +0000 (14:00 +0800)]
zebra: Add link_nsid to zebra interface

Create VRF and interfaces:

    ip netns add vrf1
    ip link add veth1 index 100 type veth
    ip link add link veth1 veth1.200 type vlan id 200
    ip link set veth1.200 netns vrf1
    ip -n vrf1 link add veth2 index 100 type veth

After reloading zebra, "show interface veth1.200" shows wrong parent
interface:

    test# show interface veth1.200
    Interface veth1.200 is down
      ...
      Parent interface: veth2

This is because veth1.200 and veth1 are in different netns, and veth2
happens to have the same ifindex as veth1, in the same netns of
veth1.200.
When looking for parent, link-ifindex 100 should be looked up within
link-netns, rather than that of the child interface.

Add link_nsid to zebra interface, so that the <link_nsid, link_ifindex>
pair can uniquely identify the link interface.

Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
(cherry picked from commit af19624b005452dbaf25215ba371e35f61835e03)

14 months agozebra: fix race during shutdown
Mark Stapp [Tue, 11 Apr 2023 19:58:13 +0000 (15:58 -0400)]
zebra: fix race during shutdown

During shutdown, the main pthread stops the dplane pthread
before exiting. Don't try to clean up any events scheduled
to the dplane pthread at that point - just let the thread
exit and clean up. This is the 8.5 version.

Signed-off-by: Mark Stapp <mjs@labn.net>
14 months agoMerge pull request #13255 from FRRouting/mergify/bp/stable/8.5/pr-13240
Russ White [Tue, 11 Apr 2023 13:53:42 +0000 (09:53 -0400)]
Merge pull request #13255 from FRRouting/mergify/bp/stable/8.5/pr-13240

bgpd: EVPN-MH ESI is not active suppress EAD-ES Type-1 route (backport #13240)

14 months agoMerge pull request #13251 from FRRouting/mergify/bp/stable/8.5/pr-13247
Donatas Abraitis [Tue, 11 Apr 2023 12:49:14 +0000 (15:49 +0300)]
Merge pull request #13251 from FRRouting/mergify/bp/stable/8.5/pr-13247

Evpn crashes and other ilk (backport #13247)

14 months agoripd: Fix memory leak for ripd's route-map
anlan_cs [Thu, 6 Apr 2023 13:17:05 +0000 (21:17 +0800)]
ripd: Fix memory leak for ripd's route-map

When cleaning `ripd`, it should free `ctx->name` of `struct if_rmap_ctx`,
not `ctx` itself.  Otherwise, it will lead to memory leak.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
(cherry picked from commit d3ec0066e5ea0edd691b939806cd7b879ac6a32a)

14 months agobgpd:evpn-mh esi not active suppress ead-es route
Chirag Shah [Sat, 8 Apr 2023 03:14:25 +0000 (20:14 -0700)]
bgpd:evpn-mh esi not active suppress ead-es route

update_type1_routes_for_evi() is called from
L3VNI/L2VNI up event, if ESI is not UP then
do not advertise EAD-ES Type-1 route.
Just like from multiple places EAD-ES route
origination checks for its oper status.

Ticket:#3413454
Issue:3413454

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
Signed-off-by: Chirag Shah <chirag@nvidia.com>
(cherry picked from commit c683b7baad01152e66b50d85119e7f0d59e017a3)

14 months agobgpd: Do not allow a `no router bgp XXX` when autoimport is happening
Donald Sharp [Mon, 10 Apr 2023 18:04:27 +0000 (14:04 -0400)]
bgpd: Do not allow a `no router bgp XXX` when autoimport is happening

When we have these sequence of events causing a crash in
evpn_type5_test_topo1:

(A) no router bgp vrf RED 100
   this schedules for deletion the vrf RED instance
(B) a l3vni change event from zebra
   this creates a bgp instance for VRF RED in some cases
   additionally it auto imports evpn routes into VRF RED
   Please note this is desired behavior to allow for the
   auto importation of evpn vrf routes
(C) no router bgp 100
   The code was allowing the deletion of the default
   instance and causing tests to crash.

Effectively the test in bgp_vty to allow/dissallow
the removal of the default instance was not correct
for the case when (B) happens.

Let's just not allow the command to succeed in this case as that
the test was wrong.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 746e0522f3d5c8b1c6d5b698ff8cf861203bd9f6)

14 months agobgpd: Do not allow l3vni changes when shutting down
Donald Sharp [Mon, 10 Apr 2023 17:59:48 +0000 (13:59 -0400)]
bgpd: Do not allow l3vni changes when shutting down

When a `no router bgp XXX` is issued and the bgp instance
is in the process of shutting down, do not allow a l3vni
change coming up from zebra to do anything.  We can just
safely ignore it at this point in time.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 5a7c43c77ed27522e1e655795d5451c888abb10e)

14 months agobgpd: Use the actual pointer type instead of a void
Donald Sharp [Mon, 10 Apr 2023 18:02:18 +0000 (14:02 -0400)]
bgpd: Use the actual pointer type instead of a void

Let's cut to the chase, we know the pointer type and
it allows us to not to some gyrations.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit ef96e3753fe47de1edd0d5640bc30329ae55508a)

14 months agoMerge pull request #13232 from FRRouting/mergify/bp/stable/8.5/pr-13222
Jafar Al-Gharaibeh [Fri, 7 Apr 2023 19:28:41 +0000 (14:28 -0500)]
Merge pull request #13232 from FRRouting/mergify/bp/stable/8.5/pr-13222

Limit scope (backport #13222)

14 months agobgpd: Treat withdraw variable as a bool
Donald Sharp [Wed, 5 Apr 2023 19:25:57 +0000 (15:25 -0400)]
bgpd: Treat withdraw variable as a bool

Used as a bool, treated as a bool.  Make it a bool

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit aa056a2a6481aba66c727794d0ee988724be9316)

14 months agobgpd: Limit flowspec to no attribute means a implicit withdrawal
Donald Sharp [Wed, 5 Apr 2023 18:57:05 +0000 (14:57 -0400)]
bgpd: Limit flowspec to no attribute means a implicit withdrawal

All other parsing functions done from bgp_nlri_parse() assume
no attributes == an implicit withdrawal.  Let's move
bgp_nlri_parse_flowspec() into the same alignment.

Reported-by: Matteo Memelli <mmemelli@amazon.it>
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit cfd04dcb3e689754a72507d086ba3b9709fc5ed8)

14 months agobgpd: Conform bgp_packet.h with coding standards
Donald Sharp [Wed, 5 Apr 2023 18:51:47 +0000 (14:51 -0400)]
bgpd: Conform bgp_packet.h with coding standards

FRR's standards state that function declarations should
have actual variable names for parameters passed in.
Let's make this so for bgp_packet.h

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 78745b8700f25187995ef010ff7486eb4c53296d)

14 months agoMerge pull request #13190 from FRRouting/mergify/bp/stable/8.5/pr-13175
Donatas Abraitis [Wed, 5 Apr 2023 13:23:25 +0000 (16:23 +0300)]
Merge pull request #13190 from FRRouting/mergify/bp/stable/8.5/pr-13175

zebra: Cleanup ctx leak on shutdown and turn off event (backport #13175)

14 months agoMerge pull request #13211 from FRRouting/mergify/bp/stable/8.5/pr-13181
Donatas Abraitis [Wed, 5 Apr 2023 07:15:00 +0000 (10:15 +0300)]
Merge pull request #13211 from FRRouting/mergify/bp/stable/8.5/pr-13181

bgpd: fix ecommunity parsing for AS4 (backport #13181)

14 months agozebra: Cleanup ctx leak on shutdown and turn off event
Donald Sharp [Fri, 31 Mar 2023 13:08:23 +0000 (09:08 -0400)]
zebra: Cleanup ctx leak on shutdown and turn off event

two things:

On shutdown cleanup any events associated with the update walker.
Also do not allow new events to be created.

Fixes this mem-leak:

./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790:Direct leak of 8 byte(s) in 1 object(s) allocated from:
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #0 0x7f0dd0b08037 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #1 0x7f0dd06c19f9 in qcalloc lib/memory.c:105
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #2 0x55b42fb605bc in rib_update_ctx_init zebra/zebra_rib.c:4383
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #3 0x55b42fb6088f in rib_update zebra/zebra_rib.c:4421
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #4 0x55b42fa00344 in netlink_link_change zebra/if_netlink.c:2221
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #5 0x55b42fa24622 in netlink_information_fetch zebra/kernel_netlink.c:399
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #6 0x55b42fa28c02 in netlink_parse_info zebra/kernel_netlink.c:1183
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #7 0x55b42fa24951 in kernel_read zebra/kernel_netlink.c:493
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #8 0x7f0dd0797f0c in event_call lib/event.c:1995
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #9 0x7f0dd0684fd9 in frr_run lib/libfrr.c:1185
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #10 0x55b42fa30caa in main zebra/main.c:465
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-    #11 0x7f0dd01b5d09 in __libc_start_main ../csu/libc-start.c:308
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-
./msdp_topo1.test_msdp_topo1/r2.zebra.asan.1117790-SUMMARY: AddressSanitizer: 8 byte(s) leaked in 1 allocation(s).

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 3cd0accb5051e900ab343d5fa7c59360c0c1a812)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agoMerge pull request #13210 from FRRouting/mergify/bp/stable/8.5/pr-13192
Donatas Abraitis [Wed, 5 Apr 2023 05:38:27 +0000 (08:38 +0300)]
Merge pull request #13210 from FRRouting/mergify/bp/stable/8.5/pr-13192

ripd: Fix malformed route-map (backport #13192)

14 months agotests: add test to validate 4-byte ecomm parsing
Trey Aspelund [Mon, 3 Apr 2023 21:03:40 +0000 (21:03 +0000)]
tests: add test to validate 4-byte ecomm parsing

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
(cherry picked from commit f615e6dc409c214e66863e8c2ef94775edcac050)

14 months agobgpd: fix ecommunity parsing for AS4
Trey Aspelund [Fri, 31 Mar 2023 21:46:21 +0000 (17:46 -0400)]
bgpd: fix ecommunity parsing for AS4

The parser for extended communities was incorrectly disallowing an
operator from configuring "Route Origin" extended communities
(e.g. RD/RT/SoO) with a 4-byte value matching BGP_AS4_MAX (UINT32_MAX)
and allowed the user to overflow UINT32_MAX. This updates the parser to
read the value as a uint64_t so that we can do proper checks on the
upper bounds (> BGP_AS4_MAX || errno).

before:
```
TORC11(config-router-af)# neighbor uplink-1 soo 4294967296:65
TORC11(config-router-af)# do sh run | include soo
  neighbor uplink-1 soo 0:65
TORC11(config-router-af)# neighbor uplink-1 soo 4294967295:65
% Malformed SoO extended community
TORC11(config-router-af)#
```

after:
```
TORC11(config-router-af)# neighbor uplink-1 soo 4294967296:65
% Malformed SoO extended community
TORC11(config-router-af)# neighbor uplink-1 soo 4294967295:65
TORC11(config-router-af)# do sh run | include soo
  neighbor uplink-1 soo 4294967295:65
TORC11(config-router-af)#
```

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
(cherry picked from commit b571d79d6482217c599c53976cb8cf0ec77b847f)

14 months agoripd: Fix malformed route-map
anlan_cs [Sun, 2 Apr 2023 00:33:25 +0000 (08:33 +0800)]
ripd: Fix malformed route-map

Currently the process of the `route-map` configuration for `per-vrf-rip`
is wrong.

There are two problems:
1. `ctx->name` for `if_rmap_ctx`  is not initialized in `if_rmap_ctx_create()`.
2.  The global `if_rmap_ctx_list` is wrongly used for `per-vrf-rip`.

So, two changes for it:
1. Correctly initializes `ctx->name`.
2. Use specific `if_rmap_ctx` for `per-vrf-rip`, not global one.

Note, this related implementation for `route-map` is only for `ripd`.

Before:
```
anlan(config)# route rip vrf vrf1
anlan(config-router)# route-map aa in lan
anlan(config-router)# do show run
!
router rip
 route-map aa in lan
exit
!
```

After:
```
anlan(config)# route rip vrf vrf1
anlan(config-router)# route-map aa in lan
anlan(config-router)# do show run
!
router rip vrf vrf1
 route-map aa in lan
exit
!
```

Signed-off-by: anlan_cs <vic.lan@pica8.com>
(cherry picked from commit ff0fa00c7d76af64fa4dbc35b17cccaba969e822)

14 months agoMerge pull request #13203 from FRRouting/mergify/bp/stable/8.5/pr-13198
Donatas Abraitis [Tue, 4 Apr 2023 12:27:36 +0000 (15:27 +0300)]
Merge pull request #13203 from FRRouting/mergify/bp/stable/8.5/pr-13198

bgpd: bmp fix peer-up ports byte order (backport #13198)

14 months agobgpd: bmp fix peer-up ports byte order
Maxence Younsi [Mon, 3 Apr 2023 15:19:32 +0000 (17:19 +0200)]
bgpd: bmp fix peer-up ports byte order

added htons to ports in the peer-up message to fix byte order

Signed-off-by: Maxence Younsi <mx.yns@outlook.fr>
(cherry picked from commit 9e681c84fa07d768d41fb8fba269c965c8c08a4b)

14 months agoMerge pull request #13180 from FRRouting/mergify/bp/stable/8.5/pr-13139
Donatas Abraitis [Sun, 2 Apr 2023 17:30:02 +0000 (20:30 +0300)]
Merge pull request #13180 from FRRouting/mergify/bp/stable/8.5/pr-13139

bgpd: trim long neighbor description with no whitespace (backport #13139)