Commit Graph

20641 Commits

Author SHA1 Message Date
Donald Sharp
d142453d6b lib: Properly handle POLLERR from poll()
There are situations where POLLERR will be returned.  But
since we were not handling it.  Thread processing effectively
is turned into an infinite loop, which is bad.

Modify the code so that if we receive a POLLERR we turn it
into a read event to be handled as an error from the handler
function.

This was discovered in pim:

Thread statistics for pimd:
Showing poll FD's for main
--------------------------
Count: 14/1024
	     0 fd:     9 events: 1 revents: 0		mroute_read
	     1 fd:    12 events: 1 revents: 0		vty_accept
	     2 fd:    13 events: 1 revents: 0		vtysh_accept
	     3 fd:    11 events: 1 revents: 0		zclient_read
	     4 fd:    15 events: 1 revents: 0		mroute_read
	     5 fd:    16 events: 1 revents: 0		mroute_read
	     6 fd:    17 events: 1 revents: 0		pim_sock_read
	     7 fd:    19 events: 1 revents: 0		pim_sock_read
	     8 fd:    21 events: 1 revents: 0		pim_igmp_read
	     9 fd:    22 events: 1 revents: 0		pim_sock_read
	    10 fd:    23 events: 1 revents: 0		pim_sock_read
	    11 fd:    20 events: 1 revents: 0		vtysh_read
	    12 fd:    18 events: 1 revents: 0		pim_sock_read
	    13 fd:    24 events: 0 revents: 0

strace was showing this line over and over and over:

poll([{fd=9, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=11, events=POLLIN}, {fd=15, events=POLLIN}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, {fd=19, events=POLLIN}, {fd=21, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=20, events=POLLIN}, {fd=18, events=POLLIN}, {fd=6, events=POLLIN}], 14, 20) = 1 ([{fd=21, revents=POLLERR}])

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-12 09:49:20 -04:00
Donald Sharp
d279ef571e lib: Fixup comment indentations in thread.c
Somewhere along the way the indentation for comments got
all messed up.  Let's make it follow our standards and
also look right too.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-12 09:46:44 -04:00
Chirag Shah
707b76d795 zebra: Revert "zebra: probe local inactive neigh"
Reverting probing of neigh entry. There is a timing where
probe and remote macip add request comes at the same time resulting
in neigh to remain in local state event though it should be remote.

In mobility case, the host moves to remote VTEP, first MAC only type-2
route is received which triggers a PROBE of neighs (associated to MAC).
PROBE request can go via network port to remote VTEP.

PROBE request picks up local neigh with MAC entry's outgoing port is
remote VTEP tunnel port.
The PROBE reply and MAC-IP (containing IP) almost comes same time at
DUT.

DUT first processes remote macip and installs neigh as remote.
Followed by receives neigh as REACHABLE which marks neigh as LOCAL.

FRR does have BPF filter which does not allow its own netlink request
to receive. Otherwise frr's request to program neigh as remote can move
neigh from local to remote.

Though ordering can not be guranteed that REACHABLE (PROBE's repsonse)
can come at anytime and move it to LOCAL.

This fix would not suffice the needs of converging LOCAL inactive neighs
to remove from DB. As mobility draft sugges to PROBE local neigh when
MAC moves to remote but it is not working with current framework.

Ticket:CM-22864

This reverts commit 44bc8ae550

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-08-12 12:39:34 +01:00
Anuradha Karuppiah
1718bc783a zebra: fix SA NULL ptr access warning in evpn_mh
Warning logs -
Logic error: Dereference of null pointer in zebra_evpn_mh.c, function zebra_evpn_es_evi_show_vni, line 360
See https://ci1.netdef.org/browse/FRR-FRRPULLREQ-13544/artifact/shared/static_analysis/report-b1eb72.html#EndPath

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-08-12 12:39:34 +01:00
Pat Ruddy
8b5fdf2e66 zebra: extract core EVPN functions from zebra_vxlan.c
extract the core EVPN functions from zebra_vxlan.c and put them in
a new file zebra_evpn.c.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
6006414dc9 zebra: clone zebra_vxlan.c to zebra_evpn.c
clone zebra_vxlan.c to create a file zebra_evpn.c for core
EVPN functions whilst retaining the history of zebra_vxlan.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
33064a6289 zebra: extract neighbor processing from kernel_neigh_del
extract the neighbor uninstall part of
zebra_vxlan_handle_kernel_neigh_del into a new function
zebra_evpn_neigh_del_ip in zebra_evpn_neigh.c.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
32fe7dfd9b zebra: extract neighbor processing from process_remote_macip_del
extract the neighbor uninstall  part of process_remote_macip_add
into a new function zebra_evpn_neigh_remote_uninstall in
zebra_evpn_neigh.c.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
224315f3e4 zebra: extract neigbor processing from zevpn_gw_macip_add
extract the neighbor part of process_remote_macip_add into a new
function zebra_evpn_neigh_gw_macip_add in zebra_evpn_neigh.c.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
036daaca3e zebra: extract neigbor processing from remote_macip_add
extract the neighbor part of process_remote_macip_add into a new
function process_neigh_remote_macip_add in zebra_evpn_neigh.c.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
7cbae20ade zebra: extract neighbor functions from zebra_vxlan.c
Move neighbor processing functions to new zebra_evpn_neigh.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
6336e12b94 zebra: clone zebra_vxlan.c to zebra_evpn_neigh.c
clone zebra_vxlan.c to create a file zebra_evpn_neigh.c for neighbor
dB functions whilst retaining the history of zebra_vxlan.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
7bce35354f zebra: extract gateway mac add from zebra_vxlan.c
extract mac_gateway add code from zevi_gw_macip_add and move it to
a new generic function zebra_evpn_mac_gw_macip_add in zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
ad6ca5f423 zebra: extract local mac del from zebra_vxlan.c
extract generic local mac add code from zebra_vxlan_local_mac_del
into a new function zebra_evpn_del_local_mac in zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
d9d3455e09 zebra: extract local mac add code from vxlan
extract the local mac add code from zebra_vxlan_local_mac_add_update
and create a new generic local mac add function
zebra_evpn_add_update_local_mac

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:34 +01:00
Pat Ruddy
19fdd1be29 zebra: split out mac_add code from process_remote_macip_add
Move MAC add code from process_remote_macip_add in zebra_vxlan.c
to a generic function process_mac_remote_macip_add in
zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:33 +01:00
Pat Ruddy
b299808662 zebra: extract evpn mac functions from zebra_vxlan.c
Move MAC dB specific functions to zebra_evpn_mac.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:33 +01:00
Pat Ruddy
24268cd07e zebra: clone zebra_vxlan.c to zebra_evpn_mac.c
clone zebra_vxlan.c to create a file zebra_evpn_mac.c for MAC dB
functions whilst retaining the history of zebra_vxlan.c

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:33 +01:00
Pat Ruddy
87d76d5403 zebra: rename vni to evpn where appropriate
The main zebra_vni_t hash structure has been renamed to zebra_evpn_t
to allow for other transport underlays. Rename functions and variables
to reflect this change.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:33 +01:00
Pat Ruddy
2d706c4e25 tests: remove ifindex from VNI JSON comparison
Since the values of ifindices cannot be relied upon across
distributions, simpy remove them from the VNI JSON being compared.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:33 +01:00
Pat Ruddy
578c52e5c0 tests: add EVPN IP learning tests
add tests to check IP address/MAC address associations are learned
from netlink NEWNEIGH messages and are propagated to the remote PE

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 12:39:33 +01:00
Sebastien Merle
065276ae1f staticd: add support for SR Policies
Configuration example:

    ip route 9.9.9.9/32 6.6.6.6 color 123

The SR Policy to be chosen is uniquely identified by the policy
endpoint (6.6.6.6) and the SR-TE color (123). Traffic will be
augmented with an MPLS label stack according to the active
candidate path of that particular policy.

Co-authored-by: GalaxyGorilla <sascha@netdef.org>
Signed-off-by: Sebastien Merle <sebastien@netdef.org>
2020-08-12 13:28:48 +02:00
Renato Westphal
4049b01b55 grpc: relicense the northbound service description file
The GPL license is too restrictive and can "contaminate" client scripts
using language bindings auto-generated from this file. We don't want
this to happen. Adopt the BSD-2-Clause license to avoid any problem
of this nature.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-08-11 21:28:41 -03:00
Rafael Zalamena
158a95c507 doc: add BFD minimum TTL documentation
Let the user know what the new command does.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-11 21:22:44 -03:00
Rafael Zalamena
262e1d2528 bfdd: implement minimum TTL
Initial BFD protocol implementation had a hard coded value of maximum 5
hops, now we have a configurable hop amount with a safe default of 1
hop.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-11 21:22:39 -03:00
Chirag Shah
1c7f624509 tools: nb generate callback script to use attr
northbound genrate callback script to use attr->event
in case passed in generated callbacks..

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-08-11 17:08:26 -07:00
Chirag Shah
47cd223441 lib: yang wrapper for getting empty type
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-08-11 17:06:23 -07:00
Renato Westphal
0f16688138 lib: introduce new list_dup() API
This new function will be used by the upcoming TI-LFA code.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-08-11 20:41:44 -03:00
Renato Westphal
c64e4ca2a7
Merge pull request #6829 from qlyoung/fix-vrrp-northbound-autocreated-uaf
Fix vrrp northbound autocreated uaf
2020-08-11 20:28:30 -03:00
Renato Westphal
4b991739c1
Merge pull request #6874 from chiragshah6/mdev
zebra: fix crash in vrf-vni mapping
2020-08-11 20:27:00 -03:00
Donald Sharp
9d0843ac88
Merge pull request #6895 from mjstapp/fix_topo_vpls_timeout
tests: add time to ldp vpls testcase
2020-08-11 17:21:08 -04:00
Quentin Young
8a601eb7fd vrrpd: log errmsg, stricter nb validation
* When failing a config transaction due to a VRID conflict, describe the
  error in the provided space
* When validating, allow the NB userdata lookup for interface object to
  soft fail; but when applying, assert if it does not exist

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-08-11 16:57:42 -04:00
Mark Stapp
240e9a57fd
Merge pull request #6820 from donaldsharp/random_stuff
Some ad-hoc work that is independent of actual bug fixes/feature work I am doing
2020-08-11 16:07:58 -04:00
Rafael Zalamena
abd1529680 doc: add BFD passive mode documentation
Let the user know what the new command does.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-11 16:46:10 -03:00
Rafael Zalamena
4e38f82a0a bfdd: simplify and remove duplicated code
Move the session configuration application logic to a single function.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-11 16:46:10 -03:00
Rafael Zalamena
1a2e2fff35 bfdd: implement passive mode
The passive mode is briefly described in the RFC 5880 Bidirectional
Forwarding Detection (BFD), Section 6.1. Overview:

> A system may take either an Active role or a Passive role in session
> initialization.  A system taking the Active role MUST send BFD
> Control packets for a particular session, regardless of whether it
> has received any BFD packets for that session.  A system taking the
> Passive role MUST NOT begin sending BFD packets for a particular
> session until it has received a BFD packet for that session, and thus
> has learned the remote system's discriminator value.  At least one
> system MUST take the Active role (possibly both).  The role that a
> system takes is specific to the application of BFD, and is outside
> the scope of this specification.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-11 16:46:10 -03:00
Rafael Zalamena
8733bc48ea yang: add new BFD configuration leaves
The two new configurations knobs are:

* Passsive mode
* Minimum TTL

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-11 16:46:10 -03:00
Quentin Young
f4893b09ab vrrpd: fix improper NB query during validation
We were querying the NB for an interface and expecting it to exist, but
we were doing this during a validation run when the interface hasn't yet
been created, resulting in an abort. Adjust validation checks to handle
this scenario.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-08-11 14:26:33 -04:00
Quentin Young
ee723e1382 vrrpd: don't allow autocreated vr's in NB layer
Changing properties on an autoconfigured VRRP instance results in its
pointer being stored as a userdata in the NB tree, leading to UAF when
autoconfigure deletes the instance and then later NB operations take
place using the now-stale pointer.

Ticket: CM-29850
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-08-11 14:26:33 -04:00
Donald Sharp
659d56e13f
Merge pull request #6755 from xThaid/dplane_batching
zebra: dataplane batching
2020-08-11 13:59:12 -04:00
Donald Sharp
e2dbfc2b37
Merge pull request #6885 from GalaxyGorilla/ospf_sr_ri_fix
ospfd: fix processing of SR RI LSAs
2020-08-11 13:13:28 -04:00
Donald Sharp
39feaef849
Merge pull request #6894 from mjstapp/fix_sa_vxlan
zebra: clean up SA warning in vxlan code
2020-08-11 13:12:08 -04:00
Donald Sharp
3a8f70b57c
Merge pull request #6893 from DmitriyEshenko/dmvpn-example
docs: Add dmvpn example
2020-08-11 13:05:24 -04:00
Mark Stapp
ceb71630ed
Merge pull request #6870 from donaldsharp/test_fixups
Test fixups
2020-08-11 12:40:52 -04:00
Donald Sharp
238f69afff doc: Update sharp watch command documentation slightly
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-11 12:37:35 -04:00
Donald Sharp
bcc519dce5 sharpd: Cleanup help text
Help text was a bit inconsistent/wrong.  Fix it like you mixed it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-11 12:37:35 -04:00
Donald Sharp
469d627747 zebra: Only note time of first nht registration
We were noticing registration time of the last nht time.
Let's just store the original time, although I am a bit
dubious about the usefulness of this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-11 12:37:35 -04:00
Russ White
c6dc339540
Merge pull request #6801 from ton31337/feature/force_maximum-prefix_for_filtered_routes
bgpd: Add a knob to force maximum-prefix even for filtered routes
2020-08-11 11:52:05 -04:00
Mark Stapp
e513ad68d4 tests: add time to ldp vpls testcase
Add some more wait time to an LDP vpls testcase - it seems to have
trouble in the CI sometimes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-08-11 09:33:39 -04:00
Mark Stapp
b7895aad82 zebra: clean up SA warning in vxlan code
Resolve an SA warning in the vxlan code.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-08-11 08:39:25 -04:00