]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
2 years agoisisd: fix infinite loop when parsing LSPs
Louis Scalbert [Fri, 27 May 2022 08:42:53 +0000 (10:42 +0200)]
isisd: fix infinite loop when parsing LSPs

Fixing the crash:

> #0  0x0000560aa80f8e30 in lspdb_const_find (h=<error reading variable: Cannot access memory at address 0x7fff5e95efe8>, item=<error reading variable: Cannot access memory at address 0x7fff5e95efe0>) at ./isisd/isis_lsp.h:64
> #1  0x0000560aa80f8e9d in lspdb_find (h=0x560aaa1ed3b8, item=0x7fff5e95f050) at ./isisd/isis_lsp.h:64
> #2  0x0000560aa80f92f9 in lsp_search (head=0x560aaa1ed3b8, id=0x7fff5e95f200 "") at isisd/isis_lsp.c:100
> #3  0x0000560aa8113d69 in spf_adj_list_parse_tlv (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, id=0x560aad331a78 "", desig_is_id=0x0, pseudo_metric=0, metric=3, oldmetric=false, subtlvs=0x0) at isisd/isis_spf.c:1330
> #4  0x0000560aa811419d in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1f4e50, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1429
> #5  0x0000560aa81141fe in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1ff8e0, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1442
> #6  0x0000560aa81141fe in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1f4e50, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1442
> (...)
> #65507 0x0000560aa81141fe in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1ff8e0, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1442
> #65508 0x0000560aa81141fe in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1f4e50, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1442
> #65509 0x0000560aa81141fe in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1ff8e0, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1442
> #65510 0x0000560aa81141fe in spf_adj_list_parse_lsp (spftree=0x560aaa1f09d0, adj_list=0x560aaa214480, lsp=0x560aaa1f4e50, pseudo_nodeid=0x0, pseudo_metric=0) at isisd/isis_spf.c:1442
> #65511 0x0000560aa8114313 in isis_spf_build_adj_list (spftree=0x560aaa1f09d0, lsp=0x560aaa1f4e50) at isisd/isis_spf.c:1455
> #65512 0x0000560aa8114f09 in isis_run_spf (spftree=0x560aaa1f09d0) at isisd/isis_spf.c:1775
> #65513 0x0000560aa8115057 in isis_run_spf_with_protection (area=0x560aaa1ed3b0, spftree=0x560aaa1f09d0) at isisd/isis_spf.c:1801
> #65514 0x0000560aa8115311 in isis_run_spf_cb (thread=0x7fff5f15e5a0) at isisd/isis_spf.c:1859
> #65515 0x00007f90bac66dcc in thread_call (thread=0x7fff5f15e5a0) at lib/thread.c:2002
> #65516 0x00007f90bac013ee in frr_run (master=0x560aa9f5cb40) at lib/libfrr.c:1196
> #65517 0x0000560aa80e7da2 in main (argc=2, argv=0x7fff5f15e7b8, envp=0x7fff5f15e7d0) at isisd/isis_main.c:273

The fix is similar to the crash fix included in d9884a758c
("isisd: Prepare IS-IS for Link State support"). The fix was:

> diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
> index 94353a5bc8..92d329f035 100644
> --- a/isisd/isis_lsp.c
> +++ b/isisd/isis_lsp.c
> @@ -2166,7 +2178,7 @@ int isis_lsp_iterate_ip_reach(struct isis_lsp *lsp, int family, uint16_t mtid,
>   if (lsp->hdr.seqno == 0 || lsp->hdr.rem_lifetime == 0)
>   return LSP_ITER_CONTINUE;
>
> - /* Parse main LSP. */
> + /* Parse LSP */
>   if (lsp->tlvs) {
>   if (!fabricd && !pseudo_lsp && family == AF_INET
>       && mtid == ISIS_MT_IPV4_UNICAST) {
> @@ -2236,13 +2248,17 @@ int isis_lsp_iterate_ip_reach(struct isis_lsp *lsp, int family, uint16_t mtid,
>   }
>   }
>
> - /* Parse LSP fragments. */
> - for (ALL_LIST_ELEMENTS_RO(lsp->lspu.frags, node, frag)) {
> - if (!frag->tlvs)
> - continue;
> + /* Parse LSP fragments if it is not a fragment itself */
> + if (!LSP_FRAGMENT(lsp->hdr.lsp_id))
> + for (ALL_LIST_ELEMENTS_RO(lsp->lspu.frags, node, frag)) {
> + if (!frag->tlvs)
> + continue;
>
> - isis_lsp_iterate_ip_reach(frag, family, mtid, cb, arg);
> - }
> + if (isis_lsp_iterate_ip_reach(frag, family, mtid, cb,
> +       arg)
> +     == LSP_ITER_STOP)
> + return LSP_ITER_STOP;
> + }
>
>   return LSP_ITER_CONTINUE;
>  }

Fixes: 7b36d36e0e ("isisd: make the SPF code more modular")
Fixes: 5e56a50559 ("isisd: fix infinite loop when parsing LSPs")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 years agoRevert "isisd: fix infinite loop when parsing LSPs"
Louis Scalbert [Fri, 27 May 2022 08:37:08 +0000 (10:37 +0200)]
Revert "isisd: fix infinite loop when parsing LSPs"

This reverts commit 5e56a50559fd4a85f1912464e6e13d13969aa238.

2 years agoMerge pull request #11493 from patrasar/pim_reg_stop_fix
Donald Sharp [Wed, 29 Jun 2022 17:02:27 +0000 (13:02 -0400)]
Merge pull request #11493 from patrasar/pim_reg_stop_fix

pimd: Register stop message sent with mask 32

2 years agopimd: Register stop message sent with mask 32
Sarita Patra [Wed, 29 Jun 2022 13:34:19 +0000 (06:34 -0700)]
pimd: Register stop message sent with mask 32

As per RFC 4601 section 4.9.4, For Register-Stops,
the Mask Len field contains full address length * 8
(e.g. 32 for IPv4 native encoding) (e.g. 128 for IPv6),
if the message is sent for a single group

The issue is seen after 10356, so fixed now.

Signed-off-by: Sarita Patra <saritap@vmware.com>
2 years agoMerge pull request #11428 from SaiGomathiN/pimdebug
Donatas Abraitis [Wed, 29 Jun 2022 11:27:45 +0000 (14:27 +0300)]
Merge pull request #11428 from SaiGomathiN/pimdebug

pimd,pim6d: Change the show running commands based on address family

2 years agoMerge pull request #11486 from taspelund/bgp_timer_always_on
Russ White [Tue, 28 Jun 2022 20:54:09 +0000 (16:54 -0400)]
Merge pull request #11486 from taspelund/bgp_timer_always_on

bgpd: include 0 in configured hold/keepalive

2 years agoMerge pull request #11484 from opensourcerouting/fix/allow_using_bgp_roles_for_peer_g...
Donald Sharp [Tue, 28 Jun 2022 18:31:48 +0000 (14:31 -0400)]
Merge pull request #11484 from opensourcerouting/fix/allow_using_bgp_roles_for_peer_groups

bgpd: Make sure peer-groups/unnumbered work too with BGP role

2 years agoMerge pull request #11481 from mobash-rasool/fixes
Donald Sharp [Tue, 28 Jun 2022 17:49:47 +0000 (13:49 -0400)]
Merge pull request #11481 from mobash-rasool/fixes

pimd: Querier to non-querier transition to be ignored (ANVL Conformance fix)

2 years agoMerge pull request #11456 from ARShreenidhi/default_originate_vrf_automation
Donatas Abraitis [Tue, 28 Jun 2022 15:51:05 +0000 (18:51 +0300)]
Merge pull request #11456 from ARShreenidhi/default_originate_vrf_automation

tests : bgp-default-originate in vrf scenerio

2 years agobgpd: Make sure peer-groups/unnumbered work too with BGP role
Donatas Abraitis [Mon, 27 Jun 2022 14:21:42 +0000 (17:21 +0300)]
bgpd: Make sure peer-groups/unnumbered work too with BGP role

Just adding a support for peer-groups, because now it's not possible to
configure BGP role for peer-groups.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2 years agobgpd: include 0 in configured hold/keepalive
Trey Aspelund [Tue, 28 Jun 2022 14:08:55 +0000 (14:08 +0000)]
bgpd: include 0 in configured hold/keepalive

The default keepalive/hold timers are always exposed via this commit:
```
commit 9b1b96233d7204263d409ea6c504b316af9e533f (origin/bgp_timer_always_on)
Author: Trey Aspelund <taspelund@nvidia.com>
Date:   Mon Jun 27 23:20:33 2022 +0000

    bgpd: always display keepalive/hold intervals

    `show bgp neighbors <peer> [json]` was only displaying the configured
    keepalive and holdtime intervals when they differed from the default
    values.  Since default config is still config, let's make sure these
    values are always displayed.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
```

However it mistakenly changed the logic to only display the peer's
timers if the configured value was non-zero.  This updates the logic to
check PEER_FLAG_TIMER to determine if the values were configured,
given 0 is a valid value (to disable keepalives).

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2 years agoMerge pull request #11093 from donaldsharp/allow_martians
Lou Berger [Tue, 28 Jun 2022 14:38:57 +0000 (10:38 -0400)]
Merge pull request #11093 from donaldsharp/allow_martians

Allow martians

2 years agotests : bgp-default-originate in vrf scenerio
ARShreenidhi [Wed, 22 Jun 2022 12:47:13 +0000 (12:47 +0000)]
tests : bgp-default-originate in vrf scenerio

testcase in this script covers the default originate behavious in VRFs

Signed-off-by: ARShreenidhi <rshreenidhi@vmware.com>
2 years agopimd: Querier to non-querier transition to be ignored
Mobashshera Rasool [Mon, 27 Jun 2022 12:25:29 +0000 (05:25 -0700)]
pimd: Querier to non-querier transition to be ignored

Fixing IGMPv2 ANVL Conformance issue 3.10

As per RFC 2236 section 3, when the leave message is received at a querier,
it starts sending Query messages for "last Member Query Interval*query count"
During this time there should not be any querier to non-querier
transition and the same router needs to send the remaning queries.

Currently the code is handling this scenario only when leave is receive
for a group and the query is received for the same group.
But we need to handle it irrespective of group since the querier
election is based on interface and not group.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2 years agoMerge pull request #11454 from routingrocks/evpn_clag_frrlogs
mobash-rasool [Tue, 28 Jun 2022 12:02:10 +0000 (17:32 +0530)]
Merge pull request #11454 from routingrocks/evpn_clag_frrlogs

Zebra EVPN Debug: Fixing log flooding when disabling MLAG leaf config…

2 years agoMerge pull request #11474 from donaldsharp/dp-dpdk
Russ White [Tue, 28 Jun 2022 11:33:22 +0000 (07:33 -0400)]
Merge pull request #11474 from donaldsharp/dp-dpdk

Dp dpdk

2 years agoMerge pull request #11479 from AbhishekNR/gm_enable
Donald Sharp [Tue, 28 Jun 2022 11:30:32 +0000 (07:30 -0400)]
Merge pull request #11479 from AbhishekNR/gm_enable

pim6d: Changing igmp_enable to gm_enable.

2 years agoMerge pull request #11478 from opensourcerouting/fix/permissions_stale_gh
Russ White [Tue, 28 Jun 2022 11:02:40 +0000 (07:02 -0400)]
Merge pull request #11478 from opensourcerouting/fix/permissions_stale_gh

github: Set strict permissions for stale actions for Github

2 years agoMerge pull request #11482 from donaldsharp/netconf_work
Russ White [Tue, 28 Jun 2022 11:02:01 +0000 (07:02 -0400)]
Merge pull request #11482 from donaldsharp/netconf_work

Netconf work

2 years agoMerge pull request #11483 from taspelund/bgp_timer_always_on
Russ White [Tue, 28 Jun 2022 11:00:30 +0000 (07:00 -0400)]
Merge pull request #11483 from taspelund/bgp_timer_always_on

bgpd: always display keepalive/hold intervals

2 years agoMerge pull request #11236 from LabNConsulting/ziemba/topotest-srte-route-routemap...
Russ White [Tue, 28 Jun 2022 10:57:38 +0000 (06:57 -0400)]
Merge pull request #11236 from LabNConsulting/ziemba/topotest-srte-route-routemap-policy-order

topotests/isis_sr_te_topo1: test out-of-order route/route-map changes

2 years agoMerge pull request #11434 from donaldsharp/more_test_fixups
Igor Ryzhov [Tue, 28 Jun 2022 10:06:35 +0000 (13:06 +0300)]
Merge pull request #11434 from donaldsharp/more_test_fixups

Crash fix and test fix and some cleanup

2 years agoMerge pull request #11480 from opensourcerouting/fix/peer_flags_luu
mobash-rasool [Tue, 28 Jun 2022 06:38:09 +0000 (12:08 +0530)]
Merge pull request #11480 from opensourcerouting/fix/peer_flags_luu

bgpd: Use uin64_t for peer->flags

2 years agobgpd: always display keepalive/hold intervals
Trey Aspelund [Mon, 27 Jun 2022 23:20:33 +0000 (23:20 +0000)]
bgpd: always display keepalive/hold intervals

`show bgp neighbors <peer> [json]` was only displaying the configured
keepalive and holdtime intervals when they differed from the default
values.  Since default config is still config, let's make sure these
values are always displayed.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2 years agozebra: Add ability for netconf dplane to handle global values
Donald Sharp [Mon, 27 Jun 2022 19:30:55 +0000 (15:30 -0400)]
zebra: Add ability for netconf dplane to handle global values

Add the ability for the netconf dplane code to handle
the global NETCONFA_IFINDEX_DEFAULT and NETCONF_IFINDEX_ALL
values.  Then store our interested values when we get
them from the kernel as well as being able to display
them to the end operator.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agozebra: Pass afi received for netconf updates
Donald Sharp [Mon, 27 Jun 2022 19:11:45 +0000 (15:11 -0400)]
zebra: Pass afi received for netconf updates

When Zebra receives the netconf update an afi is passed
let's seperate that out and track the v4/v6 specific data
to save and store appropriately.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agozebra: mc_forwarding was being sent but not retrieved across dataplane
Donald Sharp [Mon, 27 Jun 2022 19:04:21 +0000 (15:04 -0400)]
zebra: mc_forwarding was being sent but not retrieved across dataplane

The mc_forwarding status for an interface was being sent but not
properly retrieved on the zebra master side of the dplane.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agobgpd: Use uin64_t for peer->flags
Donatas Abraitis [Mon, 27 Jun 2022 13:36:56 +0000 (16:36 +0300)]
bgpd: Use uin64_t for peer->flags

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2 years agopim6d: Changing igmp_enable to gm_enable.
Abhishek N R [Mon, 27 Jun 2022 12:52:02 +0000 (05:52 -0700)]
pim6d: Changing igmp_enable to gm_enable.

Modified variable name so that it can be reused in mld.

Signed-off-by: Abhishek N R <abnr@vmware.com>
2 years agozebra: add documentation for the DPDK dataplane plugin
Anuradha Karuppiah [Fri, 31 Dec 2021 00:15:46 +0000 (16:15 -0800)]
zebra: add documentation for the DPDK dataplane plugin

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: PBR dpdk programming
Anuradha Karuppiah [Thu, 30 Dec 2021 23:08:07 +0000 (15:08 -0800)]
zebra: PBR dpdk programming

1. Offload PBR rule add/del
2. Query DPDK flow stats and display per-PBR entry

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: setup the zebra interface to dpdk port map table
Anuradha Karuppiah [Thu, 30 Dec 2021 22:56:30 +0000 (14:56 -0800)]
zebra: setup the zebra interface to dpdk port map table

1. Create mappping table between ifIndex and dpdk-port-id
2. Start the DPDK port

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: initialize hw via DPDK
Anuradha Karuppiah [Thu, 30 Dec 2021 22:49:19 +0000 (14:49 -0800)]
zebra: initialize hw via DPDK

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agoconfigure, zebra: include DPDK headers and shared libs in the dp-dpdk build
Anuradha Karuppiah [Thu, 30 Dec 2021 22:41:42 +0000 (14:41 -0800)]
configure, zebra: include DPDK headers and shared libs in the dp-dpdk build

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
   -> Moved new capabilities needed to under HAVE_DPDK
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: infastructure for the new dataplane plugin
Anuradha Karuppiah [Sat, 1 Jan 2022 17:18:33 +0000 (09:18 -0800)]
zebra: infastructure for the new dataplane plugin

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: add ipc_lock, read_search and sys_rawio to zebra's privileges
Anuradha Karuppiah [Mon, 3 Jan 2022 19:48:20 +0000 (11:48 -0800)]
zebra: add ipc_lock, read_search and sys_rawio to zebra's privileges

These are needed for dpdk:rte_eal_init.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agolib: add SYS_RAWIO to the capabilities definitions
Anuradha Karuppiah [Mon, 3 Jan 2022 19:45:56 +0000 (11:45 -0800)]
lib: add SYS_RAWIO to the capabilities definitions

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: document the pbr and neigh extended commands needed for some dataplanes
Anuradha Karuppiah [Thu, 30 Dec 2021 16:33:36 +0000 (08:33 -0800)]
zebra: document the pbr and neigh extended commands needed for some dataplanes

config -
1. "pbr nexthop-resolve"

display -
1. "show pbr rule"
2. "show ip neigh"

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: pass PBR expanded actions to the dataplane
Anuradha Karuppiah [Sat, 18 Dec 2021 18:47:27 +0000 (10:47 -0800)]
zebra: pass PBR expanded actions to the dataplane

These attributes are needed for dpdk dataplane programming

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: expand pbr rule action for dataplane programming
Anuradha Karuppiah [Sat, 18 Dec 2021 18:34:31 +0000 (10:34 -0800)]
zebra: expand pbr rule action for dataplane programming

PBR rules are installed as match, action rules in most dataplanes. This
requires the action to be resolved via a GW. And the GW to be subsequently
resolved to {SMAC, DMAC}.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agozebra: add support for maintaining local neigh entries
Anuradha Karuppiah [Sat, 18 Dec 2021 19:28:49 +0000 (11:28 -0800)]
zebra: add support for maintaining local neigh entries

Currently specific local neighbors (attached to SVIs) are maintatined
in an EVPN specific database. There is a need to maintain L3 neighbors
for other purposes including MAC resolution for PBR nexthops.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
   Cleanup compile and fix crash
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2 years agoMerge pull request #11426 from error2407/open_policy
Donatas Abraitis [Mon, 27 Jun 2022 06:57:29 +0000 (09:57 +0300)]
Merge pull request #11426 from error2407/open_policy

bgpd: Add RFC9234 implementation

2 years agogithub: Set strict permissions for stale actions for Github
Donatas Abraitis [Mon, 27 Jun 2022 06:54:16 +0000 (09:54 +0300)]
github: Set strict permissions for stale actions for Github

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2 years agopimd,pim6d: Change the show running commands based on address family
Sai Gomathi N [Fri, 17 Jun 2022 11:39:59 +0000 (04:39 -0700)]
pimd,pim6d: Change the show running commands based on address family

Change the show running commands for pimv4 and pimv6 debug commands
based on the address family.

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2 years agotoptests/isis_sr_te_topo1: test out-of-order route/route-map changes
G. Paul Ziemba [Fri, 20 May 2022 16:26:56 +0000 (09:26 -0700)]
toptests/isis_sr_te_topo1: test out-of-order route/route-map changes

    A SR policy matches a BGP nexthop based on the IP address of
    the nexthop and the color of the route (color may be assigned
    to routes using a route-map).

    The order of events (BGP route arrival, route-map definition,
    policy and candidate-path definition) should not affect the
    matching/mapping.

    These changes add tests for:

- removing/adding BGP route after policy and routemap are
  defined and held constant

- changing route map color to be different from policy color,
  and then changing back to match

    after each change, the policy should be observed to be in effect
    unchanged from before, i.e., the route's nexthops should reflect
    the matching SR policy.

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2 years agoMerge pull request #11477 from LabNConsulting/chopps/fix-config-load
Donald Sharp [Sat, 25 Jun 2022 14:19:02 +0000 (10:19 -0400)]
Merge pull request #11477 from LabNConsulting/chopps/fix-config-load

tools: fix boot config load in watchfrr

2 years agotools: fix boot config load in watchfrr
Christian Hopps [Fri, 24 Jun 2022 22:44:43 +0000 (18:44 -0400)]
tools: fix boot config load in watchfrr

2469a37f reversed the logic of the existence check for
/etc/frr/frr.conf breaking boot config loading, fix it.

Signed-off-by: Christian Hopps <chopps@labn.net>
2 years agoMerge pull request #11429 from donaldsharp/interface_funkiness
Donatas Abraitis [Fri, 24 Jun 2022 20:07:45 +0000 (23:07 +0300)]
Merge pull request #11429 from donaldsharp/interface_funkiness

zebra: Fix rtadv startup when config read in is before interface up

2 years agoMerge pull request #11475 from patrasar/pim_if_delete
Donald Sharp [Fri, 24 Jun 2022 18:49:55 +0000 (14:49 -0400)]
Merge pull request #11475 from patrasar/pim_if_delete

pimd: fix pim interface deletion flow

2 years agoMerge pull request #11472 from panlinux/obsolete-egrep
Donald Sharp [Fri, 24 Jun 2022 16:43:41 +0000 (12:43 -0400)]
Merge pull request #11472 from panlinux/obsolete-egrep

frr.postinst: egrep is deprecated

2 years agoMerge pull request #11471 from mobash-rasool/fixes
Donald Sharp [Fri, 24 Jun 2022 16:02:35 +0000 (12:02 -0400)]
Merge pull request #11471 from mobash-rasool/fixes

pimd: Clean up mroute_socket when pim terminates.

2 years agoMerge pull request #11468 from patrasar/pim_valgrind_fix
Donald Sharp [Fri, 24 Jun 2022 15:53:43 +0000 (11:53 -0400)]
Merge pull request #11468 from patrasar/pim_valgrind_fix

 pimd: Fixing invalid memory access

2 years agoMerge pull request #11469 from donaldsharp/fdev2
Jafar Al-Gharaibeh [Fri, 24 Jun 2022 15:05:56 +0000 (10:05 -0500)]
Merge pull request #11469 from donaldsharp/fdev2

zebra: netlink rtm tunnel msg parsing

2 years agoMerge pull request #11242 from patrasar/pimv6_issue_11233
Donald Sharp [Fri, 24 Jun 2022 14:56:48 +0000 (10:56 -0400)]
Merge pull request #11242 from patrasar/pimv6_issue_11233

pim6d: Fixing repeated group source field in show ipv6 mroute

2 years agopimd: fix pim interface deletion flow
Sarita Patra [Fri, 24 Jun 2022 14:48:03 +0000 (07:48 -0700)]
pimd: fix pim interface deletion flow

Deletion of pim interface(pim_if_delete) should
do the below things before cleanup.
1. Send a hello message with zero hold time.
2. Delete all the neighbors.
3. Close the pim socket.

Signed-off-by: Sarita Patra <saritap@vmware.com>
2 years agoMerge pull request #11464 from donaldsharp/linkdown
Russ White [Fri, 24 Jun 2022 14:15:55 +0000 (10:15 -0400)]
Merge pull request #11464 from donaldsharp/linkdown

Linkdown

2 years agoMerge pull request #11467 from mobash-rasool/fixes2
Donald Sharp [Fri, 24 Jun 2022 14:05:42 +0000 (10:05 -0400)]
Merge pull request #11467 from mobash-rasool/fixes2

pimd: Avoid accessing freed memory

2 years agoMerge pull request #11258 from anlancs/fix/zebra-keep-nb-check
Donald Sharp [Fri, 24 Jun 2022 13:46:12 +0000 (09:46 -0400)]
Merge pull request #11258 from anlancs/fix/zebra-keep-nb-check

zebra: move the checks for l3vni

2 years agodebian: egrep is deprecated
Andreas Hasenack [Fri, 24 Jun 2022 12:54:37 +0000 (09:54 -0300)]
debian: egrep is deprecated

egrep is deprecated, please see
https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d480e3142fd959bccd1c9372d1

Signed-off-by: Andreas Hasenack <andreas.hasenack@canonical.com>
2 years agopimd: fix invalid memory access join_timer_stop
Sarita Patra [Fri, 24 Jun 2022 10:04:37 +0000 (03:04 -0700)]
pimd: fix invalid memory access join_timer_stop

Issue:
==16837== Invalid read of size 8
==16837==    at 0x17971C: pim_neighbor_find (pim_neighbor.c:431)
==16837==    by 0x186439: join_timer_stop (pim_upstream.c:348)
==16837==    by 0x186794: pim_upstream_del (pim_upstream.c:231)
==16837==    by 0x189A66: pim_upstream_terminate (pim_upstream.c:1951)
==16837==    by 0x17111B: pim_instance_terminate (pim_instance.c:54)
==16837==    by 0x17111B: pim_vrf_delete (pim_instance.c:172)
==16837==    by 0x4F1D6C8: vrf_delete (vrf.c:264)
==16837==    by 0x19006F: pim_terminate (pimd.c:160)
==16837==    by 0x1B2E4D: pim_sigterm (pim_signals.c:51)
==16837==    by 0x4F08FA2: frr_sigevent_process (sigevent.c:130)
==16837==    by 0x4F1A2CC: thread_fetch (thread.c:1771)
==16837==    by 0x4ED4F92: frr_run (libfrr.c:1197)
==16837==    by 0x15D81A: main (pim_main.c:176)

Root Cause:
In the pim_terminate flow, the interface is deleted
before the pim_interface clean up. Because of this,
the pim_interface is having garbage value.

Fix:
Release the pim interface memory and then delete the
interface.

Signed-off-by: Sarita Patra <saritap@vmware.com>
2 years agopimd: Clean up mroute_socket when pim terminates.
Mobashshera Rasool [Fri, 24 Jun 2022 12:36:15 +0000 (05:36 -0700)]
pimd: Clean up mroute_socket when pim terminates.

pim_mroute_socket_disable api is present but nowhere called.
This should be called when pim instance is terminated.
Fixed it.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2 years agoMerge pull request #11462 from donaldsharp/random_stuff_right
mobash-rasool [Fri, 24 Jun 2022 11:53:31 +0000 (17:23 +0530)]
Merge pull request #11462 from donaldsharp/random_stuff_right

Random stuff right

2 years agobgpd: Remove 'debug bgp allow-martian'
Donald Sharp [Mon, 25 Apr 2022 20:48:42 +0000 (16:48 -0400)]
bgpd: Remove 'debug bgp allow-martian'

This command should not be in the code and is being
removed as per tech meeting decision.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agobgpd: Add `bgp allow-martian-nexthop` command
Donald Sharp [Mon, 25 Apr 2022 20:30:36 +0000 (16:30 -0400)]
bgpd: Add `bgp allow-martian-nexthop` command

The command `debug bgp allow-martian` is not actually
a debug command it's a command that when entered allows
bgp to not reset a peering when a martian nexthop is
passed in the nlri.

Add the `bgp allow-martian-nexthop` command and allow it to be
used.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agopim6d: Fixing repeated group source field in show ipv6 mroute
sarita patra [Sat, 21 May 2022 16:05:10 +0000 (09:05 -0700)]
pim6d: Fixing repeated group source field in show ipv6 mroute

The command "show ip[v6] mroute" displaying group and source
field for every OIL.

Fix:
Display group and source for the first OIL only.

Signed-off-by: sarita patra <saritap@vmware.com>
2 years agozebra: netlink rtm tunnel msg parsing
Chirag Shah [Tue, 25 Jan 2022 18:25:38 +0000 (10:25 -0800)]
zebra: netlink rtm tunnel msg parsing

'bridge vni add vni <id> dev <vxlan device>'
generates new RTM_NEWTUNNEL and RTM_DELTUNNEL
to add or remove vni to l3vxlan device.

Register new RTNLGRP_TUNNEL group to receive
new netlink notification.
Callback for the new RTM_xxxTUNNEL.

kernel patches:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?h=v5.18-rc7&id=7b8135f4df98b155b23754b6065c157861e268f1

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?h=v5.18-rc7&id=f9c4bb0b245cee35ef66f75bf409c9573d934cf9

Ticket:#3073812
Testing Done:

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2 years agoMerge pull request #11430 from mjstapp/fix_ospf6_zebra_del
Rafael Zalamena [Fri, 24 Jun 2022 11:21:48 +0000 (08:21 -0300)]
Merge pull request #11430 from mjstapp/fix_ospf6_zebra_del

ospf6: permit route delete without nexthops

2 years agozebra: Fix rtadv startup when config read in is before interface up
Donald Sharp [Fri, 17 Jun 2022 15:23:31 +0000 (11:23 -0400)]
zebra: Fix rtadv startup when config read in is before interface up

When a interface is configured with this:
int eva
  ipv6 nd ra-interval 5
  no ipv6 nd suppress-ra
!

And then subsuquently the interface is created and brought up, FRR
would both error on joining the RA multicast address and never
properly work in this state.

Delay the startup of the join and start of the Router Advertisements
until after the ifindex has actually been found.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agoMerge pull request #11457 from plsaranya/pim_mroute
Donald Sharp [Fri, 24 Jun 2022 11:07:03 +0000 (07:07 -0400)]
Merge pull request #11457 from plsaranya/pim_mroute

Pim6d: Mroute file duplication removal

2 years agoMerge pull request #11465 from rgirada/pam_coverity
Donald Sharp [Fri, 24 Jun 2022 11:02:38 +0000 (07:02 -0400)]
Merge pull request #11465 from rgirada/pam_coverity

vtysh: Account validity should be verified when authenticating users with PAM

2 years agopimd: Avoid reading freed memory.
Mobashshera Rasool [Fri, 24 Jun 2022 06:47:09 +0000 (23:47 -0700)]
pimd: Avoid reading freed memory.

If the upstream is freed in pim_upstream_del, then trying to
call pim_upstream_timers_stop will lead to accessing freed memory.

Fix:
Stop the timer only if upstream is not deleted.

Co-authored-by: Sarita Patra <saritap@vmware.com>
Co-authored-by: Mobashshera Rasool <mrasool@vmware.com>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2 years agoMerge pull request #11452 from donaldsharp/realm_fix_nexthop_groups
Rafael Zalamena [Fri, 24 Jun 2022 10:44:40 +0000 (07:44 -0300)]
Merge pull request #11452 from donaldsharp/realm_fix_nexthop_groups

Realm fix nexthop groups

2 years agobgpd: update topotests for role mismatch
Eugene Bogomazov [Fri, 24 Jun 2022 09:28:13 +0000 (12:28 +0300)]
bgpd: update topotests for role mismatch

In topotests, we also want to check for role mismatch cases. However, if
we are testing the sender of a role mismatch notification, sometimes it
can have non-deterministic behavior (probably due to a configuration
change). Thus, there is an assumption that the recipient of
notifications will more consistently display the reason why the session
was terminated in the first place.

Signed-off-by: Eugene Bogomazov <eb@qrator.net>
2 years agovtysh: Account validity should be verified when authenticating users with PAM.
rgirada [Thu, 23 Jun 2022 14:37:28 +0000 (07:37 -0700)]
vtysh: Account validity should be verified when authenticating users with PAM.

Description:
SonarQube detects the following behaviour as a vulanarability.
When authenticating users using PAM, it is strongly recommended to
check the validity of the account (not locked, not expired ...),
otherwise it leads to unauthorized access to resources.

pam_acct_mgmt() should be called for account validity after
calling pam_authenticate().

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2 years agoisisd: Fix crash with xfrm interface type
Donald Sharp [Sat, 18 Jun 2022 18:37:14 +0000 (14:37 -0400)]
isisd: Fix crash with xfrm interface type

When creating a xfrm interface FRR is crashing when configured
with isis.  This is because the weird pattern of not allocating
list's until needed and then allowing the crash when we have
a usage pattern that was not expected.  Just always allocate
the different lists that a circuit needs.

(gdb) bt
(gdb)

Fixes #11432
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agotests: Increase time for zebra_seg6local to look for sharp routes
Donald Sharp [Fri, 17 Jun 2022 19:40:36 +0000 (15:40 -0400)]
tests: Increase time for zebra_seg6local to look for sharp routes

I have a test failure:
            r1.vtysh_cmd(
                "sharp install seg6local-routes {} nexthop-seg6local dum0 {} 1".format(
                    dest, context
                )
            )
            test_func = partial(
                check,
                r1,
                dest,
                manifest["out"],
            )
            success, result = topotest.run_and_expect(test_func, None, count=5, wait=1)
>           assert result is None, "Failed"
E           AssertionError: Failed
E           assert Generated JSON diff error report:
E
E             > $: d2 has the following element at index 0 which is not present in d1:
E
E              {
E                  "prefix": "1::1/128",
E                  "protocol": "sharp",
E                  "selected": true,...
E

The test output for 1::1/128:
{
  "1::1/128":[
    {
      "prefix":"1::1/128",
      "prefixLen":128,
      "protocol":"sharp",
      "vrfId":0,
      "vrfName":"default",
      "selected":true,
      "destSelected":true,
      "distance":150,
      "metric":0,
      "queued":true,
      "table":254,
      "internalStatus":8,

Notice that it is still queued after 5 seconds.  Under extremely heavy system load
this is not long enough for convergence.  Also the zebra.log shows thread starvation
as well as long running tasks
2022/06/17 15:30:02 ZEBRA: [PHJDC-499N2][EC 100663314] STARVATION: task dplane_incoming_request (55b3ce0fea8b) ran for 6369ms (cpu time 0ms)
2022/06/17 15:30:02 ZEBRA: [T83RR-8SM5G] zebra 8.4-dev starting: vty@2601
2022/06/17 15:30:02 ZEBRA: [YZRX4-ZXG0C][EC 100663315] Thread Starvation: {(thread *)0x55b3ce6c15b0 arg=0x0 timer  r=-6.375     rib_sweep_route() &zrouter.sweeper from zebra/main.c:447} was scheduled to pop greater than 4s ago

Increasing the time to 25 seconds to give it a chance.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agotests: Fix regex complaints by python3
Donald Sharp [Fri, 17 Jun 2022 19:40:14 +0000 (15:40 -0400)]
tests: Fix regex complaints by python3

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agodoc: Update doc w/ regards to realms
Donald Sharp [Tue, 21 Jun 2022 19:24:58 +0000 (15:24 -0400)]
doc: Update doc w/ regards to realms

Update the documentation with realms and how they
interact with nexthop groups that are installed into
the kernel.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agoMerge pull request #11453 from ribarroetavena/master
Donald Sharp [Thu, 23 Jun 2022 17:55:51 +0000 (13:55 -0400)]
Merge pull request #11453 from ribarroetavena/master

zebra: rtnetlink: flow attr per gateway attr in multipath updates

2 years agoMerge pull request #11460 from LabNConsulting/chopps/ospfapi-routerid
Donald Sharp [Thu, 23 Jun 2022 17:52:09 +0000 (13:52 -0400)]
Merge pull request #11460 from LabNConsulting/chopps/ospfapi-routerid

Chopps/ospfapi routerid

2 years agopimd: Checks imply that pim is not properly configured
Donald Sharp [Wed, 22 Jun 2022 23:40:58 +0000 (19:40 -0400)]
pimd: Checks imply that pim is not properly configured

The call to gm_update_ll checks for null pointers and
implies to SA that things could not be configured correctly
This is not true with the code flow.  Remove the confusing code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agopimd: Let end operator know the ifindex as well in failure case
Donald Sharp [Wed, 22 Jun 2022 13:57:08 +0000 (09:57 -0400)]
pimd: Let end operator know the ifindex as well in failure case

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agoospf6d: Ensure that ospf6d does not memcpy beyond end of data
Donald Sharp [Wed, 22 Jun 2022 12:24:03 +0000 (08:24 -0400)]
ospf6d: Ensure that ospf6d does not memcpy beyond end of data

Ensure that received data size can fit into temp variable
that is used to dump data.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agopimd: Limit pim's ecmp to what zebra tells us is the multipath
Donald Sharp [Wed, 22 Jun 2022 12:12:04 +0000 (08:12 -0400)]
pimd: Limit pim's ecmp to what zebra tells us is the multipath

Zebra can be setup to use a value that is less than MULTIPATH_NUM.
When pimd connects to zebra, zebra will inform pim about the MULTIPATH_NUM
used.  Let's use that value for figuring out our multipath value.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agobgpd: Cleanup pointer assignment so compiler doesn't get confused
Donald Sharp [Wed, 22 Jun 2022 11:48:51 +0000 (07:48 -0400)]
bgpd: Cleanup pointer assignment so compiler doesn't get confused

Coverity SA thinks that the `struct prefix`.u.prefix4 is limited
to actually 4 bytes of memory at that spot, but it's in a union
and it can be treated as a prefix6 as well.  Just change the
pointer assignment to something that covers both easily.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agoisisd: Let's use an actual NULL pointer to test for a NULL pointer
Donald Sharp [Sat, 18 Jun 2022 18:54:52 +0000 (14:54 -0400)]
isisd: Let's use an actual NULL pointer to test for a NULL pointer

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agoMerge pull request #11463 from rgirada/ospf_coverity
Donald Sharp [Thu, 23 Jun 2022 17:16:48 +0000 (13:16 -0400)]
Merge pull request #11463 from rgirada/ospf_coverity

ospfd: fixing few coverity issue in 'show_ip_ospf_neighbour_brief'

2 years agoMerge pull request #11182 from g-balaji1/pimv6-sock-hdrincl
mobash-rasool [Thu, 23 Jun 2022 16:46:47 +0000 (22:16 +0530)]
Merge pull request #11182 from g-balaji1/pimv6-sock-hdrincl

pim6d: Removal of IPV6_HDRINCL option

2 years agozebra: Allow kernel routes to stick around better on interface state changes
Donald Sharp [Thu, 23 Jun 2022 16:22:30 +0000 (12:22 -0400)]
zebra: Allow kernel routes to stick around better on interface state changes

Currently kernel routes on system bring up would be `auto-accepted`,
then if an interface went down all kernel and system routes would
be re-evaluated.  There exists situations where a kernel route can
exist but the interface itself is not exactly in a state that is
ready to create a connected route yet.  As such when any interface
goes down in the system all kernel/system routes would be re-evaluated
and then since that interfaces connected route is not in the table yet
the route is matching against a default route( or not at all ) and
is being dropped.

Modify the code such that kernel or system routes just look for interface
being in a good state (up or operative) and accept it.

Broken code:
eva# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:05:08
K>* 1.2.3.5/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.6/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.7/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.8/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.9/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.10/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.12/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.13/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.14/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.16/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 1.2.3.17/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
C>* 4.5.6.99/32 is directly connected, dummy9, 00:05:08
K>* 4.9.10.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:05:08
K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:05:08
C>* 192.168.10.0/24 is directly connected, dummy99, 00:05:08
C>* 192.168.119.0/24 is directly connected, enp39s0, 00:05:08
<shutdown a non-related interface>
eva# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:05:28
C>* 4.5.6.99/32 is directly connected, dummy9, 00:05:28
K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:05:28
C>* 192.168.10.0/24 is directly connected, dummy99, 00:05:28
C>* 192.168.119.0/24 is directly connected, enp39s0, 00:05:28

Working code:
eva# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:00:04
K>* 1.2.3.5/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.6/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.7/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.8/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.9/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.10/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.12/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.13/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.14/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.16/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 1.2.3.17/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
C>* 4.5.6.99/32 is directly connected, dummy9, 00:00:04
K>* 4.9.10.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:04
K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:00:04
C>* 192.168.10.0/24 is directly connected, dummy99, 00:00:04
C>* 192.168.119.0/24 is directly connected, enp39s0, 00:00:04
<shutdown a non-related interface>
eva# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/100] via 192.168.119.1, enp39s0, 00:00:15
K>* 1.2.3.5/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.6/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.7/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.8/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.9/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.10/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.12/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.13/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.14/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.16/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 1.2.3.17/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
C>* 4.5.6.99/32 is directly connected, dummy9, 00:00:15
K>* 4.9.10.11/32 [0/0] via 172.22.0.44, br-23e378ed7fd2 linkdown, 00:00:15
K>* 10.11.12.13/32 [0/0] via 192.168.119.1, enp39s0, 00:00:15
C>* 192.168.10.0/24 is directly connected, dummy99, 00:00:15
C>* 192.168.119.0/24 is directly connected, enp39s0, 00:00:15
eva#

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agozebra: Add interface sysctl ignore on linkdown status
Donald Sharp [Thu, 23 Jun 2022 15:00:08 +0000 (11:00 -0400)]
zebra: Add interface sysctl ignore on linkdown status

Add the ability to decode the ignore on linkdown nexthop
status for an interface.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agolib, zebra: Notice when a nexthop is set linkdown
Donald Sharp [Thu, 23 Jun 2022 14:27:56 +0000 (10:27 -0400)]
lib, zebra: Notice when a nexthop is set linkdown

When a nexthop is set RTNH_F_LINKDOWN, start noticing
that this flag is set.  Allow FRR to know about this
flag but at this point do not do anything with it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agolib: Increase nexthop flags size to 16 bits
Donald Sharp [Thu, 23 Jun 2022 14:22:45 +0000 (10:22 -0400)]
lib: Increase nexthop flags size to 16 bits

commit: 5609e70fb87a3b23b55629a33e5afb298974c142
Added a new flag to the `struct nexthop` and
this addition of a flag caused the flags size to
be too small.  Increase the size of flags to
allow more flags to be had.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agozebra: Fix bug in netconf handling where dplane would drop the change
Donald Sharp [Thu, 23 Jun 2022 15:14:46 +0000 (11:14 -0400)]
zebra: Fix bug in netconf handling where dplane would drop the change

When reading a on the fly change of an interested netconf netlink
message. The ifindex and ns_id for the context was being set for the sub structure
but not for the main context data structure and zebra_if_dplane_result
was dropping the result on the floor because it was expecting the ns_id and
the interface id to be in a different spot.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 years agozebra: rtnetlink: flow attr per gateway attr in multipath updates
Ricardo [Tue, 21 Jun 2022 19:13:08 +0000 (16:13 -0300)]
zebra: rtnetlink: flow attr per gateway attr in multipath updates

Signed-off-by: Ricardo <rbarroetavena@anura.com.ar>
2 years agoPim6d: Mroute file duplication removal
plsaranya [Wed, 22 Jun 2022 10:35:07 +0000 (03:35 -0700)]
Pim6d: Mroute file duplication removal

Mroute duplicate functions removed and made us hybrid for v4 and v6

Signed-off-by: plsaranya <Saranya_Panjarathina@dell.com>
2 years agoospfd: fixing few coverity issue in 'show_ip_ospf_neighbour_brief'
rgirada [Thu, 23 Jun 2022 13:40:19 +0000 (06:40 -0700)]
ospfd: fixing few coverity issue in 'show_ip_ospf_neighbour_brief'

Description:
timerval data structure is being used without initialization.
Using these uninitialized parameters can lead unexpected results
so initializing before using it.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2 years agoMerge pull request #10629 from leonshaw/fix/mp-evpn-nh
Russ White [Thu, 23 Jun 2022 11:00:33 +0000 (07:00 -0400)]
Merge pull request #10629 from leonshaw/fix/mp-evpn-nh

lib, zebra, bgpd: Move route EVPN flag to nexthop

2 years agotests: add ospf api router ID topotest
Christian Hopps [Wed, 22 Jun 2022 20:08:31 +0000 (16:08 -0400)]
tests: add ospf api router ID topotest

Signed-off-by: Christian Hopps <chopps@labn.net>
2 years agoospfclient: add router id support to python client
Christian Hopps [Wed, 22 Jun 2022 20:12:36 +0000 (16:12 -0400)]
ospfclient: add router id support to python client

Signed-off-by: Christian Hopps <chopps@labn.net>
2 years agoospfd: add router id support to ospf api
Christian Hopps [Wed, 22 Jun 2022 22:10:13 +0000 (18:10 -0400)]
ospfd: add router id support to ospf api

Signed-off-by: Christian Hopps <chopps@labn.net>