Commit Graph

11367 Commits

Author SHA1 Message Date
Fredi Raspall
9c61000765 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>
2018-05-01 21:43:18 +02:00
Fredi Raspall
1cbba8cece 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>
2018-05-01 21:43:18 +02:00
Fredi Raspall
5dffb0e9aa 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>
2018-05-01 21:43:10 +02:00
Lou Berger
4fb6f51928
Merge pull request #2148 from opensourcerouting/snapupdate
Update SNAP Package to add EIGRP, Babel and PRD
2018-05-01 12:15:42 -04:00
Lou Berger
0f82c7b646
Merge pull request #2119 from qlyoung/fix-vtysh-no-write-config
vtysh: fix failure to write config w/o watchfrr
2018-05-01 11:51:28 -04:00
Lou Berger
b2bcf9e77a
Merge pull request #2140 from donaldsharp/sharp_doc
doc: Add some documentation for the sharp daemon
2018-05-01 11:15:59 -04:00
Martin Winter
c1184db82b snapcraft: Add PBR daemon to snap package
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-04-30 18:53:18 -07:00
Martin Winter
1e40b13af4 snapcraft: Add eigrp daemon to snap package
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-04-30 18:29:16 -07:00
Martin Winter
fcf7458a16 snapcraft: Add babel daemon to snap package
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-04-30 18:09:03 -07:00
Martin Winter
f714218ee3 babeld: fix cli option to override config file (-f)
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-04-30 18:02:27 -07:00
Renato Westphal
62196e6456
Merge pull request #2139 from donaldsharp/map
Map
2018-04-30 21:50:17 -03:00
Quentin Young
2307575ab7 doc: add documentation on threading & process arch
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-04-30 19:54:40 -04:00
Martin Winter
83697e0367 snapcraft: Fix missing runtime lib dependencies
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-04-30 16:45:31 -07:00
Donald Sharp
a3488351b4 doc: Add some documentation for the sharp daemon
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-04-30 15:40:54 -04:00
Renato Westphal
a975811e0d
Merge pull request #2045 from LabNConsulting/working/master/nh-vrf-in-bgp-show
bgpd: when showing routes, add nexthop vrf and announce-self flag
2018-04-30 16:33:42 -03:00
Donald Sharp
e55a43d491 pimd: Remove expensive lookup for if a device is a vrf device
Interfaces know if they are a vrf device or not and this data
is passed up to the protocol.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-04-30 07:56:24 -04:00
Donald Sharp
7f432a28e0 pimd: Cleanup pim_if_is_loopback
The interface itself knows if it is a vrf device or
not, so let's just use a check for that in the decision
if a interface is a loopback or not.

Additionally modify function to return a bool.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-04-30 07:53:01 -04:00
Philippe Guibert
431c193b3e 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
a6b07429a4 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
ac7c35f8b6 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
f146bb54cc 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
eb4244f8a2 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
31c28cd708 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
f7df19076a 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
529efa2346 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
70eabd1286 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
c5d429e160 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
1815c6fc9d 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
d114b0d739 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
c16a0a62bc 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
45918cfb97 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
dacf6ec120 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
47555ee921 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
b46b6f1a55 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
1a80fc0f81 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
f3d32faaed 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
30d50e6dd5 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>
2018-04-30 11:56:23 +02:00
Philippe Guibert
bbe6ffd61f 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>
2018-04-30 11:56:23 +02:00
Quentin Young
869f55865f vtysh: fix failure to write config w/o watchfrr
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-04-30 03:28:10 -04:00
Donald Sharp
24512fbd1f 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>
2018-04-29 12:45:20 -04:00
Donald Sharp
e11d84ad27 lib: convert plist data structures to using a bool
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-04-29 12:44:51 -04:00
Lou Berger
397123370b
Merge pull request #2134 from donaldsharp/zzz-top
Clean up some issues found
2018-04-29 08:50:52 -04:00
Donald Sharp
e4694d0dcf 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>
2018-04-28 19:52:41 -04:00
G. Paul Ziemba
9df8b37c72 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>
2018-04-27 17:34:43 -07:00
Donald Sharp
2222a71653 *: 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>
2018-04-27 15:18:41 -04:00
Donald Sharp
3cab181d71 *: 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>
2018-04-27 15:04:40 -04:00
Donald Sharp
70bf5a07fd 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>
2018-04-27 14:59:52 -04:00
Donald Sharp
0761368af0 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>
2018-04-27 14:59:52 -04:00
Fredi Raspall
881999e64f 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>
2018-04-27 20:10:39 +02:00
Renato Westphal
d90b2b73cb
Merge pull request #2125 from qlyoung/fix-gcc-build-command-graph
lib: fix clippy build w/ gcc under certain configs
2018-04-26 16:47:15 -03:00