]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
13 months agoMerge pull request #12931 from SaiGomathiN/yang
Donatas Abraitis [Mon, 27 Mar 2023 10:45:00 +0000 (13:45 +0300)]
Merge pull request #12931 from SaiGomathiN/yang

pim6d: custom error-message for non-multicast groups

13 months agoMerge pull request #13084 from opensourcerouting/fix/bgp_vrf_md5_password
Donald Sharp [Sun, 26 Mar 2023 12:21:31 +0000 (08:21 -0400)]
Merge pull request #13084 from opensourcerouting/fix/bgp_vrf_md5_password

bgpd: Set md5 TCP socket option for outgoing connections on listener

13 months agoMerge pull request #13101 from opensourcerouting/fix/bindir_for_frr-reload
Donald Sharp [Sun, 26 Mar 2023 12:20:33 +0000 (08:20 -0400)]
Merge pull request #13101 from opensourcerouting/fix/bindir_for_frr-reload

tools: Set correct directory of vtysh for frr-reload.py

13 months agoMerge pull request #13108 from opensourcerouting/clippy-string-warn
Donald Sharp [Sat, 25 Mar 2023 16:57:00 +0000 (12:57 -0400)]
Merge pull request #13108 from opensourcerouting/clippy-string-warn

lib: improve clippy behavior with invalid input

13 months agolib/clippy: bail out on newline inside string
David Lamparter [Sat, 25 Mar 2023 03:34:35 +0000 (12:34 +0900)]
lib/clippy: bail out on newline inside string

While C compilers will generally process strings across lines, we really
don't want that.  I rather treat this as the indication of the typo it
probably is warn about it than support this odd C edge case.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
13 months agolib/clippy: don't SEGV on invalid tokens in DEFPY
David Lamparter [Sat, 25 Mar 2023 03:33:14 +0000 (12:33 +0900)]
lib/clippy: don't SEGV on invalid tokens in DEFPY

The token value can be NULL if we run into something that failed to
parse.  Throw a Python exception rather than SEGV.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
13 months agoMerge pull request #12953 from donaldsharp/struct_event
Jafar Al-Gharaibeh [Fri, 24 Mar 2023 18:48:53 +0000 (13:48 -0500)]
Merge pull request #12953 from donaldsharp/struct_event

Struct event

13 months agotools: Set correct directory of vtysh for frr-reload.py
Donatas Abraitis [Thu, 23 Mar 2023 18:55:14 +0000 (20:55 +0200)]
tools: Set correct directory of vtysh for frr-reload.py

Before it was setting SDIR, which is /usr/lib/frr, but the vtysh binary is put
under bindir (which is /usr/local by default). And running `/usr/lib/frr/frr reload`
failed.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
13 months agoMerge pull request #13093 from manojvn/ospf_mem_leaks
Donald Sharp [Fri, 24 Mar 2023 14:23:18 +0000 (10:23 -0400)]
Merge pull request #13093 from manojvn/ospf_mem_leaks

ospfd: Fix for memory leak issue in ospf related to flood_reduction tests.

13 months agoMerge pull request #13100 from opensourcerouting/fix/bgp_cap_llgr_length_check
Donald Sharp [Fri, 24 Mar 2023 14:22:48 +0000 (10:22 -0400)]
Merge pull request #13100 from opensourcerouting/fix/bgp_cap_llgr_length_check

bgpd: Check 7 bytes for Long-lived Graceful-Restart capability

13 months agobgpd: Check 7 bytes for Long-lived Graceful-Restart capability
Donatas Abraitis [Fri, 24 Mar 2023 07:55:23 +0000 (09:55 +0200)]
bgpd: Check 7 bytes for Long-lived Graceful-Restart capability

It's not 4 bytes, it was assuming the same as Graceful-Restart tuples.

LLGR has more 3 bytes (Long-lived Stale Time).

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
13 months agoMerge pull request #13088 from donaldsharp/pim_use_after
mobash-rasool [Fri, 24 Mar 2023 13:03:05 +0000 (18:33 +0530)]
Merge pull request #13088 from donaldsharp/pim_use_after

pimd: Fix use after free issue for ifp's moving vrfs

13 months agoMerge pull request #13094 from loganaden/master
Donald Sharp [Fri, 24 Mar 2023 12:41:11 +0000 (08:41 -0400)]
Merge pull request #13094 from loganaden/master

mgmtd: Fix fd leak.

13 months ago*: Fixup formatting issues due to reordering
Donald Sharp [Thu, 23 Mar 2023 11:37:28 +0000 (07:37 -0400)]
*: Fixup formatting issues due to reordering

All the event changes exposed a bunch of places where
we were not properly following our standards.  Just
clean them up in one big fell swoop.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert event.h to frrevent.h
Donald Sharp [Tue, 7 Mar 2023 19:22:48 +0000 (14:22 -0500)]
*: Convert event.h to frrevent.h

We should probably prevent any type of namespace collision
with something else.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert `struct event_master` to `struct event_loop`
Donald Sharp [Tue, 7 Mar 2023 19:14:41 +0000 (14:14 -0500)]
*: Convert `struct event_master` to `struct event_loop`

Let's find a better name for it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_master_XXX functions to event_master_XXX
Donald Sharp [Sat, 4 Mar 2023 14:14:52 +0000 (09:14 -0500)]
*: Convert thread_master_XXX functions to event_master_XXX

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert THREAD_XXX macros to EVENT_XXX macros
Donald Sharp [Sun, 25 Dec 2022 15:26:52 +0000 (10:26 -0500)]
*: Convert THREAD_XXX macros to EVENT_XXX macros

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agolib, zebra: Convert THREAD_TIMER_STRLEN to EVENT_TIMER_STRLEN
Donald Sharp [Sun, 11 Dec 2022 16:39:09 +0000 (11:39 -0500)]
lib, zebra: Convert THREAD_TIMER_STRLEN to EVENT_TIMER_STRLEN

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agolib: change cpu_thread_history to cpu_event_history
Donald Sharp [Sun, 11 Dec 2022 16:36:01 +0000 (11:36 -0500)]
lib: change cpu_thread_history to cpu_event_history

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agolib: convert xref_threadsched to xref_eventsched
Donald Sharp [Sun, 11 Dec 2022 16:33:30 +0000 (11:33 -0500)]
lib: convert xref_threadsched to xref_eventsched

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agolib: convert thread internal lists to event internal lists
Donald Sharp [Sun, 11 Dec 2022 16:27:26 +0000 (11:27 -0500)]
lib: convert thread internal lists to event internal lists

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert struct thread_master to struct event_master and it's ilk
Donald Sharp [Sun, 11 Dec 2022 16:20:40 +0000 (11:20 -0500)]
*: Convert struct thread_master to struct event_master and it's ilk

Convert the `struct thread_master` to `struct event_master`
across the code base.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert a bunch of thread_XX to event_XX
Donald Sharp [Sun, 11 Dec 2022 15:51:58 +0000 (10:51 -0500)]
*: Convert a bunch of thread_XX to event_XX

Convert these functions:

thread_getrusage
thread_cmd_init
thread_consumed_time
thread_timer_to_hhmmss
thread_is_scheduled
thread_ignore_late_timer

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_should_yield and thread_set_yield_time
Donald Sharp [Sun, 11 Dec 2022 15:39:12 +0000 (10:39 -0500)]
*: Convert thread_should_yield and thread_set_yield_time

Convert thread_should_yield and thread_set_yield_time
to event_should_yield and event_set_yield_time

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_timer_remain_XXX to event_timer_remain_XXX
Donald Sharp [Sun, 11 Dec 2022 13:19:00 +0000 (08:19 -0500)]
*: Convert thread_timer_remain_XXX to event_timer_remain_XXX

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_execute to event_execute
Donald Sharp [Sun, 11 Dec 2022 13:06:25 +0000 (08:06 -0500)]
*: Convert thread_execute to event_execute

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agolib: Convert THREAD_YIELD_TIME_SLOT to EVENT_YIELD_TIME_SLOT
Donald Sharp [Sun, 11 Dec 2022 12:55:02 +0000 (07:55 -0500)]
lib: Convert THREAD_YIELD_TIME_SLOT to EVENT_YIELD_TIME_SLOT

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_fetch and thread_call to event_fetch and event_call
Donald Sharp [Sun, 11 Dec 2022 12:51:16 +0000 (07:51 -0500)]
*: Convert thread_fetch and thread_call to event_fetch and event_call

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agolib: Convert thread_type to event_type and make an enum
Donald Sharp [Sat, 10 Dec 2022 14:28:31 +0000 (09:28 -0500)]
lib: Convert thread_type to event_type and make an enum

a) Convert thread types to a enum
b) Convert MTYPES to EVENT instead of THREAD

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_cancelXXX to event_cancelXXX
Donald Sharp [Sat, 10 Dec 2022 14:08:37 +0000 (09:08 -0500)]
*: Convert thread_cancelXXX to event_cancelXXX

Modify the code base so that thread_cancel becomes event_cancel

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Convert thread_add_XXX functions to event_add_XXX
Donald Sharp [Fri, 20 May 2022 18:19:08 +0000 (14:19 -0400)]
*: Convert thread_add_XXX functions to event_add_XXX

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Rename `struct thread` to `struct event`
Donald Sharp [Tue, 1 Mar 2022 21:18:12 +0000 (16:18 -0500)]
*: Rename `struct thread` to `struct event`

Effectively a massive search and replace of
`struct thread` to `struct event`.  Using the
term `thread` gives people the thought that
this event system is a pthread when it is not

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months ago*: Rename thread.[ch] to event.[ch]
Donald Sharp [Mon, 28 Feb 2022 15:40:31 +0000 (10:40 -0500)]
*: Rename thread.[ch] to event.[ch]

This is a first in a series of commits, whose goal is to rename
the thread system in FRR to an event system.  There is a continual
problem where people are confusing `struct thread` with a true
pthread.  In reality, our entire thread.c is an event system.

In this commit rename the thread.[ch] files to event.[ch].

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agoMerge pull request #13065 from rgirada/ospf_abr_summary
Donald Sharp [Thu, 23 Mar 2023 23:57:08 +0000 (19:57 -0400)]
Merge pull request #13065 from rgirada/ospf_abr_summary

13 months agomgmtd: Fix fd leak.
Loganaden Velvindron [Thu, 23 Mar 2023 19:07:06 +0000 (23:07 +0400)]
mgmtd: Fix fd leak.

Close fd before returning to avoid leaks.

Signed-off-by: Loganaden Velvindron <logan@cyberstorm.mu>
13 months agoospfd: Fix for memory leak issue in ospf related to flood_reduction tests.
Manoj Naragund [Thu, 23 Mar 2023 12:59:38 +0000 (05:59 -0700)]
ospfd: Fix for memory leak issue in ospf related to flood_reduction tests.

Problem:
Multiple memory leaks after pr12366

RCA:
ospf_lsa_unlock was not happening for the few of the LSAs in
ospf_lsa_refresh_walker after pr12366 due to which memory
related to lsas was leaking.

Fix:
Moved the ospf_lsa_unlock outside if check.

Signed-off-by: Manoj Naragund <mnaragund@vmware.com>
13 months agoMerge pull request #13074 from donaldsharp/hash_clean_and_free
Donatas Abraitis [Thu, 23 Mar 2023 12:08:29 +0000 (14:08 +0200)]
Merge pull request #13074 from donaldsharp/hash_clean_and_free

*: Add a hash_clean_and_free() function

13 months agoMerge pull request #13078 from opensourcerouting/fix/set_distance_zero
Donald Sharp [Thu, 23 Mar 2023 11:50:35 +0000 (07:50 -0400)]
Merge pull request #13078 from opensourcerouting/fix/set_distance_zero

bgpd: Do not allow setting `set distance` via route-maps to zero

13 months agopimd: Fix use after free issue for ifp's moving vrfs
Donald Sharp [Wed, 22 Mar 2023 22:24:56 +0000 (18:24 -0400)]
pimd: Fix use after free issue for ifp's moving vrfs

We have this valgrind trace:

==1125== Invalid read of size 4
==1125==    at 0x170A7D: pim_if_delete (pim_iface.c:203)
==1125==    by 0x170C01: pim_if_terminate (pim_iface.c:80)
==1125==    by 0x174F34: pim_instance_terminate (pim_instance.c:68)
==1125==    by 0x17535B: pim_vrf_terminate (pim_instance.c:260)
==1125==    by 0x1941CF: pim_terminate (pimd.c:161)
==1125==    by 0x1B476D: pim_sigint (pim_signals.c:44)
==1125==    by 0x4910C22: frr_sigevent_process (sigevent.c:133)
==1125==    by 0x49220A4: thread_fetch (thread.c:1777)
==1125==    by 0x48DC8E2: frr_run (libfrr.c:1222)
==1125==    by 0x15E12A: main (pim_main.c:176)
==1125==  Address 0x6274d28 is 1,192 bytes inside a block of size 1,752 free'd
==1125==    at 0x48369AB: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==1125==    by 0x174FF1: pim_vrf_delete (pim_instance.c:181)
==1125==    by 0x4925480: vrf_delete (vrf.c:264)
==1125==    by 0x4925480: vrf_delete (vrf.c:238)
==1125==    by 0x49332C7: zclient_vrf_delete (zclient.c:2187)
==1125==    by 0x4934319: zclient_read (zclient.c:4003)
==1125==    by 0x492249C: thread_call (thread.c:2008)
==1125==    by 0x48DC8D7: frr_run (libfrr.c:1223)
==1125==    by 0x15E12A: main (pim_main.c:176)
==1125==  Block was alloc'd at
==1125==    at 0x4837B65: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==1125==    by 0x48E80AF: qcalloc (memory.c:116)
==1125==    by 0x1750DA: pim_instance_init (pim_instance.c:90)
==1125==    by 0x1750DA: pim_vrf_new (pim_instance.c:161)
==1125==    by 0x4924FDC: vrf_get (vrf.c:183)
==1125==    by 0x493334C: zclient_vrf_add (zclient.c:2157)
==1125==    by 0x4934319: zclient_read (zclient.c:4003)
==1125==    by 0x492249C: thread_call (thread.c:2008)
==1125==    by 0x48DC8D7: frr_run (libfrr.c:1223)
==1125==    by 0x15E12A: main (pim_main.c:176)

and you do this series of events:

a) Create a vrf, put an interface in it
b) Turn on pim on that interface and turn on pim in that vrf
c) Delete the vrf
d) Do anything with the interface, in this case shutdown the system

The move of the interface to a new vrf is leaving the pim_ifp->pim pointer pointing
at the old pim instance, which was just deleted, so the instance pointer was freed.

Let's clean up the pim pointer in the interface pointer as well.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
13 months agoMerge pull request #13059 from FRRouting/dev/mgmtd
Jafar Al-Gharaibeh [Wed, 22 Mar 2023 17:37:14 +0000 (12:37 -0500)]
Merge pull request #13059 from FRRouting/dev/mgmtd

Introduce the centralized management daemon

14 months agobgpd: Set TCP_MD5 for outgoing connections when `password` is set
Donatas Abraitis [Wed, 22 Mar 2023 13:17:30 +0000 (15:17 +0200)]
bgpd: Set TCP_MD5 for outgoing connections when `password` is set

If configuring `neighbor password` under VRF (not default), the session
will never be established.

Before setting TCP_MD5 for the connection fd, we need to enable this on the
accept direction as well (listener).

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agotests: Check if BGP peering with MD5 per-VRF works correctly
Donatas Abraitis [Wed, 22 Mar 2023 12:15:13 +0000 (14:15 +0200)]
tests: Check if BGP peering with MD5 per-VRF works correctly

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agoMerge pull request #13075 from donaldsharp/bgp_route_debugs
Donatas Abraitis [Wed, 22 Mar 2023 10:47:35 +0000 (12:47 +0200)]
Merge pull request #13075 from donaldsharp/bgp_route_debugs

bgpd: Add vrf name and peer name to some bgp debugs

14 months agoMerge pull request #13080 from chiragshah6/fdev2
Donatas Abraitis [Wed, 22 Mar 2023 07:23:10 +0000 (09:23 +0200)]
Merge pull request #13080 from chiragshah6/fdev2

zebra: add evpn isDetectionFreeze to json output

14 months agolib: mgmtd: fix build warnings (as error)
Christian Hopps [Mon, 20 Mar 2023 23:28:42 +0000 (19:28 -0400)]
lib: mgmtd: fix build warnings (as error)

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agotests: apply frrbot style requirements
Christian Hopps [Mon, 20 Mar 2023 19:12:56 +0000 (15:12 -0400)]
tests: apply frrbot style requirements

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agolib: staticd: vtysh: apply frrbot style requirements
Christian Hopps [Mon, 20 Mar 2023 19:07:44 +0000 (15:07 -0400)]
lib: staticd: vtysh: apply frrbot style requirements

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agolib, mgmtd: Add few fixes for commit-check and rollback
Pushpasis Sarkar [Tue, 14 Mar 2023 10:36:06 +0000 (03:36 -0700)]
lib, mgmtd: Add few fixes for commit-check and rollback

This commit contains fixes for the following issues found
- 'mgmt commit check' issued through 'vtysh -f' was actually commtting the changeset.
- On config validation failure backend, mgmtd was not passing the correct error-reason
  to frontend.
- 'mgmt rollback ...' was reverting the change on backend, but config on mgmtd daemon
  remains intact

Signed-off-by: Pushpasis Sarkar <pushpasis@gmail.com>
14 months agomgmtd: lib: utilize msglib constructed from the removed code
Christian Hopps [Wed, 8 Mar 2023 22:11:43 +0000 (17:11 -0500)]
mgmtd: lib: utilize msglib constructed from the removed code

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agolib: new message library for mgmtd client and adapters
Christian Hopps [Wed, 8 Mar 2023 22:11:00 +0000 (17:11 -0500)]
lib: new message library for mgmtd client and adapters

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agostaticd: handle `distance` value
Christian Hopps [Tue, 28 Feb 2023 04:57:17 +0000 (23:57 -0500)]
staticd: handle `distance` value

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agotests: Add topotests for MGMT daemon
nguggarigoud [Fri, 29 Oct 2021 11:14:33 +0000 (04:14 -0700)]
tests: Add topotests for MGMT daemon

1. MGMT daemon support in topotests.
2. Sanity tests for MGMTd.

Signed-off-by: nguggarigoud <nguggarigoud@vmware.com>
14 months agozebra: add evpn isDetectionFreeze to json output
Sindhu Parvathi Gopinathan [Sat, 18 Mar 2023 18:48:34 +0000 (11:48 -0700)]
zebra: add evpn isDetectionFreeze to json output

Added "isDetectionFreeze" for show evpn json output to identify the
default and freeze permanent config.

Before fix:-
```
tor-2(config)# router bgp 65561
tor-2(config-router)# address-family l2vpn evpn
  <cr>
tor-2(config-router)# address-family l2vpn evpn
tor-2(config-router-af)# dup-addr-detection freeze permanent

tor-2(config-router-af)# do show evpn
L2 VNIs: 21
L3 VNIs: 5
Advertise gateway mac-ip: No
Advertise svi mac-ip: No
Advertise svi mac: No
Duplicate address detection: Enable
  Detection max-moves 5, time 180
  Detection freeze permanent
EVPN MH:
  mac-holdtime: 1080s, neigh-holdtime: 1080s
  startup-delay: 180s, start-delay-timer: --:--:--
  uplink-cfg-cnt: 0, uplink-active-cnt: 0
tor-2(config-router-af)#

tor-2(config-router-af)# do show evpn json
{
  "advertiseGatewayMacip":"No",
  "advertiseSviMacip":"No",
  "advertiseSviMac":"No",
  "numVnis":26,
  "numL2Vnis":21,
  "numL3Vnis":5,
  "isDuplicateAddrDetection":true,
  "maxMoves":5,
  "detectionTime":180,
  "detectionFreezeTime":0,
  "macHoldtime":1080,
  "neighHoldtime":1080,
  "startupDelay":180,
  "startupDelayTimer":"--:--:--",
  "uplinkConfigCount":0,
  "uplinkActiveCount":0
}
tor-2(config-router-af)#
```

After fix:-
```
cumulus@tor-1:mgmt:~$ sudo vtysh -c "show evpn json"
{
  "advertiseGatewayMacip":"No",
  "advertiseSviMacip":"No",
  "advertiseSviMac":"No",
  "numVnis":26,
  "numL2Vnis":21,
  "numL3Vnis":5,
  "isDuplicateAddrDetection":true,
  "maxMoves":5,
  "detectionTime":180,
  "detectionFreezeTime":0,  ==> default case , i.e dad_freeze duration is 0
  "isDetectionFreeze":false, ==> default case, i.e. dad_freeze disabled
  "macHoldtime":1080,
  "neighHoldtime":1080,
  "startupDelay":180,
  "startupDelayTimer":"--:--:--",
  "uplinkConfigCount":0,
  "uplinkActiveCount":0
}
cumulus@tor-1:mgmt:~$

tor-1(config-router-af)# dup-addr-detection freeze permanent
tor-1(config-router-af)# do show evpn json
{
  "advertiseGatewayMacip":"No",
  "advertiseSviMacip":"No",
  "advertiseSviMac":"No",
  "numVnis":26,
  "numL2Vnis":21,
  "numL3Vnis":5,
  "isDuplicateAddrDetection":true,
  "maxMoves":5,
  "detectionTime":180,
  "detectionFreezeTime":0, ==> dad_freeze with duration permanent
  "isDetectionFreeze":true, ==> dad_freeze enabled
  "macHoldtime":1080,
  "neighHoldtime":1080,
  "startupDelay":180,
  "startupDelayTimer":"00:00:08",
  "uplinkConfigCount":0,
  "uplinkActiveCount":0,
  "protodownReasons":[
    "startupDelay"
  ]
}
tor-1(config-router-af)#

tor-1(config-router-af)# dup-addr-detection freeze 400
tor-1(config-router-af)#
tor-1(config-router-af)# do show evpn json
{
  "advertiseGatewayMacip":"No",
  "advertiseSviMacip":"No",
  "advertiseSviMac":"No",
  "numVnis":26,
  "numL2Vnis":21,
  "numL3Vnis":5,
  "isDuplicateAddrDetection":true,
  "maxMoves":5,
  "detectionTime":180,
  "detectionFreezeTime":400, ==> dad_freeze duration with numeric value
  "isDetectionFreeze":true, ==> dad_freeze enabled
  "macHoldtime":1080,
  "neighHoldtime":1080,
  "startupDelay":180,
  "startupDelayTimer":"00:00:47",
  "uplinkConfigCount":0,
  "uplinkActiveCount":0,
  "protodownReasons":[
    "startupDelay"
  ]
}

tor-1(config-router-af)# no dup-addr-detection freeze permanent
tor-1(config-router-af)# do show evpn json
{
  "advertiseGatewayMacip":"No",
  "advertiseSviMacip":"No",
  "advertiseSviMac":"No",
  "numVnis":26,
  "numL2Vnis":21,
  "numL3Vnis":5,
  "isDuplicateAddrDetection":true,
  "maxMoves":5,
  "detectionTime":180,
  "detectionFreezeTime":0, ==> no dad_freeze duration
  "isDetectionFreeze":false, ==> no dad_freeze enabled
  "macHoldtime":1080,
  "neighHoldtime":1080,
  "startupDelay":180,
  "startupDelayTimer":"--:--:--",
  "uplinkConfigCount":0,
  "uplinkActiveCount":0
}
tor-1(config-router-af)#

```

Ticket:#3404283

Issue:3404283

Testing: UT done

Signed-off-by: Sindhu Parvathi Gopinathan's <sgopinathan@nvidia.com>
14 months agodoc: Add documentation for MGMT daemon
Pushpasis Sarkar [Fri, 29 Oct 2021 17:22:42 +0000 (10:22 -0700)]
doc: Add documentation for MGMT daemon

This commit adds user documentation for the new MGMT daemon and
new FRR Management Framework.

Co-authored-by: Yash Ranjan <ranjany@vmware.com>
Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com>
Co-authored-by: Ujwal P <ujwalp@vmware.com>
Signed-off-by: Pushpasis Sarkar <pushpasis@gmail.com>
14 months agomgmtd: Enroll Staticd as a backend client for MGMTD
Christian Hopps [Tue, 28 Feb 2023 09:08:41 +0000 (04:08 -0500)]
mgmtd: Enroll Staticd as a backend client for MGMTD

This commmit introduces Staticd as a backend client for the MGMTd
framework. All the static commands will be diverted to the MGMT
daemon and will use the transactional model to make changes to the
internal state. Similar mechanism can be used by other daemons to use
the MGMT framework in the future.

This commit includes the following functionalities in the changeset:
1. Diverts all the staticd (config only) commands to MGMTd.
2. Enrolls staticd as a backend client to use the MGMT framework.
3. Modify the staticd NB config handlers so that they can be compiled
   into a library and loaded in the MGMTd process context.

Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com>
Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com>
Co-authored-by: Ujwal P <ujwalp@vmware.com>
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
14 months agomgmtd: nb library for client front-end code
Christian Hopps [Tue, 28 Feb 2023 03:00:32 +0000 (22:00 -0500)]
mgmtd: nb library for client front-end code

Signed-off-by: Christian Hopps <chopps@labn.net>
14 months agomgmtd: Add MGMT Transaction Framework
Yash Ranjan [Thu, 28 Oct 2021 07:07:11 +0000 (00:07 -0700)]
mgmtd: Add MGMT Transaction Framework

This commit introduces the MGMT Transaction framework that takes
management requests from one (or more) frontend client sessions,
translates them into transactions and drives them to completion
in co-oridination with one (or more) backend client daemons
involved in the request.

This commit includes the following functionalities in the changeset:
1. Introduces the actual Transaction module. Commands added related to
   transaction are:
   a. show mgmt transaction all
2. Adds support for commit rollback feature which stores upto the 10
   commit buffers. Each commit has a commit-id which can be used to
   rollback to the exact configuration state.
   Commands supported for this feature are:
   a. show mgmt commit-history
   b. mgmt rollback commit-id COMMIT_ID
3. Add hidden commands to enable record various performance metrics:
   a. mgmt performance-measurement
   b. mgmt reset-statistic

Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com>
Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com>
Co-authored-by: Ujwal P <ujwalp@vmware.com>
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
14 months agomgmtd: Add MGMT Backend Interface Framework
Christian Hopps [Tue, 28 Feb 2023 15:00:19 +0000 (10:00 -0500)]
mgmtd: Add MGMT Backend Interface Framework

This commit introduces the MGMT Backend Interface which can be used
by back-end management client daemons like BGPd, Staticd, Zebra to
connect with new FRR Management daemon (MGMTd) and utilize the new
FRR Management Framework to let any Frontend clients to retrieve any
operational data or manipulate any configuration data owned by the
individual Backend daemon component.

This commit includes the following functionalities in the changeset:
1. Add new Backend server for Backend daemons connect to.
2. Add a C-based Backend client library which can be used by daemons
   to communicate with MGMTd via the Backend interface.
3. Maintain a backend adapter for each connection from an appropriate
   Backend client to facilitate client requests and track one or more
   transactions initiated from Frontend client sessions that involves
   the backend client component.
4. Add the following commands to inspect various Backend client
   related information
a. show mgmt backend-adapter all
b. show mgmt backend-yang-xpath-registry
        c. show mgmt yang-xpath-subscription

Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com>
Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com>
Co-authored-by: Ujwal P <ujwalp@vmware.com>
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
14 months agomgmtd: Add MGMT Frontend Interface Framework
Christian Hopps [Wed, 8 Mar 2023 22:26:38 +0000 (17:26 -0500)]
mgmtd: Add MGMT Frontend Interface Framework

This commit introduces the Frontend Interface which can be used
by front-end management clients like Netconf server, Restconf
Server and CLI to interact with new FRR Management daemon (MGMTd)
to access and sometimes modify FRR management data.

This commit includes the following functionalities in the changeset:
1. Add new Frontend server for clients connect to.
2. Add a C-based Frontend client library which can be used by Frontend
   clients to communicate with MGMTd via the Frontend interface.
3. Maintain a frontend adapter for each connection from an appropriate
   Frontend client to facilitate client requests and track one or more
   client sessions across it.
4. Define the protobuf message format for messages to be exchanged
   between MGMTd Frontend module and the Frontend client.
5. This changeset also introduces an instance of MGMT Frontend client
   embedded within the lib/vty module that can be leveraged by any FRR
   daemon to connect to MGMTd's Frontend interface. The same has been
   integrated with and initialized within the MGMTd daemon's process
   context to implement a bunch of 'set-config', 'commit-apply',
   'get-config' and 'get-data' commands via VTYSH

Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com>
Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com>
Co-authored-by: Ujwal P <ujwalp@vmware.com>
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
14 months agomgmtd: Bringup MGMTD daemon and datastore module support
Christian Hopps [Wed, 8 Mar 2023 22:22:09 +0000 (17:22 -0500)]
mgmtd: Bringup MGMTD daemon and datastore module support

Features added in this commit:
1. Bringup/shutdown new management daemon 'mgmtd' along with FRR.
2. Support for Startup, Candidate and Running DBs.
3. Lock/Unlock DS feature using pthread lock.
4. Load config from a JSON file onto candidate DS.
5. Save config to a JSON file from running/candidate DS.
6. Dump candidate or running DS contents on the terminal or a file in
   JSON/XML format.
7. Maintaining commit history (Full rollback support to be added in
   future commits).
8. Addition of debug commands.

Co-authored-by: Yash Ranjan <ranjany@vmware.com>
Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com>
Co-authored-by: Ujwal P <ujwalp@vmware.com>
Signed-off-by: Pushpasis Sarkar <pushpasis@gmail.com>
14 months agobgpd: Do not allow setting `set distance` via route-maps to zero
Donatas Abraitis [Tue, 21 Mar 2023 20:08:16 +0000 (22:08 +0200)]
bgpd: Do not allow setting `set distance` via route-maps to zero

It's not allowed to install routes with zero distance, let's disallow this
for route-maps as well.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agoMerge pull request #13073 from donaldsharp/static_use_after_free
Rafael Zalamena [Tue, 21 Mar 2023 19:37:06 +0000 (16:37 -0300)]
Merge pull request #13073 from donaldsharp/static_use_after_free

staticd: Tell bfd that we are shutting down

14 months agobgpd: Add vrf name and peer name to some bgp debugs
Donald Sharp [Tue, 21 Mar 2023 19:06:00 +0000 (15:06 -0400)]
bgpd: Add vrf name and peer name to some bgp debugs

Some debugs were especially hard to figure out in bgp_route.c

a) If using a %p pointer to print the bgp_path_info this
is pretty useless.  Print where it came from instead
b) Use A.B.C.D/M(VRFNAME) when outputing the prefix

Just basically give more useful information.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
14 months agoMerge pull request #12997 from opensourcerouting/fix/free_duped_bgp_stuff_for_aggregate
Russ White [Tue, 21 Mar 2023 14:27:19 +0000 (10:27 -0400)]
Merge pull request #12997 from opensourcerouting/fix/free_duped_bgp_stuff_for_aggregate

bgpd: Free dup'ed attributes for aggregate routes with route-maps

14 months agoMerge pull request #12968 from pguibert6WIND/asn_aggregator_counter_prop
Russ White [Tue, 21 Mar 2023 14:12:01 +0000 (10:12 -0400)]
Merge pull request #12968 from pguibert6WIND/asn_aggregator_counter_prop

yang: Fix "aggregator-asn" to support asdot

14 months agostaticd: Tell bfd that we are shutting down
Donald Sharp [Tue, 21 Mar 2023 12:55:35 +0000 (08:55 -0400)]
staticd: Tell bfd that we are shutting down

Prevent a use after free and tell the bfd subsystem
we are shutting down in staticd.

./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460:==2264460==ERROR: AddressSanitizer: heap-use-after-free on address 0x61f000004698 at pc 0x7f65d1eb11b2 bp 0x7ffdbface490 sp 0x7ffdbface488
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-READ of size 4 at 0x61f000004698 thread T0
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #0 0x7f65d1eb11b1 in zclient_bfd_command lib/bfd.c:307
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #1 0x7f65d1eb20f5 in _bfd_sess_send lib/bfd.c:507
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #2 0x7f65d20510aa in thread_call lib/thread.c:1989
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #3 0x7f65d2051f0a in _thread_execute lib/thread.c:2081
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #4 0x7f65d1eb271b in _bfd_sess_remove lib/bfd.c:544
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #5 0x7f65d1eb278d in bfd_sess_free lib/bfd.c:553
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #6 0x7f65d1eb5400 in bfd_protocol_integration_finish lib/bfd.c:1029
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #7 0x7f65d1f42f77 in hook_call_frr_fini lib/libfrr.c:41
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #8 0x7f65d1f494a1 in frr_fini lib/libfrr.c:1199
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #9 0x563b7abefd76 in sigint staticd/static_main.c:70
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #10 0x7f65d200ef91 in frr_sigevent_process lib/sigevent.c:115
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #11 0x7f65d204fac6 in thread_fetch lib/thread.c:1758
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #12 0x7f65d1f49377 in frr_run lib/libfrr.c:1184
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #13 0x563b7abefed1 in main staticd/static_main.c:160
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #14 0x7f65d1b92d09 in __libc_start_main ../csu/libc-start.c:308
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-    #15 0x563b7abefa99 in _start (/usr/lib/frr/staticd+0x15a99)
./bfd_topo3.test_bfd_topo3/r4.staticd.asan.2264460-

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
14 months ago*: Add a hash_clean_and_free() function
Donald Sharp [Tue, 21 Mar 2023 12:54:21 +0000 (08:54 -0400)]
*: Add a hash_clean_and_free() function

Add a hash_clean_and_free() function as well as convert
the code to use it.  This function also takes a double
pointer to the hash to set it NULL.  Also it cleanly
does nothing if the pointer is NULL( as a bunch of
code tested for ).

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
14 months agoMerge pull request #12816 from gpnaveen/stc_rte_err_msg
Donatas Abraitis [Tue, 21 Mar 2023 11:30:08 +0000 (13:30 +0200)]
Merge pull request #12816 from gpnaveen/stc_rte_err_msg

tests: Enhance error msgs for static route automation.

14 months agoMerge pull request #13062 from Pdoijode/evpn-use-after-free-fix
Donatas Abraitis [Tue, 21 Mar 2023 11:04:25 +0000 (13:04 +0200)]
Merge pull request #13062 from Pdoijode/evpn-use-after-free-fix

zebra: Fix for heap-use-after-free in EVPN

14 months agoMerge pull request #13031 from opensourcerouting/ospf-show-database
Donald Sharp [Tue, 21 Mar 2023 11:03:05 +0000 (07:03 -0400)]
Merge pull request #13031 from opensourcerouting/ospf-show-database

ospfd: Improve the "show ip ospf database" command

14 months agoMerge pull request #13061 from donaldsharp/bfd_use_after_free
Donatas Abraitis [Tue, 21 Mar 2023 06:59:45 +0000 (08:59 +0200)]
Merge pull request #13061 from donaldsharp/bfd_use_after_free

lib: on bfd peer shutdown actually stop event

14 months agoMerge pull request #13064 from chiragshah6/fdev1
Donatas Abraitis [Tue, 21 Mar 2023 06:58:51 +0000 (08:58 +0200)]
Merge pull request #13064 from chiragshah6/fdev1

lib: fix clear route-map command

14 months agoMerge pull request #13063 from qlyoung/update-docker-build-info
Donatas Abraitis [Tue, 21 Mar 2023 06:56:20 +0000 (08:56 +0200)]
Merge pull request #13063 from qlyoung/update-docker-build-info

doc: add release instructions for docker images

14 months agoospfd: Fixing Summary origination after range configuration
rgirada [Mon, 20 Mar 2023 11:22:26 +0000 (11:22 +0000)]
ospfd: Fixing Summary origination after range configuration

Description:
After area range config, summary lsas are aggerated to configured
route but later it was being flushed instead of the actual summary
lsa. This was seen when prefix-id of the aggregated route is same
as one of the actual summary route.
Here, aggregated summary lsa need to be returned to set the flag
SUMMARY_APPROVE after originating aggregated summary lsa but its not.
Which is being cleaned up as part of unapproved summary cleanup.
Corrected this now.

Issue: #13028

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
14 months agolib:fix clear route-map cmd using DEFPY
Sindhu Parvathi Gopinathan [Mon, 20 Mar 2023 12:15:03 +0000 (05:15 -0700)]
lib:fix clear route-map cmd using DEFPY

Due to the wrong input argv id, "argv[idx_word]->arg"
fetched in-correctly and it clears all the route-maps instead of
specific one.

Now correct argv id is passed to clear the given route-map counters.

Also, use RMAP_NAME which allows to show list of configured
route-maps in the system.

After Fix:-

Ticket:#3407773
Issue:3407773

Testing: UT done

Before:
TORC11# clear route-map counters
  <cr>
  WORD  route-map name

After:

TORC11# clear route-map counters
  <cr>
  RMAP_NAME  route-map name
     my-as

Signed-off-by: Chirag Shah <chirag@nvidia.com>
Signed-off-by: Sindhu Parvathi Gopinathan's <sgopinathan@nvidia.com>
14 months agodoc: add release instructions for docker images
Quentin Young [Mon, 20 Mar 2023 20:54:20 +0000 (16:54 -0400)]
doc: add release instructions for docker images

Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
14 months agoMerge pull request #12688 from dorDiogo/isis_hello_padding_sometimes
Russ White [Mon, 20 Mar 2023 21:00:57 +0000 (17:00 -0400)]
Merge pull request #12688 from dorDiogo/isis_hello_padding_sometimes

isisd: Add support for IS-IS hello padding during-adjacency-formation

14 months agolib: on bfd peer shutdown actually stop event
Donald Sharp [Mon, 20 Mar 2023 20:07:20 +0000 (16:07 -0400)]
lib: on bfd peer shutdown actually stop event

When deleting a bfd peer during shutdown, let's ensure
that any scheduled events are actually stopped.

==7759== Invalid read of size 4
==7759==    at 0x48BF700: _bfd_sess_valid (bfd.c:419)
==7759==    by 0x48BF700: _bfd_sess_send (bfd.c:470)
==7759==    by 0x492F79C: thread_call (thread.c:2008)
==7759==    by 0x48E9BD7: frr_run (libfrr.c:1223)
==7759==    by 0x1C739B: main (bgp_main.c:550)
==7759==  Address 0xfb687a4 is 4 bytes inside a block of size 272 free'd
==7759==    at 0x48369AB: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==7759==    by 0x48BFA5A: bfd_sess_free (bfd.c:535)
==7759==    by 0x2B7034: bgp_peer_remove_bfd (bgp_bfd.c:339)
==7759==    by 0x29FF8A: peer_free (bgpd.c:1160)
==7759==    by 0x29FF8A: peer_unlock_with_caller (bgpd.c:1192)
==7759==    by 0x2A0506: peer_delete (bgpd.c:2633)
==7759==    by 0x208190: bgp_stop (bgp_fsm.c:1639)
==7759==    by 0x20C082: bgp_event_update (bgp_fsm.c:2751)
==7759==    by 0x492F79C: thread_call (thread.c:2008)
==7759==    by 0x48E9BD7: frr_run (libfrr.c:1223)
==7759==    by 0x1C739B: main (bgp_main.c:550)
==7759==  Block was alloc'd at
==7759==    at 0x4837B65: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==7759==    by 0x48F53AF: qcalloc (memory.c:116)
==7759==    by 0x48BF98D: bfd_sess_new (bfd.c:397)
==7759==    by 0x2B76DC: bgp_peer_configure_bfd (bgp_bfd.c:298)
==7759==    by 0x2B76DC: bgp_peer_configure_bfd (bgp_bfd.c:279)
==7759==    by 0x29BA06: peer_group2peer_config_copy (bgpd.c:2803)
==7759==    by 0x2A3D96: peer_create_bind_dynamic_neighbor (bgpd.c:4107)
==7759==    by 0x2A4195: peer_lookup_dynamic_neighbor (bgpd.c:4239)
==7759==    by 0x21AB72: bgp_accept (bgp_network.c:422)
==7759==    by 0x492F79C: thread_call (thread.c:2008)
==7759==    by 0x48E9BD7: frr_run (libfrr.c:1223)
==7759==    by 0x1C739B: main (bgp_main.c:550)

tl;dr -> Effectively, in this test setup we have 300 dynamic bgp
sessions all of which are using bfd.  When a peer collision is detected
or we remove the peers, if an event has been scheduled but not actually
executed yet the event event was not actually being stopped, leaving
the bsp pointer on the thread->arg and causing a crash when it is
executed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
14 months agozebra: Fix for heap-use-after-free in EVPN
Pooja Jagadeesh Doijode [Mon, 20 Mar 2023 19:54:31 +0000 (12:54 -0700)]
zebra: Fix for heap-use-after-free in EVPN

Issue:
When a netns is deleted, since zebra doesn’t receive interface down/delete
notifications from kernel, it manually deletes the interface without removing
the association between zebra_l3vni and the interface that is being deleted
(i.e it deletes the interface without setting “zl3vni->vxlan_if” to NULL).

Later, during the deletion of netns, when zl3vni_rmac_uninstall() is called to
uninstall the remote RMAC from the kernel, zebra ends up accessing stale
“zl3vni->vxlan_if” pointer, which now points to freed memory.
This was causing heap use-after-free.

Fix:
Before zebra starts deleting the interfaces when it receives netns delete notification,
appropriate functions() are being called to remove the association between evpn structs
and interface and set “zl3vni->vxlan_if” to NULL. This ensures that when
zl3vni_rmac_uninstall() is called during netns deletion, it will bail because
“zl3vni->vxlan_if” is NULL.

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
14 months agoMerge pull request #13050 from opensourcerouting/fix/update_snmp_mibs_doc
Donald Sharp [Sun, 19 Mar 2023 22:40:08 +0000 (18:40 -0400)]
Merge pull request #13050 from opensourcerouting/fix/update_snmp_mibs_doc

14 months agoMerge pull request #13049 from opensourcerouting/fix/missed_ipv6_prefix-list_any
Donald Sharp [Sun, 19 Mar 2023 22:38:38 +0000 (18:38 -0400)]
Merge pull request #13049 from opensourcerouting/fix/missed_ipv6_prefix-list_any

14 months agoMerge pull request #13047 from opensourcerouting/nhrpd-memleak-20230319
Donald Sharp [Sun, 19 Mar 2023 22:35:57 +0000 (18:35 -0400)]
Merge pull request #13047 from opensourcerouting/nhrpd-memleak-20230319

14 months agodoc: Use frrouting/frr-mibs repo downloading SNMP mibs
Donatas Abraitis [Sun, 19 Mar 2023 20:56:13 +0000 (22:56 +0200)]
doc: Use frrouting/frr-mibs repo downloading SNMP mibs

Use repo instead of pastebin.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agolib: Destroy `any` flag when creating a prefix-list entry with prefix
Donatas Abraitis [Sun, 19 Mar 2023 20:46:56 +0000 (22:46 +0200)]
lib: Destroy `any` flag when creating a prefix-list entry with prefix

The same as 61c07b9d43529f69f48ca54f4f0213cff52b5d0a, but forgot to put IPv6
in place.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agotests: Check if prefix-lists with IPv6 any works fine
Donatas Abraitis [Sun, 19 Mar 2023 20:46:35 +0000 (22:46 +0200)]
tests: Check if prefix-lists with IPv6 any works fine

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
14 months agonhrpd: drop peer references on freeing cache entry
David Lamparter [Sun, 19 Mar 2023 11:38:49 +0000 (12:38 +0100)]
nhrpd: drop peer references on freeing cache entry

When dropping an interface (e.g. at shutdown) while there are still
valid cache entries, the reference held on the cache entries' peer
pointers was leaking.

Fixes: #12505
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
14 months agoMerge pull request #13025 from donaldsharp/ospf_ti_lfa_leaks
Jafar Al-Gharaibeh [Sun, 19 Mar 2023 04:44:37 +0000 (23:44 -0500)]
Merge pull request #13025 from donaldsharp/ospf_ti_lfa_leaks

Ospf ti lfa leaks

14 months agoMerge pull request #13026 from chiragshah6/fdev1
Jafar Al-Gharaibeh [Sun, 19 Mar 2023 04:42:32 +0000 (23:42 -0500)]
Merge pull request #13026 from chiragshah6/fdev1

pbrd:fix mismatching in match src-dst

14 months agoMerge pull request #13038 from donaldsharp/ospf_apiserver_memleaks
Jafar Al-Gharaibeh [Sun, 19 Mar 2023 04:28:46 +0000 (23:28 -0500)]
Merge pull request #13038 from donaldsharp/ospf_apiserver_memleaks

ospfd: Cleanup some memory leaks on shutdown in ospf_apiserver.c

14 months agoospfd: Cleanup some memory leaks on shutdown in ospf_apiserver.c
Donald Sharp [Sat, 18 Mar 2023 19:35:34 +0000 (15:35 -0400)]
ospfd: Cleanup some memory leaks on shutdown in ospf_apiserver.c

Clean up some memory leaks found in ospf_apiserver.c  Also
a crash in the original implementation.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
14 months agoMerge pull request #13023 from opensourcerouting/mld-expire-off
Donald Sharp [Sat, 18 Mar 2023 11:32:09 +0000 (07:32 -0400)]
Merge pull request #13023 from opensourcerouting/mld-expire-off

pimd: stop t_sg_expire in MLD NOINFO transition

14 months agoMerge pull request #13024 from opensourcerouting/fix/bgpd_prefix-list_changes_not_aff...
Donald Sharp [Sat, 18 Mar 2023 11:31:12 +0000 (07:31 -0400)]
Merge pull request #13024 from opensourcerouting/fix/bgpd_prefix-list_changes_not_affected

lib: Adjust only any flag for prefix-list entries if destroying

14 months agoMerge pull request #13027 from donaldsharp/evpn_crashit_like_you_wantit
Donatas Abraitis [Sat, 18 Mar 2023 08:22:33 +0000 (10:22 +0200)]
Merge pull request #13027 from donaldsharp/evpn_crashit_like_you_wantit

bgpd: Prevent Null pointer deref when outputting data

14 months agoospfd: Fix inconsistency in LSDB JSON output
Renato Westphal [Sat, 18 Mar 2023 01:48:59 +0000 (22:48 -0300)]
ospfd: Fix inconsistency in LSDB JSON output

As it can be seen below, the LSDB JSON output varies depending
whether a filter option is specified or not (e.g. "adv-router",
"self-originate"):

> show ip ospf database router json
{
  "routerId":"3.3.3.3",
  "routerLinkStates":{
    "areas":{
      "0.0.0.0":[
        {
          "lsaAge":175,
          "options":"*|-|-|-|-|-|E|-",
          [snip]

> show ip ospf database router adv-router 2.2.2.2 json
{
  "routerId":"3.3.3.3",
  "Router Link States":{
    "0.0.0.0":{
      "2.2.2.2":{
        "lsaAge":193,
        "options":"*|-|-|-|-|-|E|-",
        [snip]

This inconsistency is undesirable since it makes this data harder to
consume programmatically. Also, in the second output, "Router Link
States" is used as a JSON key, which doesn't conform to our JSON
guidelines (JSON keys need to be camelCased).

Make the required changes to ensure the first output structure is used,
regardless if any output filter is used or not.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
14 months agoospfd: Add "detail" option to "show ip ospf database"
Renato Westphal [Sat, 18 Mar 2023 01:48:59 +0000 (22:48 -0300)]
ospfd: Add "detail" option to "show ip ospf database"

This option is useful to dump detailed information about the LSDB using
a single command (instead of one command per LSA type).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
14 months agoospfd: Refactor the "show ip ospf database" command
Renato Westphal [Sat, 18 Mar 2023 01:48:59 +0000 (22:48 -0300)]
ospfd: Refactor the "show ip ospf database" command

Combine all variations of this command into a single DEFPY to
improve maintainability. No behavioral changes intended.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
14 months agopbrd:fix mismatching in match src-dst
Chirag Shah [Fri, 17 Mar 2023 04:47:07 +0000 (21:47 -0700)]
pbrd:fix mismatching in match src-dst

upstream commit 67765a232d has incorect
address family check which prevent from
deleting src/dst config under pbr rule.

Ticket:#3405024
Issue:3405024
Testing Done:

Config:

pbr-map map6 seq 1
 match src-ip 2000::200:100:100:0/96
 match dst-ip 2000::100:100:100:0/96
 set nexthop-group group3

Before:
torc-12(config)# pbr-map map6 seq 1
torc-12(config-pbr-map)# no match src-ip 2000::200:100:100:0/96
Cannot mismatch families within match src/dst

After:
torc-12(config)# pbr-map map6 seq 1
torc-12(config-pbr-map)# no match src-ip 2000::200:100:100:0/96
torc-12(config-pbr-map)#

Signed-off-by: Chirag Shah <chirag@nvidia.com>
14 months agobgpd: Prevent Null pointer deref when outputting data
Donald Sharp [Fri, 17 Mar 2023 19:40:33 +0000 (15:40 -0400)]
bgpd: Prevent Null pointer deref when outputting data

Crash:

(gdb) bt
0  0x00007fee27de15cb in raise () from /lib/x86_64-linux-gnu/libpthread.so.0
1  0x00007fee280ecd9c in core_handler (signo=11, siginfo=0x7ffe56001bb0, context=<optimized out>) at lib/sigevent.c:264
2  <signal handler called>
3  0x0000555e321c41b2 in prefix_rd2str (prd=0x10, buf=buf@entry=0x7ffe56002080 "27.0.0.R\340\373\062\062^U", size=size@entry=28) at bgpd/bgp_rd.c:168
4  0x0000555e321c431a in printfrr_prd (buf=0x7ffe560021a0, ea=<optimized out>, ptr=<optimized out>) at bgpd/bgp_rd.c:224
5  0x00007fee2812069b in vbprintfrr (cb_in=cb_in@entry=0x7ffe56002330, fmt0=fmt0@entry=0x555e3229a3ad " RD: %pRD\n", ap=ap@entry=0x7ffe560023d8) at lib/printf/vfprintf.c:564
6  0x00007fee28122ef7 in vasnprintfrr (mt=mt@entry=0x7fee281cb5e0 <MTYPE_VTY_OUT_BUF>, out=out@entry=0x7ffe560023f0 " RD: : R\n", outsz=outsz@entry=1024, fmt=fmt@entry=0x555e3229a3ad " RD: %pRD\n", ap=ap@entry=0x7ffe560023d8) at lib/printf/glue.c:103
7  0x00007fee28103504 in vty_out (vty=vty@entry=0x555e33f82d10, format=format@entry=0x555e3229a3ad " RD: %pRD\n") at lib/vty.c:190
8  0x0000555e32185156 in bgp_evpn_es_show_entry_detail (vty=0x555e33f82d10, es=0x555e33c38420, json=<optimized out>) at bgpd/bgp_evpn_mh.c:2655
9  0x0000555e32188fe5 in bgp_evpn_es_show (vty=vty@entry=0x555e33f82d10, uj=false, detail=true) at bgpd/bgp_evpn_mh.c:2721
notice prd=0x10 in #3.  This is because in bgp_evpn_mh.c we are sending &es->es_base_frag->prd.

There is one spot in the code where during output the es->es_base_frag is checked for non nullness
Let's just make sure it's right in all the places.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
14 months agoMerge pull request #13019 from rgirada/ospf_type3_fix
Renato Westphal [Fri, 17 Mar 2023 16:04:43 +0000 (13:04 -0300)]
Merge pull request #13019 from rgirada/ospf_type3_fix

ospfd: Ospf ABR doesnt Advertise LSA summary