Commit Graph

21342 Commits

Author SHA1 Message Date
Donald Sharp
43373bea5a
Merge pull request #7091 from opensourcerouting/nb-leafrefs
lib: fix crashes with leafrefs that point to non-implemented modules
2020-09-12 09:29:33 -04:00
Kaushik
e6baea10a4 ospfd : Resolving conflict in distribute-list update during MaxAge LSA.
1. Fix for duplicating calls of ospf_external_lsa_refresh()
   in ospf_distribute_list_update_timer().
2. Added the comment and change from PR 6981.

Signed-off-by: Kaushik <kaushik@niralnetworks.com>
2020-09-12 06:24:30 -07:00
Don Slice
96e2fd256a bgpd: correct community-list replace logic
Problem rerported that if you enter an existing community list
sequence number with new community information, the entire community
list would be deleted.  This commit fixes the replace logic to do
the right thing.

Ticket: CM-30555
Signed-off-by: Don Slice <dslice@nvidia.com>
2020-09-12 06:17:32 -07:00
Jafar Al-Gharaibeh
2c03a60bb8
Merge pull request #7084 from donaldsharp/pim_limitations
pimd: Warn when we try to build MAXVIFS > 256
2020-09-11 22:15:02 -05:00
Jafar Al-Gharaibeh
58e6747297
Merge pull request #7095 from donaldsharp/coverity_5
isisd: ifp cannot be NULL
2020-09-11 22:07:56 -05:00
Donald Sharp
9fa352cfb7 tests: Speed up topotests by being more aggressive
We have a bunch of tests that wait *then* check a command for success/failure.
Modify the tests to check *first* then to wait.  This reduces test
run times on my system by ~1400 seconds for a full run.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-11 20:20:42 -04:00
Donald Sharp
2db7c1b436
Merge pull request #7080 from opensourcerouting/staticd-minor-issues
staticd: remove dead code + minor fix
2020-09-11 20:07:19 -04:00
Donald Sharp
4fdd2942c5 pimd: Warn when we try to build MAXVIFS > 256
We use the pim mroute socket for kernel notifications of events.
Currently this is limited to 8 bits of data.  There are patches
coming down the pike in kernel land to allow this to expand.
Rather than fix this and all the other places we assume MAXVIFS < 256
in the pim code right now.  Leave a land mine for the developer
doing this work to point them in the right direction.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-11 20:06:06 -04:00
Donald Sharp
166a132d35 pbrd: Ensure rule is installed on interface up
If we are experiencing an interface that is bouncing
very fast and the last operation that we experienced
was a ifdown we will send rule deletions associated
with that interface.  If we have not received notification
that hte rule was removed *but* we immiedately get another
ifup notification when we go to install the rule we
are deciding that it's not ready to send down again,
as that we still think it is installed.

Force the rule installation when we have a interface up
event.

Ticket: CM-31042
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-11 20:04:45 -04:00
Donald Sharp
58a1d24924 bgpd, lib, pbrd, zebra: Pass by ifname
When installing rules pass by the interface name across
zapi.

This is being changed because we have a situation where
if you quickly create/destroy ephermeal interfaces under
linux the upper level protocol may be trying to add
a rule for a interface that does not quite exist
at the moment.  Since ip rules actually want the
interface name ( to handle just this sort of situation )
convert over to passing the interface name and storing
it and using it in zebra.

Ticket: CM-31042
Signed-off-by: Stephen Worley <sworley@nvidia.com>
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-11 20:04:45 -04:00
Renato Westphal
2525fc315a
Merge pull request #6974 from liron-ze/high-cpu-usage
zebra: Solve the problem of high CPU and memory usage when creating t…
2020-09-11 15:59:27 -03:00
Renato Westphal
beb91114ec
Merge pull request #6789 from volta-networks/feat_ldp_igp_sync
ldpd: Add support for LDP-IGP Synchronization
2020-09-11 15:55:04 -03:00
Renato Westphal
8a923b4851 lib: better support for nested YANG augmentations
Change the way the YANG schema node iteration functions work so that
the northbound layer won't have issues with more complex YANG modules
that contain multiple levels of YANG augmentations or modules that
augment themselves indirectly (by augmenting groupings).

Summary of the changes:
* Change the yang_snodes_iterate_subtree() function to always follow
  augmentations and add an optional "module" parameter to narrow down
  the iteration to nodes of a single module (which is necessary in
  some cases). Also, remove the YANG_ITER_ALLOW_AUGMENTATIONS flag
  as it's no longer necessary.
* Change yang_snodes_iterate_all() to do a DFS iteration on the resolved
  YANG data hierarchy instead of iterating over each module and their
  augmentations sequentially.

Reported-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-11 15:46:40 -03:00
Donald Sharp
491d1cc12b isisd: ifp cannot be NULL
the ifp pointer cannot be NULL when we get to this point
in the code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-11 14:30:24 -04:00
Renato Westphal
0d0aacea95 staticd: fix display of the "nexthop-vrf" parameter of static routes
When the static route VRF and its nexthop VRF are inactive in the
kernel, both VRFs will have the same ID (VRF_UNKNOWN) even though
they might not be the same. This can cause "sh run" to not display
the "nexthop-vrf" parameter correctly when necessary. Change the
code to compare VRFs by their names to fix this problem.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-11 15:13:22 -03:00
Renato Westphal
406537cb70 staticd: remove checks that are no longer necessary
All call sites of static_route_leak() are passing a non-null pointer
to the 'vty' parameter, hence remove the 'vty' null checks that
are no longer necessary.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-11 15:13:22 -03:00
Stephen Worley
686c4da9ef doc: fix rpm link under libyang help
Fix the rpm link under libyang help. The link was assuming
it was local without the https.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-11 14:11:48 -04:00
Renato Westphal
f267201bf5 lib: fix crashes with leafrefs that point to non-implemented modules
Whenever libyang loads a module that contains a leafref, it will
also implicitly load the module of the referring node if it's
not loaded already. That makes sense as otherwise it wouldn't be
possible to validate the leafref value correctly.

The problem is that loading a module implicitly violates the
assumption of the northbound layer that all loaded modules
are implemented (i.e. they have a northbound node associated
to each schema node). This means that loading a module that
isn't implemented can lead to crashes as the "priv" pointer
of schema nodes is no longer guaranteed to be valid. To fix this
problem, add a few null checks to ignore data nodes associated
to non-implemented modules.

The side effect of this change is harmless. If a daemon receives
configuration it doesn't support (e.g. BFD peers on staticd),
that configuration will be stored but otherwise ignored. This can
only happen when using a northbound client like gRPC, as the CLI
will never send to a daemon a command it doesn't support. This
minor problem should go away in the long run as FRR migrates to
a centralized management model, at which point the YANG-modeled
configuration of all daemons will be maintained in a single place.

Finally, update some daemons to stop implementing YANG modules
they don't need to (i.e. revert 1b741a01c and a74b47f5).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-11 14:42:35 -03:00
Pat Ruddy
b0610ff727 bgp: remove duplicate command installs
[no_]neighbor_nexthop_self_cmd & [no_]neighbor_nexthop_self_force_cmd
have duplicate install_element actions on the EVPN_NODE. This causes
duplicate command log errors which are caught by topotests. Remove
these.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-09-11 18:26:24 +02:00
Philippe Guibert
370fb8f819 test: topotest bgp_evpn_rt5 runs on kernel > 4.18
if kernel is less than 4.18, then test will not run.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:24 +02:00
Philippe Guibert
f54b51035b topotests: bgp_evpn_rt5 test uses ip link instead of bridge-utils
bridge-utils package is not available on tested distributions.
use ip link instead.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:24 +02:00
Philippe Guibert
d4b10c1b74 topotests: add bgp_evpn_rt5 test with vrf netns backend
this test checks connectivity between a vrf-lite device and a vrf-netns
device. this ensures that evpn serice is importing appropriate evpn rt5
entries in the correct vrf.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:24 +02:00
Philippe Guibert
a1ce03e1fd zebra: support for macvlan interfaces
mac vlan interfaces are supported in different network namespaces.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
ee9d0f0976 [netns 19/21] doc: add some documentation about bgp evpn netns support
a linux configuration gives some explanation on how to set up an evpn
overlay in network namespaces.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
289b0f0dfd zebra: dynamically detect vxlan link interfaces in other netns
this is used when parsing the newly network namespaces. actually, to
track the link of some interfaces like vxlan interfaces, both link index
and link nsid are necessary. if a vxlan interface is moved to a new
netns, the link information is in the default network namespace, then
LINK_NSID is the value of the netns by default in the new netns. That
value of the default netns in the new netns is not known, because the
system does not automatically assign an NSID of default network
namespace in the new netns. Now a new NSID of default netns, seen from
that new netns, is created. This permits to store at netns creation the
default netns relative value for further usage.
Because the default netns value is set from the new netns perspective,
it is not needed anymore to use the NETNSA_TARGET_NSID attribute only
available in recent kernels.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
c2ca3e25a6 bgpd: sanity check when updating nexthop from bgp to zebra
nexthop may sometimes not be passed through zebra, like for onlink
messages.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
2961d0601c lib, zebra: reuse and adapt ns_list walk functionality
the walk routine is used by vxlan service to identify some contexts in
each specific network namespace, when vrf netns backend is used. that
walk mechanism is extended with some additional paramters to the walk
routine.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
b5fde6fd5c zebra: local mac entries populated in correct netnamespace
MAC address neighbours are read on the same netnamespace where the vxlan
interface is.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
d6bf8f136d zebra: when parsing local entry against dad, retrieve config
when duplicate address detection is observed, some incrementation,
some timing mechanisms need to be done. For that the main evpn
configuration is retrieved. Until now, the VRF that was storing the dad
config parameters was the same VRF that hosted the VXLAN interface. With
netns backend, this is not true, as the VXLAN interface is in the
same VRF as the bridge interface. The modification takes same definition
as in BGP, that is to say that there is a single bgp evpn instance, and
this is that instance that will give the correct config settings.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:26:23 +02:00
Philippe Guibert
6179d0d125 bgpd: evpn nexthop can be changed by default
There can be cases where evpn traffic is not meshed across various
endpoints, but sent to a central pe. For this situation, add the
configuration knobs to force nexthop attribute. Upon that change,
nexthop unchanged attribute is automatically disabled.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:25:12 +02:00
Philippe Guibert
9609fab712 zebra: zvni_map_to_vlan() adaptation for all namespaces
this change is needed when a MAC/IP entry is learned by zebra, and the
entry happens to be in a different namespace. So that the entry be
active, the correct vni match has to be found.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-09-11 18:02:50 +02:00
Martin Winter
a77bd0f4e6
Merge pull request #7075 from donaldsharp/snap_fix
snapcraft: Update libyang version
2020-09-11 15:40:00 +02:00
Rafael Zalamena
36273d9ffb
Merge pull request #7085 from donaldsharp/nhrpd-leafref-workaround
nhrpd: add frr-vrf to the list of implemented yang modules
2020-09-11 10:37:53 -03:00
Donald Sharp
1b741a01c6 nhrpd: add frr-vrf to the list of implemented yang modules
PR #6376 introduced a VRF leafref in the frr-interface YANG module.
That change exposed a bug in the northbound layer that is causing
nhrpd to crash under certain circumstances. Even though nhrpd wasn't
converted to the new northbound model yet, make it implement the
frr-vrf module in order to work around this problem. This is a
temporary fix until a better solution is available.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-11 08:51:05 -04:00
Jafar Al-Gharaibeh
79e75ac92e
Merge pull request #7078 from sworleys/RPM-Doc-Blurb
doc: add blurb for rpm package server in overview
2020-09-11 00:27:50 -05:00
Stephen Worley
7821a88d90 doc: add blurb for rpm package server in overview
Add a blurb about the rpm package server in the overview page
so its easier to know where it is. Should be with the debian
one anyway.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-10 17:16:11 -04:00
Donald Sharp
9841ca1dfc snapcraft: Update libyang version
Update the snapcraft build of libyang to the version we
actually want to be using v1.0.184

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-10 09:13:36 -04:00
Donatas Abraitis
a68b613b09
Merge pull request #6827 from maduri111/bgpd-show-bgp-all
bgpd: show <ip> bgp <ipv4/ipv6> all
2020-09-10 15:11:14 +03:00
Donatas Abraitis
4c33bf263f
Merge pull request #7064 from donaldsharp/bgp_timings_faster
tests: Modify bgpd.conf to have faster keepalive/hold timers
2020-09-10 15:10:11 +03:00
David Schweizer
12488d7c8d
lib: fix negating set metric route-map command
Changed negating set metric route-map command to be usable in
conjunction with the affirming command.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-09-10 09:14:58 +02:00
Donald Sharp
63f5364377
Merge pull request #7070 from opensourcerouting/pbrd-leafref-workaround
pbrd: add frr-vrf to the list of implemented yang modules
2020-09-09 22:10:00 -04:00
Renato Westphal
a74b47f5ab pbrd: add frr-vrf to the list of implemented yang modules
PR #6376 introduced a VRF leafref in the frr-interface YANG module.
That change exposed a bug in the northbound layer that is causing
pbrd to crash under certain circumstances. Even though pbrd wasn't
converted to the new northbound model yet, make it implement the
frr-vrf module in order to work around this problem. This is a
temporary fix until a better solution is available.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-09 22:45:28 -03:00
lynne
1cbf96a8ad isisd: ldp-igp-sync feature: adding isis support
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-09-09 14:38:44 -04:00
lynne
132a782eb8 ospfd: ldp-igp-sync feature: adding ospf support
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-09-09 14:38:44 -04:00
Renato Westphal
add39cde9d lib: fix the "set metric" route-map command
The "set metric" command wasn't processing metric additions and
subtractions (using + and -) correctly. Fix those problems.

Also, remove the "+metric" and "-metric" options since they don't
work and don't make any sense (they could be interpreted as unitary
increments/decrements but that was never supported).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-09 14:53:26 -03:00
Karen Schoener
24e7c5c897 lib: adding support for LDP IGP Sync feature
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-09-09 11:12:02 -04:00
Karen Schoener
1fe192228b ldpd: adding topotests for the LDP IGP Sync feature
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-09-09 11:12:02 -04:00
Karen Schoener
e1894ff70f ldpd: Adding support for LDP IGP Synchronization
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-09-09 10:45:41 -04:00
Donald Sharp
c8a3405af8 *: Update version string
Update the version string to reflect work towards next release

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-09 10:10:54 -04:00
Mark Stapp
000ce30ee5
Merge pull request #7047 from qlyoung/fix-zlog-target-null-deref
lib: fix possible null dereference in zlog
2020-09-08 15:25:08 -04:00