Commit Graph

11410 Commits

Author SHA1 Message Date
Philippe Guibert
d887503c65 bgpd: improve flowspec update of route to NH/VRF
The debugging message in charge of showing if the route is added or
witdrawn is changed accordingly to reflect this status.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
82e194ed85 bgpd: add notify value in zlog notification message for pbr
notifications values from zebra related to pbr are dumped.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
f80ec7e3d6 zebra: handle iptable list of interfaces
Upon reception of an iptable_add or iptable_del, a list of interface
indexes may be passed in the zapi interface. The list is converted in
interface name so that it is ready to be passed to be programmed to the
underlying system.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
25d760c551 zebra: add 3 fields to ipset_entry : src,dst port, and proto
Those 3 fields are read and written between zebra and bgpd.
This permits extending the ipset_entry structure.
Combinatories will be possible:
- filtering with one of the src/dst port.
- filtering with one of the range src/ range dst port
usage of src or dst is exclusive in a FS entry.
- filtering a port or a port range based on either src or dst port.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
586f4ccf2c zebra: pbr vty show command for ipset and iptables
Two new vty show functions available:
show pbr ipset <NAME>
show pbr iptables <NAME>

Those function dump the underlying "kernel" contexts. It relies on the
zebra pbr contexts. This helps then to know which zebra pbr
context has been configured since those contexts are mainly configured
by BGP Flowspec.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
2bee7aae60 zebra: add netlink rule support for fwmark option
When a mark is set, incoming traffic having that mark set can be
redirected to a specific table identifier. This work is done through
netlink.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
4c550bcf0e zebra: handle notification in case pbr ipset, or iptables is removed
In cast the removal of an iptable or an ipset pbr context is done,
then a notification is sent back to the relevant daemon that sent the
message.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
c2ef5232ae zebra: cleanup zebra policy context
Upon the remote daemon leaving, some contexts may have to be flushed.
This commit does the change. IPset and IPSet Entries and iptables are
flushed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-25 15:49:38 +02:00
Philippe Guibert
de67547dd2 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>
2018-05-25 15:49:38 +02:00
Philippe Guibert
be2028d19b 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>
2018-05-25 15:49:38 +02:00
Renato Westphal
cd126147a3
Merge pull request #2282 from dslicenc/cm20939-nbr-msg
bgpd: improve error message for neighbor not found
2018-05-25 10:20:39 -03:00
Quentin Young
44ee1b20c0 *: remove update-autotools
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-24 22:45:49 +00:00
Don Slice
9e6e6f46ee bgpd: additional neighbor message improvement
Added improved error message text to other places that could also
encounter the same condition.  In testing found that in certain
case, duplicate error messages were previously issued.  This fix
also removes the duplicates.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-05-24 10:58:37 -04:00
Don Slice
88b7d2555c bgpd: improve error message for neighbor not found
Problem reported due to tab completion showing all possible peers
in every vrf, but when neighbor in wrong vrf entered "no such
neighbor" is the error message.  Making it slightly more clear
with "no such neighbor in the view/vrf" to clue the user that they
may have specified the wrong vrf.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-05-24 10:51:17 -04:00
Donald Sharp
026a316f2c zebra: Fix RULE notification netlink messages
Fix the code so that we would actually start receiving
RULE netlink notifications.

The Kernel expects the long long to be a bit field
value, while the newer netlink message types are
an enum.  So we need to convert the message type
number to a bit position and set that value.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-24 09:14:43 -04:00
Donald Sharp
2414abd3b0 zebra: Remove unnecessary function parameter
The snl variable is no longer needed to be passed around, so
remove it from the calling path.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-24 09:14:43 -04:00
Donald Sharp
783827ae61 zebra: Move where we check for non-kernel netlink messages
Move where we check for non-kernel netlink messages to
a slightly earlier spot.  This will allow in subsuquent
commits the removal of an extra parameter that needs to
be passed around.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-24 09:14:43 -04:00
Donald Sharp
3575d9e866 zebra: Ignore most netlink notifications from ourselves
The BPF filter was an exclusion list of netlink messages
we did not want to receive from our self.  The problem
with this is that the exclusion list was and will be
ever growing.  So switch the test around to an inclusion
list since it is shorter and not growing.  Right
now this is RTM_NEWADDR and RTM_DELADDR.

Change some of the debug messages to error messages
so that when something slips through and it is unexpected
during development we will see the problem.

Also try to improve the documentation about what
the filter is doing and leave some breadcrumbs for
future developers to know where to change code
when new functionality is added.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-24 09:13:05 -04:00
Renato Westphal
19300af8f2
Merge pull request #2279 from donaldsharp/evpn_moo_moo
Evpn SA/CI issues found
2018-05-23 23:17:02 -03:00
Renato Westphal
39f7319dac
Merge pull request #2278 from donaldsharp/uninited_variable
bgpd: Fix use of uninitialized variable
2018-05-23 22:58:52 -03:00
Rafael Zalamena
2312209c8f
Merge pull request #2254 from qlyoung/fixup-vtysh-comments
misc cleanup for comments + docs
2018-05-23 14:00:15 -03:00
Quentin Young
ac40b262ef doc: remove duplicated packages from dep list
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-23 15:35:41 +00:00
Quentin Young
79871dbfcf doc: make frr a system group
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-22 21:46:08 +00:00
Quentin Young
07c40b22af doc: add install-info build dependency
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-22 21:46:02 +00:00
Quentin Young
d60d744157 doc: remove recommendation against integrated conf
Missed this in code review

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-22 21:14:00 +00:00
Quentin Young
f448f9145f doc: clean up 18.04 build doc
Some excess underlines, 4-space indents and typos cleaned up.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-22 21:14:00 +00:00
Quentin Young
76015847ea vtysh: rewrap comments
fixup comments for vtysh

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-22 21:14:00 +00:00
Renato Westphal
5f8247153b
Merge pull request #2280 from qlyoung/docuser
doc: move -r option docs to zebra only
2018-05-22 15:52:27 -03:00
Donald Sharp
b861cb7d2f
Merge pull request #2277 from pguibert6WIND/fix_case_zclient_broken
zebra: upon zclient breaking, flush PBR entries
2018-05-22 14:44:31 -04:00
Quentin Young
da7e1a9212 doc: move -r option docs to zebra only
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-22 17:55:20 +00:00
Donald Sharp
bb98075ed9
Merge pull request #2268 from opensourcerouting/rpki-spec-fix
redhat: Fix RPKI RPM build option (Master Branch)
2018-05-22 13:11:21 -04:00
Renato Westphal
92367796d2
Merge pull request #2273 from qlyoung/remove-retain-mode
*: remove -r from daemons except zebra
2018-05-22 12:49:24 -03:00
Philippe Guibert
4c0ec639fd zebra: upon zclient breaking, flush PBR entries
In case, the BGP or PBR daemon leaves, the PBR contexts created by this
daemon are flushed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-22 17:41:27 +02:00
Lou Berger
70b2080ccf
Merge pull request #2257 from donaldsharp/evpn_fixes
bgpd: Lock the parent rn as well
2018-05-22 11:33:01 -04:00
Quentin Young
06081c784f
Merge pull request #2220 from LabNConsulting/working/master/fix-asan
*: fix compile with -enable-address-sanitizer configured
2018-05-22 11:15:28 -04:00
Donald Sharp
5d9cbca226 bgpd: Ensure virt->vrfs is valid
Move the list_delete_and_null of the virt->vrfs code to
the actual deletion function to ensure proper lifecycle.
This assumption allows us to know that irt->vrfs is always
true so remove the NULL check on it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-22 10:54:20 -04:00
Donald Sharp
b1ab0dfe20 bgpd: Free vni list on actual deletion
The irt->vnis list was being freed on going down,
but actually delete it from the deletion function.  Then
we can know that the irt->vnis is a valid list anywhere
we have a irt pointer.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-22 10:50:53 -04:00
Donald Sharp
f9a789103f bgpd: Ensure we don't dereference a non-valid pointer
The attr->ecommunity may be null coming into the function
at this point.  Ensure that it is.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-22 10:44:32 -04:00
Donald Sharp
ba1976dbf8 bgpd: Fix use of uninitialized variable
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-22 09:53:01 -04:00
Renato Westphal
b16c827adf
Merge pull request #2262 from donaldsharp/v6_replace_semantics
V6 replace semantics
2018-05-22 09:05:06 -03:00
Quentin Young
c8dde10f58 *: remove -r from daemons except zebra
This option is only implemented by 4 daemons:
- BGPD
- RIPD
- RIPNGD
- Zebra

Manpages and documentation say that the option causes routes to not be
uninstalled from zebra when the daemon terminates. This is true for RIPD
and RIPNGD. This is not true for BGPD; in that daemon it only prevents
transmission of Cease / Peer Unconfig NOTIFICATION messages to peers.

Moreover, when any daemon disconnects from Zebra, all of its routes are
uninstalled from Zebra and the kernel regardless of this option,
rendering the option largely vestigial.

It is still useful in Zebra, where it prevents all routes from being
uninstalled when Zebra shuts down, so it is left there.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-21 19:09:49 +00:00
Mladen Sablic
67736451c5 vtysh: reconnect to daemons when connection lost
Functionality to let vtysh attempt to reconnect to daemons when
connection is lost (e.g. crash or restart).

Signed-off-by: Mladen Sablic <mladen.sablic@gmail.com>
2018-05-21 20:51:03 +02:00
Chirag Shah
6f19bb0ee7 ospf6d: Fix inter area prefix
Inter Area Prefix LSA ECMP is not working properly.
Two ABRs advertising IAP routes to backbone, not installed
with correct cost or if ABR restarted the route is removed
from backbone.
The current implementation ABR was not suppressing IAP update
for prefix cost is not better or route is not installed.
The better cost or path route was overwritten with non optimal
cost. This caused a loop with nexthops pointing each other
at backbone and non-backbone routers.

Consider to only send BEST/installed route's IAP notification
at ABRs.
When receiving IAP update from multiple ABRs, preserve multiple
advertising routers under the prefix route node.
Upon LSA maxage only remove the advertising route's which is
impacted and update route's nexthops and update FIB.

Testing Done:
Top to Bottom is part of area 0 on the Right, and
from Left side in area 1.
Top and Bottom act as ABRs.
H1 route is sent as Inter-Area Prefix to Right.
Trigger multiple triggers for ABR routes.
1) Shutting down link between, top to right to eliminate nhs
2) Restart frr at Top.
3) Restart frr at Right.

                                     +-----------+
                                     .           |
                                   ,'|   Top     |`.
                                  /  .           |  \
                                ,' ,'+.----------+`. `.
                               /  /  `          `.  \  ',
                             ,' ,' ,'             \  `.  .
                            -  /  `                `.  ', `,
                          ,` ,` ,'                   \   \  \
                         '  -  `                      `.  `, `,
       +--------+    +--`--`--`--+                  +---'---'--'+    +--------+
       |        |    |           |                  |           |    |        |
       |    H1  ------  Left     |                  |   Right   ------   H2   |
       |        |    |           |                  |           |    |        |
       +--------+    +-----------+                  +----.--,-,-+    +--------+
                        `.  `   \                       -  / /
                          \  `.  `                    ,' .` `
                           '   .  \                  /  /  '
                            `.  \  `.               `  / ,'
                              \  `   .            ,`  / /
                               `. `.  .          /   / /
                                 \  .  \       ,'   ' /
                                  '  '--'--------+,'.`
                                   `.|           - /
                                     '  mid1     |/
                                     |           -
                                     +-----------+

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-05-21 07:29:21 -07:00
Renato Westphal
ba6ccc944f
Merge pull request #2267 from donaldsharp/flim_flam
zebra: Cleanup some nits from Review Comments
2018-05-21 09:49:45 -03:00
Donald Sharp
85442b0959 zebra: Cleanup some nits from Review Comments
1) Small formating mistake fixed
2) Rename of a variable to give it a slightly better name

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-21 07:18:18 -04:00
Philippe Guibert
abceee4119
Merge pull request #2256 from donaldsharp/zebra_vxlan_flim_flam
Zebra performance improvements at scale for vxlan code
2018-05-21 09:10:21 +02:00
Martin Winter
b4c554e24f redhat: Fix RPKI RPM build option
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-05-20 07:13:02 -07:00
Rafael Zalamena
a44ed5bd8c
Merge pull request #2260 from qlyoung/fix-docs-distclean
doc: fix distclean
2018-05-19 22:30:18 -03:00
Renato Westphal
72a8513e64
Merge pull request #2261 from qlyoung/fix-missing-doc
Fix missing dist files
2018-05-19 10:30:32 -03:00
Donald Sharp
7c82b3120e bgpd: Fix crash on shutdown
There exists code paths where the rn was being used after free.
This eliminates these code paths.

Fixes: CM-21019
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-18 20:40:24 -04:00