Commit Graph

21187 Commits

Author SHA1 Message Date
Stephen Worley
54c6fa8e0a lib,doc: add onlink flag to nexthop group config
Add an `onlink` flag to nexthop group configuration.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
e90284d77f lib: add onlink flag to zapi_nh conversion helper
Add setting the onlink flag to the zapi_nh conversion
helper function so that we can set the onlink flag with
it when passing down NHGs from upper level protos.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
2b5ecd4ca6 zebra: fix route validity check with NHG ID
Fix check in zread where we determine validity of a route
based on reading in nexthops/checking ID is present.

We had a bad conditional that was determining a route
is bad if its not NHG ID based.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
cd53e3a6e6 zebra: use the passed proto from zapi
We were hard coding proto bgp for use with the NHG creation.

Use the actual passed one from zapi now that it exists.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
ac5d1091dc zebra: make NHG ID allocation smarter
Make NHG ID allocation smarter so it wraps once it hits
the lower bound for protos and performs a lookup to make
sure we don't already have that ID in use.

Its pretty unlikely we would wrap since the ID space is somewhere
around 24million for Zebra at this point in time.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
25645bd601 sharpd: print the correct ID the NHG is using
We were incrementing in the output the ID value when we
shouldnt be. The value the NHG is assigned is before its
incremented.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
54c89c9377 zebra: NHG ID bounds macros
Determine the NHG ID spacing and lower bound with ZEBRA_ROUTE_MAX
in macros.

Directly set the upperbound to be the lower 28bits of the uint32_t ID
space (the top 4 are reserved for l2-NHGs). Round that number down
a bit to make it more even.

Convert all former lower_bound calls to just use the macro.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
16b20ad062 zebra: dont update counter if outside of zebra ID range
When we receive a NHG from the kernel, we set the ID counter
to that to avoid using IDs owned from the kernel.

If we get one outside of zebra's range, lets not update it
since its probably one we created and never deleted anyway.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
2c41ef8c17 zebra: special handling for proto-NHG-based routes
For now let's assume proto-NHG-based routes are good to go
(we assume they are onlink/interface based anyway) and bypass
route resolution altogether.

Once we determine how to handle recursive nexthop-resolution for
proto-NHGs we will revisit this.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
50db3f2f1d zebra: handle zapi routes with NHG ID set
Add code to properly handle routes sent with NHG ID rather
than a nexthop_group.

For now, we separate this from backup nexthop handling since that
should probably be added to the nhg_proto_add calls.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
dd1e105fe3 zebra: implement NHG proto replace
Implement the ability to replace an NHG sent down
from an upper level proto. With proto-owned NHGs, we make the
assumption they are ecmp and always treat them as a group
to make the replace from 1 -> 2 and 2 -> 1 quite a bit
easier.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
08da8bbc22 zebra: hash proto-created but zebra ID spaced NHGS
To prevent duplication of singleton NHGs, lets hash
any zebra-ID spaced NHGs sent from an upper level proto.

These would be singleton NHGs anyway and should prevent duplication
of dataplane installs.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
6c67f41f9e zebra,lib: command to only install proto-based nexthops
Add a command/functionality to only install proto-based nexthops.
That is nexthops owned/created by upper level protocols, not ones
implicitly created by zebra.

There are some scenarios where you would not want zebra to be
arbitrarily installing nexthop groups and but you still want
to use ones you have control over via lib/nexthop_group config
and an upper level protocol.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
0885b1e3d9 zebra: implement protocol NHG Add/Del
Implement the underlying zebra functionality to Add/Del an
internal zebra and kernel NHG.

These NHGs are managed by the upperlevel protocols that send them
down via zapi messaging.

They are not put into the overall zebra NHG hash table and only
put into to the ID table. Therefore, different protos cannot
and will not share NHGs.

The proto is also set appropriately when sent to the kernel.

Expand the separation of Zebra hashed/shared/created NHGs and
proto created and mangaged NHGs.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Stephen Worley
5b27c09d4e zebra: remove NHG unhashable flag and its code
Remove the code for setting a NHG as unhashable. Originally
this was to prevent us from attempting to put duplicates from
the kernel in our hashtable.

Now I think its better to not use them in the hashtable at all
and only track them in the ID table. Routes will still be able
to use them if they specify the ID explicitly when sending Zebra
the route, but 'normal' routes we hash the nexthop group on
will not.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Donald Sharp
569e87c0c8 sharpd: add abilty to send a nhg to zebra
Modify the sharpd program to have the ability to pass down
a NHG and then operate on it for route installation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Donald Sharp
27141ea94e lib, zebra: Add ability to send down a nhgid over route install
Modify the send down of a route to use the nexthop group id
if we have one associated with the route.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Donald Sharp
2f35a820bf lib, zebra: Add ZAPI_NHG_ADD|DELETE
Add the ability to send a NHG from an upper level protocol down to
zebra.  ZAPI_NHG_ADD encompasses both the addition and replace
semantics ( If the id passed down does not exist yet, it's Add,
else it's a replace ).

Effectively zebra will take this nhg passed down save the nhg
in the id hash for nhg's and then create the appropriate nhg's
and finally install them into the linux kernel.  Notification
will be the ZAPI_NHG_NOTIFY_OWNER zapi message for normal
success/failure messaging to the installing protocol.

This work is being done to allow us to work with EVPN MH
which needs the ability to modify NHG's that BGP will own
and operate on.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Donald Sharp
f70da2a390 zebra: Refactor nexthop reading from zapi messages
Take the zebra code that reads nexthops and combine it
into one function so that when we add zapi messages
to send/receive nexthops we can take advantage of this function.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Donald Sharp
224b3c8a79 lib: Add the ability to grab a nhg starting id
Add new function zclient_get_nhg_start that will allow an
upper level protocol to get a starting point for it's own
nhg space.  Give each protocol a space of 50 million.
zebra will own the space from 0 - 199999999 because
of SYSTEM, KERNEL and CONNECT route types.

This is the start of some work that will allow upper
level protocols to install and maintain their own NHG's.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Donald Sharp
786a9bd9eb zebra: Convert zserv_nexthop_num_warn to return bool
Allow us to key of the warning if we have one.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-09-28 12:40:59 -04:00
Igor Ryzhov
949467e2c1 vtysh: fix exit from keychain node
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-28 17:17:05 +03:00
Igor Ryzhov
460982cf42 vtysh: fix exit from babeld node
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-28 17:13:40 +03:00
Donatas Abraitis
557a306434
Merge pull request #7178 from taspelund/bgp_timers
bgpd: Use bgp instance's default keepalive interval if < (holdtime/3)
2020-09-28 09:44:21 +03:00
Rafael Zalamena
f9c8406170
Merge pull request #7187 from idryzhov/fix-configure
build: remove redundant commas
2020-09-27 22:07:42 -03:00
Igor Ryzhov
80525224c3 build: remove redundant commas
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-27 19:22:02 +03:00
Mark Stapp
1e5b2db644 tests: avoid python2 regex syntax
Update a few regexs to avoid python2-specific syntax

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-26 15:40:00 -04:00
Mark Stapp
45c3045aef tests: report uname info once per test
Report 'uname' info once per test, not once per
configured router in each test.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-26 15:40:00 -04:00
Mark Stapp
61196140a6 tests: improve unicode handling
Support more of the string/unicode interactions in various
topotests.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-26 15:40:00 -04:00
Mark Stapp
11761ab0f4 tests: python3 compat fixes for topotests: tabs and misc
Use only spaces in python files; no tabs; also a couple of small
api fixes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-26 15:40:00 -04:00
Renato Westphal
e4d09f608d
Merge pull request #7063 from idryzhov/yang-leafref
yang: use leafref instead of string
2020-09-26 15:12:13 -03:00
Renato Westphal
d7047a49cb
Merge pull request #7181 from volta-networks/fix_isis_timer_oflow
isisd: minor fixes and improvements
2020-09-26 15:03:53 -03:00
Donatas Abraitis
6b1ffbdb0d
Merge pull request #7182 from donaldsharp/bgp_static_32s
bgpd: Allow bgp static routes to use /32's
2020-09-26 20:07:49 +03:00
Donatas Abraitis
f969a2d613
Merge pull request #7171 from dslicenc/bgp-rid-update
bgpd: allow derived router-id update if previously 0x0
2020-09-26 19:58:00 +03:00
Ondřej Surý
3a52656c7d
Merge pull request #7183 from oerdnj/master
Update the Debian packaging (sync with debian/master branch)
2020-09-26 14:59:10 +02:00
Ondřej Surý
12868e9ce7 Lower the debhelper depends for Debian Jessie and Ubuntu Xenial
Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 12:14:32 +02:00
Ondřej Surý
81ad0b32ed Bump standards version
Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 12:14:26 +02:00
Ondřej Surý
36d3283e75 Sync frr-doc.doc-base, d/frr.conf and d/frr.install with debian/master branch 2020-09-26 09:24:02 +02:00
Ondřej Surý
6633ae2ac9 Sync debian/watchfrr.rc with debian/master branch 2020-09-26 09:24:02 +02:00
Ondřej Surý
e4e82f187e Depend on debhelper >= 10 and drop dh-systemd dependency (Closes: #958626)
dh-systemd was merged into debhelper in version 9.20160709 [1] and since
stretch, dh-systemd is an empty transitional package.

For bullseye there's an intend to drop this empty transitional package.

This commit drops the "| dh-systemd" alternative Build-Depends as it is no
longer required (not even for backports) and is only confusing.

For Debian Jessie, it's easier to add backported debhelper >= 10 to the
repository.
2020-09-26 09:23:39 +02:00
Ondřej Surý
7d7f70a935 Work around the sphinx-build error that doesn't copy images to texinfo
The sphinx-build (since version 2.0.0) doesn't install the images into the
texinfo build directory.  Workaround the issue, by copying the required
images from the source directory.
2020-09-26 09:23:39 +02:00
Ondřej Surý
0536ed66bb Use wrap-and-sort -a to unify debian/ wrapping and sorting
While it's ok to use individual wrapping/sorting in the debian/ source files,
it's often simpler to just go with the formatting supported by tools.  One such
tool is wrap-and-sort, so this commit re-wraps and re-sorts the debian/ files to
be unified and (-a) always wrapped.
2020-09-26 09:23:39 +02:00
Ondřej Surý
234b0ea7de Bump standards version to 4.5.0.2 (latest) - no change 2020-09-26 09:22:43 +02:00
Ondřej Surý
47ebc83368 Convert the package to dh compat level 10
There are couple of related changes:

* Bump the debhelper dependency to the version at least in Debian Jessie
* Drop the dh-autoreconf, autotools-dev dependency, this is automatically
  included.
* Drop the --parallel, --with=systemd and --with=autoreconf, this is
  automatically enabled in dh compat level 10, add a --without=systemd
  when requested via build profile.
2020-09-26 09:22:43 +02:00
Ondřej Surý
a32cd91a25 Update and simplify d/watch 2020-09-26 09:22:43 +02:00
Ondřej Surý
ecf2b90498 Make lsb-base a hard dependency
Directly depend on lsb-base in Debian, so we the shims are only used
on systems without LSB.

Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 09:22:43 +02:00
Ondřej Surý
9201c39f62 Remove mention of pkg.frr.snmp build profile from debian/README.Debian
The pkg.frr.snmp build profile is no longer present in the Debian build scripts,
so this just cleans up the old documentation that mentions it.

Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 09:22:23 +02:00
Ondřej Surý
e5368acf89 Add missing lsof dependency
The logrotate script for frr uses lsof, but the package didn't depend on the
it.

Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 09:22:23 +02:00
Ondřej Surý
5632ff61df Remove unused debian/watchfrr.rc file
The debian/watchfrr.rc file was not install, so we just remove the cruft.

Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 09:22:23 +02:00
Ondřej Surý
322c00824a Use dh_installinit capabilities to install frr.tmpfile
The debian/frr.conf was manually installed as systemd-tmpfiles configuration,
but the dh_installinit now has capability to install it automatically if named
debian/frr.tmpfile.

Signed-off-by: Ondřej Surý <ondrej@sury.org>
2020-09-26 09:22:23 +02:00