Commit Graph

20841 Commits

Author SHA1 Message Date
Donald Sharp
121067e9c5 bgpd: Prevent crash when displaying json of a vrf all command
When iterating over a `show ip bgp vrf all neighbors json` command
bgp is crashing.

The json variable was being double freed.  When freeing it, set it
to NULL and then check to make sure it exists before we free.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-18 13:54:03 -04:00
Quentin Young
f088c4e77d
Merge pull request #5702 from vishaldhingra/bgp_nb
bgpd : bgp yang definition
2020-08-18 11:50:09 -04:00
Russ White
48f8e0fdde
Merge pull request #6929 from donaldsharp/bgp_relax_do_not_do_it
bgpd: Actually respect RFC 6286 for router_id
2020-08-18 11:23:52 -04:00
Lou Berger
94133785c1
Merge pull request #6937 from donaldsharp/git_blame_can_be_awesome
*: Give git a clue about our whitespace changes
2020-08-18 11:23:06 -04:00
Quentin Young
b7d3510f2d
Merge pull request #6918 from opensourcerouting/bgp-double-statement-removal
bgpd: removal of double statement.
2020-08-18 11:11:07 -04:00
Donald Sharp
d1ddb77d72 *: Give git a clue about our whitespace changes
If you issue this command:

`git config blame.ignoreRevsFile .git-blame-ignore-revs`

Then when you do a git blame XXX, git will ignore the whitespace
changes we made in mass.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-18 07:54:07 -04:00
GalaxyGorilla
6fc9528e8b ospfd: bring back some P2P SPF interface code
In the case of P2P links it is possible to use IP unnumbered which
yields a strong dependency to the interface data for nexthop
resolution in the SPF calculations. While the SPF code strives to
be as independent of non-LSA data as possible there is no way
around here: one has to resolve the nexthop for such a special case
using the interface data.

For this purpose a new flag 'spf_root_node' is introduced to signal
that interface data can be used for P2P links. For now this flag is
always 'true' since the SPF currently always uses the calculating
node as the root node. This will change with the introduction of
TI-LFA where other nodes can be root nodes.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-08-18 11:13:56 +00:00
GalaxyGorilla
3a76b1be88 ospfd: add print helper for SPF trees and route tables
Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-08-18 10:58:50 +00:00
GalaxyGorilla
1d376ff539 ospfd: introduce a 'dry run' into SPF code
in OSPF interface data is used for the nexthop resolution
during the SPF algorithm, see RFC2328 16.1.1. However, for
certain technologies like TI-LFA it is desirable to be able
to calculate SPFs for arbitrary root nodes, not just the
calculating node. Since interface data is not available for
other nodes it is necessary to remove this dependency and
make its usage optional, depending on the intent of
changing the RIB with the generated tree (or not).

To signal that a SPF run is used without the intent to
change the RIB an additional flag `spf_dry_run` is
introduced to the ospf_area struct. This flag is currently
only used within the pure SPF code but will be extended
to the SPF postprocessing later on.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-08-18 10:58:45 +00:00
Donald Sharp
b5c2113e47 bgpd: Actually respect RFC 6286 for router_id
The RFC states:
      The BGP Identifier is a 4-octet, unsigned, non-zero integer that
      should be unique within an AS.  The value of the BGP Identifier
      for a BGP speaker is determined on startup and is the same for
      every local interface and every BGP peer.

We were going slightly beyond this and ensuring that the address
was a specific range of addresses which is no longer relevant.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-17 13:52:19 -04:00
David Schweizer
1e12ebbca3
bgpd: fix for BGP instance shutdown CLI error.
* Replaced alias for bgp shutdown command with separate regular command
  to prevent internal CLI errors.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-08-17 17:43:57 +02:00
David Schweizer
f80e35b602
bgpd: minor fix for BGP instance shutdown.
* Fixed missing first word due to wrong start field of string
  concatenation issue.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-08-17 12:03:27 +02:00
David Schweizer
8389c83aa1
bgpd: enhancement of bgp administrative shutdown
* Added message to RFC 8203 peer notification about BGP instance
  shutdown.
* Added informational log message to instance shutdown enable/disable
  functions.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-08-17 11:45:02 +02:00
Quentin Young
e121d83163 bgpd: fix bad heap reads in type-2 nlri parsing
Various forms of corrupt packets could trigger reads of garbage heap.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-08-15 08:24:59 -07:00
Quentin Young
4adddf0a29 lib: add STREAM_FORWARD_[GET|ENDP]
Safe stream macros for adjusting buffer pointers

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-08-15 08:24:54 -07:00
Donald Sharp
93b35ca9f8
Merge pull request #6724 from Niral-Networks/niral_dev_vrf_isis_core_pr4
ISIS VRF: Transformational changes to support different VRFs.
2020-08-15 07:16:29 -04:00
Renato Westphal
0fe5b904b7 lib: don't ignore error messages generated during the commit apply phase
While a configuration transaction can't be rejected once it reaches
the APPLY phase, we should allow NB callbacks to generate error
or warning messages when a configuration change is being applied.
That should be useful, for example, to return warnings back to
the user informing that the applied configuration has some kind of
inconsistency or is missing something in order to be effectively
activated. The infrastructure for this was already present, but the
northbound layer was ignoring all errors/warnings generated during
the apply/abort phases instead of returning them to the user. This
commit changes that.

In the gRPC plugin, extend the Commit() RPC adding a new
"error_message" field to the response type. This is necessary to
allow errors/warnings to be returned even when the commit operation
succeeds (since grpc::Status::OK doesn't support error messages
like the other status codes).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-08-14 21:37:14 -03:00
Kaushik
eab88f3655 isisd : Transformational changes to support different VRFs.
1. Created a structure "isis master".
2. All the changes are related to handle ISIS with different vrf.
3. A new variable added in structure "isis" to store the vrf name.
4. The display commands for isis is changed to support different VRFs.

Signed-off-by: Kaushik <kaushik@niralnetworks.com>
2020-08-14 13:46:22 -07:00
Quentin Young
2ed8d0249d
Merge pull request #6898 from opensourcerouting/grpc-proto-relicensing
grpc: relicense the northbound service description file
2020-08-14 14:57:12 -04:00
Donald Sharp
40ce7a4203
Merge pull request #6889 from opensourcerouting/isisd-assorted-fixes
isisd minor fixes and enhancements
2020-08-14 12:50:03 -04:00
Rafael Zalamena
fbbb4629ea
Merge pull request #6863 from donaldsharp/bfd_v6_shenanigans
bfdd: Allow it to work when V6 is completely turned off
2020-08-14 16:12:47 +00:00
vdhingra
2228b116fa bgpd: yang defination
Yang files for bgpd to use northbound APIs

Co-authored-by: Santosh P K <sapk@vmware.com>
Co-authored-by: vishaldhingra <vdhingra@vmware.com>
Signed-off-by: vishaldhingra <vdhingra@vmware.com>
2020-08-14 07:44:39 -07:00
Donald Sharp
f1446f9885 bfdd: Allow it to work when V6 is completely turned off
Experimental patch to allow us to discuss if we should
allow bfdd to work when v6 is turned off in the kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-14 09:20:09 -04:00
Donald Sharp
22c9bfb824
Merge pull request #6883 from pjdruddy/evpn-refactor
Evpn refactor
2020-08-14 09:02:25 -04:00
Donald Sharp
bbbfa7f77d
Merge pull request #6899 from opensourcerouting/bfd-knobs
bfdd: support passive mode and minimum TTL
2020-08-14 08:54:36 -04:00
Donald Sharp
bd28118622
Merge pull request #6914 from opensourcerouting/rmap-error-msgs
lib: show prefix error message on configuration failure
2020-08-14 08:47:19 -04:00
David Schweizer
e03f1f184f
bgpd: peer restart after shutdown fix.
* Peers are now automatically restarted by the reconnect timer instead
  of a ManualStart event after lifting the administrative shutdown.
* Question of when to log what remains.
* Compiles and works as intended now.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-08-14 13:27:07 +02:00
GalaxyGorilla
5ec5929c62 ospfd: clean some bitrot in SPF code
Just non-functional changes, cosmetics, removal of eye
cancer. The intention here is to make the SPF code more
approachable.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-08-14 09:44:05 +00:00
David Schweizer
cb9196e77a
bgpd: bgp instance administrative shutdown.
* Fixed integration in FSM and packet handling.
* Added CLI "show" output, incl. JSON.
* For review and testing only.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-08-14 10:23:34 +02:00
David Schweizer
bfb602e2ff
bgpd: removal of double statement.
This fix removes an unnecessary second occurrence of a statement.

Signed-off-by: David Schweizer <david.schweizer@davischw.ch>
2020-08-14 06:50:40 +02:00
Donald Sharp
806e504063
Merge pull request #6892 from opensourcerouting/feature/sr-te-staticd
staticd: add support for SR Policies
2020-08-13 19:19:37 -04:00
Rafael Zalamena
8bc38cbd9a lib: show prefix error message on command failure
Use `args->errmsg` instead of just `zlog_info` for registering the error
so the users don't need to check their log files.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-13 19:59:47 -03:00
Donald Sharp
ff35d21a1c
Merge pull request #6913 from ton31337/feature/dump_attributes_for_debugging_if_malformed
bgpd: Dump attributes before returning from bgp_attr_malformed()
2020-08-13 18:35:27 -04:00
David Schweizer
9cf5943257
bgpd: bgp instance administrative shutdown.
* Changes allow administratively shutting down all peers of a BGP
  instance.
* New CLI commands "[no] bgp shutdown" in vty shell.
* For review and testing only.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-08-13 17:52:49 +02:00
Donatas Abraitis
599f7b330d bgpd: Dump attributes before returning from bgp_attr_malformed()
This would be handy for situations when a notification was sent, but it's
absolutely not clear who triggered that.

Just in case dumping all attributes under the debug mode would help finding
the _bad_ attribute.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-08-13 18:42:31 +03:00
Renato Westphal
3a9bc619cf
Merge pull request #6908 from qlyoung/vrrp-add-vrf-module
vrrpd: add frr-vrf yang module
2020-08-13 11:10:03 -03:00
Donald Sharp
efe57f87de
Merge pull request #6869 from xThaid/zebra_arp
lib, zebra: add support for sending ARP requests
2020-08-13 09:47:52 -04:00
Sri Mohana Singamsetty
e11baa4c72
Merge pull request #6909 from donaldsharp/weird_dump_commands
tools: Remove zebra commands that have never existed
2020-08-12 20:42:34 -07:00
Donald Sharp
9057bd834a tools: Remove zebra commands that have never existed
The support bundle feature(tm) asks for some data
from zebra in the form of a command that has
never existed in FRR.  Looks like some
cruft snuck in remove.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-12 20:59:47 -04:00
Quentin Young
57f4b4595d vrrpd: add frr-vrf yang module
Can't have interfaces without vrf modules, since interfaces cross
reference vrfs.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-08-12 17:45:06 -04:00
Jakub Urbańczyk
aa530b627d ospfd: send ARP requests using zebra
Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
2020-08-12 23:20:52 +02:00
Jakub Urbańczyk
da187b7705 sharpd: add a command to send ARP/NDP requests
Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
2020-08-12 23:20:04 +02:00
Jakub Urbańczyk
d68e74b41c lib, zebra: add support for sending ARP requests
We can make the Linux kernel send an ARP/NDP request by adding
a neighbour with the 'NUD_INCOMPLETE' state and the 'NTF_USE' flag.

This commit adds new dataplane operation as well as new zapi message
to allow other daemons send ARP/NDP requests.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
2020-08-12 23:19:58 +02:00
Rafael Zalamena
39bea45c19 topotests: new BFD test for multi hop features
Add a new test to cover the new features for multi hop BFD peers:

- Test that we correctly receive TTL from protocol integration.
- Check minimum TTL usage and 'show' command.
- Check for passive mode.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-12 14:57:03 -03:00
Pat Ruddy
2bdd4461c1 zebra: clean up SA warning in EVPN code
Use asserts rather thank test where the values should definitely
not be NULL.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2020-08-12 18:03:21 +01:00
Mark Stapp
ee7d41a437
Merge pull request #6906 from donaldsharp/poll_error
Poll error
2020-08-12 12:23:29 -04:00
Rafael Zalamena
360d6ca513 topotests: fix default BFD peer shutdown state
The commit `bfdd: simplify and remove duplicated code` fixed a problem
that was causing the protocol configuration to override the user
configuration.

In this test case: the peer was configured to be disabled (default is
`shutdown`) and the test was expecting it to get activated (`no shutdown`)
when the protocol converged. I changed the peer default state to
`no shutdown`, however another way to get the same effect is to
configure the protocol to use a profile or don't configure a peer at all
(and use the defaults).

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-08-12 10:56:49 -03:00
Renato Westphal
c2e6684110
Merge pull request #6748 from chiragshah6/yang_nb5
lib: yang wrapper for getting empty type
2020-08-12 10:52:29 -03:00
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