Commit Graph

587 Commits

Author SHA1 Message Date
Don Slice
d990e3847c bgpd: add "set label-index" route-map option
Added the ability to set the label-index value based on criteria other
than the network statement.  Manual testing looks good and added to the
ticket.

Ticket: CM-16513
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: CCR-6339
2017-06-06 06:48:53 -07:00
Don Slice
a9609069a5 bgpd: fix ipv6 network statement label-index node
Problem reported with the inability to define "network xx::/64 label-index" to
the config.  Found that the install_element was pointing to the wrong node.

Ticket: CM-16615
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2017-06-05 13:13:57 +00:00
Daniel Walton
f040db8f7a bgpd: resolve IPv6 LL and Global nexthop issue
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-05-30 15:02:34 +00:00
Donald Sharp
8f86e04871 Merge pull request #632 from opensourcerouting/bgpd-show-segfaults
bgpd: fix segfault with some show commands
2017-05-30 09:23:56 -04:00
Don Slice
4dfee0ce4e bgpd: labeled-unicast issue changing from no import-check to using import-check
Problem seen in testing import-check using labeled-unicast address-family. When
transitioning from "no bgp network import-check" to "bgp network import-check",
previously installed networks were not removed.  This fix resolves this.

Ticket: CM-16512
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2017-05-30 12:16:01 +00:00
Renato Westphal
8282ecff17 bgpd: fix segfault with some show commands
The following commands were causing bgpd to crash when vpnv4/vpnv6 static
routes are configured:

bgpd aborted: vtysh  -c "show ip bgp view all ipv4 vpn json"
bgpd aborted: vtysh  -c "show ip bgp view all ipv4 vpn"
bgpd aborted: vtysh  -c "show ip bgp view all ipv6 vpn json"
bgpd aborted: vtysh  -c "show ip bgp view all ipv6 vpn"
bgpd aborted: vtysh  -c "show ip bgp vrf all ipv4 vpn json"
bgpd aborted: vtysh  -c "show ip bgp vrf all ipv4 vpn"
bgpd aborted: vtysh  -c "show ip bgp vrf all ipv6 vpn json"
bgpd aborted: vtysh  -c "show ip bgp vrf all ipv6 vpn"
bgpd aborted: vtysh  -c "show bgp view all ipv4 vpn json"
bgpd aborted: vtysh  -c "show bgp view all ipv4 vpn"
bgpd aborted: vtysh  -c "show bgp view all ipv6 vpn json"
bgpd aborted: vtysh  -c "show bgp view all ipv6 vpn"
bgpd aborted: vtysh  -c "show bgp vrf all ipv4 vpn json"
bgpd aborted: vtysh  -c "show bgp vrf all ipv4 vpn"
bgpd aborted: vtysh  -c "show bgp vrf all ipv6 vpn json"
bgpd aborted: vtysh  -c "show bgp vrf all ipv6 vpn"

Problem found with the CLI fuzzer.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-05-30 08:30:57 -03:00
vivek
ea2e48899b bgpd: Fix route detailed show for EVPN
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2017-05-25 10:20:04 -07:00
vivek
86f1ef44f7 lib: Refine EVPN prefix definition
Modify EVPN prefix to use the generic IP address structure. Add support
for EVPN type-2 and type-3 prefix dump. Fix references to modified fields
as needed.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-25 10:20:03 -07:00
Lou Berger
1ec1afd6cb bgpd: remove encap safi vty related files bgp_encap.h|c
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-23 15:58:50 -04:00
Lou Berger
375a2e67ad bgpd: remove encap safi show commands
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-23 15:58:50 -04:00
Renato Westphal
ebb0c02ad3 bgpd: fix display of encap routes in the running configuration
Static encap routes don't have an MPLS label. Also, use %u instead of
%d to print the label.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-05-19 16:56:13 -03:00
Renato Westphal
dfe56adf91 bgpd: add missing white space in debug message
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-05-19 10:48:16 -03:00
Donald Sharp
78ca62a7b2 Merge remote-tracking branch 'origin/stable/3.0' 2017-05-19 09:41:15 -04:00
Lou Berger
6a1d7e82ae bgpd: set NH len for ipv4 vpn|encap statics
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-19 07:56:13 -04:00
Lou Berger
6056699585 bgpd: fix ipv4|6 vpn|encap with route-map show config
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-18 17:53:06 -04:00
Lou Berger
2f98bf4770 bgpd: repalce direct calls to system memory functions
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-18 17:42:04 -04:00
Lou Berger
fb1d2a2d97 bgpd: cleanup vpn label config, set BoS, use 'label' in place of 'tag'
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-18 17:42:04 -04:00
David Lamparter
e2f30ad1c2 Merge branch 'frr/pull/569'
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-05-18 12:34:34 +02:00
David Lamparter
bac7b7b935 Merge pull request #537 from donaldsharp/vrf_stuff
Vrf stuff
2017-05-17 22:06:39 +02:00
Lou Berger
201c3dac29 bgpd: fix config of v6 vpn networks tags
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-17 14:56:43 -04:00
Donald Sharp
910a5c0e21 Merge branch 'master' into vrf_stuff 2017-05-16 07:58:55 -04:00
David Lamparter
896014f4bc *: make consistent & update GPLv2 file headers
The FSF's address changed, and we had a mixture of comment styles for
the GPL file header.  (The style with * at the beginning won out with
580 to 141 in existing files.)

Note: I've intentionally left intact other "variations" of the copyright
header, e.g. whether it says "Zebra", "Quagga", "FRR", or nothing.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-05-15 16:37:41 +02:00
Donald Sharp
59371d4f21 Merge pull request #527 from LabNConsulting/working/master/patch-set/issue471+473
Master: Restore label distribution for VPN safi
2017-05-15 10:01:04 -04:00
Donald Sharp
46c3ce8327 bgpd: Cleanup some SA
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-15 07:33:48 -04:00
Donald Sharp
56afaa8bcb Merge remote-tracking branch 'origin/stable/3.0' 2017-05-14 21:19:33 -04:00
Lou Berger
0918e873f2 bgpd: fix table leak introduced in labeled unicast (Issue #473)
Fix tested for vpn and encap ribs/safi.  Labeled unicast
      may still leak as not tested.

Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-14 20:26:07 -04:00
Lou Berger
57907d6fe9 bgpd: fix VPN SAFI label distribution (Issue #473)
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-13 16:38:35 -04:00
Renato Westphal
05910d5938 Merge pull request #495 from donaldsharp/mpls_fixes
Mpls fixes
2017-05-12 12:23:52 -03:00
Renato Westphal
7c7f4284cf bgpd: fix segfault with '[no] bgp network import-check'
These commands were causing bgpd to crash if a static VPN route was
configured.

While here, fix a bug in bgp_static_add() and bgp_static_delete().

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-05-12 12:03:53 -03:00
Renato Westphal
ff59521466 bgpd: fix 'show bgp [...] longer-prefixes'
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-05-12 11:58:37 -03:00
Daniel Walton
343e90c328 bgpd: add ENHE support for "address-family ipv4 labeled-unicast"
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
2017-05-10 10:06:47 -04:00
Quentin Young
66e78ae64b *: update thread_add_* calls
Pass pointer to pointer instead of assigning by return value. See
previous commit message.

To ensure that the behavior stays functionally correct, any assignments
with the result of a thread_add* function have been transformed to set
the pointer to null before passing it. These can be removed wherever the
pointer is known to already be null.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-05-09 20:44:22 +00:00
Quentin Young
ffa2c8986d *: remove THREAD_ON macros, add nullity check
The way thread.c is written, a caller who wishes to be able to cancel a
thread or avoid scheduling it twice must keep a reference to the thread.
Typically this is done with a long lived pointer whose value is checked
for null in order to know if the thread is currently scheduled.  The
check-and-schedule idiom is so common that several wrapper macros in
thread.h existed solely to provide it.

This patch removes those macros and adds a new parameter to all
thread_add_* functions which is a pointer to the struct thread * to
store the result of a scheduling call. If the value passed is non-null,
the thread will only be scheduled if the value is null. This helps with
consistency.

A Coccinelle spatch has been used to transform code of the form:

  if (t == NULL)
    t = thread_add_* (...)

to the form

  thread_add_* (..., &t)

The THREAD_ON macros have also been transformed to the underlying
thread.c calls.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-05-09 20:44:19 +00:00
Don Slice
25c3f3f611 bgpd: resolve crash in workqueue processing due to invalid safi
Crash uncovered when workqueue item was pulled with safi set to 7
(SAFI_LABELED_UNICAST) without labled-unicast being configured.
Also fixed minor issue removing aggregate-address command due to bad
index.

Ticket: CM-16169
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-04 11:05:23 -07:00
Donald Sharp
9402b9f648 bgpd: Fix crash associated with aggregate command
The cli rework created this issue

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-05-02 22:34:29 -04:00
Donald Sharp
05ba625af7 Merge remote-tracking branch 'origin/stable/3.0' 2017-05-02 15:52:09 -04:00
Donald Sharp
87e34b5889 bgpd: Fix some crashes due to NULL pointer
If you specified A.B.C.D, the code would still try to
read A.B.C.D/M and not find it and pass in a NULL pointer
which crashed the code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-04-28 13:54:29 -04:00
Daniel Walton
c5a543b433 Update to draft-ietf-idr-bgp-prefix-sid-05
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

The initial implementation was against draft-keyupate-idr-bgp-prefix-sid-02
This updates our label-index implementation up to draft-ietf-idr-bgp-prefix-sid-05
- changed BGP_ATTR_LABEL_INDEX to BGP_ATTR_PREFIX_SID
- since there are multiple TLVs in BGP_ATTR_PREFIX_SID you can no longer
  rely on that flag to know if there is a label-index for the path. I
changed bgp_attr_extra_new() to init the label_index to
BGP_INVALID_LABEL_INDEX
- put some placeholder code in for the other two TLVs (IPv6 and
  Originator SRGB)
2017-04-26 21:45:32 +00:00
Daniel Walton
d39cdd933f BGP_ATTR_LABEL_INDEX fixes
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>

- cleaned up the "show bgp ipv4 labeled-unicast x.x.x.x" output

- fixed some json keys to use camelCase

- bgp_attr_label_index() was clearing BGP_ATTR_LABEL_INDEX because it
  was comparing mp_update->afi against SAFI_LABELED_UNICAST instead of
  mp_update->safi

- added BGP_ATTR_LABEL_INDEX to attr_str
2017-04-26 13:59:02 -04:00
Donald Sharp
c05f73e0f4 Merge remote-tracking branch 'origin/master' into mpls2 2017-04-26 07:50:02 -04:00
Donald Sharp
9fbea8d56d bgpd: Fix up several issues in bgp_route.c
1) Some commands were installed in the wrong node
2) Fix output to show labeled information to correctly display
3) Whitespace issue in route-map command

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-04-15 13:26:56 -04:00
Donald Sharp
5260e25d20 bgpd: 'show .... bgp regexp WORD' fixed
The command was always just returning as part of the
bgp_regexp_show function.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-04-14 20:39:56 -04:00
Renato Westphal
d536095fd3 bgpd: fixes for the "show bgp large-community" command
* Fix a segfault when the "show bgp large-community" command is given
  without any optional large communities;
* Fix parsing of optional large communities. Without this fix a
  "Large-community malformed" error is shown even for valid large
  communities.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2017-04-10 18:49:38 -03:00
Donald Sharp
42313c3f44 bgpd: bgp_static_update just called bgp_static_update_main
Just make it one function call

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
2017-04-06 10:32:08 -04:00
Vivek Venkatraman
28d58fd7b1 bgpd, lib, zebra: Implement handling of BGP-Prefix-SID label Index
Implement BGP Prefix-SID IETF draft to be able to signal a labeled-unicast
prefix with a label index (segment ID). This makes it easier to deploy
global MPLS labels with BGP, even without other aspects of Segment Routing
implemented.

This patch implements the handling of the BGP-Prefix-SID Label Index
attribute. When received from a peer and the index is acceptable, the local
label is picked up from the SRGB and is programmed as the incoming label as
well as advertised to peers. If the index is not acceptable, no local label
is assigned. The outgoing label will always be the one advertised by the
downstream neighbor.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2017-04-06 10:32:07 -04:00
Vivek Venkatraman
6cf48acc1c bgpd: This patch implements the exchange of the BGP-Prefix-SID label index attr
Implement BGP Prefix-SID IETF draft to be able to signal a labeled-unicast
prefix with a label index (segment ID). This makes it easier to deploy
global MPLS labels with BGP, even without other aspects of Segment Routing
implemented.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2017-04-06 10:32:07 -04:00
Vivek Venkatraman
1b6d5c7e08 bgpd, zebra: Implement BGP Prefix-SID IETF draft
Implement BGP Prefix-SID IETF draft to be able to signal a labeled-unicast
prefix with a label index (segment ID). This makes it easier to deploy
global MPLS labels with BGP, even without other aspects of Segment Routing
implemented.

This patch implements configuration of the global label block (SRGB) and
configuration of a label-index for a network in BGP.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2017-04-06 10:32:07 -04:00
Don Slice
b60f527556 bgpd: labeled unicast display
Implement 'show' and 'clear' commands for the labeled-unicast address-family.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2017-04-06 10:32:07 -04:00
Don Slice
cd1964ff38 bgpd: labeled unicast processing
Implement support for negotiating IPv4 or IPv6 labeled-unicast address
family, exchanging prefixes and installing them in the routing table, as
well as interactions with Zebra for FEC registration. This is the
implementation of RFC 3107.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2017-04-06 10:32:07 -04:00
Don Slice
f51bae9cf9 bgpd: labeled unicast config
Implement support for activating the labeled-unicast address family in
BGP and relevant configuration for this address family.

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2017-04-06 10:30:03 -04:00
David Lamparter
098c0eb8f4 Merge branch 'stable/2.0'
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-03-10 14:20:40 +01:00
Donald Sharp
2e464a954a bgpd: Remove dead code
Remove the accidently left code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-03-06 13:59:06 -05:00
Donald Sharp
666f2cefa1 bgpd: Fix more assignments inside of if statement
Code inspection showed a bunch more spots where
we were assigning the safi inside of a if statement

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-03-06 10:43:15 -05:00
Donald Sharp
471e1f1839 bgpd: Fix broken if statement
When outputting routes associated with a 'struct bgp'
do not force the safi to bee SAFI_EVPN and cause output
to be hosed.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-03-06 10:29:14 -05:00
Donald Sharp
f212a85776 bgp: Fix view/vrf lookup
This commit fixes the view/vrf lookup that got broken.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-03-02 13:31:01 -05:00
Donald Sharp
6bf1fe4727 bgpd: Fix memory leaks on shutdown
The original code on shutdown assumed a 'forced' mode
if there was no process_main_queue.  This construct
was violated by commit 2e02b9b2d1
due to not fully understanding the shutdown process.

If we are shutting down, don't store work to do later,
just gracefully don't do it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-03-01 20:26:06 -05:00
Christian Franke
b79d6f95a3 bgpd: fix bgp_info_addpath_{rx,tx}_str if addpath info is not present
The buffer needs to be set to length 0 if nothing is written into
it, otherwise bgpd will log uninitialized memory, disclosing information
and possibly leading to a crash.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2017-02-23 14:27:00 +01:00
Philippe Guibert
7acff3e735 bgpd: reflect mac handling change of apis to bgpd
As the prefix call function for mac handling has prefix_ prepended
before, the change must be propagated to all locations where those
functions are called.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:59:00 +01:00
Philippe Guibert
ffd28f0ec7 bgpd: use XMALLOC for ESI handling
The memory allocation mecanism from frr is used.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:59:00 +01:00
Philippe Guibert
0bee00f915 bgpd: evpn use string handling functions from mac manipulation
EVPN code adaptation to replace old mac string internal utility with the
new one available in lib folder.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Philippe Guibert
42362ae230 bgpd: remove HAVE_EVPN references
This commit removes HAVE_EVPN references from bgpd folder

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Philippe Guibert
4895ca3595 bgpd: use HAVE_EVPN to disable evpn frame handling
Transmission and Reception routines have a part of code that is
conditionnally compiled to the usage of HAVE_EVPN. Also, each time a
subfield of prefix evpn is reached, like in configuration also, then a
conditionnaly compilation with HAVE_EVPN is used.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Philippe Guibert
b94c6c5026 bgpd: fix show bgp l2vpn evpn all tag command
This commit fixes the nexthop display behaviour when an evpn entry is
matched. The commit handles both cases where IPv4 or IPv6 nexthop is
detected.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Philippe Guibert
061e9fdea5 bgpd: update mp_nexthop field in case mp-bgp entry is created
In case a manual set of MPLS, ENCAP, or EVPN entry is set, then the
nexthop attribute localted in attr->extra structure must be changed too.
In standard cases, where IPv4 IGP nexthop address is picked up, the same
address ie chosen.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Philippe Guibert
3da6fcd557 bgpd: enhance network command for evpn route type 5
A new vty command available under evpn address family. This command
takes following format:

(af-evpn)# [no] network <A.B.C.D/M|X:X::X:X/M> rd ASN:nn_or_IP-address:nn ethtag WORD
                 label WORD esi WORD gwip A.B.C.D routermac WORD
		 [route-map WORD]

Among new parameters, ethtag stands for the ethernet tag indentifier.
ESI stands for the ethernet segment identifier, and must be entered in
following format: 00:11:22:33:44:55:66:77:88:99.
gwip stands for the gateway IP address contained in RT5 message. A
check is done on that value since if gwip is ipv4, then ip prefix must
be ipv4. The same for ipv6.
RouterMAc is the gateway mac address sent as extended community
attribute.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Philippe Guibert
4c63a661e3 bgpd: vty commands added for EVPN address family
Enhancement of the following show vty evpn commands:

show bgp l2vpn evpn all A.B.C.D

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:59 +01:00
Julien Courtat
dc49391e36 bgpd: fix display of ethernet vpn route prefix in vty
L2VPN route prefix are composed of ethtag, mac address and ip address.
vty command "show bgp l2vpn rd <>" show macip prefix in the following
template: [ethtag][macaddress/len][ipaddress/len]

Signed-off-by: Julien Courtat <julien.courtat@6wind.com>

e
2017-02-14 13:58:58 +01:00
Philippe Guibert
784d3a4299 bgpd: enhance EPVN vty show commands
This patch introduces show show bgp evpn commands to dump
NLRI entries configured or received on BGP, related to EVPN
New command introduced is the following:
 show [ip] bgp l2vpn evpn [all | rd <rd name> ] [overlay]

Like for MPLS, similar set of commands is added for EVPN:
 show [ip] bgp l2vpn evpn [all|rd <RDNAME>]
 show [ip] bgp l2vpn evpn all neighbor <NEIGHBOR> routes
 show [ip] bgp l2vpn evpn all neighbor <NEIGHBOR> advertised-routes

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:58 +01:00
Philippe Guibert
dfa42ea338 bgpd: handling router mac extended community
For each received routermac extended community, the mac address is
copied into routermac extended community context. For each emission,
a check is done against routermac extended community, if L2VPN is
enabled. If enabled, the extended community is appended.

Signed-off-by: Philippe Gubiert <philippe.guibert@6wind.com>
2017-02-14 13:58:58 +01:00
Philippe Guibert
a2dac1ef6a bgpd: add EVPN RT5 gatewayIp address to bgp_static context
This field can be either IPv4 or IPv6 address and is filled in in
bgp_static configuration structure.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:58 +01:00
Philippe Guibert
aee875b537 bgpd: introduction of vxlan tunnel attribute
As per draft-ietf-idr-tunnel-encaps-02, section 3.2.1, BGP Encap
attribute supports vxlan tunnel type. A new tunnel attribute has been
appended to subtlv list, describing the vxlan network identifier to
be used for the routing information of the BGP update message.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:58 +01:00
Philippe Guibert
684a7227bd bgpd: route type 5 internal structures plus processing
The commit introduces the changes to be done to carry route type 5 EVPN
information in bgp extra attribute information. The commit also handles
the update processing for route type 5 information, including ESI,
gatewayIP and label information.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:58 +01:00
vivek
906ad49b5e bgpd: Update logging for EVPN prefixes
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>

Ticket: CM-12262
Reviewed By: CCR-5065
Testing Done: Manual
2017-02-14 13:58:58 +01:00
Philippe Guibert
7ef5a23288 bgpd: handling EVPN Route Type 5 NLRI message
This patch introduces code to receive a NLRI message with route type
5, as defined in draft-ietf-bess-evpn-prefix-advertisement-02. It
It increases the number of parameters to extract from the NLRI and
to store into bgp extra information structure. Those parameters are
the ESI (ethernet segment identifier), the gateway IP Address (which
acts like nexthop attribute but is contained inside the NLRI itself)
and the ethernet tag identifier ( that acts for the VXLan Identifier)
This patch updates bgp_update() and bgp_withdraw() api, and then does the
necessary adapations for rfapi.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:57 +01:00
Philippe Guibert
3d6c0dfa87 bgpd: basic support for EVPN
To handle BGP NLRI EVPN messages, bgp is modified to handle AFI_L2VPN
and SAFI_EVPN values.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-02-14 13:58:57 +01:00
Quentin Young
477be8c18f bgpd: fix array oob for show ip bgp
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2017-02-03 18:23:50 +00:00
Lou Berger
f799a22aa7 bgpd: cleanup/restore show ip|ipv6 bgp and show bgp ipv4 summary related commands
Signed-off-by: Lou Berger <lberger@labn.net>
2017-02-02 21:53:57 -05:00
G. Paul Ziemba
97736e321b bgpd rfapi: RR replated (Issue #91) treat filtered update
as implicit withdraw for rfapi

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2017-02-01 22:17:33 -05:00
G. Paul Ziemba
63f6bb813f bgpd rfapi: RR replated (Issue #91) treat filtered update
as implicit withdraw for rfapi

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2017-02-01 22:14:40 -05:00
Donald Sharp
41cebd7eff bgpd: Fix crash in a vpn command
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-27 16:17:08 -05:00
Lou Berger
1edcd64259 bgp: Fix merge mistake
I choose the wrong merge direction.  Fixed.

Signed-off-by: Lou Berger <lberger@labn.net>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-27 14:31:41 -05:00
Donald Sharp
7395a2c994 bgpd: Fixup some cli help strings that were missing
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-27 12:45:34 -05:00
Donald Sharp
1dc84b65df Merge remote-tracking branch 'origin/pr/113' into pr/111 2017-01-27 12:39:06 -05:00
Donald Sharp
c016b6c796 Merge remote-tracking branch 'origin/master' into pr/111 2017-01-27 11:44:42 -05:00
Donald Sharp
b4898a387b bgp: Add Asserts and remove dead code
Add asserts to how I expect bgp_vty_find_and_parse_afi_safi
to be used.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-27 09:07:44 -05:00
Donald Sharp
9317e17dc8 bgpd: Make usage of idx consistent
Convert the idx to &idx to make our api more consistent

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-27 08:12:53 -05:00
Donald Sharp
0e37c258a3 bgpd: Fix possible crash and some minor CR issues
This fix addresses these things:

1) Clean up documentation as requested
2) Fix a wrong search for "exact-match"
3) Fix possible crash.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-27 04:57:44 -05:00
Donald Sharp
7f12cb2b65 Merge remote-tracking branch 'origin/master' into bgpafisafi 2017-01-26 10:38:07 -05:00
Lou Berger
1c404af8b5 Merge branch 'master' into working/master/patch-set/4-misc-fixes
Merged pull request with master

Conflicts:
	bgpd/bgp_mplsvpn.c
	bgpd/bgp_route.c
	bgpd/rfapi/rfapi_vty.c
2017-01-26 09:59:03 -05:00
Donald Sharp
6dfe1c38d7 Merge pull request #101 from LabNConsulting/working/master/patch-set/3-vrf
Master version of basic vrf commands & some other missed fixes
2017-01-25 18:26:15 -05:00
David Lamparter
dcb817fd27 Merge branch 'frr/pull/92' (BGP Large Community support)
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-01-25 23:04:29 +01:00
David Lamparter
ed165abf90 bgpd: lcommunity: fix minor issues
- route_set_lcommunity would do nothing (and leak memory) if attr->extra
  wasn't up yet
- an if() arch in bgp_show_table() was duplicated (with no effect)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-01-25 22:35:03 +01:00
David Lamparter
2acb4ac250 bgpd: lcommunity: fix whitespace & copyright
(to match surrounding code)
"git diff -w" should be almost empty.

Copyright edited to say FRR, this is not GNU Zebra :)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-01-25 22:35:03 +01:00
Donald Sharp
c493f2d83a bgpd: Remove redundant warning message
When bgp_vty_find_and_parse_afi_safi_vrf detects
a invalidly named vrf, it warns the user.  There
is no need for the calling function to warn
again.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-25 09:43:11 -05:00
Lou Berger
4f280b15b1 bgpd: more VPN&ENCAP show afi safi related cleanup
Issued ID'ed by regression

Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-24 17:07:02 -05:00
Lou Berger
bbd1d850f7 bgpd: restore show bgp neighbors command 2017-01-24 13:44:48 -05:00
G. Paul Ziemba
28070ee3c4 bgpd rfapi: Shift rfapi receive hooks for vpn and encap safis into
bgp_update/bgp_withdraw (Issue #91)

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2017-01-24 13:42:43 -05:00
G. Paul Ziemba
eb78bc468e bgpd rfapi: Shift rfapi receive hooks for vpn and encap safis into
bgp_update/bgp_withdraw (Issue #91)

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2017-01-24 13:15:06 -05:00
David Lamparter
e5951aa21d Merge pull request #42 from donaldsharp/pim_lib_work2
Pim-SM + MSDP
2017-01-24 17:10:09 +01:00
Philippe Guibert
75688c44d9 bgpd: fix show ip bgp ipv4|ipv6 vpn command
The fix consists in setting the correct safi value.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-24 16:18:55 +01:00
Philippe Guibert
b2f0fa552b bgpd: move bgp_show_type enumerate to bgp_route.h
This bgp_show_type enumerate was duplicated and modified in several
places. The commit takes the enumerate with the biggest enumerate, so
that it can be used by all the functions using this enumerate.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-24 16:18:55 +01:00
Philippe Guibert
4e01997895 bgpd: fix ambiguity between show ip bgp ipv4|ipv6 encap|vpn commands
The commit is removed duplicated command show ip bgp ipv4|ipv6 enca|vpn
command that is conflicting between bgp_route.c and
bgp_mplsvpn.c/bgp_encap.c files. The fix is integrating the call to
specific mpls or encap settings from inside bgp_show_route() function.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-24 16:18:55 +01:00
Donald Sharp
08435c2b24 bgpd: Fix crash with parsing the community
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-24 09:47:59 -05:00
Donald Sharp
30a6a167a1 bgpd: Clean up 'show bgp neighbor ...' commands
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-23 22:34:50 -05:00
Donald Sharp
e01ca200c6 bgpd: Cleanup 'show .... statistics' command
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-23 22:34:50 -05:00
Donald Sharp
f2a8972b0b bgpd: Cleanup 'view all' command
1) Make [<view|vrf> WORD] consistent
2) Fix inconsistent help string
3) Fix the show .. vrf all command

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-23 22:34:50 -05:00
Donald Sharp
b00b230aa1 bgp: Fix 'show .... regexp REGEX...'
Fix this command to use the correct format for
a show command.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-23 22:34:49 -05:00
Donald Sharp
c41247f50e bgpd: Cleanup 'show .... <bestpath|multipath>'
Cleanup the bgp bestpath or multipath show commands.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-23 22:34:49 -05:00
Donald Sharp
af462945f1 bgpd: Start cleanup of 'show [ip] bgp ...' commands
Create bgp_vty_find_and_parse_afi_safi_vrf that
will parse the
`show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|encap>]]'
part of a command and to return the correct spot we are in the command.

Cleanup 'dampening parameters' part of this command.

Consolidate the creation of the bgp data structure to be a bit cleaner.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-23 22:34:49 -05:00
Lou Berger
24d812a9e3 bgpd: restore show bgp neighbors command 2017-01-23 15:59:08 -05:00
Donald Sharp
e5fe6d5931 Merge pull request #90 from LabNConsulting/remotes/origin/working/master/patch-set/2a-no-vrf
Master version of #83 Fix a number of VPN/Encap SAFI related issues (no VRF CLI changes)
2017-01-20 11:27:15 -05:00
Donald Sharp
52951b630a bgpd: Fix cli for large-communities
The original commit for large communities broke
'show ip bgp' and 'show bgp ipv4 unicast' and
their ilk.  This commit fixes this as well
as some vtysh parse errors identified.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-20 10:43:08 -05:00
Donald Sharp
b8b35c63a5 Merge remote-tracking branch 'origin/master' into pim_lib_work2
Conflicts:
	lib/zebra.h
	zebra/rt_netlink.c
2017-01-19 04:32:49 -05:00
Job Snijders
57d187bc77 Support for BGP Large Communities
BGP Large Communities are a novel way to signal information between
networks. An example of a Large Community is: "2914:65400:38016". Large
BGP Communities are composed of three 4-byte integers, separated by a
colon. This is easy to remember and accommodates advanced routing
policies in relation to 4-Byte ASNs.

This feature was developed by:
Keyur Patel <keyur@arrcus.com> (Arrcus, Inc.),
Job Snijders <job@ntt.net> (NTT Communications),
David Lamparter <equinox@opensourcerouting.org>
and Donald Sharp <sharpd@cumulusnetworks.com>

Signed-off-by: Job Snijders <job@ntt.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-18 18:38:53 -05:00
Lou Berger
fe3ca08faf bgpd: allow VPN next hop to be different AFI than NLRI next hop (Issue #71)
Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-18 18:26:45 -05:00
Lou Berger
7a4732c12b bgpd: fix typo in VPN next hop V6 test (Issue #71)
On top of:
      bgpd: allow VPN next hop to be different AFI than NLRI next
      	    hop (Issue #71)

Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-18 11:36:32 -05:00
Philippe Guibert
d690237310 bgpd: add define of compilation for vpn commands
Use KEEP_OLD_VPN_COMMANDS define to brace some vty commands used by bgp
to configure or show vpnvx contexts using old method, that is to say
using vty keyword vpnv4 or vpnv6 command.
In addition to this, the commit adds two new commands under route-map
with new format:
[no] set ipv4|ipv6 vpn nexthop <IPv4 Address> | <IPv6 Address>
It also add following command in old format:
[no] set vpnv6 nexthop <IPv6 Address>
Note that the commit does not take into account the availability of old
commands that are not available in new format.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com
2017-01-18 12:39:46 +01:00
Donald Sharp
b58ed1f8a8 Merge remote-tracking branch 'origin/master' into pim_lib_work2 2017-01-17 21:01:56 -05:00
David Lamparter
eb3d20d398 Merge pull request #59 from donaldsharp/cli_cleanup
Cli cleanup, largely VNC related, minor bgpd/ospfd/lib fixes.
2017-01-17 21:36:07 +01:00
Lou Berger
4c6f219aa2 bgpd: allow VPN next hop to be different AFI than NLRI next hop (Issue #71)
Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-17 14:59:10 -05:00
Lou Berger
4575cfc3bd bgpd: partial revert of vpn/encap safi show changes (Issue #14)
To remove commands duplicated in bgp_mplsvpn/_encap
      Also until vpn/encap specific show pieces are merged into
      generic afi/safi show.

Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-17 14:59:06 -05:00
Philippe Guibert
cf6c0c088e bgpd: fix nexthop comparison for nexthop vpnv6 attribute
As nexthop attribute for vpnv6 also contains a blank RD and a blank tag,
the IPv6 address length increases from 16 to 24 bytes. The same was
observed for vpnv4 nexthop, but was missing for VPNv6.
The same is done for martian nexthop debugging.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-17 12:13:11 +01:00
Olivier Dugeon
ab0c9543a9 Merge pull request #68 from donaldsharp/cleanup
Cleanup
2017-01-16 15:12:55 +01:00
Donald Sharp
9711caf869 bgpd: Put back show command to way it was originally
I modified the 'show ....' command to be one long line.
Upon reflection and porting the large-community code
I have decided that we need to put this back to the way
it was before.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-15 19:13:23 -05:00
Donald Sharp
efd64b137a Merge remote-tracking branch 'frr/master' into cli_cleanup 2017-01-15 18:56:01 -05:00
Donald Sharp
38bd4f6909 bgpd: Fixup optional safi parameters
The afi/safi specification should allow you to skip
the safi if it is defaulting to unicast.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-13 16:45:12 -05:00
Donald Sharp
9aa7f43f7e Merge branch 'master' into cleanup 2017-01-13 14:48:16 -05:00
Philippe Guibert
af37568a48 bgpd: fix nexthop comparison for nexthop vpnv6 attribute
As nexthop attribute for vpnv6 also contains a blank RD and a blank tag,
the IPv6 address length increases from 16 to 24 bytes. The same was
observed for vpnv4 nexthop, but was missing for VPNv6.
The same is done for martian nexthop debugging.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-13 14:19:59 +01:00
Liu Xiaofeng
c286be9683 bgpd: add network command for vpnv6 address family
Add the next commands:

    network X:X::X:X/M rd ASN:nn_or_IP-address:nn tag WORD [route-map WORD]
    no network X:X::X:X/M rd ASN:nn_or_IP-address:nn tag WORD

Also, fix show running-config for vpnv6 network, as well as modiying
bgp_static_set_safi, and take into account matching afi table.

Signed-off-by: Liu Xiaofeng <xiaofeng.liu@6wind.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-13 14:19:49 +01:00
Donald Sharp
56c1f7d852 frr: Remove HAVE_IPV6 from code base
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-13 08:05:50 -05:00
Lou Berger
912e52346f bgpd: convert 'show_ip_bgp_vpnv4' to afi/safi form (Issue #61) 2017-01-12 09:36:24 -05:00
Lou Berger
8c90786c95 bgpd: remove code contained by ifdef KEEP_OLD_VPNV4_COMMANDS
Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-12 08:54:22 -05:00
vivek
9cabb64b32 Quagga: AFI/SAFI mappings IANA to/from internal values
Introduce internal and IANA defintions for AFI/SAFI and mapping
functions and modify code to use these. This refactoring will
facilitate adding support for other AFI/SAFI whose IANA values
won't be suitable for internal data structure definitions (e.g.,
they are not contiguous).
The commit adds some fixes related to afi/safi testing with 'make check
' command.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>

Ticket: CM-11416
Reviewed By: CCR-3594 (mpls branch)
Testing Done: Not tested now, tested earlier on mpls branch
2017-01-12 09:28:43 +01:00
Lou Berger
ec3484d972 bgpd: conditionally compile out old vpnv4 syntax (Issue #61)
(under ifdef KEEP_OLD_VPNV4_COMMANDS)

Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-11 09:22:08 -05:00
Lou Berger
d02fbbdb08 bgpd: restore some missing afi/safi commands (Issue #14)
Added defines and parse utility functions
      Fix vty code that treated vpn&encap as AFIs
      and some other related vty printing/handline issues
      Note: Includes branch specific changes (due to new parser)

Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-11 09:21:22 -05:00
Donald Sharp
bdffbcef39 bgpd: Some more cleanup of commands found by vtysh
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-09 15:59:17 -05:00
Olivier Dugeon
b98f56422e Merge pull request #55 from donaldsharp/monotonic
Monotonic
2017-01-09 15:26:16 +01:00
Donald Sharp
3814903108 bgpd: Remove knowledge of HAVE_CLOCK_MONTONIC
thread.c fails to build properly on systems that do
not have a CLOCK_MONOTONIC.  Therefore there is
no need for bgp to have knowledge of it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-01-07 19:23:50 -05:00
Lou Berger
46f296b402 bgpd: restore some missing afi/safi commands (Issue #14)
Added defines and parse utility functions
      Fix vty code that treated vpn&encap as AFIs
      and some other related vty printing/handline issues
2017-01-07 13:30:50 -05:00
Donald Sharp
40bfb7248f Merge pull request #32 from qlyoung/fix-cli-nits2
bgpd, ospfd, zebra: remove duplicate cli installs
2017-01-06 19:38:28 -05:00
Donald Sharp
46c323a66b Merge pull request #27 from qlyoung/fix-derefs2
bgpd, lib: fix a few scan-build catches
2017-01-06 19:36:59 -05:00
Donald Sharp
3b14d86eed Merge remote-tracking branch 'origin/stable/2.0' 2017-01-06 09:58:21 -05:00
Julien Courtat
4d5b4f7bd9 bgpd: graceful restart for vpnv4 address family
This patch enable the support of graceful restart for routes sets with
vpnv4 address family format. In this specific case, data model is
slightly different and some additional processing must be done when
accessing bgp tables and nodes.
The clearing stale algorithm takes into account the specificity where
the 2 node level for MPLS has to be reached.

Signed-off-by: Julien Courtat <julien.courtat@6wind.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2017-01-04 18:02:04 +01:00
Lou Berger
bede774450 bgp: Use intern/unintern for encap to fix valgrind identified memory leak
Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-02 15:05:49 -05:00
Lou Berger
ccbb332a37 bgp: first pass at restoring missing vpn&encap show commands (issue#14)
Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-02 15:04:47 -05:00
Lou Berger
53a7a06519 bgpd: fix unitialized value check id'ed by valgrind
Signed-off-by: Lou Berger <lberger@labn.net>
2017-01-02 15:04:47 -05:00
Quentin Young
271ad8d53f bgpd, ospfd, zebra: remove duplicate cli installs
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2016-12-29 05:44:49 +00:00
Quentin Young
c01d03a658 bgpd, lib: fix a few scan-build catches
Fixes a couple null pointer derefs and uninit'd values.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2016-12-20 03:26:47 +00:00
Donald Sharp
5c3cc3ae96 bgp: Modify output to be a bit clearer
Modify the 'show ip bgp ...' output to be a bit clearer
on what work it did.

Modify:

root@dell-s6000-02 ~/quagga# vtysh -c "show ip bgp"
BGP table version is 7, local router ID is 6.0.0.9
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 6.0.0.5/32 169.254.0.1 0 0 65101 ?
*> 6.0.0.6/32 169.254.0.17 0 0 65101 ?
*> 6.0.0.7/32 169.254.0.33 0 0 65104 ?
*> 6.0.0.8/32 169.254.0.49 0 0 65104 ?
*> 6.0.0.9/32 0.0.0.0 0 32768 ?
*= 6.0.0.10/32 169.254.0.49 0 65104 65200 ?
*=             169.254.0.33 0 65104 65200 ?
*=             169.254.0.17 0 65101 65200 ?
*>             169.254.0.1 0 65101 65200 ?

Displayed 6 out of 9 total prefixes

To

.....

Displayed 6 routes and 9 total paths

Issue #11
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2016-12-14 18:08:21 +01:00
David Lamparter
cdc2d76507 *: coccinelle-replace vty->index
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2016-12-09 17:36:25 +01:00