]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
5 years agoMerge pull request #3051 from mitch-skiba/addpath_change_V1
Donald Sharp [Tue, 13 Nov 2018 14:20:22 +0000 (09:20 -0500)]
Merge pull request #3051 from mitch-skiba/addpath_change_V1

Addpath - Reuse IDs

5 years agoMerge pull request #3318 from qlyoung/agentx-remove-warning-msg
David Lamparter [Tue, 13 Nov 2018 14:06:24 +0000 (15:06 +0100)]
Merge pull request #3318 from qlyoung/agentx-remove-warning-msg

lib: remove agentx already enabled warning

5 years agoMerge pull request #3317 from qlyoung/gitignore-libtool-orig
David Lamparter [Tue, 13 Nov 2018 14:05:24 +0000 (15:05 +0100)]
Merge pull request #3317 from qlyoung/gitignore-libtool-orig

frr: ignore libtool.orig

5 years agoMerge pull request #3287 from donaldsharp/v6_access_list
Lou Berger [Tue, 13 Nov 2018 09:59:23 +0000 (16:59 +0700)]
Merge pull request #3287 from donaldsharp/v6_access_list

zebra: Add `match ipv6 address WORD` as a legal option

5 years agoMerge pull request #3286 from donaldsharp/late_registration
David Lamparter [Tue, 13 Nov 2018 09:26:14 +0000 (10:26 +0100)]
Merge pull request #3286 from donaldsharp/late_registration

bgpd: Late registration of Extended Nexthop should allow RA's to happen

5 years agoMerge pull request #3313 from qlyoung/doc-strip-whitespace
Lou Berger [Tue, 13 Nov 2018 07:56:14 +0000 (14:56 +0700)]
Merge pull request #3313 from qlyoung/doc-strip-whitespace

doc: strip trailing whitespace

5 years agoMerge pull request #3314 from qlyoung/doc-ipv6-isis-router-cmd
Lou Berger [Tue, 13 Nov 2018 07:55:38 +0000 (14:55 +0700)]
Merge pull request #3314 from qlyoung/doc-ipv6-isis-router-cmd

doc: add missing docs for ipv6 isis router cmd

5 years agoMerge pull request #3315 from qlyoung/doc-dev-fixes
Lou Berger [Tue, 13 Nov 2018 07:54:11 +0000 (14:54 +0700)]
Merge pull request #3315 from qlyoung/doc-dev-fixes

Doc dev fixes

5 years agoMerge pull request #3307 from donaldsharp/bondo
Jafar Al-Gharaibeh [Mon, 12 Nov 2018 22:51:22 +0000 (16:51 -0600)]
Merge pull request #3307 from donaldsharp/bondo

zebra: Let zebra know about bond and blond slave intf types

5 years agoMerge pull request #3312 from pguibert6WIND/ospf6_missing_vty
Quentin Young [Mon, 12 Nov 2018 18:08:59 +0000 (13:08 -0500)]
Merge pull request #3312 from pguibert6WIND/ospf6_missing_vty

ospf6d: add missing vty commands to ospf6 area command

5 years agoMerge pull request #3303 from opensourcerouting/bugfix/isis-fragment-retransmission
Olivier Dugeon [Mon, 12 Nov 2018 16:59:50 +0000 (17:59 +0100)]
Merge pull request #3303 from opensourcerouting/bugfix/isis-fragment-retransmission

isisd: Fix issues with purged fragments

5 years agozebra: Let zebra know about bond and blond slave intf types
Dinesh Dutt [Sat, 10 Nov 2018 20:54:43 +0000 (15:54 -0500)]
zebra: Let zebra know about bond and blond slave intf types

The interface type can be a bond or a bond slave, add some
code to note this and to display it as part of a show interface
command.

Signed-off-by: Dinesh Dutt <didutt@gmail.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoospf6d: add missing vty commands to ospf6 area command
Philippe Guibert [Mon, 12 Nov 2018 16:09:01 +0000 (17:09 +0100)]
ospf6d: add missing vty commands to ospf6 area command

it was not possible to configure per area identifier under decimal
format some ospf6 area options. this is the case of filter list, or
export-list.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
5 years agoMerge pull request #3289 from donaldsharp/onlink_schmonlink
Jafar Al-Gharaibeh [Mon, 12 Nov 2018 15:43:15 +0000 (09:43 -0600)]
Merge pull request #3289 from donaldsharp/onlink_schmonlink

zebra: Carry onlink if set from resolving nexthop

5 years agoMerge pull request #3276 from donaldsharp/zclient_update
Renato Westphal [Mon, 12 Nov 2018 15:40:47 +0000 (13:40 -0200)]
Merge pull request #3276 from donaldsharp/zclient_update

*: Replace zclient_new with zclient_new_notify

5 years agoMerge pull request #3285 from srimohans/watchfrr
Donald Sharp [Mon, 12 Nov 2018 14:36:40 +0000 (09:36 -0500)]
Merge pull request #3285 from srimohans/watchfrr

watchfrr: replace /usr/sbin/service frr with /usr/lib/frr/frr script

5 years agoMerge pull request #3281 from opensourcerouting/update-libyang-instructions
Donald Sharp [Mon, 12 Nov 2018 14:35:09 +0000 (09:35 -0500)]
Merge pull request #3281 from opensourcerouting/update-libyang-instructions

doc: update libyang build instructions

5 years agoMerge pull request #3299 from opensourcerouting/fix-bfd-ipv6-unnumbered
Donald Sharp [Mon, 12 Nov 2018 14:28:24 +0000 (09:28 -0500)]
Merge pull request #3299 from opensourcerouting/fix-bfd-ipv6-unnumbered

bfdd: fix BGP unnumbered peer setup

5 years agoMerge pull request #3305 from opensourcerouting/bugfix/isis-lsp-aggregate-time
Donald Sharp [Mon, 12 Nov 2018 14:27:34 +0000 (09:27 -0500)]
Merge pull request #3305 from opensourcerouting/bugfix/isis-lsp-aggregate-time

isisd: Adjust duration until lsp is regenerated

5 years agoMerge pull request #3304 from opensourcerouting/bugfix/openfabric-flooding
Donald Sharp [Mon, 12 Nov 2018 14:20:27 +0000 (09:20 -0500)]
Merge pull request #3304 from opensourcerouting/bugfix/openfabric-flooding

fabricd: never flood back through the incoming interface

5 years agoMerge pull request #3306 from opensourcerouting/bugfix/isis-csnp-handling
Donald Sharp [Mon, 12 Nov 2018 14:19:40 +0000 (09:19 -0500)]
Merge pull request #3306 from opensourcerouting/bugfix/isis-csnp-handling

Fix IS-IS CSNP handling

5 years ago*: Replace zclient_new with zclient_new_notify
Donald Sharp [Fri, 2 Nov 2018 12:54:58 +0000 (08:54 -0400)]
*: Replace zclient_new with zclient_new_notify

It's been a year since we added the new optional parameters
to instantiation.  Let's switch over to the new name.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agotests: Verify correct operation of lsp_build_list_nonzero_ht
Christian Franke [Sat, 10 Nov 2018 16:58:19 +0000 (17:58 +0100)]
tests: Verify correct operation of lsp_build_list_nonzero_ht

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoisisd: Fix issues with purged fragments
Christian Franke [Fri, 9 Nov 2018 15:38:38 +0000 (16:38 +0100)]
isisd: Fix issues with purged fragments

Purged fragments would always be reoriginated by isisd. They
should only be purged once and never be reoriginated.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agofabricd: never flood back through the incoming interface
Christian Franke [Fri, 9 Nov 2018 15:40:17 +0000 (16:40 +0100)]
fabricd: never flood back through the incoming interface

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoisisd: Fix lsp_build_list_nonzero_ht
Christian Franke [Sat, 10 Nov 2018 15:14:40 +0000 (16:14 +0100)]
isisd: Fix lsp_build_list_nonzero_ht

When `first` would be initialized to the same value as `last`, the
function would return incorrect results.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agobgpd: Re-use TX Addpath IDs where possible
Mitch Skiba [Wed, 9 May 2018 23:10:02 +0000 (23:10 +0000)]
bgpd: Re-use TX Addpath IDs where possible

The motivation for this patch is to address a concerning behavior of
tx-addpath-bestpath-per-AS. Prior to this patch, all paths' TX ID was
pre-determined as the path was received from a peer. However, this meant
that any time the path selected as best from an AS changed, bgpd had no
choice but to withdraw the previous best path, and advertise the new
best-path under a new TX ID. This could cause significant network
disruption, especially for the subset of prefixes coming from only one
AS that were also communicated over a bestpath-per-AS session.

The patch's general approach is best illustrated by
txaddpath_update_ids. After a bestpath run (required for best-per-AS to
know what will and will not be sent as addpaths) ID numbers will be
stripped from paths that no longer need to be sent, and held in a pool.
Then, paths that will be sent as addpaths and do not already have ID
numbers will allocate new ID numbers, pulling first from that pool.
Finally, anything left in the pool will be returned to the allocator.

In order for this to work, ID numbers had to be split by strategy. The
tx-addpath-All strategy would keep every ID number "in use" constantly,
preventing IDs from being transferred to different paths. Rather than
create two variables for ID, this patch create a more generic array that
will easily enable more addpath strategies to be implemented. The
previously described ID manipulations will happen per addpath strategy,
and will only be run for strategies that are enabled on at least one
peer.

Finally, the ID numbers are allocated from an allocator that tracks per
AFI/SAFI/Addpath Strategy which IDs are in use. Though it would be very
improbable, there was the possibility with the free-running counter
approach for rollover to cause two paths on the same prefix to get
assigned the same TX ID. As remote as the possibility is, we prefer to
not leave it to chance.

This ID re-use method is not perfect. In some cases you could still get
withdraw-then-add behaviors where not strictly necessary. In the case of
bestpath-per-AS this requires one AS to advertise a prefix for the first
time, then a second AS withdraws that prefix, all within the space of an
already pending MRAI timer. In those situations a withdraw-then-add is
more forgivable, and fixing it would probably require a much more
significant effort, as IDs would need to be moved to ADVs instead of
paths.

Signed-off-by Mitchell Skiba <mskiba@amazon.com>

5 years agolib: Implement an allocator for 32 bit ID numbers
Mitch Skiba [Thu, 17 May 2018 19:06:08 +0000 (19:06 +0000)]
lib: Implement an allocator for 32 bit ID numbers

This commit introduces lib/id_alloc, which has facilities for both an ID number
allocator, and less efficient ID holding pools. The pools are meant to be a
temporary holding area for ID numbers meant to be re-used, and are implemented
as a linked-list stack.

The allocator itself is much more efficient with memory. Based on sizeof
values on my 64 bit desktop, the allocator requires around 155 KiB per
million IDs tracked.

IDs are ultimately tracked in a bit-map split into many "pages." The
allocator tracks a list of pages that have free bits, and which sections
of each page have free IDs, so there isn't any scanning required to find
a free ID. (The library utility ffs, or "Find First Set," is generally a
single CPU instruction.) At the moment, totally empty pages will not be
freed, so the memory utilization of this allocator will remain at the
high water mark.

The initial intended use case is for BGP's TX Addpath IDs to be pulled
from an allocator that tracks which IDs are in use, rather than a free
running counter.  The allocator reserves ID #0 as a sentinel value for
an invalid ID numbers, and BGP will want ID #1 reserved as well. To
support this, the allocator allows for IDs to be explicitly reserved,
though be aware this is only practical to use with low numbered IDs
because the allocator must allocate pages in order.

Signed-off-by Mitchell Skiba <mskiba@amazon.com>

5 years agoisisd: Remove unused debug flags
Christian Franke [Thu, 8 Nov 2018 19:30:55 +0000 (20:30 +0100)]
isisd: Remove unused debug flags

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoisisd: Adjust duration until lsp is regenerated
Christian Franke [Fri, 9 Nov 2018 16:12:53 +0000 (17:12 +0100)]
isisd: Adjust duration until lsp is regenerated

It turns out 50ms is actually too short to aggregate all changes
in some cases, so allow for 100ms.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoMerge pull request #3301 from opensourcerouting/bugfix/remove-unused-isis-debugs
Olivier Dugeon [Fri, 9 Nov 2018 15:13:13 +0000 (16:13 +0100)]
Merge pull request #3301 from opensourcerouting/bugfix/remove-unused-isis-debugs

isisd: Remove unused debug flags

5 years agoMerge pull request #3298 from ak503/mpls_te2
Olivier Dugeon [Fri, 9 Nov 2018 13:54:03 +0000 (14:54 +0100)]
Merge pull request #3298 from ak503/mpls_te2

ospfd: unregister mpls-te inter-as only if mpls-te is enabled

5 years agobfdd: fix BGP unnumbered peer setup
Rafael Zalamena [Sat, 3 Nov 2018 22:08:33 +0000 (19:08 -0300)]
bfdd: fix BGP unnumbered peer setup

The session key uses the scope id to figure out which interface we are
using with that link-local address, so if we don't set it when
registering a session we'll end up with multiple IPv6 sessions.

This bug was spotted by Sandro Bolliger.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
(cherry picked from commit de61f256d68bc792a3823193fa8a49fdcaf77d3c)

5 years agoospf: unregister mpls-te inter-as only if mpls-te is enabled
Dmitrii Turlupov [Fri, 9 Nov 2018 10:44:42 +0000 (13:44 +0300)]
ospf: unregister mpls-te inter-as only if mpls-te is enabled

Signed-off-by: Dmitrii Turlupov <dturlupov@factor-ts.ru>
5 years agoOSPF: Add support to multi-area to Router Info.
Olivier Dugeon [Fri, 26 Oct 2018 17:12:41 +0000 (19:12 +0200)]
OSPF: Add support to multi-area to Router Info.

  Router Information needs to specify the area ID when flooding scope is set to
  AREA. However, this authorize only one AREA. Thus, Area Border Router (ABR) are
  unable to flood Router Information Opaque LSA in all areas they are belongs to.

  The path implies that the area ID is no more necessary for the command
  'router-info area'. It remains suported for compatibility, but mark as
  deprecated. Documentation has been updated accordingly.

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
5 years agoMerge pull request #3202 from donaldsharp/evpn_dump
Russ White [Thu, 8 Nov 2018 23:13:27 +0000 (18:13 -0500)]
Merge pull request #3202 from donaldsharp/evpn_dump

Evpn dump

5 years agoisisd: Remove unused debug flags
Christian Franke [Thu, 8 Nov 2018 19:30:55 +0000 (20:30 +0100)]
isisd: Remove unused debug flags

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoMerge pull request #3290 from rubenk/configure-ac-fix-typo-in-error-message
Donald Sharp [Thu, 8 Nov 2018 14:36:17 +0000 (09:36 -0500)]
Merge pull request #3290 from rubenk/configure-ac-fix-typo-in-error-message

configure.ac: fix a typo in an error message

5 years agoconfigure.ac: fix a typo in an error message
Ruben Kerkhof [Thu, 8 Nov 2018 11:29:57 +0000 (12:29 +0100)]
configure.ac: fix a typo in an error message

Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
5 years agoMerge pull request #3205 from donaldsharp/default
Rafael Zalamena [Wed, 7 Nov 2018 20:48:21 +0000 (18:48 -0200)]
Merge pull request #3205 from donaldsharp/default

bgpd: make name of default vrf/bgp instance consistent

5 years agobgpd: Late registration of Extended Nexthop should allow RA's to happen
Donald Sharp [Tue, 6 Nov 2018 20:55:36 +0000 (15:55 -0500)]
bgpd: Late registration of Extended Nexthop should allow RA's to happen

When we have a late registration of the Extended Nexthop capability
for BGP and the peer already has nexthop information stored, go
through and enable RA on the important interfaces.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agozebra: Carry onlink if set from resolving nexthop
Donald Sharp [Wed, 7 Nov 2018 16:26:24 +0000 (11:26 -0500)]
zebra: Carry onlink if set from resolving nexthop

When resolving a nexthop, carry the onlink flag if it
is set to the new nexthop.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agozebra: Add `match ipv6 address WORD` as a legal option
Donald Sharp [Wed, 7 Nov 2018 00:25:58 +0000 (19:25 -0500)]
zebra: Add `match ipv6 address WORD` as a legal option

Zebra did not have the ability to use v6 access-lists
as part of a route-map.  Add it in.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agowatchfrr: Echo statements are blocking the execution of frr script
Sri Mohana Singamsetty [Tue, 6 Nov 2018 17:50:40 +0000 (09:50 -0800)]
watchfrr: Echo statements are blocking the execution of frr script

1) Certain echo statements present in the script before/after SSD process
restart are causing the FRR script to hang. This is breaking the frr script
functionality for start/stop/restart. Removed such echo statements.

Tests:
1. Multiple start, stop, restart
2. Multiple restarts/kill of same process.

Signed-off-by: Sri Mohana Singamsetty <msingamsetty@vmware.com>
5 years agowatchfrr: replace /usr/sbin/service frr with /usr/lib/frr/frr script
Sri Mohana Singamsetty [Tue, 6 Nov 2018 17:46:06 +0000 (09:46 -0800)]
watchfrr: replace /usr/sbin/service frr with /usr/lib/frr/frr script

Need to use /usr/lib/frr/frr script for start/stop/restart of FRR. /usr/sbin/service frr command is not working as expected.

Signed-off-by: Sri Mohana Singamsetty <msingamsetty@vmware.com>
5 years agoMerge pull request #3162 from pguibert6WIND/vpn_route_map_issue
Renato Westphal [Sat, 3 Nov 2018 18:20:20 +0000 (15:20 -0300)]
Merge pull request #3162 from pguibert6WIND/vpn_route_map_issue

bgpd: vpn route-map config should be kept, except if vrf list is on

5 years agoMerge pull request #3271 from donaldsharp/nh_encode_better
Renato Westphal [Sat, 3 Nov 2018 18:15:25 +0000 (15:15 -0300)]
Merge pull request #3271 from donaldsharp/nh_encode_better

lib, zebra: Encode nexthop vrf in nht updates

5 years agodoc: update libyang build instructions
Renato Westphal [Sat, 3 Nov 2018 17:27:33 +0000 (15:27 -0200)]
doc: update libyang build instructions

The --with-yangmodelsdir and --with-libyang-pluginsdir build-time options
pertain to FRR so they shouldn't be placed along with the libyang build
instructions. Move these instructions to where they belong to avoid
confusion.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agopimd, zebra: Encode nexthop vrf in message
Donald Sharp [Thu, 1 Nov 2018 23:24:59 +0000 (19:24 -0400)]
pimd, zebra: Encode nexthop vrf in message

Encode the nexthop vrf in the message sent about mrib lookups.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agolib, zebra: Encode nexthop vrf in nht updates
Donald Sharp [Thu, 1 Nov 2018 22:33:54 +0000 (18:33 -0400)]
lib, zebra: Encode nexthop vrf in nht updates

The nexthop vrf was not being encoded in nht updates.
Add it in.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #3269 from opensourcerouting/fixes/libyang
Donald Sharp [Thu, 1 Nov 2018 21:31:33 +0000 (17:31 -0400)]
Merge pull request #3269 from opensourcerouting/fixes/libyang

Fixes/libyang

5 years agodoc: Add building-libyang.rst to distfiles
Christian Franke [Thu, 1 Nov 2018 13:03:09 +0000 (14:03 +0100)]
doc: Add building-libyang.rst to distfiles

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoconfigure: Check whether libyang has ENABLE_LYD_PRIV
Christian Franke [Thu, 1 Nov 2018 12:41:14 +0000 (13:41 +0100)]
configure: Check whether libyang has ENABLE_LYD_PRIV

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
5 years agoMerge pull request #3255 from dslicenc/show_evpn_mac_json
Russ White [Thu, 1 Nov 2018 01:47:18 +0000 (21:47 -0400)]
Merge pull request #3255 from dslicenc/show_evpn_mac_json

zebra: add json support to show evpn mac vni <num> mac <mac>

5 years agoMerge pull request #3239 from pguibert6WIND/ospf_virtual_link_config
Russ White [Thu, 1 Nov 2018 01:41:28 +0000 (21:41 -0400)]
Merge pull request #3239 from pguibert6WIND/ospf_virtual_link_config

ospfd: do not remove area structure, while vls are configured

5 years agoMerge pull request #3139 from adharkar/frr-bgp_cli
Russ White [Thu, 1 Nov 2018 01:36:23 +0000 (21:36 -0400)]
Merge pull request #3139 from adharkar/frr-bgp_cli

bgpd: BGP JSON show commands enhancements

5 years agoMerge pull request #3138 from donaldsharp/fairy_dust
Russ White [Thu, 1 Nov 2018 01:30:15 +0000 (21:30 -0400)]
Merge pull request #3138 from donaldsharp/fairy_dust

Additional information in zebra and bgp

5 years agoMerge branch 'master' into frr-bgp_cli
adharkar [Wed, 31 Oct 2018 22:54:43 +0000 (15:54 -0700)]
Merge branch 'master' into frr-bgp_cli

5 years agoMerge pull request #2705 from opensourcerouting/northbound-yang-v2
Donald Sharp [Wed, 31 Oct 2018 22:50:45 +0000 (18:50 -0400)]
Merge pull request #2705 from opensourcerouting/northbound-yang-v2

Northbound API

5 years agoMerge pull request #3263 from donaldsharp/pim_bsd
Jafar Al-Gharaibeh [Wed, 31 Oct 2018 16:27:56 +0000 (11:27 -0500)]
Merge pull request #3263 from donaldsharp/pim_bsd

Pim bsd

5 years agoMerge pull request #3262 from mjstapp/clang_atomic_workaround
Donald Sharp [Wed, 31 Oct 2018 14:34:35 +0000 (10:34 -0400)]
Merge pull request #3262 from mjstapp/clang_atomic_workaround

zebra: temporary workaround for a clang issue with atomics

5 years agobgpd: add valgrind suppression file for to ignore libyang per dll memory leak
Lou Berger [Wed, 31 Oct 2018 13:47:56 +0000 (09:47 -0400)]
bgpd: add valgrind suppression file for to ignore libyang per dll memory leak

Signed-off-by: Lou Berger <lberger@labn.net>
5 years agodoc: add info on libyang install and configure options
Lou Berger [Wed, 31 Oct 2018 12:31:46 +0000 (08:31 -0400)]
doc: add info on libyang install and configure options

Signed-off-by: Lou Berger <lberger@labn.net>
5 years agopimd: Send 1 on all systems for MRT_INIT
Donald Sharp [Tue, 30 Oct 2018 19:12:07 +0000 (15:12 -0400)]
pimd: Send 1 on all systems for MRT_INIT

When sending a sockoption for MRT_INIT, *bsd requires that
the data passed in must be 1.  While linux does not, the
code was sending in a positive value that was causing issues
on *bsd of protocol not supported.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agopimd: *bsd needs priviledge escalation to init PIM
Donald Sharp [Tue, 30 Oct 2018 18:17:02 +0000 (14:17 -0400)]
pimd: *bsd needs priviledge escalation to init PIM

When trying to run PIM on *bsd, the kernel expects to only
allow the pim kernel socket to work if we elevate priviledges.
So do so.

This commit gets us further in the startup of PIM on *bsd
but is not sufficient to get it fully started yet.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: Allow registration of nexthops after zebra connection
Donald Sharp [Fri, 5 Oct 2018 15:31:29 +0000 (11:31 -0400)]
bgpd: Allow registration of nexthops after zebra connection

If we attempt to register nexthops before we have the zebra
connection, they will not be installed.  After we have noticed
that we are up, re-install them.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: Add some debugs to note when we are not talking to zebra
Donald Sharp [Fri, 5 Oct 2018 13:43:28 +0000 (09:43 -0400)]
bgpd: Add some debugs to note when we are not talking to zebra

Allow some debug notification when we are unable to talk
to zebra due to the connection not being there yet.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agozebra: Add counting to nexthop register/unregister events
Donald Sharp [Fri, 5 Oct 2018 13:28:41 +0000 (09:28 -0400)]
zebra: Add counting to nexthop register/unregister events

Add a bit of code to note how many register/unregister nht
events we have had.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: move non-best local path checks outside the function
Anuradha Karuppiah [Fri, 19 Oct 2018 15:46:46 +0000 (08:46 -0700)]
bgpd: move non-best local path checks outside the function

This change is a fixup to -
7b5e18 -  bgpd: use IP address as tie breaker if the MM seq number is the
same

And is being done in response to review comments. This commit brings no
functional change; simply moves around code for easier maintanence.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agobgpd, lib, vtysh, zebra: Convert to using CMD_VNI_RANGE
Donald Sharp [Fri, 19 Oct 2018 00:44:52 +0000 (20:44 -0400)]
bgpd, lib, vtysh, zebra: Convert to using CMD_VNI_RANGE

For the vni range use a macro to keep track of it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agozebra: set remoteseq to 0 when remote mac is deleted by bgpd
Anuradha Karuppiah [Tue, 16 Oct 2018 19:59:24 +0000 (12:59 -0700)]
zebra: set remoteseq to 0 when remote mac is deleted by bgpd

When the remote mac is deleted by bgpd we can end up with an auto mac
entry in zebra if there are neighs referring to the mac. The remote sequence
number in the auto mac entry needs to be reset to 0 as the mac entry may
have been removed on all VTEPs (including the originating one).

Now if the MAC comes back on a remote VTEP it may be added with MM=0 which
 will NOT be accepted if the remote seq was not reset in the previous step.

Ticket: CM-22707

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
5 years agozebra: make neigh active when it is modified from local to remote
Anuradha Karuppiah [Tue, 16 Oct 2018 15:23:22 +0000 (08:23 -0700)]
zebra: make neigh active when it is modified from local to remote

This is a fixup to commit -
f32ea5c07 - zebra: act on kernel notifications for remote neighbors

The original commit handled a race condition between kernel and zebra
that would result in an inconsistent state i.e.
kernel has an offload/remote neigh
zebra has a local neigh

The original commit missed setting the neigh to active when zebra
tried to resolve the inconsistency by modifying the local neigh to
remote neigh on hearing back its own kernel update. Fixed here.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Ticket: CM-22700

5 years agobgpd: use IP address as tie breaker if the MM seq number is the same
Anuradha Karuppiah [Mon, 15 Oct 2018 15:16:51 +0000 (08:16 -0700)]
bgpd: use IP address as tie breaker if the MM seq number is the same

Same sequence number handling is specified by RFC 7432 -
[
If two (or more) PEs advertise the same MAC address with the same
sequence number but different Ethernet segment identifiers, a PE that
receives these routes selects the route advertised by the PE with the
lowest IP address as the best route.

If the PE is the originator of the MAC route and it receives the same
MAC address with the same sequence number that it generated, it will
compare its own IP address with the IP address of the remote PE and
will select the lowest IP.  If its own route is not the best one, it
will withdraw the route.
]

To implement that specification this commit uses nexthop IP as a tie
breaker between two paths of equal seq number with lower IP winning.

Now if a local path already exists with the same sequence number but higher
(local-VTEP) IP it is evicted (deleted and withdrawn from the peers) and
the winning new remote path is installed in zebra. This is existing code
and handled implicitly via evpn_route_select_install.

If a local path is rxed from zebra with the same sequence as the
current remote winner it is rejected (not installed in the bgp
routing tables) and zebra is asked to re-install the older/remote winner.
This is a race condition that can only happen if bgp's add and zebra's add
cross paths. Additional handling has been added in this commit via
evpn_cleanup_local_non_best_route to take care of the race condition.

Ticket: CM-22674
Reviewed By: CCR-7937

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agobgpd: perform route selection again when the local path is deleted
Anuradha Karuppiah [Fri, 12 Oct 2018 15:43:19 +0000 (08:43 -0700)]
bgpd: perform route selection again when the local path is deleted

This is needed to install the remote dst when a more preferred local
path is removed.

Ticket: CM-22685
Reviewed By: CCR-7936

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agozebra: send a local-mac del to bgpd on mac mod to remote
Anuradha Karuppiah [Thu, 11 Oct 2018 15:48:42 +0000 (08:48 -0700)]
zebra: send a local-mac del to bgpd on mac mod to remote

When events cross paths between bgp and zebra bgpd could end up with a
dangling local MAC entry. Consider the following sequence of events on
rack-1 -
1. MAC1 has MM sequence number 1 and points to rack-3
2. Now a packet is rxed locally on rack-1 and rack-2 (simultaneously) with
source-mac=MAC1.
3. This would cause rack-1 and rack-2 to set the MM seq to 2 and
simultaneously report the MAC as local.
4. Now let's say on rack-1 zebra's MACIP_ADD is in bgpd's queue. bgpd
accepts rack-3's update and sends a remote MACIP add to zebra with MM=2.
5. zebra updates the MAC entry from local=>remote.
6. bgpd now processes zebra's "stale local" making it the best path.
However zebra no longer has a local MAC entry.

At this point bgpd and zebra are effectively out of sync i.e. bgpd has a
local-MAC which is not present in the kernel or in zebra.

To handle this window zebra should send a local MAC delete to bgpd on
modifying its cache to remote.

Ticket: CM-22687
Reviewed By: CCR-7935

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agobgpd: hidden commands to add/del a local mac
Anuradha Karuppiah [Wed, 10 Oct 2018 21:28:32 +0000 (14:28 -0700)]
bgpd: hidden commands to add/del a local mac

local mac add/del comes from zebra. the hidden commands help verify
various race conditions between bgp and zebra.

Ticket: CM-22687
Reviewed By: CCR-7939

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agobgpd: make name of default vrf/bgp instance consistent
Don Slice [Fri, 20 Jul 2018 15:02:15 +0000 (15:02 +0000)]
bgpd: make name of default vrf/bgp instance consistent

Problems were reported with the name of the default vrf and the
default bgp instance being different, creating confusion.  This
fix changes both to "default" for consistency.

Ticket: CM-21791
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: CCR-7658
Testing: manual testing and automated tests before pushing

5 years agoconfigure.ac: add --with-yangmodelsdir=DIR and
Lou Berger [Tue, 30 Oct 2018 21:39:47 +0000 (17:39 -0400)]
configure.ac: add  --with-yangmodelsdir=DIR and
      --with-libyang-pluginsdir=DIR config options

Signed-off-by: Lou Berger <lberger@labn.net>
5 years agozebra: temporary workaround for a clang issue with atomics
Mark Stapp [Tue, 30 Oct 2018 18:05:47 +0000 (14:05 -0400)]
zebra: temporary workaround for a clang issue with atomics

Current clang has an issue with the pointer/target argument
to at least one atomic/intrinsic. A variable with '_Atomic'
generates a compile-time error. Use a cast as a workaround
here to allow use of clang for now.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years agoMerge pull request #3261 from mjstapp/fix_rib_close
Donald Sharp [Tue, 30 Oct 2018 16:12:10 +0000 (12:12 -0400)]
Merge pull request #3261 from mjstapp/fix_rib_close

zebra: only uninstall once, when closing rib table

5 years agoMerge pull request #3257 from kooky/patch-1
David Lamparter [Tue, 30 Oct 2018 14:54:32 +0000 (15:54 +0100)]
Merge pull request #3257 from kooky/patch-1

Link-detect documentation

5 years agozebra: only uninstall once, when closing rib table
Mark Stapp [Tue, 30 Oct 2018 13:41:55 +0000 (09:41 -0400)]
zebra: only uninstall once, when closing rib table

When the rib code is informed that a table is closing/
going away, only try once to uninstall associated routes from
the fib/dataplane. The close path can be called multiple times
in some cases - zebra shutdown, e.g.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years agoLink-detect documentation
Tim Bray [Mon, 29 Oct 2018 21:12:14 +0000 (21:12 +0000)]
Link-detect documentation

As a quagga user, I didn't realise link-detect is on by default.

5 years agozebra: remove space from json string for show evpn mac vni <num> mac <mac>
Don Slice [Mon, 29 Oct 2018 17:16:14 +0000 (17:16 +0000)]
zebra: remove space from json string for show evpn mac vni <num> mac <mac>

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
5 years agozebra: add json support to show evpn mac vni <num> mac <mac>
Don Slice [Fri, 26 Oct 2018 20:57:23 +0000 (20:57 +0000)]
zebra: add json support to show evpn mac vni <num> mac <mac>

Added the json output capability in order to improve troubleshooting
capabilities.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
5 years agoMerge pull request #2946 from mjstapp/dplane_2
Donald Sharp [Sun, 28 Oct 2018 20:10:45 +0000 (16:10 -0400)]
Merge pull request #2946 from mjstapp/dplane_2

Zebra: async dataplane, phase 1

5 years agoMerge pull request #3252 from opensourcerouting/buildfoo-20181028
Donald Sharp [Sun, 28 Oct 2018 20:07:50 +0000 (16:07 -0400)]
Merge pull request #3252 from opensourcerouting/buildfoo-20181028

build: SNMP license, rfptest & ospfclient as noinst, redhat spec w/o CONFDATE

5 years agoredhat: remove @CONFDATE@ from spec
David Lamparter [Sun, 28 Oct 2018 18:49:32 +0000 (19:49 +0100)]
redhat: remove @CONFDATE@ from spec

CONFDATE should not be used like this.  Also, the extraversion is now
burned into tarballs anyway so this is no longer neccessary.

Signed-off-by: David Lamparter <equinox@diac24.net>
5 years agobuild: make rfptest and ospfclient "noinst"
David Lamparter [Sun, 28 Oct 2018 15:05:38 +0000 (16:05 +0100)]
build: make rfptest and ospfclient "noinst"

Both of these are testing/demo-style tools that don't make sense as part
of a normal installation.  So don't install them.

NB: this is only the executables, libospfclient and the RFP code are not
affected.

Signed-off-by: David Lamparter <equinox@diac24.net>
5 years agobuild: crop excessive net-snmp library list
David Lamparter [Sat, 27 Oct 2018 17:06:22 +0000 (19:06 +0200)]
build: crop excessive net-snmp library list

This fixes the longstanding GPL vs. OpenSSL licensing issue in our SNMP
code (and cuts down on its other dependencies a wee bit.)

In a way, net-snmp is really buggy here in what it says that we should
link against, but I don't know their application scenarios well enough
to say it should be changed at their end.

Signed-off-by: David Lamparter <equinox@diac24.net>
5 years agolib: remove agentx already enabled warning
Quentin Young [Sun, 28 Oct 2018 02:50:47 +0000 (02:50 +0000)]
lib: remove agentx already enabled warning

This duplicates itself N times since it's not wrappered in a vtysh
command. In lieu of doing that, just remove the message, it's not really
necessary.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agofrr: ignore libtool.orig
Quentin Young [Sun, 28 Oct 2018 02:25:42 +0000 (02:25 +0000)]
frr: ignore libtool.orig

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agodoc: include maintainer release procedure in docs
Quentin Young [Sun, 28 Oct 2018 02:09:40 +0000 (02:09 +0000)]
doc: include maintainer release procedure in docs

Gotta include it in a toctree for it to show up

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agodoc: fix code-block syntax errors
Quentin Young [Sun, 28 Oct 2018 02:07:09 +0000 (02:07 +0000)]
doc: fix code-block syntax errors

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agodoc: ignore libyang-building.rst in sources
Quentin Young [Sun, 28 Oct 2018 02:06:30 +0000 (02:06 +0000)]
doc: ignore libyang-building.rst in sources

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agodoc: add missing docs for ipv6 isis router cmd
Quentin Young [Sun, 28 Oct 2018 01:31:08 +0000 (01:31 +0000)]
doc: add missing docs for ipv6 isis router cmd

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agodoc: strip trailing whitespace
Quentin Young [Sun, 28 Oct 2018 01:07:06 +0000 (01:07 +0000)]
doc: strip trailing whitespace

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agotools: update checkpatch to allow indented labels
Renato Westphal [Sat, 20 Oct 2018 14:37:39 +0000 (11:37 -0300)]
tools: update checkpatch to allow indented labels

clang-format always indent labels by default and that can't be changed
with any configuration option. Also, indented labels tend to improve
code readability, especially in long functions.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agodebianpkg: fix lintian warn: No need to keep .la libs for packages
Martin Winter [Sat, 20 Oct 2018 10:39:07 +0000 (12:39 +0200)]
debianpkg: fix lintian warn: No need to keep .la libs for packages

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
5 years agolib: fix fetching enum values for derived types
Emanuele Di Pascale [Wed, 17 Oct 2018 13:10:47 +0000 (15:10 +0200)]
lib: fix fetching enum values for derived types

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>