Commit Graph

451 Commits

Author SHA1 Message Date
Renato Westphal
33a57d94fa 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-06-04 19:12:14 +00:00
Lou Berger
26a4b7c3c3 bgpd: remove encap safi vty related files bgp_encap.h|c
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-23 15:34:43 -04:00
Lou Berger
33c0d63f9c bgpd: remove encap safi show commands
Signed-off-by: Lou Berger <lberger@labn.net>
2017-05-23 15:11:30 -04:00
Renato Westphal
e50d0a4857 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-20 13:06:45 -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
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
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
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
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
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