]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
19 months agozebra: be more careful removing 'installed' flag from nhgs 14515/head
Mark Stapp [Fri, 29 Sep 2023 16:08:17 +0000 (12:08 -0400)]
zebra: be more careful removing 'installed' flag from nhgs

When interface addresses change, we examine nhgs associated
with the interface in case they need to be reinstalled. As
part of that, we may need to reinstall ecmp nhgs that use the
interface being examined - but not always.

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agoMerge pull request #14467 from cscarpitta/bugfix/fix-srv6-isis-memleaks
Donatas Abraitis [Sun, 24 Sep 2023 17:47:15 +0000 (20:47 +0300)]
Merge pull request #14467 from cscarpitta/bugfix/fix-srv6-isis-memleaks

isisd: Fix memory leaks when IS-IS fails to process an SRv6 locator chunk

19 months agoMerge pull request #14473 from cscarpitta/bugfix/fix-srv6-topotest-warning
Donatas Abraitis [Sun, 24 Sep 2023 17:47:07 +0000 (20:47 +0300)]
Merge pull request #14473 from cscarpitta/bugfix/fix-srv6-topotest-warning

tests: Fix DeprecationWarning in SRv6 L3VPN topotest

19 months agoMerge pull request #14468 from donaldsharp/bgp_send_ordering
Donatas Abraitis [Sun, 24 Sep 2023 13:48:44 +0000 (16:48 +0300)]
Merge pull request #14468 from donaldsharp/bgp_send_ordering

bgpd: Ensure send order is 100% consistent

19 months agoMerge pull request #14476 from anlancs/fix/pimd-remove-fd-close
Donald Sharp [Sat, 23 Sep 2023 22:43:43 +0000 (18:43 -0400)]
Merge pull request #14476 from anlancs/fix/pimd-remove-fd-close

pimd: remove redundant closing socket

19 months agoMerge pull request #14475 from opensourcerouting/fix/unset_per_afi_stuff_when_dynamic...
Donald Sharp [Sat, 23 Sep 2023 13:51:47 +0000 (09:51 -0400)]
Merge pull request #14475 from opensourcerouting/fix/unset_per_afi_stuff_when_dynamic_UNSET_received

Clear per afi/safi stuff for GR/LLGR when dynamic capability with UNSET action received

19 months agoMerge pull request #14464 from opensourcerouting/fix/dampening_crash
Donald Sharp [Sat, 23 Sep 2023 13:51:01 +0000 (09:51 -0400)]
Merge pull request #14464 from opensourcerouting/fix/dampening_crash

bgpd: Fix dampening info crash

19 months agoMerge pull request #14470 from opensourcerouting/fix/rewrite_dynamic_capabilities_tests
Donald Sharp [Sat, 23 Sep 2023 13:50:43 +0000 (09:50 -0400)]
Merge pull request #14470 from opensourcerouting/fix/rewrite_dynamic_capabilities_tests

tests: Improve BGP dynamic capability tests

19 months agopimd: remove redundant closing socket 14476/head
anlan_cs [Sat, 23 Sep 2023 12:50:30 +0000 (20:50 +0800)]
pimd: remove redundant closing socket

The socket has been closed in `ssmpingd_setsockopt()` in the wrong cases,
so remove the redundant closing socket from outer layer.

Signed-off-by: anlan_cs <anlan_cs@tom.com>
19 months agobgpd: Flush per AFI/SAFI capabilities flags, stale_time for LLGR cap 14475/head
Donatas Abraitis [Fri, 22 Sep 2023 17:37:56 +0000 (20:37 +0300)]
bgpd: Flush per AFI/SAFI capabilities flags, stale_time for LLGR cap

Clear to defaults if receiving dynamic capability with UNSET action.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Clear graceful-restart per AFI/SAFI capability flags when receiving unset
Donatas Abraitis [Fri, 22 Sep 2023 17:35:06 +0000 (20:35 +0300)]
bgpd: Clear graceful-restart per AFI/SAFI capability flags when receiving unset

We flushed the main capability received flag, but missed flushing per AFI/SAFI.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agotests: Fix DeprecationWarning in SRv6 L3VPN topotest 14473/head
Carmine Scarpitta [Fri, 22 Sep 2023 16:43:33 +0000 (18:43 +0200)]
tests: Fix DeprecationWarning in SRv6 L3VPN topotest

Fix the following warning:

tests/topotests/bgp_srv6l3vpn_sid/test_bgp_srv6l3vpn_sid.py:42
  /media/SharedUTM/workspace/frr/tests/topotests/bgp_srv6l3vpn_sid/test_bgp_srv6l3vpn_sid.py:42: DeprecationWarning: invalid escape sequence '\ '

In test_bgp_srv6l3vpn_sid.py we have a comment containing some '\'
characters. Python mistakenly tries to interpret such "\" characters
as escape sequences, which leads to the above warning.

Let's tell Python to treat the comment as a raw string,
so that it simply treats backslashes as literal characters rather than
escape sequences.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
19 months agoMerge pull request #14450 from kuldeepkash/general_fixes
Donald Sharp [Fri, 22 Sep 2023 13:53:03 +0000 (09:53 -0400)]
Merge pull request #14450 from kuldeepkash/general_fixes

tests: Adding BGP convergence verification before starting PIM tests

19 months agoMerge pull request #14458 from opensourcerouting/fix/update_doc_for_vtysh
Donald Sharp [Fri, 22 Sep 2023 13:51:01 +0000 (09:51 -0400)]
Merge pull request #14458 from opensourcerouting/fix/update_doc_for_vtysh

doc: domainname MUST be manually written to vtysh.conf also

19 months agoMerge pull request #14463 from mjstapp/fix_bgp_ctime_r
Donald Sharp [Fri, 22 Sep 2023 13:47:33 +0000 (09:47 -0400)]
Merge pull request #14463 from mjstapp/fix_bgp_ctime_r

bgpd: fix return of local from ctime_r

19 months agoMerge pull request #14466 from mjstapp/fix_ospfd_snmp_ptrs
Donald Sharp [Fri, 22 Sep 2023 13:46:52 +0000 (09:46 -0400)]
Merge pull request #14466 from mjstapp/fix_ospfd_snmp_ptrs

bgpd, ospfd: fix some dicey pointer arith in snmp modules

19 months agotests: Check notification/capability received message stats instead of reset/established 14470/head
Donatas Abraitis [Fri, 22 Sep 2023 12:50:27 +0000 (15:50 +0300)]
tests: Check notification/capability received message stats instead of reset/established

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agotests: Use frr.conf for bgp_dynamic_capabily tests
Donatas Abraitis [Fri, 22 Sep 2023 12:20:22 +0000 (15:20 +0300)]
tests: Use frr.conf for bgp_dynamic_capabily tests

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Use proper AFI when dumping information for dampening stuff 14464/head
Donatas Abraitis [Thu, 21 Sep 2023 13:08:50 +0000 (16:08 +0300)]
bgpd: Use proper AFI when dumping information for dampening stuff

Before we called IPv4 for IPv6 dampening info.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Initialise timebuf arrays to zeros for dampening reuse timer
Donatas Abraitis [Thu, 21 Sep 2023 13:00:10 +0000 (16:00 +0300)]
bgpd: Initialise timebuf arrays to zeros for dampening reuse timer

Avoid having something like this in outputs:

Before:
```
munet> r1 shi vtysh -c 'show bgp dampening damp'
BGP table version is 10, local router ID is 10.10.10.1, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          From             Reuse    Path
 *d 2001:db8:1::1/128
                    2001:db8::2      (null) 65002 ?
 *d 2001:db8:2::1/128
                    2001:db8::2      (null) 65002 ?
 *d 2001:db8:3::1/128
                    2001:db8::2      (null) 65002 ?
 *d 2001:db8:4::1/128
                    2001:db8::2      (null) 65002 ?
 *d 2001:db8:5::1/128
                    2001:db8::2      (null) 65002 ?

Displayed  5 routes and 5 total paths

munet> r1 shi vtysh -c 'show bgp dampening flap'
BGP table version is 10, local router ID is 10.10.10.1, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          From            Flaps Duration Reuse    Path
 *d 2001:db8:1::1/128
                    2001:db8::2     2    00:03:10 (null) 65002 ?
 *d 2001:db8:2::1/128
                    2001:db8::2     2    00:03:10 (null) 65002 ?
 *d 2001:db8:3::1/128
                    2001:db8::2     2    00:03:10 (null) 65002 ?
 *d 2001:db8:4::1/128
                    2001:db8::2     2    00:03:10 (null) 65002 ?
 *d 2001:db8:5::1/128
                    2001:db8::2     2    00:03:10 (null) 65002 ?

Displayed  5 routes and 5 total paths
```

After:

```
munet> r1 shi vtysh -c 'show bgp dampening damp '
BGP table version is 10, local router ID is 10.10.10.1, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          From             Reuse    Path
 *d 2001:db8:1::1/128
                    2001:db8::2      00:00:00 65002 ?
 *d 2001:db8:2::1/128
                    2001:db8::2      00:00:00 65002 ?
 *d 2001:db8:3::1/128
                    2001:db8::2      00:00:00 65002 ?
 *d 2001:db8:4::1/128
                    2001:db8::2      00:00:00 65002 ?
 *d 2001:db8:5::1/128
                    2001:db8::2      00:00:00 65002 ?

Displayed  5 routes and 5 total paths

munet> r1 shi vtysh -c 'show bgp dampening flap'
BGP table version is 10, local router ID is 10.10.10.1, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          From            Flaps Duration Reuse    Path
 *d 2001:db8:1::1/128
                    2001:db8::2     2    00:00:15 00:00:00 65002 ?
 *d 2001:db8:2::1/128
                    2001:db8::2     2    00:00:15 00:00:00 65002 ?
 *d 2001:db8:3::1/128
                    2001:db8::2     2    00:00:15 00:00:00 65002 ?
 *d 2001:db8:4::1/128
                    2001:db8::2     2    00:00:15 00:00:00 65002 ?
 *d 2001:db8:5::1/128
                    2001:db8::2     2    00:00:15 00:00:00 65002 ?

Displayed  5 routes and 5 total paths
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Make sure dampening is enabled for the specified AFI/SAFI
Donatas Abraitis [Thu, 21 Sep 2023 12:37:17 +0000 (15:37 +0300)]
bgpd: Make sure dampening is enabled for the specified AFI/SAFI

```
(gdb) bt
0  raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:50
1  0x00007f55897c6ab0 in core_handler (signo=11, siginfo=0x7ffd19764bb0, context=<optimized out>) at lib/sigevent.c:246
2  <signal handler called>
3  0x00005624ccabdee9 in bgp_get_reuse_time (penalty=<optimized out>, buf=buf@entry=0x7ffd19765590 "", len=len@entry=25, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_UNICAST, use_json=<optimized out>, json=0x0)
    at bgpd/bgp_damp.c:498
4  0x00005624ccabf5e7 in bgp_damp_reuse_time_vty (vty=vty@entry=0x5624ce484e30, path=path@entry=0x5624cdd797a0, timebuf=timebuf@entry=0x7ffd19765590 "", len=len@entry=25, afi=afi@entry=AFI_IP,
    safi=safi@entry=SAFI_UNICAST, use_json=false, json=0x0) at bgpd/bgp_damp.c:635
5  0x00005624cca146a9 in damp_route_vty_out (afi=AFI_IP, json_paths=0x0, use_json=false, safi=SAFI_UNICAST, display=<optimized out>, path=0x5624cdd797a0, p=0x5624ce3f3160, vty=0x5624ce484e30)
    at bgpd/bgp_route.c:9852
6  bgp_show_table (vty=0x5624ce484e30, bgp=0x5624ce400950, safi=safi@entry=SAFI_UNICAST, table=0x5624ce409300, type=type@entry=bgp_show_type_dampend_paths, output_arg=0x0, rd=0x0, is_last=1, output_cum=0x0,
    total_cum=0x0, json_header_depth=0x7ffd19765830, show_flags=0, rpki_target_state=RPKI_NOT_BEING_USED) at bgpd/bgp_route.c:11448
7  0x00005624cca15f74 in bgp_show (vty=vty@entry=0x5624ce484e30, bgp=<optimized out>, afi=<optimized out>, safi=<optimized out>, type=type@entry=bgp_show_type_dampend_paths, output_arg=output_arg@entry=0x0,
    show_flags=0, rpki_target_state=RPKI_NOT_BEING_USED) at bgpd/bgp_route.c:11702
8  0x00005624cca17679 in show_ip_bgp_magic (self=<optimized out>, viewvrfname=<optimized out>, aa_nn=<optimized out>, community_list=<optimized out>, community_list_str=<optimized out>,
    community_list_name=<optimized out>, as_path_filter_name=<optimized out>, prefix_list=<optimized out>, accesslist_name=<optimized out>, rmap_name=<optimized out>, version=<optimized out>,
    version_str=<optimized out>, alias_name=<optimized out>, wide=<optimized out>, detail_json=<optimized out>, uj=<optimized out>, detail_routes=<optimized out>, all=<optimized out>, argv=0x5624ce3f32f0,
    argc=<optimized out>, vty=0x5624ce484e30) at bgpd/bgp_route.c:12863
9  show_ip_bgp (self=<optimized out>, vty=<optimized out>, argc=<optimized out>, argv=0x5624ce3f32f0) at ./bgpd/bgp_route_clippy.c:514
10 0x00007f55897618ee in cmd_execute_command_real (vline=vline@entry=0x5624ce427020, vty=vty@entry=0x5624ce484e30, cmd=cmd@entry=0x0, up_level=up_level@entry=0) at lib/command.c:993
11 0x00007f5589761a91 in cmd_execute_command (vline=vline@entry=0x5624ce427020, vty=vty@entry=0x5624ce484e30, cmd=0x0, vtysh=vtysh@entry=0) at lib/command.c:1051
12 0x00007f5589761c30 in cmd_execute (vty=vty@entry=0x5624ce484e30, cmd=cmd@entry=0x5624ce47b1b0 "show bgp dampening damp", matched=matched@entry=0x0, vtysh=vtysh@entry=0) at lib/command.c:1218
13 0x00007f55897de95e in vty_command (vty=vty@entry=0x5624ce484e30, buf=<optimized out>) at lib/vty.c:591
14 0x00007f55897deb9d in vty_execute (vty=0x5624ce484e30) at lib/vty.c:1354
15 0x00007f55897e23eb in vtysh_read (thread=<optimized out>) at lib/vty.c:2362
16 0x00007f55897d9426 in event_call (thread=thread@entry=0x7ffd19767e70) at lib/event.c:1971
17 0x00007f5589789df8 in frr_run (master=0x5624cdc42100) at lib/libfrr.c:1213
18 0x00005624cc985f65 in main (argc=<optimized out>, argv=0x7ffd197680d8) at bgpd/bgp_main.c:510
(gdb) frame 4
(gdb) p damp[1][1]
$4 = {suppress_value = 0, reuse_limit = 0, max_suppress_time = 0, half_life = 0, tmax = 0, reuse_list_size = 0, reuse_index_size = 0, ceiling = 0, decay_rate_per_tick = 0, decay_array_size = 0,
  scale_factor = 0, reuse_scale_factor = 0, decay_array = 0x0, reuse_index = 0x0, reuse_list = 0x0, reuse_offset = 0, no_reuse_list = 0x0, t_reuse = 0x0, afi = AFI_UNSPEC, safi = SAFI_UNSPEC}
(gdb) p damp[2][1]
$5 = {suppress_value = 1, reuse_limit = 1, max_suppress_time = 1800, half_life = 60, tmax = 0, reuse_list_size = 181, reuse_index_size = 1024, ceiling = 1073741824, decay_rate_per_tick = 0,
  decay_array_size = 360, scale_factor = 9.5367431729442842e-07, reuse_scale_factor = 0, decay_array = 0x5624ce483780, reuse_index = 0x5624ce481320, reuse_list = 0x5624ce482c20, reuse_offset = 7,
  no_reuse_list = 0x0, t_reuse = 0x5624ce3ec840, afi = AFI_UNSPEC, safi = SAFI_UNSPEC}
(gdb)
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Ensure send order is 100% consistent 14468/head
Donald Sharp [Thu, 21 Sep 2023 19:30:08 +0000 (15:30 -0400)]
bgpd: Ensure send order is 100% consistent

When BGP is sending updates to peers on a neighbor up event
it was noticed that the bgp updates being sent were in reverse
order being sent to the first peer.

Imagine r1 -- r2 -- r3.  r1 and r2 are ebgp peers and
r2 and r3 are ebgp peers.  r1's interface to r2 is currently
shutdown.  Prior to this fix the send order would look like this:

r1 -> r2 send of routes to r2 and then they would be installed in order
received:

10.0.0.12 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.11 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.10 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.9 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.8 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.7 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.6 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.5 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.4 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.3 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.2 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.1 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20

r2 would then send these routes to r3 and then they would be installed
in order received:

10.0.0.1 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.2 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.3 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.4 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.5 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.6 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.7 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.8 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.9 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.10 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.11 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.12 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20

Not that big of a deal right?  Well imagine a situation where r1 is
originating several ten's of thousands of routes.  It sends routes to r2
r2 is processing routes but in reverse order and at the same time it
is sending routes to r3, in the correct order of the bgp table.

r3 will have the early 10.0.0.1/32 routes installed and start forwarding
while r2 will not have those routes installed yet( since they were at the
end and zebra is slightly slower for processing routes than bgp is ).

Ensure that the order sent is a true FIFO.  What is happening is that
there is an update fifo which stores all routes.  And off that FIFO
is a bgp advertise attribute list which stores the list of prefixes
which share the same attribute that allow for more efficient packing
this list was being stored in reverse order causing the problem for
the initial send.  When adding items to this list put them at the
end so we keep the fifo order that is traversed when we walk through
the bgp table.

After the fix:

r2 installation order:

10.0.0.0 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.1 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.2 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.3 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.4 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.5 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.6 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.7 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.8 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.9 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.10 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.11 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20
10.0.0.12 nhid 39 via 192.168.8.2 dev leaf2-eth5 proto bgp metric 20

r3 installation order:

10.0.0.0 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.1 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.2 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.3 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.4 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.5 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.6 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.7 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.8 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.9 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.10 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.11 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20
10.0.0.12 nhid 12 via 192.168.61.2 dev spine2-eth1 proto bgp metric 20

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
19 months agobgpd: fix pointer arithmetic in bgp snmp module 14466/head
Mark Stapp [Thu, 21 Sep 2023 17:30:06 +0000 (13:30 -0400)]
bgpd: fix pointer arithmetic in bgp snmp module

Fix a bgpd coverity warning in an snmp module.

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agoMerge pull request #14465 from donaldsharp/zebra_snmp_coverity
Mark Stapp [Thu, 21 Sep 2023 17:21:10 +0000 (13:21 -0400)]
Merge pull request #14465 from donaldsharp/zebra_snmp_coverity

zebra: Fix longstanding snmp coverity issue

19 months agoisisd: Fix SRv6 memory leaks 14467/head
Carmine Scarpitta [Thu, 21 Sep 2023 16:32:06 +0000 (18:32 +0200)]
isisd: Fix SRv6 memory leaks

When isis_zebra_process_srv6_locator_chunk() returns prematurely
due to an error, do not forget to free memory allocated by
srv6_locator_chunk_alloc().

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
19 months agoospfd: fix some dicey pointer arith in snmp module
Mark Stapp [Thu, 21 Sep 2023 14:46:02 +0000 (10:46 -0400)]
ospfd: fix some dicey pointer arith in snmp module

Coverity reports some uses of 'oid *' as if they were 'char *';
try to correct that.

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agozebra: Fix longstanding snmp coverity issue 14465/head
Donald Sharp [Thu, 21 Sep 2023 12:45:27 +0000 (08:45 -0400)]
zebra: Fix longstanding snmp coverity issue

The value is not being treated correctly, make it so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
19 months agobgpd: fix return of local from ctime_r 14463/head
Mark Stapp [Thu, 21 Sep 2023 12:20:49 +0000 (08:20 -0400)]
bgpd: fix return of local from ctime_r

Don't return a local - caller needs to pass in a buffer.

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agoMerge pull request #14453 from pguibert6WIND/isis_startup_crash
Donald Sharp [Thu, 21 Sep 2023 10:33:16 +0000 (06:33 -0400)]
Merge pull request #14453 from pguibert6WIND/isis_startup_crash

isisd: fix crash when configuring srv6 locator without isis instance

19 months agoMerge pull request #14454 from opensourcerouting/coverity-20230920
Donald Sharp [Thu, 21 Sep 2023 10:31:58 +0000 (06:31 -0400)]
Merge pull request #14454 from opensourcerouting/coverity-20230920

lib: fix a bunch of coverity nits

19 months agodoc: domainname MUST be manually written to vtysh.conf also 14458/head
Donatas Abraitis [Thu, 21 Sep 2023 07:37:51 +0000 (10:37 +0300)]
doc: domainname MUST be manually written to vtysh.conf also

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agoMerge pull request #14455 from fdumontet6WIND/fix_coverity_as_path
Donatas Abraitis [Thu, 21 Sep 2023 06:21:52 +0000 (09:21 +0300)]
Merge pull request #14455 from fdumontet6WIND/fix_coverity_as_path

bgpd: fix coverity issue on aspath_filter_exclude_acl

19 months agoMerge pull request #14089 from dmytroshytyi-6WIND/srv6_multiple_segs_sids
Russ White [Thu, 21 Sep 2023 03:09:35 +0000 (23:09 -0400)]
Merge pull request #14089 from dmytroshytyi-6WIND/srv6_multiple_segs_sids

 bgpd,doc,lib,sharpd,staticd,yang,zebra: SRv6 multiple segs SIDs

19 months agobgpd: fix coverity issue on aspath_filter_exclude_acl 14455/head
Francois Dumontet [Wed, 20 Sep 2023 15:26:12 +0000 (17:26 +0200)]
bgpd: fix coverity issue on aspath_filter_exclude_acl

CID 1566378 (#1-4 of 4): Use after free (USE_AFTER_FREE)76.
use_after_free: Using freed pointer cur_seg.

now the prev_seg pointer is set with always existaing values.

Link: https://scan7.scan.coverity.com/reports.htm#v39104/p13747/fileInstanceId=146858993&defectInstanceId=18968273&mergedDefectId=1566378&fileStart=1376&fileEnd=1625
Fixes: 4685db418e3a861205a28f975afeb9869f674337 (bgpd: add set as-path exclude acl-list command)
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
19 months agoMerge pull request #14452 from opensourcerouting/fix/coverity_issues
Donald Sharp [Wed, 20 Sep 2023 16:04:05 +0000 (12:04 -0400)]
Merge pull request #14452 from opensourcerouting/fix/coverity_issues

Some recent coverity fixes

19 months agolib: random make-coverity-happy nits 14454/head
David Lamparter [Wed, 20 Sep 2023 13:27:23 +0000 (15:27 +0200)]
lib: random make-coverity-happy nits

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
19 months agotests: Fix for issue when RP is changed 14450/head
Kuldeep Kashyap [Wed, 20 Sep 2023 04:21:53 +0000 (04:21 +0000)]
tests: Fix for issue when RP is changed

Issue: https://github.com/FRRouting/frr/issues/14057
Fix: Added some sleep to make sure prune is received before
RP is changed.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
19 months agotests: Adding BGP convergence verification before starting PIM tests
Kuldeep Kashyap [Wed, 20 Sep 2023 04:08:13 +0000 (04:08 +0000)]
tests: Adding BGP convergence verification before starting PIM tests

Issue: Sometimes BGP neighbors are not up before doing any PIM
operation, that is causing some tests failures.
https://github.com/FRRouting/frr/issues/14441

Fix: Added BGP convergence for all tests where BGP is used to make
sure all BGP neigbhors

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
19 months agoisisd: fix crash when configuring srv6 locator without isis instance 14453/head
Philippe Guibert [Wed, 20 Sep 2023 11:58:29 +0000 (13:58 +0200)]
isisd: fix crash when configuring srv6 locator without isis instance

After the ISIS daemon is launched, the configuration of an srv6
locator in zebra triggers a crash:

> #4  0x00007f1f0ea980f3 in core_handler (signo=11, siginfo=0x7ffdb750de70, context=0x7ffdb750dd40)
>     at /build/make-pkg/output/_packages/cp-routing/src/lib/sigevent.c:262
> #5  <signal handler called>
> #6  0x00005651a05783ef in isis_zebra_process_srv6_locator_add (cmd=117, zclient=0x5651a21d9bd0, length=25, vrf_id=0)
>     at /build/make-pkg/output/_packages/cp-routing/src/isisd/isis_zebra.c:1258
> #7  0x00007f1f0ead5ac9 in zclient_read (thread=0x7ffdb750e750) at /build/make-pkg/output/_packages/cp-routing/src/lib/zclient.c:4246
> #8  0x00007f1f0eab19d4 in thread_call (thread=0x7ffdb750e750) at /build/make-pkg/output/_packages/cp-routing/src/lib/thread.c:1825
> #9  0x00007f1f0ea4862e in frr_run (master=0x5651a1f65a40) at /build/make-pkg/output/_packages/cp-routing/src/lib/libfrr.c:1155
> #10 0x00005651a051131a in main (argc=5, argv=0x7ffdb750e998, envp=0x7ffdb750e9c8)
>     at /build/make-pkg/output/_packages/cp-routing/src/isisd/isis_main.c:282
> (gdb) f 6
> #6  0x00005651a05783ef in isis_zebra_process_srv6_locator_add (cmd=117, zclient=0x5651a21d9bd0, length=25, vrf_id=0)
>     at /build/make-pkg/output/_packages/cp-routing/src/isisd/isis_zebra.c:1258
> (gdb) print isis
> $1 = (struct isis *) 0x0
> (gdb) print isis->area_list
> Cannot access memory at address 0x28

The isis pointer is NULL, because no instances have already been
configured on the ISIS instance.
Fix this by checking that there is any isis instance available when
zebra hooks related to srv6 are received.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
19 months agotests: add srv6 multiple segs SIDs topotest 14089/head
Dmytro Shytyi [Fri, 21 Jul 2023 12:19:20 +0000 (14:19 +0200)]
tests: add srv6 multiple segs SIDs topotest

Configure and verify the installed srv6 route with multiple segs SIDs

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agostaticd: add vtysh srv6 multiple segs SIDs
Dmytro Shytyi [Wed, 26 Jul 2023 16:44:23 +0000 (18:44 +0200)]
staticd: add vtysh srv6 multiple segs SIDs

Append staticd vty with multiple segs SIDs.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agostaticd: northbound srv6 hooks for segs stack yang model
Dmytro Shytyi [Wed, 26 Jul 2023 16:01:20 +0000 (18:01 +0200)]
staticd: northbound srv6 hooks for segs stack yang model

Provive hooks for srv6 segs SIDs stack yang model.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agostaticd: zebra, modify nexthop to support multiple srv6 segs SIDs
Dmytro Shytyi [Wed, 26 Jul 2023 16:00:17 +0000 (18:00 +0200)]
staticd: zebra, modify nexthop to support multiple srv6 segs SIDs

Adapt the nexthop from 1 to multiple srv6 seg SIDs

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agostaticd: add srv6 static route seg information
Dmytro Shytyi [Wed, 26 Jul 2023 16:43:51 +0000 (18:43 +0200)]
staticd: add srv6 static route seg information

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agozebra: add northbound api hooks for nexthop segments
Dmytro Shytyi [Wed, 26 Jul 2023 15:58:03 +0000 (17:58 +0200)]
zebra: add northbound api hooks for nexthop segments

Provide skeleton hooks for nexthop segments
Those hooks address seg6 segs stack entries defined in the YANG
model

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agoyang: provide a yang model for seg6 segs SIDs stack
Dmytro Shytyi [Wed, 26 Jul 2023 15:59:36 +0000 (17:59 +0200)]
yang: provide a yang model for seg6 segs SIDs stack

Add seg6 segs SIDs stack into frr-nexhop.yang file.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agolib: adapt nexthop_cmp to handle multiple segs SIDs
Dmytro Shytyi [Thu, 27 Jul 2023 09:40:22 +0000 (11:40 +0200)]
lib: adapt nexthop_cmp to handle multiple segs SIDs

Extend nexthop_cmp function to process multiple segs
SIDs.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agolib: update del_srv6_seg6_local to handle seg6_segs
Dmytro Shytyi [Thu, 3 Aug 2023 16:35:53 +0000 (18:35 +0200)]
lib: update del_srv6_seg6_local to handle seg6_segs

Adapt de_srv6_seg6local to handle seg6_segs structure.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agolib: nexthop, free the multiple seg6_segs
Dmytro Shytyi [Thu, 3 Aug 2023 14:20:47 +0000 (16:20 +0200)]
lib: nexthop, free the multiple seg6_segs

Adapt the function that fees srv6 nexthop to handle multiple segs.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agolib: in nexthop adaptation pass the number of segs to jhash
Dmytro Shytyi [Thu, 3 Aug 2023 14:12:04 +0000 (16:12 +0200)]
lib: in nexthop adaptation pass the number of segs to jhash

Adapt nexthop file to handle hash of multiple segments

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agobgpd,lib,sharpd,zebra: srv6 introduce multiple segs/SIDs in nexthop
Dmytro Shytyi [Wed, 26 Jul 2023 15:56:32 +0000 (17:56 +0200)]
bgpd,lib,sharpd,zebra: srv6 introduce multiple segs/SIDs in nexthop

Append zebra and lib to use muliple SRv6 segs SIDs, and keep one
seg SID for bgpd and sharpd.

Note: bgpd and sharpd compilation relies on the lib and zebra files,
i.e if we separate this: lib or zebra or bgpd or sharpd in different
commits - this will not compile.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agodoc: srv6 multiple segs SIDs documentation
Dmytro Shytyi [Wed, 26 Jul 2023 15:46:31 +0000 (17:46 +0200)]
doc: srv6 multiple segs SIDs documentation

Provide a paragraph for srv6 multiple segs SIDs in documentation
to describe the multiple segs functionality.

Signed-off-by: Dmytro Shytyi <dmytro.shytyi@6wind.com>
19 months agolib: clippy ELF: check existence of string table
David Lamparter [Wed, 20 Sep 2023 12:49:22 +0000 (14:49 +0200)]
lib: clippy ELF: check existence of string table

Mostly to make coverity happy, no compiler/linker should produce broken
ELF files like this (and if it does we can't process it anyway...)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
19 months agolib: straight return on error on log open fail
David Lamparter [Wed, 20 Sep 2023 12:46:10 +0000 (14:46 +0200)]
lib: straight return on error on log open fail

I think I originally had some other code at the tail end of that
function, but that's not the case anymore, and dropping out of the
function with a straight "return -1" is more useful than trucking on
with an invalid fd.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
19 months agolib: add dup() error check in logging code
David Lamparter [Wed, 20 Sep 2023 12:35:55 +0000 (14:35 +0200)]
lib: add dup() error check in logging code

Mostly to make coverity happy, if dup() fails we're f*cked already.
(Still useful to have a better error message...)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
19 months agostaticd: Check against NULL before dereferencing vrf 14452/head
Donatas Abraitis [Wed, 20 Sep 2023 12:24:25 +0000 (15:24 +0300)]
staticd: Check against NULL before dereferencing vrf

If VRF is not found by the given name, validate it and return an error.

Fixes: 76b2bc97e738 ("staticd: Accept full blackhole typed keywords for ip_route_cmd")
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Initialise prd despite if it's safi-related or not
Donatas Abraitis [Wed, 20 Sep 2023 12:05:35 +0000 (15:05 +0300)]
bgpd: Initialise prd despite if it's safi-related or not

Fixes: d33bd631262d60a7c0a2d56a2fe143bff45e32f0 ("bgpd: fix coverity issue in bgpd")
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agoMerge pull request #14448 from qlyoung/doc-add-northbound-api-docs
Mark Stapp [Wed, 20 Sep 2023 11:49:14 +0000 (07:49 -0400)]
Merge pull request #14448 from qlyoung/doc-add-northbound-api-docs

doc: add northbound api arch docs

19 months agoMerge pull request #14442 from mjstapp/fix_no_ctime
Donald Sharp [Wed, 20 Sep 2023 11:32:51 +0000 (07:32 -0400)]
Merge pull request #14442 from mjstapp/fix_no_ctime

bgpd, pathd: replace ctime() with ctime_r()

19 months agoMerge pull request #14440 from fdumontet6WIND/fix_oid_bgp4v2
Donatas Abraitis [Wed, 20 Sep 2023 06:58:58 +0000 (09:58 +0300)]
Merge pull request #14440 from fdumontet6WIND/fix_oid_bgp4v2

bgpd: fix  SNMP oid in bgp4v2

19 months agoMerge pull request #14445 from donaldsharp/use_my_cabbage
Donatas Abraitis [Wed, 20 Sep 2023 06:58:13 +0000 (09:58 +0300)]
Merge pull request #14445 from donaldsharp/use_my_cabbage

couple bgp coverity issues

19 months agodoc: add northbound api arch docs 14448/head
Quentin Young [Wed, 20 Sep 2023 01:36:04 +0000 (21:36 -0400)]
doc: add northbound api arch docs

Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
19 months agoMerge pull request #14443 from opensourcerouting/coverity-redux-20230919
Donald Sharp [Wed, 20 Sep 2023 00:01:45 +0000 (20:01 -0400)]
Merge pull request #14443 from opensourcerouting/coverity-redux-20230919

lib: constrain hash table "tabshift" both ways

19 months agoMerge pull request #14416 from donaldsharp/oil_parent_wrong
Donatas Abraitis [Tue, 19 Sep 2023 20:53:49 +0000 (23:53 +0300)]
Merge pull request #14416 from donaldsharp/oil_parent_wrong

pimd: Use a better name for oil_parent

19 months agotests: replace ctime with ctime_r 14442/head
Mark Stapp [Tue, 19 Sep 2023 20:24:07 +0000 (16:24 -0400)]
tests: replace ctime with ctime_r

Replace ctime with ctime_r in bgp test.

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agopathd: replace ctime with ctime_r
Mark Stapp [Tue, 19 Sep 2023 17:15:55 +0000 (13:15 -0400)]
pathd: replace ctime with ctime_r

No ctime - replace with ctime_r()

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agobgpd: replace ctime with ctime_r
Mark Stapp [Tue, 19 Sep 2023 17:15:21 +0000 (13:15 -0400)]
bgpd: replace ctime with ctime_r

No ctime, use ctime_r.

Signed-off-by: Mark Stapp <mjs@labn.net>
19 months agobgpd: Make debug a passed in variable for bgp_evpn_path_info_cmp 14445/head
Donald Sharp [Tue, 19 Sep 2023 19:51:05 +0000 (15:51 -0400)]
bgpd: Make debug a passed in variable for bgp_evpn_path_info_cmp

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
19 months agobgpd: Prevent use after free from coverity's perspective
Donald Sharp [Tue, 19 Sep 2023 19:48:57 +0000 (15:48 -0400)]
bgpd: Prevent use after free from coverity's perspective

Prevent a use after free from coverity's perspective.  A
bgp node may have been freed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
19 months agolib: constrain hash table "tabshift" both ways 14443/head
David Lamparter [Tue, 19 Sep 2023 19:03:24 +0000 (21:03 +0200)]
lib: constrain hash table "tabshift" both ways

The previous change to assume() did address the coverity warning about
one direction of the shift in HASH_KEY, let's constrain the other in
HASH_SIZE as well.

To be fair, the hash table *will* break at 1G entries, but at that point
we have other problems RAM-wise.  (Could bump the thing to 64-bit, but
then we need better item hash functions too on every single user.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
19 months agopimd: Use a better name for oil_parent 14416/head
Donald Sharp [Thu, 14 Sep 2023 11:18:37 +0000 (07:18 -0400)]
pimd: Use a better name for oil_parent

Use oil_incoming_vif instead of oil_parent.  I had
to go look this up as that I failed to remember that
the linux kernel calls this parent for some bizarre
reason.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
19 months agoMerge pull request #14299 from SaiGomathiN/14286
Russ White [Tue, 19 Sep 2023 15:36:04 +0000 (11:36 -0400)]
Merge pull request #14299 from SaiGomathiN/14286

pimd,pim6d: Resolving the YANG datatype Inconsistency for PIM Hello Interval

19 months agoMerge pull request #14414 from opensourcerouting/coverity-assume
Russ White [Tue, 19 Sep 2023 14:19:07 +0000 (10:19 -0400)]
Merge pull request #14414 from opensourcerouting/coverity-assume

lib: another attempt at Coverity false positives

19 months agoMerge pull request #14436 from opensourcerouting/fix/set_mss_for_passive_nodes
Russ White [Tue, 19 Sep 2023 14:18:14 +0000 (10:18 -0400)]
Merge pull request #14436 from opensourcerouting/fix/set_mss_for_passive_nodes

bgpd: Set TCP MSS for the socket even if the session is set to passive

19 months agoMerge pull request #14420 from opensourcerouting/fix/remove_private_asn_after_route_map
Russ White [Tue, 19 Sep 2023 14:16:33 +0000 (10:16 -0400)]
Merge pull request #14420 from opensourcerouting/fix/remove_private_asn_after_route_map

bgpd: Remove private ASNs after we modify the as-path with the route-map

19 months agoMerge pull request #14398 from m-varasteh/ospfd-rfc5709
Russ White [Tue, 19 Sep 2023 14:14:14 +0000 (10:14 -0400)]
Merge pull request #14398 from m-varasteh/ospfd-rfc5709

ospfd: add support for RFC 5709 OSPFv2 HMAC-SHA Cryptographic Authentication

19 months agoMerge pull request #14382 from opensourcerouting/feature/long_lived_graceful_restart_...
Russ White [Tue, 19 Sep 2023 14:12:35 +0000 (10:12 -0400)]
Merge pull request #14382 from opensourcerouting/feature/long_lived_graceful_restart_dynamic_capability_split

bgpd: Handle LLGR capability using dynamic capabilities

19 months agoMerge pull request #14350 from FRIDM636/pcep-no-commands
Russ White [Tue, 19 Sep 2023 14:08:43 +0000 (10:08 -0400)]
Merge pull request #14350 from FRIDM636/pcep-no-commands

pathd: add no command for pce/pce-config options

19 months agobgpd: snmp MIB bgp4v2 fix indexes in OID 14440/head
Francois Dumontet [Thu, 14 Sep 2023 12:47:59 +0000 (14:47 +0200)]
bgpd: snmp MIB bgp4v2 fix indexes in OID

currently snmpwalk give results such :
BGP4V2-MIB::bgp4V2PeerRemoteAddrType.1.ipv6z.10.125.0.2 = INTEGER: ipv4(1)
BGP4V2-MIB::bgp4V2PeerRemoteAddrType.2.dns.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = INTEGER: ipv6(2)
BGP4V2-MIB::bgp4V2PeerRemoteAddr.1.ipv6z.10.125.0.2 = Hex-STRING: 0A 7D 00 02
BGP4V2-MIB::bgp4V2PeerRemoteAddr.2.dns.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = Hex-STRING: FD 00 01 25 00 00 00 00 00 00 00 00 00 00 00 03

the expected result is the following

BGP4V2-MIB::bgp4V2PeerRemoteAddrType.1.ipv4.10.125.0.2 = INTEGER: ipv4(1)
BGP4V2-MIB::bgp4V2PeerRemoteAddrType.1.ipv6.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 =
 INTEGER: ipv6(2)
BGP4V2-MIB::bgp4V2PeerRemoteAddr.1.ipv4.10.125.0.2 = Hex-STRING: 0A 7D 00 02
BGP4V2-MIB::bgp4V2PeerRemoteAddr.1.ipv6.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = Hex
-STRING: FD 00 01 25 00 00 00 00 00 00 00 00 00 00 00 03

in draft-ietf-idr-bgp4-mibv2-11

INDEX for Bgp4V2PeerEntry is define as follows
INDEX {
          bgp4V2PeerInstance,
          bgp4V2PeerRemoteAddrType,
          bgp4V2PeerRemoteAddr
      }

the peer instance is defined as follows
OBJECT bgp4V2PeerInstance
        SYNTAX Unsigned32 (1..4294967295)

more this interpretation is conformant with the snmpwalk implementation
for instance we obtain the following result

swBgp.bgp4V2.bgp4V2Objects.bgp4V2PeerTable.bgp4V2PeerEntry.bgp4V2PeerRemotePort.1.ipv6.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = Gauge32: 179

swBgp.bgp4V2.bgp4V2Objects.bgp4V2PeerTable.bgp4V2PeerEntry.bgp4V2PeerRemoteAs.1.ipv4.10.125.0.2 = Gauge32: 65200

since currently we are not supporting  multi instance for bgp peer in
SNMP the bgp4V2PeerInstance value is set to 1 coforming to:

"Implementations that do not support multiple routing instances should return 1 for this object."

test is updated accordingly to fix.
currently index for bgp4V2NlriEntry is not coformant to MIB definition

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
19 months agobgpd: snmp MIB bg4v2 fix invalid address Type value
Francois Dumontet [Wed, 13 Sep 2023 12:26:48 +0000 (14:26 +0200)]
bgpd: snmp MIB bg4v2 fix invalid address Type value

currently an snmpwalk gives:
BGP4V2-MIB::bgp4V2PeerFsmEstablishedTime.1.ipv6z.10.125.0.2 = Gauge32: 103 seconds
BGP4V2-MIB::bgp4V2PeerFsmEstablishedTime.2.dns.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = Gauge32: 103 seconds

but ipv6z and dns are not the valid address type this must be ipv4 and
ipv6.

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
19 months agobgpd: snmp MIB bg4v2 fix wrong type values
Francois Dumontet [Wed, 13 Sep 2023 12:29:34 +0000 (14:29 +0200)]
bgpd: snmp MIB bg4v2 fix wrong type values

snmpwalk exhibit the followinfg errors:

BGP4V2-MIB::bgp4V2PeerLastErrorReceivedTime.1.ipv6z.10.125.0.2 = Wrong Type (should be Timeticks): Gauge32: 0
BGP4V2-MIB::bgp4V2PeerLastErrorReceivedTime.2.dns.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = Wrong Type (should be Timeticks): Hex-STRING: 00 00 00 00 00 00 00 00
BGP4V2-MIB::bgp4V2PeerLastErrorSentTime.1.ipv6z.10.125.0.2 = Wrong Type (should be Timeticks): Gauge32: 178
BGP4V2-MIB::bgp4V2PeerLastErrorSentTime.2.dns.253.0.1.37.0.0.0.0.0.0.0.0.0.0.0.3 = Wrong Type (should be Timeticks): Hex-STRING: B2 00 00 00 00 00 00 00
Error: OID not increasing: BGP4V2-MIB::bgp4V2NlriIndex.1.4.10.200."".0.24.10.125.0.2
 >= BGP4V2-MIB::bgp4V2NlriIndex.1.4.10.200."".0.24."".0.0.0

draft-ietf-idr-bgp4-mibv2-11 states the following

bgp4V2PeerLastErrorReceivedTime OBJECT-TYPE
    SYNTAX     TimeStamp
bgp4V2PeerLastErrorSentTime OBJECT-TYPE
    SYNTAX     TimeStamp

we set the correct values

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
19 months agoMerge pull request #14422 from cscarpitta/bugfix/fix-coverity-isis-srv6
Donatas Abraitis [Tue, 19 Sep 2023 11:43:22 +0000 (14:43 +0300)]
Merge pull request #14422 from cscarpitta/bugfix/fix-coverity-isis-srv6

isisd: Fix a bunch of coverity issues in IS-IS

19 months agotests: Check if TCP MSS is synced if using a passive neighbor 14436/head
Donatas Abraitis [Mon, 18 Sep 2023 19:54:53 +0000 (22:54 +0300)]
tests: Check if TCP MSS is synced if using a passive neighbor

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Set TCP min MSS per listener
Donatas Abraitis [Mon, 18 Sep 2023 19:34:45 +0000 (22:34 +0300)]
bgpd: Set TCP min MSS per listener

Set only if at least one peer is in passive mode.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agoMerge pull request #14429 from opensourcerouting/ospf6d-warnfix-20230916
Mark Stapp [Mon, 18 Sep 2023 19:16:02 +0000 (15:16 -0400)]
Merge pull request #14429 from opensourcerouting/ospf6d-warnfix-20230916

ospf6d: fix uninitialized warnings

19 months agobgpd: Show TCP MSS per neighbor always, despite if it's configured or not
Donatas Abraitis [Mon, 18 Sep 2023 12:54:43 +0000 (15:54 +0300)]
bgpd: Show TCP MSS per neighbor always, despite if it's configured or not

To show the TCP MSS value per neighbor you have to configure it, otherwise you
don't see the actual value.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agobgpd: Set TCP MSS for the socket even if the session is set to passive
Donatas Abraitis [Fri, 15 Sep 2023 11:05:41 +0000 (14:05 +0300)]
bgpd: Set TCP MSS for the socket even if the session is set to passive

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
19 months agoMerge pull request #14406 from donaldsharp/pim_debug_fun
Donatas Abraitis [Mon, 18 Sep 2023 08:40:48 +0000 (11:40 +0300)]
Merge pull request #14406 from donaldsharp/pim_debug_fun

pimd: Display oil_parent as a string name of the interface

19 months agoMerge pull request #14431 from idryzhov/zebra-cleanup
Donatas Abraitis [Mon, 18 Sep 2023 08:06:05 +0000 (11:06 +0300)]
Merge pull request #14431 from idryzhov/zebra-cleanup

zebra: remove duplicated code

19 months agoMerge pull request #14418 from bisdn/jogo_frrcommon_fix_stop_quiet
Donatas Abraitis [Mon, 18 Sep 2023 08:05:33 +0000 (11:05 +0300)]
Merge pull request #14418 from bisdn/jogo_frrcommon_fix_stop_quiet

tools: make --quiet actually suppress output

19 months agoMerge pull request #14409 from pguibert6WIND/donotuse_redistribute_table_on_non_defau...
Donatas Abraitis [Mon, 18 Sep 2023 07:09:12 +0000 (10:09 +0300)]
Merge pull request #14409 from pguibert6WIND/donotuse_redistribute_table_on_non_default_bgp

bgpd: fix forbiding 'redistribute table' usage on non default instances

19 months agozebra: remove duplicated code 14431/head
Igor Ryzhov [Sun, 17 Sep 2023 19:34:51 +0000 (22:34 +0300)]
zebra: remove duplicated code

The same thing is done in zebra_if_update_link a couple of lines above.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
19 months agoospf6d: fix uninitialized warnings 14429/head
David Lamparter [Sat, 16 Sep 2023 12:17:24 +0000 (14:17 +0200)]
ospf6d: fix uninitialized warnings

GCC 13.2.0 complains:

```
ospf6d/ospf6_intra.c:139:25: error: ‘json_arr’ may be used uninitialized [-Werror=maybe-uninitialized]
ospf6d/ospf6_intra.c:485:20: error: ‘json_arr’ may be used uninitialized [-Werror=maybe-uninitialized]
```

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
19 months ago[ospfd]: add support for RFC 5709 HMAC-SHA Auth 14398/head
Mahdi Varasteh [Tue, 12 Sep 2023 11:39:44 +0000 (15:09 +0330)]
[ospfd]: add support for RFC 5709 HMAC-SHA Auth

This patch includes:
* Implementation of RFC 5709 support in OSPF. Using
openssl library and FRR key-chain,
one can use SHA1, SHA256, SHA384, SHA512 and
keyed-MD5( backward compatibility with RFC 2328) HMAC algs.
* Updating documentation of OSPF
* add topotests for new HMAC algorithms

Signed-off-by: Mahdi Varasteh <varasteh@amnesh.ir>
19 months agoMerge pull request #14417 from Jafaral/veth
Igor Ryzhov [Fri, 15 Sep 2023 22:03:21 +0000 (01:03 +0300)]
Merge pull request #14417 from Jafaral/veth

zebra: fix link update for veth interfaces

19 months agoisisd: Fix CID 1568134 (Null pointer dereference) 14422/head
Carmine Scarpitta [Fri, 15 Sep 2023 10:36:30 +0000 (12:36 +0200)]
isisd: Fix CID 1568134 (Null pointer dereference)

Null check `isis` pointer before dereferencing it.

Fixes this coverity issue:

*** CID 1568134:  Null pointer dereferences  (NULL_RETURNS)
/isisd/isis_zebra.c: 1146 in isis_zebra_process_srv6_locator_chunk()
1140                    "prefix %pFX, block_len %u, node_len %u, func_len %u, arg_len %u",
1141                    chunk->locator_name, &chunk->prefix, chunk->block_bits_length,
1142                    chunk->node_bits_length, chunk->function_bits_length,
1143                    chunk->argument_bits_length);
1144
1145            /* Walk through all areas of the ISIS instance */
>>>     CID 1568134:  Null pointer dereferences  (NULL_RETURNS)
>>>     Dereferencing "isis", which is known to be "NULL".
1146            for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area)) {
1147                    if (strncmp(area->srv6db.config.srv6_locator_name,
1148                                chunk->locator_name,
1149                                sizeof(area->srv6db.config.srv6_locator_name)) != 0)
1150                            continue;
1151

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
19 months agoisisd: Fix CID 1568133 (Null pointer dereference)
Carmine Scarpitta [Fri, 15 Sep 2023 10:30:39 +0000 (12:30 +0200)]
isisd: Fix CID 1568133 (Null pointer dereference)

Null checking the `sra` pointer after dereferencing it causes a
coverity issue. Let's perform the null check before dereferencing the
pointer.

Fixes this coverity issue:

*** CID 1568133:  Null pointer dereferences  (REVERSE_INULL)
/isisd/isis_zebra.c: 1077 in isis_zebra_srv6_adj_sid_uninstall()
1071            enum seg6local_action_t action = ZEBRA_SEG6_LOCAL_ACTION_UNSPEC;
1072            struct interface *ifp;
1073            uint16_t prefixlen = IPV6_MAX_BITLEN;
1074            struct isis_circuit *circuit = sra->adj->circuit;
1075            struct isis_area *area = circuit->area;
1076
>>>     CID 1568133:  Null pointer dereferences  (REVERSE_INULL)
>>>     Null-checking "sra" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
1077            if (!sra)
1078                    return;
1079
1080            switch (sra->behavior) {
1081            case SRV6_ENDPOINT_BEHAVIOR_END_X:
1082                    prefixlen = IPV6_MAX_BITLEN;

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
19 months agoisisd: Fix CID 1568132 (Null pointer dereference)
Carmine Scarpitta [Fri, 15 Sep 2023 10:25:50 +0000 (12:25 +0200)]
isisd: Fix CID 1568132 (Null pointer dereference)

Null checking the `sra` pointer after dereferencing it causes a
coverity issue. Let's perform the null check before dereferencing the
pointer.

Fixes this coverity issue:

*** CID 1568132:  Null pointer dereferences  (REVERSE_INULL)
/isisd/isis_zebra.c: 1023 in isis_zebra_srv6_adj_sid_install()
1017            struct seg6local_context ctx = {};
1018            uint16_t prefixlen = IPV6_MAX_BITLEN;
1019            struct interface *ifp;
1020            struct isis_circuit *circuit = sra->adj->circuit;
1021            struct isis_area *area = circuit->area;
1022
>>>     CID 1568132:  Null pointer dereferences  (REVERSE_INULL)
>>>     Null-checking "sra" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
1023            if (!sra)
1024                    return;
1025
1026            sr_debug("ISIS-SRv6 (%s): setting adjacency SID %pI6", area->area_tag,
1027                     &sra->sid);
1028

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
19 months agoisisd: Fix CID 1568129 (Null pointer dereference)
Carmine Scarpitta [Fri, 15 Sep 2023 10:13:45 +0000 (12:13 +0200)]
isisd: Fix CID 1568129 (Null pointer dereference)

Fix this coverity issue:

*** CID 1568129:  Null pointer dereferences  (REVERSE_INULL)
/isisd/isis_tlvs.c: 2813 in unpack_item_srv6_end_sid()
2807                    sid->subsubtlvs = NULL;
2808            }
2809
2810            append_item(&subtlvs->srv6_end_sids, (struct isis_item *)sid);
2811            return 0;
2812     out:
>>>     CID 1568129:  Null pointer dereferences  (REVERSE_INULL)
>>>     Null-checking "sid" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
2813            if (sid)
2814                    free_item_srv6_end_sid((struct isis_item *)sid);
2815            return 1;
2816     }
2817
2818     /* Functions related to TLVs 1 Area Addresses */

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
19 months agotests: Check if private ASNs are removed if modified by route-map 14420/head
Donatas Abraitis [Thu, 14 Sep 2023 18:52:21 +0000 (21:52 +0300)]
tests: Check if private ASNs are removed if modified by route-map

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>