]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
6 years agozebra: ipset and ipset entry deletion remove entry from hash list too
Philippe Guibert [Thu, 26 Apr 2018 11:31:16 +0000 (13:31 +0200)]
zebra: ipset and ipset entry deletion remove entry from hash list too

This commit is a fix that removes the structure from the hash list,
instead of just removing that structure.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agozebra: rework pbr ipset entry
Philippe Guibert [Tue, 27 Mar 2018 09:27:10 +0000 (11:27 +0200)]
zebra: rework pbr ipset entry

Add ns_id into zebra_pbr ipset
This is important so that each ipset entry knows on which NETNS the
ipset entry must be inkected

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
6 years agoMerge pull request #2327 from pguibert6WIND/fix_other_static_owners
Donald Sharp [Wed, 30 May 2018 12:10:38 +0000 (08:10 -0400)]
Merge pull request #2327 from pguibert6WIND/fix_other_static_owners

Fix other static owners

6 years agoMerge pull request #2321 from ppmathis/backport/5.0
Donald Sharp [Wed, 30 May 2018 12:09:40 +0000 (08:09 -0400)]
Merge pull request #2321 from ppmathis/backport/5.0

*: Backport bugfixes and features into dev/5.0

6 years agozebra: Add a breadcrumb for when we ignore a route
Donald Sharp [Fri, 25 May 2018 18:45:16 +0000 (14:45 -0400)]
zebra: Add a breadcrumb for when we ignore a route

When we receive a route that we think we own and we
are not in startup conditions, then add a small debug
to help debug the issue when this happens, instead
of silently just ignoring the route.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
6 years agotools, zebra: Use different protocol value for our statics
Donald Sharp [Fri, 25 May 2018 18:36:12 +0000 (14:36 -0400)]
tools, zebra: Use different protocol value for our statics

The re-use of RTPROT_STATIC has caused too many collisions
where other legitimate route sources are causing us to
believe we are the originator of the route.  Modify
the code so that if another protocol inserts RTPROT_STATIC
we will assume it's a Kernel Route.

Fixes: #2293
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
6 years agobgpd: Fix memleak, adapt adv- to recv-routes code
Pascal Mathis [Wed, 16 May 2018 19:55:55 +0000 (21:55 +0200)]
bgpd: Fix memleak, adapt adv- to recv-routes code

This commit tries to adapt a similar codeflow within the `show bgp [afi]
[safi] neighbor <neighbor> advertised-routes` command compared to its
`received-routes` and `filtered-routes` opponents. Some branching code
has been restructured to achieve this.

Additionally, this commit fixes a memory leak within `received-routes`
(and `filtered-routes`, although the issue has been present before the
previous commit!) where the previous implementation forgot to
deduplicate the BGP attributes.

When a user called `<...> received-routes route-map <RM-TEST>` and that
routemap changed any AS path or community parameters, the duplicated
memory for these parameters was never freed. This has been fixed by
ensuring to call `bgp_attr_undup()` accordingly.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit b755861b95142446bac05f0f2506647bbca5d2d8)

6 years agobgpd: Implement new adjacent route show commands
Pascal Mathis [Wed, 16 May 2018 17:17:42 +0000 (19:17 +0200)]
bgpd: Implement new adjacent route show commands

This commit changes the behavior of `show bgp [afi] [safi] neighbor
<neighbor> received-routes [json]` to return all received prefixes
instead of filtering rejected/denied prefixes.

Compared to Cisco and Juniper products, this is the usual way how this
command is supposed to work, as `show bgp [afi] [safi] neighbor
<neighbor> routes` will already return all accepted prefixes.

Additionally, the new command `show bgp [afi] [safi] neighbor <neighbor>
filtered-routes` has been added, which returns a list of all prefixes
that got filtered away, so it can be roughly described as a subset of
"received prefixes - accepted prefixes".

As the already available `filtered_count` variable inside
`show_adj_route` has not been used before, the last output line
summarizing the amount of prefixes found was extended to also mention
the amount of filtered prefixes if present.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 6392aaa6547e665859ab5c648df30c1c04e26f6d)

6 years agobgpd: Improve route-map matching for INET(6) AF
Pascal Mathis [Tue, 15 May 2018 17:22:25 +0000 (19:22 +0200)]
bgpd: Improve route-map matching for INET(6) AF

While the current implementation does pay attention to the AF
(inet/inet6) when comparing the IPv4/v6 address against an address-list
/ prefix-list inside a route-map, the AF check is being done rather
late, which leads to CPU cycles being wasted due to unnecessary list
lookups / address matching.

This commit checks the address family of a prefix right inside the
`route_match_ip(v6)_` functions before looking up any address- and/or
prefix-list, which should improve performance.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 09cd98ebeef5e8d0c39a30574307a04bbb59b947)

6 years agobgpd: Respect AFI/SAFI when hard-clearing a peer
Pascal Mathis [Mon, 14 May 2018 20:52:31 +0000 (22:52 +0200)]
bgpd: Respect AFI/SAFI when hard-clearing a peer

The current implementation does not respect the AFI+SAFI combination of
a peer when executing a non-soft (hard) clear. An example would be the
command `clear bgp ipv4 unicast *`, which will clear all BGP peers, even
those that do not have IPv4-Unicast activated.

This commit fixes that behavior by applying the same rules to both soft
and hard clear commands, so that peers without a matching AFI+SAFI
combination will be no longer modified.

Additionally, this commit adds warning messages to all `clear bgp
[<afi>] [<safi>] <target>` commands when no matching peers with the given
AFI+SAFI combination could be found.

Both existing and new warning messages have been extended to also
mention the AFI+SAFI combination that is missing, which is more helpful
to the user than a generic expression 'No peer configured'.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 3ae8bfa5d870d103325cf879a501758e217c6a89)

6 years agobgpd: Improve JSON support for large communities
Pascal Mathis [Sun, 13 May 2018 00:29:40 +0000 (02:29 +0200)]
bgpd: Improve JSON support for large communities

The current implementation of building JSON output is greatly different
for large communities compared to standard communities. This is mainly
noticeable by the missing 'list' attribute, which usually offers an
array of all communities present on a BGP route.

This commit adds the missing functionality of properly returning a
'list' attribute in JSON output and also tries a similar approach like
the standard communities are using to implement this feature.

Additionally, the 'format' specifier has been completely removed from
large communities string/JSON rendering, as the official RFC8092 specifies that
there is only one canonical representation:

> The canonical representation of BGP Large Communities is three
> separate unsigned integers in decimal notation in the following
> order: Global Administrator, Local Data 1, Local Data 2. Numbers
> MUST NOT contain leading zeros; a zero value MUST be represented with
> a single zero. Each number is separated from the next by a single
> colon. For example: 64496:4294967295:2, 64496:0:0.

As the 'format' specifier has not been used/checked and only one
canonical representation exists per today, there was no reason to keep
the 'format' parameter in the function signature.

Last but not least, the struct attribute 'community_entry.config' is no
longer being used for large communities and instead 'lcommunity_str' is
being called to maintain a similar approach to standard communities.

As a side effect, this also fixed a memory leak inside 'community_entry_free'
which did not free the allocated memory for the 'config' attribute when
dealing with a large community.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 8d9b8ed99de997a4ade10b98aac4ea43add2f9c8)

6 years agolib: Moved no-password warnings into header file
Pascal Mathis [Sun, 13 May 2018 17:11:43 +0000 (19:11 +0200)]
lib: Moved no-password warnings into header file

The warning string which appears when the users executes 'no (enable)
password' was moved into command.h and declared as a constant named
'NO_PASSWD_CMD_WARNING'.

This avoids duplicate code and makes it easy to change the warning
message in all places at once.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 4911ca9cab5d75b5031edb83b52423ed47798324)

6 years agolib: Improved warnings for 'no (enable) password'
Pascal Mathis [Sat, 12 May 2018 18:19:49 +0000 (20:19 +0200)]
lib: Improved warnings for 'no (enable) password'

When the user executes one of the commands 'no password' or 'no enable
password', a warning message gets shown to inform the user of the
security implications.

While the current implementation works, a warning message gets printed
once for each daemon, which can lead to seeing the same message many
times. This does not affect functionality, but looks like an error to
the user as it can be seen within issue #1432.

This commit only prints the warning message inside lib when vtysh
dispatch is not being used. Additionally, the warning message was copied
into the vtysh command handlers, so that they get printed exactly once.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit eb83f7ce842944518bac726c19eb071257a2ed56)

6 years agolib: Ported 'no (enable) password' from stable/3.0
Pascal Mathis [Fri, 11 May 2018 00:54:30 +0000 (02:54 +0200)]
lib: Ported 'no (enable) password' from stable/3.0

The pull request #1545 from @donaldsharp introduced the command 'no
password' to remove an existing terminal connection password.
Additionally, warnings have been added to both 'no password' and 'no
enable password' to make the user aware of any security implications.

It seems that this specific pull request was never merged against master
and got lost. This commit is a cherry-pick of d4961273cb with fixed
conflicts and updated documentation.

Thanks to @donaldsharp and @pogojotz for the original PR.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 322e2d5c694449ee604c339abb0e9fc14babdc45)

6 years agodebianpkg: improve VTYSH_PAGER environment check
Pascal Mathis [Thu, 10 May 2018 22:03:23 +0000 (00:03 +0200)]
debianpkg: improve VTYSH_PAGER environment check

The current post-installation scripts for all Debian packages execute
grep 'VTYSH_PAGER=/bin/cat' to check if the VTYSH_PAGER variable is
present within /etc/environment.

While presence of that environment variable should be checked, the
current implementation does not handle this line being a comment (and
therefor not active) or the user picking a different VTYSH_PAGER than
/bin/cat.

This commit ensures that the environment variable can be freely changed
by the user, while still guaranteeing that it is present in the file
without being a comment.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 332266dbd1b5edd5bc0af3b5a4bd52b62a992fa3)

6 years agobgpd: fix and improve snmp peer lookups
Pascal Mathis [Thu, 10 May 2018 21:35:37 +0000 (23:35 +0200)]
bgpd: fix and improve snmp peer lookups

The previous implementation of bgp_peer_lookup_next did not consider the
internal ordering of peers when using peer groups, which led to all
standalone peers being skipped that had a lower IP address than the
highest IP address of a peer belonging to a group.

As the ordering of peers can not be arbitrary due to SNMP requiring
increasing OIDs when walking an OID tree, this commit fixes the bug by
properly looping through all peers and detecting the next highest IP
address.

Additionally, this commit improved both bgp_peer_lookup_next and
peer_lookup_addr_ipv4 by using the socketunion stored within the peer
struct (peer->su) instead of calling inet_pton for each peer during
comparison.

Signed-off-by: Pascal Mathis <mail@pascalmathis.com>
(cherry picked from commit 2b8e62f2db185e5c2c11d691523b3f734d224e95)

6 years agoMerge pull request #2306 from opensourcerouting/dev-5.0-isis-tlv-copy-fix
Jafar Al-Gharaibeh [Tue, 29 May 2018 15:45:59 +0000 (11:45 -0400)]
Merge pull request #2306 from opensourcerouting/dev-5.0-isis-tlv-copy-fix

isisd: fix bug in tlv_copy of empty MT-router-info

6 years agoMerge pull request #2311 from Fredi-raspall/fix_label_manager_dev_5.0
Donald Sharp [Tue, 29 May 2018 14:26:50 +0000 (10:26 -0400)]
Merge pull request #2311 from Fredi-raspall/fix_label_manager_dev_5.0

Fix label manager dev 5.0

6 years agoMerge pull request #2313 from opensourcerouting/dev-5.0-malloc-0-fix
Donald Sharp [Tue, 29 May 2018 14:22:15 +0000 (10:22 -0400)]
Merge pull request #2313 from opensourcerouting/dev-5.0-malloc-0-fix

lib: make allocators work for allocation sizes of 0

6 years agolib: make allocators work for allocation sizes of 0
Christian Franke [Tue, 29 May 2018 12:47:20 +0000 (14:47 +0200)]
lib: make allocators work for allocation sizes of 0

Fixes: #2155
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
6 years agolib, zebra: fix formatting and style
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 agoisisd: fix bug in tlv_copy of empty MT-router-info
Christian Franke [Mon, 28 May 2018 12:13:18 +0000 (14:13 +0200)]
isisd: fix bug in tlv_copy of empty MT-router-info

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
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
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
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
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
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
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
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
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

6 years agozebra: Fix crash on *BSD
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>
6 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

6 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

6 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

6 years agosnapcraft: Add PBR daemon to snap package
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>
6 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>
6 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>
6 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>
6 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

6 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>
6 years agodoc: Add some documentation for the sharp daemon
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>
6 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

6 years agovtysh: fix failure to write config w/o watchfrr
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>
6 years agolib: Convert internal sequence number to int64_t
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>
6 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>
6 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

6 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>
6 years agobgpd: when showing routes, add nexthop vrf and announce-self flag
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>
6 years ago*: Move sharpd from developmental build to have to explicity enable it
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>
6 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>
6 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>
6 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>
6 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

6 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

6 years agolib: fix clippy build w/ gcc under certain configs
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>
6 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

6 years agolib: fix heap corruption in stream_fifo_free
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>
6 years agobgpd: Prevent vrf 2 vrf route leaking from going offbox.
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>
6 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>
6 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>
6 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>