Commit Graph

15125 Commits

Author SHA1 Message Date
Donald Sharp
699dae230d zebra: Modify NHT to occur when needed.
Currently nexthop tracking is performed for all nexthops that
are being tracked after a group of contexts are passed back
from the data plane for post install processing.

This is inefficient and leaves us sending nexthop tracking
changes at an accelerated pace, when we think we've changed
a route.  Additionally every route change will cause us
to relook at all nexthops we are tracking irrelevant if
they are possibly related to the route change or not.

Let's modify the code base to track the rnh's off of the rib
table's rn, `rib_dest_t`.  So after we process a node, install
it into the data plane, in rib_process_result we can
look at the `rib_dest_t` associated with the rn and see that
a nexthop depended on this route node.  If so, refigure it.

Additionally we will store rnh's that are not resolved on the
0.0.0.0/0 nexthop tracking list.  As such when a route node
changes we can quickly walk up the rib tree and notice that
it needs to be reprocessed as well.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:22:22 -04:00
Donald Sharp
c86ba6c283 zebra: Add a base node for the zebra vrf tables
Add a default route_node for our routing tables.  This will allow us
to know that we can hang data off the default route for processing.

We will be hanging the nexthop tracking data structures off the rib_dest_t
so that we can know which nexthops we need to handle.  Effectively
nexthops that we are tracking that are unresolved will be stored on the
default route.  When something changes in the rib tree we can
work up the rn->parent pointer checking for nexthops we need to re-evaluate.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
434434f704 zebra: Abstract the rib_dest_t creation
Abstract the creation of the rib_dest_t so that we can call it
from multiple places.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
a304e258be zebra: Set and track the resolved_route for the rnh as it changes.
The resolved_route is the prefix we are using in the routing table
to resolve this particular nexthop we are tracking.  Add code
to better track it's change.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
87554d831f zebra: Add the afi_t to the rnh
Store the associated afi with the rnh, it will be useful in the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
cead8cef16 zebra: Add the type we are working on to the rnh data structure
Store the type we are working on w/ the rnh data structure.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
27d0665c0a zebra: The prn value may be NULL do not allow deref
The prn value as passed in may be NULL as such do not
allow it to be derefed (even though it works now).

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
735219e91d zebra: Make the import_check look like nexthop_check
Make the functions take the same parameters.

Future commits will use this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
3cdba47a82 zebra: Modify code so that dplane is responsible for indicating success/fail of install
We have several route types KERNEL and CONNECT that are handled via special
case in the code.  This was causing a lot of work keeping the two different
classes of route types as special(SYSTEM OR NOT).  Put the dplane
in charge of the code that sets the bits for signalling route install/failure.

This greatly simplifies the code calling path and makes all route types
be handled exactly the same.  Additionaly code that we want to run
post data plane install can just work as per normal then, instead
of having to know we need to run it when we have a special type
of route.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
2019-03-27 16:19:28 -04:00
Donald Sharp
7a230a9d0c zebra: On route install/update failure correctly indicate in rib
When we get a route install failure from the kernel, actually
indicate in the rib the status of the routes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
9ef0c6ba87 zebra: Unset old_re as queued.
When switching routes from one route type to another actually
unset the old route as enqueued.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
3f2b1b56cc zebra: zebra_router.c does not own the data plane shutdown of tables
When shutting down, the individual vrf's own the shutdown of the table
and subsuquent removal from the routes from the kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
416745628e zebra: When shutting down actually close the socket
When shutting down and we have a very large table to shutdown
and after we've intentionally closed all the client connections
close the zebra zserv client socket.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:19:28 -04:00
Donald Sharp
9c463972e7 topotests: Add a bit more useful debugging to ldp-vpls-topo1
When something goes wrong with this test, having these turned
on will help us debug zebra processing a bit better in the
future without having to modify anything else.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:13:58 -04:00
Sri Mohana Singamsetty
baae20ccc7
Merge pull request #4004 from chiragshah6/evpn_dev2
zebra: evpn mac ip dup detect (DAD) timers cleanup
2019-03-27 08:25:15 -07:00
Rafael Zalamena
f0f7a56654
Merge pull request #4023 from qlyoung/doc-exclude-bfd-options-manpages
doc: exclude bfd-options.rst from toctree
2019-03-27 11:23:29 -03:00
Donald Sharp
13551afd80
Merge pull request #4017 from mjstapp/fix_summary_installed_flag
zebra: use the INSTALLED flag consistently in route summary
2019-03-27 08:40:12 -04:00
Mark Stapp
76b5b7a29b
Merge pull request #4019 from sworleys/Fix-Extended-Ack-Err
zebra: Fix extended ack error message parsing
2019-03-27 08:35:02 -04:00
Quentin Young
749461a631 doc: exclude bfd-options.rst from toctree
This is an include file, needs to be explicitly excluded to suppress
Sphinx warnings.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-26 20:53:58 +00:00
Lou Berger
d5737d2baa
Merge pull request #3983 from opensourcerouting/pim-tests
topotests: pim-basic: add topology to test PIM
2019-03-26 17:05:13 +01:00
David Lamparter
da1a93983a
Merge pull request #3998 from pguibert6WIND/workflow_bug_fixes_older
doc: permit maintenance on more than the 2 last maintenance releases
2019-03-26 16:45:48 +01:00
David Lamparter
2e4e4babaf
Merge pull request #3946 from AnuradhaKaruppiah/evpn-prefix-length
bgp: fix misc evpn problems caused by using incorrect prefixlen
2019-03-26 16:38:28 +01:00
David Lamparter
d2741ebfc3
Merge pull request #4008 from donaldsharp/zclient_log_improvement
Zclient log improvement
2019-03-26 16:36:55 +01:00
David Lamparter
aa69ac38f4
Merge pull request #4013 from manuhalo/zebra_c++_guards
zebra: add extern C guards to headers
2019-03-26 16:35:52 +01:00
Quentin Young
860ff05896
Merge pull request #4020 from cfra/feature/improve-init-script
tools/frr.in: Only attempt to load daemons.conf if present
2019-03-26 11:23:43 -04:00
Lou Berger
80d79d1af1
Merge pull request #4021 from donaldsharp/bgp_warnings
bgpd: Split up warn message to allow finer grained understanding
2019-03-26 16:18:18 +01:00
Donald Sharp
13366862cc bgpd: Split up warn message to allow finer grained understanding
We have the same warn message in 3 spots, which makes it extremely
hard to figure out which of the 3 has gone terribly wrong.
Add a bit of code to disambiguate the 3 situations.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-26 09:11:28 -04:00
Christian Franke
a55578f631 tools/frr.in: Only attempt to load daemons.conf if present
Apparently, the default changed to use `/etc/frr/daemons` instead of
`/etc/frr/daemons.conf`. Therefore, we should ignore absence of the
latter file, because its absence is not an actuall error but will
cause a confusing error message like this:

    /etc/init.d/frr: line 507: /etc/frr/daemons.conf: No such file or directory
2019-03-26 10:33:45 +01:00
Stephen Worley
4cebb2b6f6 zebra: Fix extended ack error message parsing
Fix the macros for reading NLA attribute info
from an extended error ack. We were processing the data
using route attributes (rtattr) which is identical in size
to nlattr but probably should not be used.

Further, we were incorrectly calculating the length of the
inner netlink message that cause the error. We have to read
passed that in order to access all the nlattr's.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-03-26 01:20:29 -04:00
Mark Stapp
6f875a362a zebra: use the INSTALLED flag consistently in route summary
The 'sho ip route summary' and 'sho ip route summary <prefix>'
paths used different definitions of a 'fib' route. Use
the route-entry 'INSTALLED' flag in both places.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-03-25 13:35:02 -04:00
Quentin Young
dfff60ed31
Merge pull request #4010 from sarav511/3988
ospfd: Remaining packet calculation while fragmenting lsu, ls-ack and…
2019-03-25 13:31:23 -04:00
Donald Sharp
749d7a8bcd
Merge pull request #4011 from pguibert6WIND/duplicate_json_metric
zebra: remove duplicated json information
2019-03-25 11:27:55 -04:00
Emanuele Di Pascale
51e94aa7b1 add cplusplus guards to all zebra headers
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-03-25 16:05:27 +01:00
Philippe Guibert
41533022a2 zebra: remove duplicated json information
the metric information is already present for connected routes. so
remove that line.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-03-25 15:02:52 +01:00
Saravanan K
9570f7378b ospfd: Remaining packet calculation while fragmenting lsu, ls-ack and ls-req
While fragmenting ospf ls packets, before appending the link state info,
wrong value is checked to see if current packet can fit in another ls info.
Because of this, when a lower mtu is configured, it couldn't fit in even 1
ls ack, which tries to send all the available ls ack in the list in loop.
This keeps allocating memory to send the packet and ends up putting the
packet buffer without ls-ack into deferred send que(ospf_ls_ack_send_delayed).
This infinite loop causes infinite memory being allocated in a loop causing
system to be unstable. This commit takes care of calculating the right value
to compare for checking oif this buffer can fit in more.

Signed-off-by: Saravanan K <saravanank@vmware.com>
2019-03-25 06:23:17 -07:00
Donald Sharp
cdc6ed9016 lib: Improve debugs in zclient.c
Fixup a couple of places to improve debugging of what is
going on in zclient.c.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-25 09:09:35 -04:00
Donald Sharp
4cf8bb327c lib: Fixup missing log entries
Add a few missing log entries to the macro to allow us to print
out the zapi message type, since they were missing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-25 09:04:28 -04:00
Donald Sharp
c9146c85a0
Merge pull request #3772 from pguibert6WIND/vrf_backend_unknown
Vrf backend unknown
2019-03-25 08:13:16 -04:00
Donald Sharp
08d4711684
Merge pull request #3989 from opensourcerouting/redhat-new-init
redhat: switch to new init script
2019-03-25 07:45:04 -04:00
David Lamparter
b7862d93ae tools/frrcommon.sh: ignore 'declare' failures
The "declare -p watchfrr_options" call is just to support backwards
compatibility.  If it fails, silently ignore that.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-03-24 15:53:43 +01:00
David Lamparter
6f7300a9a2 Merge branch 'frr/pull/4005' 2019-03-24 15:28:23 +01:00
Marcel Röthke
5d799192ef bgpd: add command to lookup prefixes in the rpki table
Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2019-03-24 15:27:07 +01:00
David Lamparter
46ba857461
Merge pull request #4001 from qlyoung/doc-update-libyang-building
doc: update instructions for building libyang
2019-03-23 14:24:27 +01:00
David Lamparter
cdec5d956b
Merge pull request #3996 from qlyoung/doc-move-rpm-to-devdocs
move rpm build doc to devdocs
2019-03-23 14:22:49 +01:00
David Lamparter
59ce748be0
Merge pull request #3985 from rubenk/doc-fix-a-few-typos
doc: fix a couple of typos
2019-03-23 13:49:20 +01:00
Chirag Shah
55328d8aca zebra: add mac ip dad timers cleanup
When MAC or IP deleted ensure to cleanup DAD timers.

Signed-off-by: Chirag Shah <chirag@cumulusnetwork.com>
2019-03-22 17:12:16 -07:00
Quentin Young
d758f97a24 doc: update instructions for building libyang
* Upstream libyang now works with FRR; use it
* Install libyang to system library directories to satisfy pkg-config
* Remove warnings about ABI version
* Remove outdated binary package links
* Cleanup formatting

Validated that these instructions work on:
- Fedora 24
- Fedora 28.
- Ubuntu 18.04

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-22 18:57:20 +00:00
Sri Mohana Singamsetty
d31fd899e6
Merge pull request #3978 from chiragshah6/evpn_dev2
bgpd: l3vni add-del handle non-defualt rd
2019-03-22 09:49:00 -07:00
Quentin Young
9251d1f596 doc: move rpm build doc to dev docs
------------{ <(O.O)> }------------

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-22 16:08:28 +00:00
David Lamparter
6b38a03312
Merge pull request #3927 from donaldsharp/rnh_cleanup
zebra: Cleanup rnh table information before deleting underlying tables
2019-03-22 16:56:12 +01:00