Commit Graph

19747 Commits

Author SHA1 Message Date
Donald Sharp
49a3882df1
Merge pull request #6443 from GalaxyGorilla/json_diff_fix
tests: Fix JSON diff for nested lists
2020-05-23 15:37:10 -04:00
GalaxyGorilla
b3100f6ce7 tests: Fix JSON diff for nested lists
The involved piece of code is supposed to find a 'closest' match for two
JSON structures using another JSON diff. However, it can happen that
during that new diff the JSON structures are altered (elements from a
list are deleted when 'found'). This is in general ok when the deleted
element is part of the JSON structure which 'matches', but when it later
turns out that some other element of the structure doesn't fit, then the
whole structure should be recovered. This is now realized by using a
deepcopy for the besaid new JSON diff such that the original is only
altered (e.g. deleted) when the diff is clean.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-05-22 22:29:35 +00:00
Russ White
cb47b207f5
Merge pull request #6407 from donaldsharp/revert_ospfv3_fix
ospf6d: Revert "ospf6d: Prevent use after free"
2020-05-21 15:15:07 -04:00
Donald Sharp
6109dd7e22
Merge pull request #6293 from GalaxyGorilla/json_diff
tests: introduce a proper JSON diff for topotests
2020-05-21 14:19:44 -04:00
Donald Sharp
4244e5484f
Merge pull request #6423 from rgirada/ospf_tag
ospfd: Route-tag is not set to external routes when applied using route maps
2020-05-21 12:43:23 -04:00
Donald Sharp
737d73e519
Merge pull request #6056 from sarav511/jpexp
pimd: Prune->noinfo state has to put off join expiry timer and delete ifchannel
2020-05-21 08:08:29 -04:00
Donald Sharp
2fc593e95c
Merge pull request #6321 from ton31337/fix/configuration_for_labeled_in_place
bgpd: Make sure network/aggregate-address commands lay down under lab…
2020-05-21 07:58:11 -04:00
Donald Sharp
bda6d3729f
Merge pull request #6398 from kuldeepkash/bgp_multi_vrf
tests: Add bgp-multi-vrf test suites
2020-05-21 07:40:17 -04:00
Donald Sharp
080bfc6530
Merge pull request #6432 from opensourcerouting/bfd-profiles
bfdd: support pre configured peer profiles
2020-05-21 07:01:40 -04:00
Donald Sharp
edb2c56c19
Merge pull request #6425 from opensourcerouting/nb-state-cbs-fixes
northbound state callbacks fixes
2020-05-20 19:27:41 -04:00
Rafael Zalamena
f6dfa24739 bfdd: remove profile pointers on removal
Remove all profile references on removal and free all resources on shutdown.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-05-20 15:18:06 -03:00
Rafael Zalamena
088f490202 doc: document the new BFD profile commands
Let the user know we have BFD profiles and how they work.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-05-20 15:18:06 -03:00
Rafael Zalamena
ccc9ada868 bfdd: implement BFD session configuration profiles
Allow user to pre-configure peers with a profile. If a peer is using a
profile any configuration made to the peer will take precedence over
the profile configuration.

In order to track the peer configuration we have now an extra copy of
the peer configuration in `peer_profile` inside `struct bfd_session`.
This information will help the profile functions to detect user
configurations and avoid overriding what the user configured. This is
especially important for peers created via other protocols where the
default `shutdown` state is disabled (peers created manually are
`shutdown` by default).

Profiles can be used before they exist: if no profile exists then it
will use the default configuration.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-05-20 15:18:00 -03:00
Renato Westphal
e6af96d598
Merge pull request #6431 from mjstapp/fix_bgp_dup_cli_cmds
bgpd: remove duplicate cli command installation
2020-05-20 12:30:54 -03:00
Rafael Zalamena
d40d6c2274 bfdd,lib,vtysh: new command node for BFD profiles
Add the necessary code to implement the BFD profile command node.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-05-20 10:39:34 -03:00
Rafael Zalamena
abf1ba08e3 yang: support BFD session profiles
Allow sessions to use BFD profile configurations instead of having to
clone the configuration per peer.

If using a profile and setting a peer configuration, the peer
configuration will take precedence over the profile.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-05-20 10:39:34 -03:00
Mark Stapp
be7e1fa3c9 bgpd: remove duplicate cli command installation
Clean up a few lines of cli command installation; remove a
duplicate; follow the command grouping pattern better.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-05-20 08:25:49 -04:00
Olivier Dugeon
c9157c0115
Merge pull request #6429 from volta-networks/fix_isis_link_params
isisd: set TE link params on circuit creation
2020-05-20 10:49:16 +02:00
Kuldeep Kashyap
1f88794b84 tests: Enhance bgp-ecmp-topo2 script as per latest framework changes
1. Few tests are enhanced as per latest framework changes.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-05-20 04:48:47 +00:00
Kuldeep Kashyap
055e5d896e tests: Add bgp-multi-vrf-topo2 testsuite
1. Adding 4 testcases to this testsuite to verify BGP multi-vrf functionality
2. Adding supporting JSON file to create topology and base config
3. Execution time is ~3 mins

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-05-20 04:48:47 +00:00
Kuldeep Kashyap
52c2f28cad tests: Add bgp-multi-vrf-topo1 testsuite
1. Adding 22 testcases to this testsuite to verify BGP multi-vrf functionality
2. Adding supporting JSON file to create topology and base config
3. Execution time is ~7 mins.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-05-20 04:48:47 +00:00
Kuldeep Kashyap
f8d572e88f tests: Framework support for BGP Multi-VRF automation
1. Added/Enhanced APIs to created bgp multi-vrf config and to
verify config/functionality

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-05-20 04:48:47 +00:00
Sri Mohana Singamsetty
e109bded80
Merge pull request #6427 from mjstapp/frr-reload-doc
doc: add a doc for the frr-reload script
2020-05-19 20:35:58 -07:00
Stephen Worley
3dab0aea06
Merge pull request #6426 from pguibert6WIND/update_ifname_before_hook
Update ifname before hook
2020-05-19 13:58:48 -04:00
Quentin Young
e3ad2197e3
Merge pull request #6417 from opensourcerouting/bfdd-duplicated
bfdd: remove duplicated code and fix comment
2020-05-19 13:37:26 -04:00
Quentin Young
55add95cd7
Merge pull request #6428 from volta-networks/fix_mpls_te_bw
lib: fix bandwidth multiplier for link param
2020-05-19 13:29:00 -04:00
Mark Stapp
3f2e6c01fa
Merge pull request #6339 from opensourcerouting/ds-const-redux
redux lists/datastructure const
2020-05-19 13:27:47 -04:00
Emanuele Di Pascale
89cf2f2096 isisd: set TE link params on circuit creation
if mpls-te is enabled in the area, on creating a circuit we
must refresh the link params - else interfaces that are enabled
for IS-IS after configuring 'mpls-te on' will not correctly
advertise link parameters.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-05-19 18:56:30 +02:00
Russ White
0a6fd9ce9d
Merge pull request #6389 from mjstapp/fix_recursive_label_type
zebra: prefer outer label_type for recursive nexthops
2020-05-19 11:42:36 -04:00
Sri Mohana Singamsetty
6e19892fdf
Merge pull request #6419 from vivek-cumulus/zebra_macfdb_fixup
Zebra macfdb fixup
2020-05-19 08:18:37 -07:00
Emanuele Di Pascale
5eb567edc8 lib: fix bandwidth multiplier for link param
in the CLI we state that the bandwidth of a link is
in Megabits per second, but when converting it to
Bytes per second for TE purposes we were treating
it as Kilobits. Fix the conversion error.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-05-19 17:08:04 +02:00
Stephen Worley
22857da1bb
Merge pull request #6351 from opensourcerouting/fpm-nh
fpm: explicit next hop groups control
2020-05-19 11:01:03 -04:00
Mark Stapp
cff404726c doc: add a doc for the frr-reload script
Add a skeleton frr-reload doc, so we have a place to capture
info about the script's options.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-05-19 10:06:33 -04:00
Philippe Guibert
1f7a68a2ff lib, zebra: update interface name at netlink creation
the interface name was not present in the hook in charge of updating the
interface context to the registered hook service. For that, update the
name before informing it.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-05-19 16:02:12 +02:00
Donatas Abraitis
a6943f9dab
Merge pull request #5077 from pguibert6WIND/vxlan_link
BGP EVPN vrf netns backend
2020-05-19 09:12:38 +03:00
Russ White
b575f58bb0
Merge pull request #6344 from dslicenc/ospf6-routemap-delete
ospf6d: withdraw redistributed prefixes based on prefix-list changes
2020-05-18 18:52:46 -04:00
Russ White
63a03cfbe9
Merge pull request #6420 from vivek-cumulus/bgpd-paths-cleanup
bgpd: Free non-best paths also during table cleanup
2020-05-18 17:24:48 -04:00
Russ White
3bb8051aa2
Merge pull request #6421 from vivek-cumulus/zebra_trust_onlink
zebra: Trust onlink flag for nexthop active resolution
2020-05-18 17:23:57 -04:00
Philippe Guibert
bf69e212fd zebra: support for macvlan interfaces
mac vlan interfaces are supported in different network namespaces.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-05-18 14:11:03 +02:00
Philippe Guibert
89b97c33d7 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-05-18 14:11:03 +02:00
Philippe Guibert
de0ebb2540 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-05-18 14:11:03 +02:00
Philippe Guibert
ee9633ed87 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-05-18 14:11:03 +02:00
Philippe Guibert
c4d466c830 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-05-18 14:11:03 +02:00
Philippe Guibert
4042454891 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-05-18 14:11:03 +02:00
Philippe Guibert
3acc394bc5 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-05-18 14:11:03 +02:00
Philippe Guibert
a2342a2412 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, remove the
nexthop unchanged default behaviour for bgp evpn. Also add route
reflector commands to bgp evpn node.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-05-18 14:11:03 +02:00
Philippe Guibert
db81d18647 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-05-18 14:11:03 +02:00
Philippe Guibert
f8ed2c5420 zebra: fdb and neighbor table are read for all zns
all network namespaces are read so as to collect interesting fdb and
neighbor tables for EVPN.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-05-18 14:11:03 +02:00
Philippe Guibert
388d5b438e zebra: add ns_id attribute to mac structure
this information is necessary for local information, because the
interface associated to the mac address is stored with its ifindex, and
the ifindex may not be enough to get to the right interface when it
comes with multiple network namespaces.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-05-18 14:11:03 +02:00
Philippe Guibert
b5b453a2d6 zebra: bridge layer2 information records ns_id where bridge is
when working with vrf netns backend, two bridges interfaces may have the
same bridge interface index, but not the same namespace. because in vrf
netns backend mode, a bridge slave always belong to the same network
namespace, then a check with the namespace id and the ns id of the
bridge interface permits to resolve correctly the interface pointer.
The problem could occur if a same index of two bridge interfaces can be
found on two different namespaces.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-05-18 14:11:03 +02:00