Commit Graph

10712 Commits

Author SHA1 Message Date
Quentin Young
89f4e5077b
zebra: standardize ZAPI message handler args
A lot of the handler functions that are called directly from the ZAPI
input processing code take different argument sets where they don't need
to. These functions are called from only one place and all have the same
fundamental information available to them to do their work. There is no
need to specialize what information is passed to them; it is cleaner and
easier to understand when they all accept the same base set of
information and extract what they need inline.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12 14:57:05 -04:00
Quentin Young
9bcbcae2e4
zebra: add struct zmsghdr
Formalize the ZAPI header by documenting it in code and providing it to
message handlers free of charge to reduce complexity.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12 14:57:05 -04:00
Quentin Young
8068a649a7
zebra: dont return a status code in zapi handlers
All of the ZAPI message handlers return an integer that means different
things to each of them, but nobody ever reads these integers, so this is
technical debt that we can just eliminate outright.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12 14:57:05 -04:00
Quentin Young
3fc174e18c
tests: add unit test for zlog
Just tests zlog_hexdump right now

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12 14:56:28 -04:00
Quentin Young
2cf63c3561
lib: fixup zlog_hexdump
* Allocate correct amount of memory
* Use snprintf() instead of sprintf()

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12 14:47:50 -04:00
Donald Sharp
9d16566bb3
Merge pull request #1868 from ajones-rvbd/ajones-for-upstream
docs/install.texi: document --enable-numeric-version
2018-03-12 14:09:41 -04:00
Arthur Jones
12cd053cd6 docs/install.texi: document --enable-numeric-version
Document the configure option to strip non-numeric characters from
the version string.

Testing done:

Build alpine packages in docker, run texinfo on the doc apk package.

Issue: https://github.com/FRRouting/frr/issues/1859
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
2018-03-12 09:46:05 -07:00
Christian Franke
6bd0508a89 tools/frr-reload.py: process vnc settings as sub-context
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-12 17:30:16 +01:00
Renato Westphal
cea2ce5fbe
Merge pull request #1858 from qlyoung/gitignore-clippy-sources
*: globally ignore clippy-generated source
2018-03-12 12:21:24 -03:00
Quentin Young
688818844f
lib: add convenience debugging macros
* Add DEBUG*() macros

This set of macros allows you to write printf-like debugging lines that
automatically check whether a debug is on before printing. This should
eliminate the need for explicit checks in simple cases. For example:

	if (SUCH_AND_SUCH_DEBUG_IS_ON) {
		zlog_warn(...);
	}

Becomes:

	DEBUG(warn, such_and_such, ...);

Or, equivalently,

	DEBUGE(such_and_such, ...);

The levels passed to DEBUG are expanded into the names of zlog_*
functions, so the same zlog levels are available. There's also a set of
macros that have the level built into them; DEBUGE for errors, DEBUGW
for warnings, etc. Good for brevity.

* Add singular setting macros

Change the 'SET' macros to accept a boolean indicating whether the
provided bits should be set or unset, and map on/off macros to them.
Helps condense code where you already have a boolean condition that
tells you what you want to do as you can avoid writing the branch.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12 11:17:02 -04:00
Donald Sharp
aed03cfd3c
Merge pull request #1866 from ajones-rvbd/ajones-for-upstream
alpine: minimal alpine packaging
2018-03-12 08:23:53 -04:00
Arthur Jones
c737c7bab3 alpine: minimal alpine packaging
For building dev packages for alpine, we provide a minimal APKBUILD
file and add a configure option for only numeric versions in the
VERSION variable as alpine does not allow non-numeric characters
in the version string.

These changes allow alpine to be built, but don't yet provide a
mechanism to build.  Changes to do the build in docker are coming
soon...

Testing done:

Built alpine packages in local docker environment, packages
showed no "dev" in the package name.  Also built CentOS packages
with numeric version disabled and the "dev" is still in the package
name.

Issue: https://github.com/FRRouting/frr/issues/1859
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
2018-03-11 11:28:45 -07:00
Christian Franke
58e5d748c9 isisd: add nerd-knob to turn three-way-adj off
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-10 18:38:03 +01:00
Christian Franke
44b895115e isisd: P2P adjacencies should only be included in LSPDB/SPF when they are up 2018-03-10 18:38:03 +01:00
Christian Franke
42fe262197 isisd: implement threeway adjacencies
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-10 18:38:03 +01:00
Christian Franke
9fe2120814 isisd: add support for TLV 240 P2P Three-Way Adjacency
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-10 18:38:03 +01:00
Christian Franke
9703538621 isisd: remove unused debug code
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-10 18:38:03 +01:00
Christian Franke
0849c75e5d isisd: allocate circuit_id only for broadcast circuits
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-10 18:38:03 +01:00
Christian Franke
c59f88c809 isisd: cleanup usage of circuit_id
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-03-10 18:38:03 +01:00
Christian Franke
98c5bc15e7 isisd: revert some counterproductive indentation
This reverts some of commit 996c93142d.
2018-03-10 18:37:12 +01:00
Donald Sharp
6680578bb6
Merge pull request #1847 from msablic/pim_auto_mtrace
pimd: mtrace only IGMP sockets
2018-03-10 07:55:48 -05:00
Donald Sharp
b82aab8c86
Merge pull request #1861 from ajones-rvbd/ajones-for-upstream
zebra/if_netlink: compile under musl-libc
2018-03-10 07:05:14 -05:00
vivek
7d39cd191c Merge branch 'master' of https://github.com/frrouting/frr into pmsi-parse-display
Conflicts:
	bgpd/bgp_attr.c
2018-03-10 04:14:17 +00:00
vivek
4e262455a2 Merge branch 'master' of https://github.com/frrouting/frr into evpn-ipv6-tenant-routing
Conflicts:
	bgpd/bgp_evpn.c
2018-03-10 04:03:41 +00:00
Arthur Jones
ba85366ad3 zebra/if_netlink: compile under musl-libc
musl-libc is a lightweight libc used by alpine linux:

https://www.musl-libc.org/

AFAICT, this is the only change to the source needed to get
basic frr support compiling on musl.

Two changes in one patch, get ethhdr from netinet/if_ether.h
and replace the only __caddr_t I could find in the source base
with caddr_t.

Testing done:

Compiled apk packages using a docker environment (patches
coming soon) also compiled redhat and debian using a similar
docker environment (RFC patches for those changes are queued
up too)...

Issue: https://github.com/FRRouting/frr/issues/1859
Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
2018-03-09 15:20:14 -08:00
Quentin Young
2b1236a27e
*: globally ignore clippy-generated source
Tired of dealing with this

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-09 17:52:15 -05:00
G. Paul Ziemba
fd9b55a2b7 vtysh: add bgpd vpn-policy nodes
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
ddb5b4880b bgpd: vpn-vrf route leaking
- add "debug bgp vpn label" CLI
    - improved debug messages for "debug bgp bestpath"
    - send vrf label to zebra after zebra informs bgpd of vrf_id
    - withdraw vrf_label from zebra if zebra informs bgpd that vrf_id is disabled
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
c44bd447cd isisd: debug msg: display distance when adding redist route
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
3d9f730216 ospfd: resend redistribute request to zebra after ospf gets notified of vrf_id
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
5c780bc943 ospfd: debug detail for redistribute
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
1b6e575b2a zebra: debug additional detail for route announce/redist
alos add a comment

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
ff954ba48b zebra: add BGP VPN route type to meta_queue_map
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
70172b1ca5 lib: fix comment in zclient.c
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
9f36abf909 lib: Keep indent/clang happy
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:42:40 -05:00
G. Paul Ziemba
c8ff868c1a lib: add new BGP VPN policy command node
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:40:37 -05:00
G. Paul Ziemba
51ade3a27f lib: add BGP VPN route type
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:40:37 -05:00
G. Paul Ziemba
e0207895f7 bgpd: some more debug info when 'debug updates out' is set
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:40:36 -05:00
G. Paul Ziemba
b8e031e542 bgpd: rfapi: avoid null pointer dereference in vnc_export_bgp_disable if rfapi is not provisioned
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2018-03-09 16:40:36 -05:00
Philippe Guibert
58e7db106d
Merge pull request #1813 from donaldsharp/pbr_setup
Pbr setup
2018-03-09 18:05:03 +01:00
Quentin Young
b1087f3507
lib: frr_pthread int size nits
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-09 11:20:53 -05:00
Quentin Young
d47ae3db4c
doc: don't build html by default
Since docs are rebuilt on every make invocation, don't bother building html by
default to save a bit of time.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-09 11:12:38 -05:00
Donald Sharp
b6c5d34354 lib, zebra: Add Rule insertion success/failure messages
Add code to allow rule insertion notifications to be
sent back up the stack.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:11:40 -05:00
Quentin Young
8c60fed743
doc: disable parallel build
Sphinx is not designed to be run in parallel and exhibits filesystem race
conditions if it is. Disable parallel build.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-09 11:11:04 -05:00
Donald Sharp
a03219780f zebra: Make the ifp part of the rule structure
Every place we need to pass around the rule structure
we need to pass around the ifp as well.  Move it into
the structure.  This will also allow us to notify up
to higher level protocols that this worked properly
or not better too.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:07:41 -05:00
Donald Sharp
43fe6a2a73 zebra: Keep track of rules written
Keep track of rules written into the kernel.  This will
allow us to delete them on shutdown if we are not cleaned
up properly.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:07:41 -05:00
Donald Sharp
1fbfe5a572 zebra: Cleanup api
Allow the add/delete to go through a intermediary function in
zebra_pbr.c instead of directly to the underlying os call.  This
will allow future refinements to track the data a bit better
so that on shutdown we can delete the rules.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:07:41 -05:00
Donald Sharp
fd71d73eb3 zebra: Cleanup a couple of api issues
1) use uint32_t instead of u_int32_t as we are supposed to
2) Consolidate priority into the rule.
3) Cleanup the api from this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:07:41 -05:00
Donald Sharp
e16abbb303 lib, zebra: Add rule encoding
Add some code to pass the rule we want installed into
the kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:07:41 -05:00
vivek
942bf97b13 *: PBR - netlink interaction and basic definitions
Implement netlink interactions for Policy Based Routing. This includes
APIs to install and uninstall rules and handle notifications from the
kernel related to rule addition or deletion. Various definitions are
added to facilitate this.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-09 11:07:41 -05:00