Commit Graph

423 Commits

Author SHA1 Message Date
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
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
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
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
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