]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
6 years agolib, zebra: fix formatting and style 2311/head
Fredi Raspall [Tue, 8 May 2018 08:13:20 +0000 (10:13 +0200)]
lib, zebra: fix formatting and style

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agobgpd/bgp_zebra.c: Fix process of label-chunk msg
Fredi Raspall [Wed, 2 May 2018 14:30:26 +0000 (16:30 +0200)]
bgpd/bgp_zebra.c: Fix process of label-chunk msg

All messages to/from the label manager include two additional
fields: protocol and instance. This patch fixes the parsing
of label chunks response used by BGPd, which did not consider
the two fields.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agozebra, lib: Fix SA warning and formatting.
Fredi Raspall [Tue, 1 May 2018 18:43:14 +0000 (20:43 +0200)]
zebra, lib: Fix SA warning and formatting.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agozebra: LM temporally ignore id/proto mismatch error
Fredi Raspall [Fri, 27 Apr 2018 18:29:52 +0000 (20:29 +0200)]
zebra: LM temporally ignore id/proto mismatch error

Since BGPd is not currently setting ID and PROTOCOL in label
requests, temporally disable mismatch error propagation.

This commit will be reverted once fixes for BGPd and label
manager are integrated.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agozebra: Fix label manager proxy mode.
Fredi Raspall [Fri, 27 Apr 2018 16:47:51 +0000 (18:47 +0200)]
zebra: Fix label manager proxy mode.

The current implementation did not consider multiple clients to
a label-manager acting as proxy, i.e. relaying messages to another
label manager. Specifically, upon a client's request, it checked
the socket & buffer from the actual label manager for pending
responses and directly copìed them to the client --currently--
being served. As a result, if two clients (e.g. ldpd and bgpd)
sent requests, it could happen that responses being 'on the wire'
from the real label manager towards the proxy, where relayed to
the wrong client. This patch, which requires all msgs to include
a a proto & instance pair, lookups up the zserv client that a
message (response) is to be relayed to.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agozebra, lib: Add client proto & instance in zserv
Fredi Raspall [Thu, 26 Apr 2018 08:56:19 +0000 (10:56 +0200)]
zebra, lib: Add client proto & instance in zserv

Add client proto and instance number in all msg (request and
responses) to/form a label manager. This is required for a
label manager acting as 'proxy' (i.e. relaying messages towards
another label manager) to correctly deliver responses to the
requesting clients.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agozebra: fix broken label manager proxy mode.
Fredi Raspall [Wed, 25 Apr 2018 10:18:10 +0000 (12:18 +0200)]
zebra: fix broken label manager proxy mode.

In a prior refactor, label manager proxy functionality
was broken in two places:

1) in function relay_response_back(), "dst" stream was
accidentally  replaced by "src".

2) in zread_relay_label_manager_request(), src was set to point
to a global struct stream *ibuf that was not used/initialized
anywhere.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
6 years agoMerge pull request #2285 from qlyoung/update-doc-titles-5.0
Jafar Al-Gharaibeh [Sun, 27 May 2018 16:51:32 +0000 (12:51 -0400)]
Merge pull request #2285 from qlyoung/update-doc-titles-5.0

doc: update doc titles [5.0]

6 years agodoc: update doc titles 2285/head
Quentin Young [Wed, 9 May 2018 14:44:08 +0000 (10:44 -0400)]
doc: update doc titles

Should be a bit easier to Google this way.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
6 years agoMerge pull request #2269 from opensourcerouting/rpki-spec-fix-5.0
Donald Sharp [Tue, 22 May 2018 17:11:57 +0000 (13:11 -0400)]
Merge pull request #2269 from opensourcerouting/rpki-spec-fix-5.0

redhat: Fix RPKI RPM build option (dev/5.0)

6 years agoredhat: Fix RPKI RPM build option 2269/head
Martin Winter [Mon, 21 May 2018 13:41:42 +0000 (06:41 -0700)]
redhat: Fix RPKI RPM build option

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
6 years agoMerge pull request #2244 from donaldsharp/cp_into_50
Renato Westphal [Wed, 16 May 2018 14:45:41 +0000 (11:45 -0300)]
Merge pull request #2244 from donaldsharp/cp_into_50

Fix compilation against rtrlib with ssh

6 years agoFix compilation against rtrlib with ssh 2244/head
Andrey Korolyov [Sun, 13 May 2018 10:36:50 +0000 (13:36 +0300)]
Fix compilation against rtrlib with ssh

Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
6 years agoMerge pull request #2224 from qlyoung/fix-vpath-build-5.0
Lou Berger [Tue, 15 May 2018 15:48:50 +0000 (11:48 -0400)]
Merge pull request #2224 from qlyoung/fix-vpath-build-5.0

doc: support VPATH builds [5.0]

6 years agodoc: support VPATH builds 2224/head
Quentin Young [Wed, 2 May 2018 18:42:28 +0000 (14:42 -0400)]
doc: support VPATH builds

Documentation was not fully using Automake / Autoconf and therefore needs
modifications to support black magic VPATH builds.

* Convert Makefile's to Autoconf-controlled Makefile.in's
* Tweak loading of pygments lexer to handle runtime paths
* Update .gitignore's as necessary

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
6 years agoMerge pull request #2219 from pguibert6WIND/misc_crashes_moving_ifp_from_netns
Donald Sharp [Sat, 12 May 2018 14:01:31 +0000 (10:01 -0400)]
Merge pull request #2219 from pguibert6WIND/misc_crashes_moving_ifp_from_netns

Misc crashes moving ifp from netns

6 years agoMerge pull request #2218 from pguibert6WIND/issue_2177
Donald Sharp [Sat, 12 May 2018 13:59:45 +0000 (09:59 -0400)]
Merge pull request #2218 from pguibert6WIND/issue_2177

pbrd: encode null fwmark to be consistent with zebra decode rule

6 years agozebra: avoid inactivating twice an interface 2219/head
Philippe Guibert [Fri, 4 May 2018 11:49:56 +0000 (13:49 +0200)]
zebra: avoid inactivating twice an interface

This code is a sanity check to avoid double unlink of interface.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agozebra: fix missing node attribute set in ifp
Philippe Guibert [Fri, 4 May 2018 07:43:52 +0000 (09:43 +0200)]
zebra: fix missing node attribute set in ifp

There are cases when switching from one netns to an other one, where the
if_table registration by index has not been flushed. This fix mitigates
the potential crashes, in case the ifp->node pointer is null, the value
is overwritten by the route_node obtained.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agozebra: avoid case where same interface pointer returned
Philippe Guibert [Fri, 4 May 2018 07:26:10 +0000 (09:26 +0200)]
zebra: avoid case where same interface pointer returned

When checking for a duplicate interface in an other NETNS, one may find
an interface in default VRF. That interface may have been moved to that
default VRF, for further action. Prevent from doing any action at this
point.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agozebra: improve logs when replacing interface to an other netns
Philippe Guibert [Tue, 24 Apr 2018 10:19:48 +0000 (12:19 +0200)]
zebra: improve logs when replacing interface to an other netns

The log information is better displated.
Also the variable name fits better with other_ifp, than with old_ifp.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agopbrd: encode null fwmark to be consistent with zebra decode rule 2218/head
Philippe Guibert [Mon, 7 May 2018 16:59:41 +0000 (18:59 +0200)]
pbrd: encode null fwmark to be consistent with zebra decode rule

A null 4-byte long fwmark is encoded in pbr rule.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agoMerge pull request #2165 from pguibert6WIND/bgp_fs_pbr
Russ White [Tue, 8 May 2018 23:55:44 +0000 (19:55 -0400)]
Merge pull request #2165 from pguibert6WIND/bgp_fs_pbr

Bgp Flowspec Policy Based Routing

6 years agoMerge pull request #2176 from opensourcerouting/dev-5.0-isis-redist-metric
Donald Sharp [Tue, 8 May 2018 15:31:09 +0000 (11:31 -0400)]
Merge pull request #2176 from opensourcerouting/dev-5.0-isis-redist-metric

dev/5.0: isis redist metric

6 years agoisisd: use 0 as default-metric for redistribution 2176/head
Christian Franke [Mon, 7 May 2018 11:46:03 +0000 (13:46 +0200)]
isisd: use 0 as default-metric for redistribution

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
6 years agovtysh: add bgp_flowspec_vty to Makefile.am 2165/head
Philippe Guibert [Wed, 25 Apr 2018 07:24:00 +0000 (09:24 +0200)]
vtysh: add bgp_flowspec_vty to Makefile.am

In order to be able to configure flowspec from vtysh, the bgp_vty
flowspec file is added into vtysh files to parse.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: handle bgp pbr hash list destroy upon BGP destroy
Philippe Guibert [Tue, 24 Apr 2018 14:35:00 +0000 (16:35 +0200)]
bgpd: handle bgp pbr hash list destroy upon BGP destroy

Upon BGP destroy, the hash list related to PBR are removed.
The pbr_match entries, as well as the contained pbr_match_entries
entries.
Then the pbr_action entries. The order is important, since the former
are referencing pbr_action. So the references must be removed, prior to
remove pbr action.
Also, the zebra associated contexts are removed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: rewiew bgp pbr log messages with debug bgp pbr
Philippe Guibert [Wed, 18 Apr 2018 15:49:25 +0000 (17:49 +0200)]
bgpd: rewiew bgp pbr log messages with debug bgp pbr

log messages are now guarded with debug bgp pbr.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: add pbr error flag for pbr errors
Philippe Guibert [Wed, 18 Apr 2018 15:46:49 +0000 (17:46 +0200)]
bgpd: add pbr error flag for pbr errors

Some errors messages were not guarded. now those log messages
are guarded.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: handle FS redirect VRF rule in PBR
Philippe Guibert [Tue, 17 Apr 2018 16:32:49 +0000 (18:32 +0200)]
bgpd: handle FS redirect VRF rule in PBR

Upon redirect VRF message from FS, add a default route to the VRF
interface associated to the VRF.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: get table identifier from table manager
Philippe Guibert [Tue, 3 Apr 2018 13:06:50 +0000 (15:06 +0200)]
bgpd: get table identifier from table manager

A table chunk of 100000 is allocated from zebra, and when needed in
flowspec, the table identifier is extracted from that chunk.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: handle FS redirect IP rule in PBR
Philippe Guibert [Wed, 28 Mar 2018 12:51:57 +0000 (14:51 +0200)]
bgpd: handle FS redirect IP rule in PBR

If a new rule is identified, a new table identifier is created.
In that table, add a default route when possible. If redirect IP rule is
identified, then add a default route to that IP address.
If redirect VRF is identified, nothing is done for now

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: allow flowspec entries to be announced to zebra
Philippe Guibert [Fri, 26 Jan 2018 17:36:24 +0000 (18:36 +0100)]
bgpd: allow flowspec entries to be announced to zebra

Flowspec entries are allowed to be announced.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: hash lookup for iprule entries
Philippe Guibert [Mon, 12 Mar 2018 14:11:33 +0000 (15:11 +0100)]
bgpd: hash lookup for iprule entries

once an iprule has been created, a notification is sent back, and the
context of bgp_action is searched.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: hash lookup for ipset and ipset entries
Philippe Guibert [Mon, 12 Mar 2018 14:02:57 +0000 (15:02 +0100)]
bgpd: hash lookup for ipset and ipset entries

relevant structures, after being written to zebra, are lookup up with
their identifiers.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: hash_lookup for iptables
Philippe Guibert [Mon, 12 Mar 2018 11:56:06 +0000 (12:56 +0100)]
bgpd: hash_lookup for iptables

This commit is reading the installed2 value from bgp_pbr_match hash set.
Once value matches with the one received, the walk stops and the last
bgp_pbr_match structure is stored in a static entry, so that the entry
is obtained.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: inject policy route entry from bgp into zebra pbr entries.
Philippe Guibert [Thu, 15 Mar 2018 15:06:59 +0000 (16:06 +0100)]
bgpd: inject policy route entry from bgp into zebra pbr entries.

Once the bgp flowspec entry is validated, then that means that zebra is
able to handle the entries.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: handle configuration of iptables with zebra
Philippe Guibert [Mon, 12 Mar 2018 08:38:53 +0000 (09:38 +0100)]
bgpd: handle configuration of iptables with zebra

The API for filling in an IPTABLE_ADD and IPTABLE_DELETE message.
Also, the API is handling the notification callback, so as to know if
zebra managed to add or delete the relevant iptable entry.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: add function handling flowspec entries to pass to zebra
Philippe Guibert [Thu, 8 Mar 2018 18:16:03 +0000 (19:16 +0100)]
bgpd: add function handling flowspec entries to pass to zebra

Add a policy-route API to handle flowspec entry.
The entry is analysed, converted, and
selected if it is possible to inject the flowspec entry in local policy
routing entries.
redirect IP and redirect VRF actions are handled. The former extracts
the IPv4 address to redirect traffic to. The latter calculates the
matching VRF to redirect traffic to.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: utility routine to convert flowspec actions into pbr actions
Philippe Guibert [Thu, 8 Mar 2018 18:13:44 +0000 (19:13 +0100)]
bgpd: utility routine to convert flowspec actions into pbr actions

This utility routine in bgp ecommunity converts the flowspec actions
into a readable format in a policy routing action context.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: add convert function from flowspec to pbr match
Philippe Guibert [Thu, 8 Mar 2018 18:11:39 +0000 (19:11 +0100)]
bgpd: add convert function from flowspec to pbr match

This utility function analyses flowspec nlri and converts it into
readable structures. The structure is based on bgp_pbr_match structure
previously defined.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: add bgp_pbr_route structure
Philippe Guibert [Thu, 8 Mar 2018 16:41:15 +0000 (17:41 +0100)]
bgpd: add bgp_pbr_route structure

This structure is the model exchange between some bgp services like
flowspec and the policy routing service. This structure reflects what
the nlri entry means. To handle that structure, a dump routine is made
available. Also, a validation function is here to cancel a policy route
installation, whenever it is not possible to install the requested
policy routing.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: add [no] debug bgp pbr vty command
Philippe Guibert [Fri, 9 Mar 2018 09:02:25 +0000 (10:02 +0100)]
bgpd: add [no] debug bgp pbr vty command

This command is used to troubleshoot the routes that are installed inbgp
pbr fib, before being injected in zebra.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: initialise hash lists for pbr
Philippe Guibert [Thu, 8 Mar 2018 16:23:02 +0000 (17:23 +0100)]
bgpd: initialise hash lists for pbr

bgp structure is being extended with hash sets that will be used by
flowspec to give policy routing facilities.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: communication with zebra for ipset & iprule handling
Philippe Guibert [Thu, 8 Mar 2018 14:39:19 +0000 (15:39 +0100)]
bgpd: communication with zebra for ipset & iprule handling

The APIs that handle ipset and iprule contexts from zebra are being
handled in this commit.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agobgpd: support for policy-routing context used with flowspec
Philippe Guibert [Thu, 8 Mar 2018 14:37:06 +0000 (15:37 +0100)]
bgpd: support for policy-routing context used with flowspec

BGP flowspec will be able to inject or remove policy-routing contexts,
thanks to some protocols like flowspec. This commit adds some the APIS
necessary to create/delete policy routing contexts that will be injected
then into zebra.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agoconfigure: Update version of software frr-5.0-dev
Martin Winter [Wed, 2 May 2018 14:24:47 +0000 (07:24 -0700)]
configure: Update version of software

Start of 5.0 development branch.
Update of configure.ac to reflect verison change

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
6 years agoMerge pull request #2157 from donaldsharp/zebra_zebra_zebra
Martin Winter [Wed, 2 May 2018 11:16:28 +0000 (04:16 -0700)]
Merge pull request #2157 from donaldsharp/zebra_zebra_zebra

zebra: Fix crash on *BSD

7 years agozebra: Fix crash on *BSD 2157/head
Donald Sharp [Wed, 2 May 2018 03:24:53 +0000 (23:24 -0400)]
zebra: Fix crash on *BSD

The zns->ns pointer is not created until we get a callback
from the kernel that a ns exists.  This should potentially
fix a crash in the *BSD code path.

Fixes: #2152
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agoMerge pull request #2148 from opensourcerouting/snapupdate
Lou Berger [Tue, 1 May 2018 16:15:42 +0000 (12:15 -0400)]
Merge pull request #2148 from opensourcerouting/snapupdate

Update SNAP Package to add EIGRP, Babel and PRD

7 years agoMerge pull request #2119 from qlyoung/fix-vtysh-no-write-config
Lou Berger [Tue, 1 May 2018 15:51:28 +0000 (11:51 -0400)]
Merge pull request #2119 from qlyoung/fix-vtysh-no-write-config

vtysh: fix failure to write config w/o watchfrr

7 years agoMerge pull request #2140 from donaldsharp/sharp_doc
Lou Berger [Tue, 1 May 2018 15:15:59 +0000 (11:15 -0400)]
Merge pull request #2140 from donaldsharp/sharp_doc

doc: Add some documentation for the sharp daemon

7 years agosnapcraft: Add PBR daemon to snap package 2148/head
Martin Winter [Tue, 1 May 2018 01:53:18 +0000 (18:53 -0700)]
snapcraft: Add PBR daemon to snap package

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
7 years agosnapcraft: Add eigrp daemon to snap package
Martin Winter [Tue, 1 May 2018 01:29:16 +0000 (18:29 -0700)]
snapcraft: Add eigrp daemon to snap package

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
7 years agosnapcraft: Add babel daemon to snap package
Martin Winter [Tue, 1 May 2018 01:03:53 +0000 (18:03 -0700)]
snapcraft: Add babel daemon to snap package

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
7 years agobabeld: fix cli option to override config file (-f)
Martin Winter [Tue, 1 May 2018 01:02:27 +0000 (18:02 -0700)]
babeld: fix cli option to override config file (-f)

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
7 years agoMerge pull request #2139 from donaldsharp/map
Renato Westphal [Tue, 1 May 2018 00:50:17 +0000 (21:50 -0300)]
Merge pull request #2139 from donaldsharp/map

Map

7 years agosnapcraft: Fix missing runtime lib dependencies
Martin Winter [Mon, 30 Apr 2018 23:45:31 +0000 (16:45 -0700)]
snapcraft: Fix missing runtime lib dependencies

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
7 years agodoc: Add some documentation for the sharp daemon 2140/head
Donald Sharp [Mon, 30 Apr 2018 00:35:02 +0000 (20:35 -0400)]
doc: Add some documentation for the sharp daemon

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agoMerge pull request #2045 from LabNConsulting/working/master/nh-vrf-in-bgp-show
Renato Westphal [Mon, 30 Apr 2018 19:33:42 +0000 (16:33 -0300)]
Merge pull request #2045 from LabNConsulting/working/master/nh-vrf-in-bgp-show

bgpd: when showing routes, add nexthop vrf and announce-self flag

7 years agovtysh: fix failure to write config w/o watchfrr 2119/head
Quentin Young [Wed, 25 Apr 2018 19:09:02 +0000 (15:09 -0400)]
vtysh: fix failure to write config w/o watchfrr

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
7 years agolib: Convert internal sequence number to int64_t 2139/head
Donald Sharp [Sun, 29 Apr 2018 16:40:12 +0000 (12:40 -0400)]
lib: Convert internal sequence number to int64_t

With the usage of a 32 bit number as a integer, but storing
non-signed values in it, we have cases where numbers greater
than 2 billion are being read in and stored and used before
lower value numbers, which of course is awful and mean.

Fixes: #2126
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agolib: convert plist data structures to using a bool
Donald Sharp [Sun, 29 Apr 2018 00:39:20 +0000 (20:39 -0400)]
lib: convert plist data structures to using a bool

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agoMerge pull request #2134 from donaldsharp/zzz-top
Lou Berger [Sun, 29 Apr 2018 12:50:52 +0000 (08:50 -0400)]
Merge pull request #2134 from donaldsharp/zzz-top

Clean up some issues found

7 years agolib: Convert true/false values to bool
Donald Sharp [Sat, 28 Apr 2018 23:52:41 +0000 (19:52 -0400)]
lib: Convert true/false values to bool

route_maps are using some int's as true/false so
let's convert them over to a bool.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: when showing routes, add nexthop vrf and announce-self flag 2045/head
G. Paul Ziemba [Mon, 9 Apr 2018 20:28:11 +0000 (13:28 -0700)]
bgpd: when showing routes, add nexthop vrf and announce-self flag

As part of recent vpn-vrf leaking changes, it is now possible for a
route to refer to a nexthop in a different vrf. There is also a new
route flag that means "when announcing this route, indicate myself
as the next-hop."

route_vty_out(): nexthops are appended with:

    "@VRFID" (where VRFID is the numerical vrf id) when different from
    the route's vrf;

    "<" when the route's BGP_INFO_ANNC_NH_SELF is set

This change also shows the route table's vrf id in the table header.

route_vty_out_detail(): show nexthop's vrf and announce-nh-self flag if
appropriate.

Both functions are also augmented to add json elements nhVrfId, nhVrfName,
and announceNexthopSelf as appropriate.

The intent of these changes is to make it easier to understand/debug
the relationship between a route and its nexthops.

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
7 years ago*: Move sharpd from developmental build to have to explicity enable it 2134/head
Donald Sharp [Fri, 27 Apr 2018 19:18:41 +0000 (15:18 -0400)]
*: Move sharpd from developmental build to have to explicity enable it

sharpd has started to see some use from our field engineers as
well as people attempting to build/test their environments
as a way of easily injecting a large number of routes.

Modify configure.ac to move sharpd from a development build
option to having to explicity enable it via `--enable-sharpd=yes`
in order for it to be built.

This will allow those who want to build it, to build it without
having to use the development build option.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years ago*: Actually allow end users to not build pbrd
Donald Sharp [Fri, 27 Apr 2018 19:04:40 +0000 (15:04 -0400)]
*: Actually allow end users to not build pbrd

The building of pbrd from a configure compile option
was not properly setup.  This should do that.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agotools: Cleanup code to handle sharp and pbr a bit better
Donald Sharp [Fri, 27 Apr 2018 18:58:56 +0000 (14:58 -0400)]
tools: Cleanup code to handle sharp and pbr a bit better

The sharp and pbr protocols needed a bit more handling
to be 'right' from a start/stop perspective.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agozebra: Add PBR and SHARP handling
Donald Sharp [Fri, 27 Apr 2018 18:53:46 +0000 (14:53 -0400)]
zebra: Add PBR and SHARP handling

We are missing some handling of PBR and SHARP protocols
for netlink operations w/ the linux kernel.

Additionally add a bread crumb for new developers( or existing )
to know to fixup the rt_netlink.c when we start handling new
route types to hand to the kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agoMerge pull request #2125 from qlyoung/fix-gcc-build-command-graph
Renato Westphal [Thu, 26 Apr 2018 19:47:15 +0000 (16:47 -0300)]
Merge pull request #2125 from qlyoung/fix-gcc-build-command-graph

lib: fix clippy build w/ gcc under certain configs

7 years agoMerge pull request #2120 from qlyoung/fix-stream-fifo-heap-corruption
Renato Westphal [Thu, 26 Apr 2018 16:37:25 +0000 (13:37 -0300)]
Merge pull request #2120 from qlyoung/fix-stream-fifo-heap-corruption

lib: fix heap corruption in stream_fifo_free

7 years agolib: fix clippy build w/ gcc under certain configs 2125/head
Quentin Young [Thu, 26 Apr 2018 16:31:45 +0000 (12:31 -0400)]
lib: fix clippy build w/ gcc under certain configs

GCC's linker driver sometimes gets confused when building clippy.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
7 years agoMerge pull request #2048 from donaldsharp/vrf_2_vrf
Lou Berger [Thu, 26 Apr 2018 15:43:18 +0000 (11:43 -0400)]
Merge pull request #2048 from donaldsharp/vrf_2_vrf

Vrf 2 vrf

7 years agolib: fix heap corruption in stream_fifo_free 2120/head
Quentin Young [Wed, 25 Apr 2018 21:16:55 +0000 (17:16 -0400)]
lib: fix heap corruption in stream_fifo_free

When popping a stream from a stream_fifo, the stream->next pointer is
not NULL'd out. If this same stream is subsequently pushed onto a
stream_fifo (either the same one or a different one), because
stream_fifo's use tail insertion the ->next pointer is not updated and
thus will point to whatever the next stream in the first stream_fifo
was. stream_fifo_free does not check the count of the stream_fifo when
freeing its constituent elements, and instead walks the linked list.
Consequently it will continue walking into the first stream_fifo from
which the last stream was popped, freeing each stream contained there.
This leads to use-after-free errors.

This patch makes sure to set the ->next pointer to NULL when doing tail
insertion in stream_fifo_push and when popping a stream from a
stream_fifo.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
7 years agobgpd: Prevent vrf 2 vrf route leaking from going offbox. 2048/head
Donald Sharp [Wed, 25 Apr 2018 14:23:22 +0000 (10:23 -0400)]
bgpd: Prevent vrf 2 vrf route leaking from going offbox.

The vrf 2 vrf route leaking auto-derives RD and RT and
installs the routes into the appropriate vpn table.
These routes when a operator configured ipv[4|6] vpn
neighbors were showing up off box.  The RD and RT
values choosen are localy significant but globaly
useless and may cause confusion.

Put a special bit of code in to notice that we
should not be advertising these routes off box.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agodoc: Fixup doc for vrf-2-vrf as per suggestions in Review
Donald Sharp [Tue, 24 Apr 2018 14:21:29 +0000 (10:21 -0400)]
doc: Fixup doc for vrf-2-vrf as per suggestions in Review

Fixup the documentation to suggested changes from the Review.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Fix CI breakage
Donald Sharp [Fri, 20 Apr 2018 20:07:30 +0000 (16:07 -0400)]
bgpd: Fix CI breakage

This commit reverts part of ceb800e0edb9f8979cebb1e6be9497d787bee39c
as it was found to be causing issues in upstream CI.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Dissallow mixing of import vrf and vpn commands
Donald Sharp [Tue, 17 Apr 2018 14:37:55 +0000 (10:37 -0400)]
bgpd: Dissallow mixing of import vrf and vpn commands

Do not allow the import vrf commands to be mixed with
import vpn commands.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Eliminate loop over afi's for vpn vrf leaking commands
Donald Sharp [Tue, 17 Apr 2018 13:21:24 +0000 (09:21 -0400)]
bgpd: Eliminate loop over afi's for vpn vrf leaking commands

The loop over all afi's implies that these commands actually need
to loop over all afi's to check the vpn policy.  We know the
appropriate afi based upon the node we are in.  So just return
the correct afi to look at and then just apply it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: disallow importing a vrf into itself
Don Slice [Wed, 11 Apr 2018 20:41:43 +0000 (20:41 +0000)]
bgpd: disallow importing a vrf into itself

Prior to this fix, you could configure importing a vrf from inside
the same vrf.  This can lead to unexpected behavior in the leaking
process.  This fix disallows that behavior.

Ticket: CM-20539
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
7 years agobgpd: fix crash on "no import vrf" if no default bgp instance
Don Slice [Wed, 11 Apr 2018 16:12:39 +0000 (16:12 +0000)]
bgpd: fix crash on "no import vrf" if no default bgp instance

Tripped over a crash running the cli_crawler that occurred when the
sequence was doing "import vrf NAME" and "no import vrf NAME" inside
a vrf but a default bgp instance had not been created.  This fix
auto-creates the default instance if the "import vrf NAME" is
entered and a default instance does not exist.

Ticket: CM-20532
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: fix import vrf route-map issues
Don Slice [Tue, 10 Apr 2018 15:00:18 +0000 (15:00 +0000)]
bgpd: fix import vrf route-map issues

Prior to this fix, the import vrf route-map command only worked
if the route-map existed prior to the command.  Additionally, if
the import vrf route-map command was issued without an existing
route-map, the imported prefixes were not removed.  This fix
resolves both of thes mis-behaviors. bgp-smoke run with same
failures as base.

Ticket: CM-20459
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: CCR-7358
7 years agobgpd: fix incorrect config when importing vrf default
Don Slice [Sun, 8 Apr 2018 15:35:21 +0000 (15:35 +0000)]
bgpd: fix incorrect config when importing vrf default

Found that when doing "import vrf default" in another vrf, an
extra line was added to the configuration in error.   This fix
resolves that incorrect configuration. Manual testing will be
attached to the defect.

Ticket: CM-20467
Signed-off-by: Don Slice <dslice@cumulustnetworks.com>
Reviewed by: Donald Sharp <sharpd@cumulusnetworks.com>

7 years agobgpd: add ability to import default vrf routes
Don Slice [Fri, 30 Mar 2018 20:44:39 +0000 (20:44 +0000)]
bgpd: add ability to import default vrf routes

signed-off-by: Don Slice <dslice@cumulusnetworks.com>

7 years agobgpd: Use correct memory type
Donald Sharp [Mon, 16 Apr 2018 14:49:45 +0000 (10:49 -0400)]
bgpd: Use correct memory type

The usage of MTYPE_ECOMMUNITY for the free in ecommunity_del_val
caused the ref counts for the ecommunity to be incorrect.
Use MTYPE_ECOMMUNITY_VAL since that is what we are deleting.

Ticket: CM-20602
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Cleanup lines over 80 columns
Donald Sharp [Thu, 12 Apr 2018 12:59:08 +0000 (08:59 -0400)]
bgpd: Cleanup lines over 80 columns

There were a couple of instances of code extending
beyond 80 columns, clean it up with clang-format.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Add some vrf <-> vrf code comments
Donald Sharp [Tue, 17 Apr 2018 12:21:03 +0000 (08:21 -0400)]
bgpd: Add some vrf <-> vrf code comments

Note that when we are importing vrf EVA into vrf DONNA
we must keep track of all the vrfs EVA is being
exported into and we must also keep track of all the vrf's
that DONNA is receiving data from as well.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Fix SA warning found by clang.
Donald Sharp [Wed, 11 Apr 2018 16:41:55 +0000 (12:41 -0400)]
bgpd: Fix SA warning found by clang.

Quiet the SA warning, with an assert.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Cleanup warnings found in CI
Donald Sharp [Wed, 11 Apr 2018 13:40:50 +0000 (09:40 -0400)]
bgpd: Cleanup warnings found in CI

Cleanup some of the warnings found in the CI system.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Fix data type
Donald Sharp [Wed, 11 Apr 2018 13:34:40 +0000 (09:34 -0400)]
bgpd: Fix data type

The data type for a variable in bgp_ecommunity.c was
a non-standard type and was causing build failures
on some more obscure build targets.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agodoc: Update VRF 2 VRF route leaking documentation for bgp
Donald Sharp [Wed, 11 Apr 2018 13:31:22 +0000 (09:31 -0400)]
doc: Update VRF 2 VRF route leaking documentation for bgp

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: Fix memory leak on shutdown
Donald Sharp [Wed, 11 Apr 2018 13:20:19 +0000 (09:20 -0400)]
bgpd: Fix memory leak on shutdown

When we remove a bgp instance cleanup the
import_vrf and export_vrf lists.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agotests: Fix crash in test_mp_attr
Donald Sharp [Wed, 11 Apr 2018 12:56:44 +0000 (08:56 -0400)]
tests: Fix crash in test_mp_attr

Some recent changes in BGP now require that the
peer's nexthop have a valid ifp when we are looking
at:

case BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL:
case BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL:

This assumption makes sense for this type of Nexthop Attribute.
So for the test let's jimmy up a `fake` enough interface pointer
so that the actual test we can focus on what we are actually
testing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
7 years agobgpd: add import vrf route-map command
Don Slice [Thu, 29 Mar 2018 16:00:21 +0000 (16:00 +0000)]
bgpd: add import vrf route-map command

Added the cli for doing route-map filtering on imported routes via
the new "import vrf route-map <NAME> command.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
7 years agobgpd: Handle connected routes and IPv6 link-local nexthops for route leaking
vivek [Thu, 5 Apr 2018 17:42:27 +0000 (10:42 -0700)]
bgpd: Handle connected routes and IPv6 link-local nexthops for route leaking

Connected routes redistributed into BGP as well as IPv4 routes with IPv6
link-local next hops (RFC 5549) need information about the associated
interface in BGP if they are candidates to be leaked into another VRF. In
the absence of route leaking, this was not necessary. Introduce the
appropriate mechanism and ensure this is used during route install (in
the target VRF).

Ticket: CM-20343, CM-20382
Testing done:
1. Manually verified failed scenarios and some additional ones - logs
in the tickets.
2. Ran bgp-min and evpn-min - results are good.
3. Ran vrf smoke - has some failures, but none which look new

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
7 years agobgpd: Fix route-leak/L3VPN delete of redistributed routes
vivek [Wed, 4 Apr 2018 16:43:14 +0000 (09:43 -0700)]
bgpd: Fix route-leak/L3VPN delete of redistributed routes

Ensure that when a route redistributed into a VRF is subsequently
deleted, it is properly removed from the VPN table (if exported)
so that it can be removed from other VRFs and withdrawn from
L3VPN peers.

Ticket: CM-20345
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
7 years agobgpd: Enhance loop checking for VRF to VPN route export
vivek [Thu, 29 Mar 2018 05:13:05 +0000 (22:13 -0700)]
bgpd: Enhance loop checking for VRF to VPN route export

The VRF routes exported to the global VPN table must not be
imported routes. It is not necessary to check if they originate
in the global VPN instance as that doesn't hold good for VRF-to-
VRF route-leaking. Merely checking that they are not imported
should handle both L3VPN and VRF-to-VRF route-leaking use cases.

Ticket: CM-20283
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
7 years agobgpd: Fix peer determination from parent for imported routes
vivek [Thu, 29 Mar 2018 05:11:30 +0000 (22:11 -0700)]
bgpd: Fix peer determination from parent for imported routes

When routes are imported into a VRF from the global VPN table, the
parent instance is either the default instance in the case of L3VPN or
the source VRF in the case of VRF-to-VRF route leaking. Hence, obtain
the source peer by just looking at the parent route information.

Ticket: CM-20283
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
7 years agobgpd: Implement show command for VRF route leaking
vivek [Tue, 27 Mar 2018 17:58:13 +0000 (10:58 -0700)]
bgpd: Implement show command for VRF route leaking

Implement "show bgp [vrf FOO] <afi> <safi> route-leak" which displays
operational information about VRF route leaking.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>