Commit Graph

15155 Commits

Author SHA1 Message Date
Donald Sharp
36456953c6
Merge pull request #4038 from manuhalo/fix-lu-bgp-master
bgpd: fix show bgp labeled_unicast
2019-03-28 20:17:38 -04:00
Christian Franke
819489d020
Merge pull request #4035 from qlyoung/update-slack-link
README.md: point to self-inviting slack link
2019-03-28 21:01:24 +01:00
Emanuele Di Pascale
c512a6429c bgpd: fix show bgp labeled_unicast
while labeled_unicast routes should be fetched in the
unicast table, we cannot set the safi to SAFI_UNICAST
else the peer afc checks and subgroup retrieval will fail

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-03-28 19:04:26 +01:00
Quentin Young
5fe863b2a1 README.md: point to self-inviting slack link
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-28 17:15:16 +00:00
Quentin Young
8db37bf14a
Merge pull request #4030 from cfra/feature/fix-alpine-build
Fix alpine build
2019-03-28 12:02:59 -04:00
Mark Stapp
0931097954
Merge pull request #4015 from opensourcerouting/topotests-fixes
topotests: fix missing log file and duplicated output folder
2019-03-28 11:07:31 -04:00
Mark Stapp
a604ea8511
Merge pull request #3764 from donaldsharp/rib_dest_t
Lot's of Zebra changes
2019-03-28 11:05:29 -04:00
Rafael Zalamena
5264c1cc64
Merge pull request #4002 from qlyoung/doc-update-build-docs-fedora
update build docs - Fedora, Ubuntu
2019-03-27 19:31:45 -03:00
Donald Sharp
9fb2b87997 isisd, ospf6d, ripngd: Do not allow v6 LL's to be redist connected in
The rib process of handling routes has been unified a bit more
and as a result v6 LL routes are now showing up as a result
of a `redistribute connected`.  Doing anything with these
routes is a policy decision that should be enforced by the
individual routing daemons not by zebra.  As such add a bit
of code to isisd, ripngd and opsf6d to handle them.  The bgp daemon
already handles this situation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:22:22 -04:00
Donald Sharp
906b54ddba zebra: Re-evaluate the nexthop tracking if flags changed
Routing protocols are allowed ( and even encouraged ) to modify
the flags that influence the nexthop tracking.  As such when
we modify the tracking of a nexthop to go from, say, connected force
or not we must re-evaluate the nexthop and send the results
up to the interested parties.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:22:22 -04:00
Donald Sharp
9cb8322ed9 zebra: If we copy re than the state has changed
After we have evaluated the rnh for an import-check type
and we copy the re then we know that the state has changed
and we should be notifying the end user about it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:22:22 -04:00
Donald Sharp
a1494c250c zebra: Modify lsp processing to be invoked as needed
LSP processing was a zvrf flag based upon a connected route
coming or going.  But this did not allow us to know
that we should do lsp processing other than after the meta-queue
processing was finished.

Eventually we moved meta-queue processing of do_nht_processing
to after the dataplane sent the main pthread some results.
This of course left us with a timing hole where if a connected
route came in and we received a data plane response *before*
the meta queue was processed we would not do the work as necessary.

Move the lsp processing to a flag off of the rib_dest_t. If it
is marked then we need to process lsps.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:22:22 -04:00
Donald Sharp
50872b0804 zebra: Add detailed debugging command for NHT tracking
Add a detailed debugging command for NHT tracking and add
the detailed output to the log about why we make some decisions
that we are.  I tried to model this like the rib processing
detailed debugs that we added a few months back.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:22:22 -04:00
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
Christian Franke
eab6daa2a0 docker/alpine: Update buildscript to keep the docker image around
Don't delete the Alpine docker image after the build.

Also, extract the packages from the build stage, so that we can
remove them from the final image.
2019-03-27 15:39:54 +01: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
0844023418 doc: update build docs for Ubuntu 14.04
Same as priors

Tested on Ubuntu 14.04

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-26 22:04:49 +00:00
Quentin Young
650c632224 doc: update build docs for Ubuntu 16.04
Same updates as Ubuntu 18.04 doc

Tested on Ubuntu 16.04

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-26 21:16:34 +00: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
Christian Franke
eb3400c12b docker/alpine/build.sh: Install packages to docker/alpine
The packages resulting from the Alpine build should be installed
to docker/alpine and not to the general docker directory.
2019-03-26 18:33:45 +01:00
Christian Franke
a4926e467e alpine/APKBUILD.in: Don't include daemons from srcdir
The daemons file will be generated during the build, so there is no
need to copy it over from the first stage.
2019-03-26 18:33:10 +01:00
Christian Franke
82ebca27d6 alpine/APKBUILD.in: Add libyang-dev dependency, drop binutils-libs
We need libyang to build FRR, so add it to the make dependencies.
Alpine will automatically detect it as runtime dependency, so no
need to add it there.

The package binutils-libs doesn't exist anymore, so remove it from
the dependencies.
2019-03-26 18:32:50 +01:00
Christian Franke
e3f80e1e2f docker/alpine: Unbreak build by using edge/testing
As we need libyang, which is only part of Alpine Linux edge/testing,
update the Dockerfile to use this repository.

Also, update the Dockerfile to adhere more to best common practices.
2019-03-26 18:32:50 +01:00
Christian Franke
727aebd6a3 alpine: Move docker-start to Docker build
The standard Alpine package should not install docker glue,
so remove it from the APKBUILD and install it in the Dockerfile
instead.
2019-03-26 18:32:50 +01: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