Commit Graph

22622 Commits

Author SHA1 Message Date
Donatas Abraitis
64b1483ccb
Merge pull request #7154 from donaldsharp/frr_topotests
tests: Our tests are for FRR
2020-09-23 17:33:08 +03:00
Anuradha Karuppiah
2b9e207e0e zebra: stop neigh hold timer when the neigh is deleted
The neigh hold timer was firing after the neigh was deleted resulting
in the following crash -
[
    at ./zebra/zebra_evpn_neigh.h:155
    at zebra/zebra_evpn_neigh.c:447
    at lib/thread.c:1578
    at zebra/main.c:488
]

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-23 06:46:19 -07:00
Don Slice
f9f0463fb9 zebra: fix deletion of evpn mh neigh-holdtime
Found that the command "evpn mh neigh-holdtime" can be set but
not deleted.  This fix solves the delete process

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2020-09-23 06:46:19 -07:00
Anuradha Karuppiah
41c809b2a8 zebra: changes for configuring mac and neigh holdtime
When an ES peer withdraws a MAC-IP route we hold the entry for N seconds
to allow an external daemon (neighmgr) to establish host reachability
independent of the peer. Add config commands to allow the user to set
this holdtime (N).

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-23 06:46:19 -07:00
Mark Stapp
bb91e9c03b tests: fix bug in handling of daemons to start
Ensure the list of daemons to start is either the one specified
by a caller or the default one from the router configuration.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-23 08:48:25 -04:00
Donald Sharp
aa178efd49
Merge pull request #7148 from pguibert6WIND/fix_fd_not_closed
zebra: fix fd going out of scope leaks the handle
2020-09-23 07:40:14 -04:00
Donatas Abraitis
0ce5baaab1
Merge pull request #7018 from gouault6wind/show_ip_route
Clean up in vrf management
2020-09-23 08:45:09 +03:00
Donald Sharp
bed74d178e zebra: Move debug information gathering to inside guard
Let's not make the entire `depend_finds` function pay
for the data gathering needed for the debug.  There
are numerous other places in the code that check
the NEXTHOP_FLAG_RECURSIVE and do the same output.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-22 20:47:33 -04:00
Sri Mohana Singamsetty
efdd997dad
Merge pull request #7116 from AnuradhaKaruppiah/mh-neigh-fixes
evpn-mh: changes for programming synced neighs as static in the dataplane
2020-09-22 15:45:09 -07:00
Mark Stapp
b6033bd1c1
Merge pull request #7067 from donaldsharp/remove_solaris
Remove solaris
2020-09-22 17:04:19 -04:00
Donald Sharp
5a3cf85391 lib, zebra: Add ability to read kernel notice of TRAP/OFFLOAD
The linux kernel is getting RTM_F_TRAP and RTM_F_OFFLOAD for
kernel routes that have an underlying asic offload.  Write the
code to receive these notifications from the linux kernel and
to store that data for display about the routes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-22 15:57:43 -04:00
Donald Sharp
4c56ce1cea zebra: Add basic knowledge of asic offload available
Some linux kernels are starting to support the idea of knowledge
about the underlying asic.  Add a boolean that we can set/unset
to track whether or not we think the router has this functionality
available.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-22 15:57:43 -04:00
Donald Sharp
6da3af60a2 include: Update rtnetlink.h to latest kernel
The rtnetlink.h header has changed in the kernel.  Let's pull it in
we need this for OFFLOAD and TRAP

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-22 15:57:43 -04:00
Stephen Worley
fe870621b5 pbrd: cleanup pbr ifp info if not sent to zebra
Properly cleanup the pbr interface data if nothing actually
gets sent to zebra, since we will never get the callback
notification from zapi to issue final deletion.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-22 15:40:51 -04:00
Stephen Worley
f08966a58d pbrd: add return val for pbr_send_pbr_map()
Add a return val so caller can know if something was actually sent to
zebra here. Some things need to be cleanued up by the caller
if we arent getting a callback from zapi.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-22 15:40:32 -04:00
Philippe Guibert
7529bf8f05 zebra: fix fd going out of scope leaks the handle
the file descriptor is closed if it has been locally created.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-22 21:09:13 +02:00
Donald Sharp
e2dcd0c2c5
Merge pull request #7132 from volta-networks/fix_ldp_sync_cmds
Fix ldp sync cmds
2020-09-22 14:20:21 -04:00
Russ White
b4b7ca8944
Merge pull request #7122 from ckishimo/type4
ospfd: do not generate type 4 LSA from NSSA ABR
2020-09-22 11:30:06 -04:00
Donald Sharp
622c4996ef tests: Our tests are for FRR
These tests at this point only work for FRR.  Let's cut to the chase
and admit it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>`
2020-09-22 10:11:58 -04:00
Patrick Ruddy
b5a4bc6403
Merge pull request #7143 from donaldsharp/rip_debugs
ripd, ripngd: info -> debug
2020-09-22 11:43:17 +01:00
rgirada
caa1cd9eab ospfd: Debug support to ospf GR helper functionality
Description:
	Added the following debug commands to enable debugs
	GR helper functionality.
	[no] debug ospf gr helper

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 03:07:31 -07:00
Igor Ryzhov
463d46a38a bfdd: add missing includes
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-22 12:00:21 +03:00
rgirada
abd5b8c72c ospfd: GR helper specific show commands
Description:
	The following  show commands are added to display helper specific
	information.
	1.show ip ospf graceful-restart helper [detail] [json]
		--> displays user configurations and list of all helpers details.

	2.show ip ospf neighbour detail
		--> diplays helper details

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 00:02:37 -07:00
rgirada
07b33add1d ospfd: GR helper config commands
Description:
	The following commands are added for helper support.
	1.[no] graceful-restart helper-only
	2.[no] graceful-restart helper-only <A.B.C.D>
	3.[no] graceful-restart helper lsa-check-disable
	4.[no] graceful-restart helper supported-grace-time
	5.[no] graceful-restart helper planned-only

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 00:02:37 -07:00
rgirada
df074ec33a ospfd: GR helper exit scenarios
Description:
	The follwoing helper exit scenarios are handled.
	1. Recv Max age grace LSA from RESTARTER.
	2. Grace timer expiry.
	3. Due to topo change if lsa check is enabled.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 00:02:37 -07:00
rgirada
5a77dd8feb ospfd: GR Helper functionality changes
Description:
	1. Skipping inactivity timer during  graceful restart to make
	   the RESTARTER active even after dead timer expiry.
	2. Handling HELPER on unplanned outages.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 00:02:37 -07:00
rgirada
ad68699217 ospfd: Grace LSA processing
Description:
	1. Grace LSA processing.
	2. Validations to become a Helper. rfc3623 section 3.1

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 00:02:37 -07:00
rgirada
06bc3110d3 ospfd: ospf GR helper initialization
Description:
	1. Graceful restart helper init/de-init.
	2. Defining dedicated memory for helper.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-22 00:02:33 -07:00
rgirada
f96f271366 ospfd: ospf GR helper data structure definitions.
Description:
	Graceful restart helper support specific data structure
	changes.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-21 23:59:59 -07:00
rgirada
cc1a92d806 ospfd: ospf GR helper documentation
Description:
    Documentation update for graceful restart helper
    feature support.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2020-09-21 23:58:47 -07:00
Santosh P K
f1b8efb42c
Merge pull request #7138 from vivek-cumulus/bgp_global_gshut
BGP-wide graceful shutdown
2020-09-22 11:16:03 +05:30
lynne
e82329ef20 ldpd: update topo tests for new show isis ldp-sync command output
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2020-09-21 12:07:13 -04:00
lynne
9919bec70a ospfd: updates to the ldp-sync ospf commands
Improve the output of the show ip ospf mpls ldp-sync command.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2020-09-21 12:07:13 -04:00
Quentin Young
8934c1f4dd
Merge pull request #7145 from idryzhov/fix-regex-error
lib: fix regcomp error processing
2020-09-21 11:54:29 -04:00
Mark Stapp
1af665fda0
Merge pull request #7136 from donaldsharp/freebsd_ifc_issue
zebra: Allow FreeBSD to set and delete addresses from an interface
2020-09-21 10:22:05 -04:00
Donald Sharp
32d9e333b7 doc: Update Documentation to note Solaris Unsupported status
With the change of Solaris going from Supported -> UnSupported
the documentation needed to be updated to reflect the reality
on the ground.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-21 10:02:20 -04:00
Donald Sharp
cae8bc967c *: Remove solaris from FRR
The Solaris code has gone through a deprecation cycle.  No-one
has said anything to us and worse of all we don't have any test
systems running Solaris to know if we are making changes that
are breaking on Solaris.  Remove it from the system so
we can clean up a bit.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-21 10:02:20 -04:00
Igor Ryzhov
2f272cb409 lib: don't execute command if pre-processing hook has failed
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-21 16:12:29 +03:00
Igor Ryzhov
511942ba37 lib: fix regcomp error processing
* use actual error code instead of "false"
 * add missing new line

Before:
```
nfware# show interface | include (a]
% Regex compilation error: Success% Bad regexp '(a]'
% Unknown command: show interface | include (a]
```

After:
```
nfware# show interface | include (a]
% Regex compilation error: Unmatched ( or \(
% Bad regexp '(a]'
% Unknown command: show interface | include (a]
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-21 15:35:56 +03:00
Donald Sharp
13c5f95ed8 ripd, ripngd: info -> debug
There are a couple info messages in rip/ripng that really should
be debugs.  Modify code to be so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-21 07:55:36 -04:00
Christophe Gouault
1eb92f06c4 vrf: VRF_DEFAULT must be 0, remove useless code
Code was added in the past to support a value of VRF_DEFAULT different
from 0. This option was abandoned, the default vrf id is always 0.

Remove this code, this will simplify the code and improve performance
(use a constant value instead of a function that performs tests).

Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
2020-09-21 10:17:35 +02:00
Christophe Gouault
d58b6f7568 zebra: always display vrf in show ip route json
In route json outputs, always display the vrf even if it is the
default vrf.

Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
2020-09-21 10:07:56 +02:00
Christophe Gouault
6ac9404177 zebra: simplify and optimize vrf display in show ip route
In all outputs (text and json): simplify and optimize the vrf name
display, use the vrf_id_to_name() handler.

Note: vrf_id_to_name() has a safeguard system that prevents from
crashing when the vrf cannot be found because it changed in some
(unexpected) manner, it returns "n/a".

Note: "vrf n/a" will now be displayed instead of "vrf UNKNOWN" in this
case, like in most other frr components.

This safeguard was missing for show ip route json, so this
optimization also fixes a potential crash.

Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
2020-09-21 10:07:56 +02:00
Christophe Gouault
7c1119cb7a lib: optimize vrf_id_to_name(VRF_DEFAULT) case
vrf_id_to_name() looks up in a RB_TREE to find the VRF entry, then
reads the name.

Avoid it for VRF_DEFAULT, which always exists and for which the
translation is straightforward.

Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
2020-09-21 10:07:56 +02:00
Christophe Gouault
8277d4b796 zebra: fix show ip route output
Variable "show ip route" commands invoke the same helper
(do_show_ip_route), potentially several times.

When asking to dump a non-default vrf, all vrfs or all tables, the
output is messy, the header summarizing abbreviations is repeated
several times, excess line feeds appear, the default table of default
VRF is concatenated to the previous table output...

Normalize the output:

- whatever the case, display the common header at most once, if there
  is at least an entry to dump.

- when using a "vrf all" or "table all" command, prepend a line with
  the VRF and table (even for the default vrf or table).

- when dumping a specific vrf or table, prepend a line with the VRF
  and table.

Example (vrf all)
=================

router# show ip route vrf all
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 route, r - rejected route

VRF main:
C>* 10.0.2.0/24 is directly connected, mgmt0, 00:24:09
K>* 10.0.2.2/32 [0/100] is directly connected, mgmt0, 00:24:09
C>* 10.125.0.0/24 is directly connected, ntfp2, 00:00:26

VRF private:
S>* 1.1.1.0/24 [1/0] via 10.125.0.2, loop0, 00:00:29
C>* 10.125.0.0/24 is directly connected, loop0, 00:00:42

Example (main vrf)
==================

router# 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 route, r - rejected route

C>* 10.0.2.0/24 is directly connected, mgmt0, 00:24:41
K>* 10.0.2.2/32 [0/100] is directly connected, mgmt0, 00:24:41
C>* 10.125.0.0/24 is directly connected, ntfp2, 00:00:58

Example (specific vrf)
======================

router# show ip route vrf private
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 route, r - rejected route

VRF private:
S>* 1.1.1.0/24 [1/0] via 10.125.0.2, loop0, 00:01:23
C>* 10.125.0.0/24 is directly connected, loop0, 00:01:36

Example (all tables)
====================

router# show ip route table all
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 route, r - rejected route

VRF main table 200:
S>* 4.4.4.4/32 [1/0] via 10.125.0.3, ntfp2, 00:01:51

VRF main table 254:
C>* 10.0.2.0/24 is directly connected, mgmt0, 00:25:34
K>* 10.0.2.2/32 [0/100] is directly connected, mgmt0, 00:25:34
C>* 10.125.0.0/24 is directly connected, ntfp2, 00:01:51

Example (all vrf, all table)
============================

router# show ip route table all vrf all
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 route, r - rejected route

VRF main table 200:
S>* 4.4.4.4/32 [1/0] via 10.125.0.3, ntfp2, 00:02:15

VRF main table 254:
C>* 10.0.2.0/24 is directly connected, mgmt0, 00:25:58
K>* 10.0.2.2/32 [0/100] is directly connected, mgmt0, 00:25:58
C>* 10.125.0.0/24 is directly connected, ntfp2, 00:02:15

VRF private table 200:
S>* 2.2.2.0/24 [1/0] via 10.125.0.2, loop0, 00:02:18

VRF private table 254:
S>* 1.1.1.0/24 [1/0] via 10.125.0.2, loop0, 00:02:18
C>* 10.125.0.0/24 is directly connected, loop0, 00:02:31

Example (specific table)
========================

router# show ip route table 200
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 route, r - rejected route

VRF main table 200:
S>* 4.4.4.4/32 [1/0] via 10.125.0.3, ntfp2, 00:05:26

Signed-off-by: Christophe Gouault <christophe.gouault@6wind.com>
2020-09-21 10:07:56 +02:00
vivek
211a9d4b97 topotests: Add test for BGP graceful shutdown
Signed-off-by: Vivek Venkatraman <vivek@nvidia.com>
2020-09-20 20:19:51 -07:00
Donald Sharp
8c36640b7c zebra: Allow FreeBSD to set and delete addresses from an interface
This series of events:

$ sudo ifconfig lo0 add 4.4.4.4/32
$ sudo ifconfig lo0 inet 4.4.4.4/32 delete

would end up leaving the 4.4.4.4/32 address on the interface under
freebsd.

This all boils down to the fact that the interface is not
considered connected yet we have a destination.  If the
destination is the same and we are not connected ignore
it on freebsd.

I am sure there are other fun scenarios that someone
will have to squirrel out.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-20 20:53:27 -04:00
vivek
05bd726cfe bgpd: Implement BGP-wide configuration for graceful shutdown
Add support for a BGP-wide setting to enter and exit graceful shutdown.
This will apply to all BGP peers across all BGP instances. Per-instance
configuration is disallowed if the BGP-wide setting is in effect.

Signed-off-by: Vivek Venkatraman <vivek@nvidia.com>
2020-09-19 20:38:14 -07:00
vivek
637e5ba492 bgpd: Define function to check if performing graceful shutdown
Signed-off-by: Vivek Venkatraman <vivek@nvidia.com>
2020-09-19 12:50:46 -07:00
Donald Sharp
1f79037b72
Merge pull request #7036 from ton31337/fix/do_not_allow_setting_maximum-prefix-out_global
bgpd: maximum-prefix-out command fixes
2020-09-19 08:32:02 -04:00