Commit Graph

858 Commits

Author SHA1 Message Date
Donald Sharp
2fcc254eed lib, bgpd: Refactor vrf handling through zclient
Protocols receive zclient vrf creation events from zebra.
This data was being handed to the protocol to decode and
then to hand back to zclient to create the vrf to then
handle appropriately.  This is a bad idea.

Modify the code such that when zclient.c receives a vrf
event from zebra that it decodes the data and just creates
the vrf.  Individual protocols just need to handle the
appropriate vrf events.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
2016-04-15 08:42:03 -04:00
Daniel Walton
0c412461ba BGP: cannot "no neighbor ISL timers 3 10" for peer-group
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-10438
2016-04-14 20:34:43 +00:00
Daniel Walton
859d388e90 quagga: "set community x:y" needs bounds checking
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-10002

superm-redxp-05# conf t
superm-redxp-05(config)# route-map FOO permit 10
superm-redxp-05(config-route-map)# set community ?
  AA:NN  Community number in AA:NN format (where AA and NN are <0-65535>) or local-AS|no-advertise|no-export|internet or additive
  none   No community attribute
superm-redxp-05(config-route-map)# set community 2:2
superm-redxp-05(config-route-map)# set community 2:70000
% Malformed communities attribute
superm-redxp-05(config-route-map)# set community 70000:2
% Malformed communities attribute
superm-redxp-05(config-route-map)#
2016-04-14 18:16:43 +00:00
vivek
9585bba764 BGP: Register with correct VRF id for redistribution
When doing a redistribution re-registration upon route-map
updates, the correct VRF id was not being used. Fixed.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-10311
Reviewed By: Trivial
Testing Done: Manual - verified failed scenario
2016-04-13 18:41:58 -07:00
vivek
5c81a5f382 BGP: Use VRF_UNKNOWN for initialization
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-10423
Reviewed By: CCR-4474
Testing Done: Manual (basic checks)
2016-04-13 18:40:09 -07:00
vivek
f186de2680 BGP: Implement key show commands for all VRFs
Key BGP 'show' commands have been expanded to support 'vrf all':

show ip bgp vrf all summary
show ip bgp vrf all neighbors
show ip bgp vrf all nexthop
show ip bgp vrf all update-group
show ip bgp vrf all
show bgp vrf all summary
show bgp vrf all update-group
show bgp vrf all

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:   Don Slice <dslice@cumulusnetworks.com>

Ticket: CM-10402
Reviewed By: CCR-4466
Testing Done: Manual
2016-04-13 09:59:00 -07:00
Donald Sharp
747be3cb7b Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster 2016-04-06 20:56:53 -04:00
Donald Sharp
1db63918b2 lib, vtysh: Return actual problem further up
When we encounter a problem loading a config file
quantify to the end user what has gone wrong,
with a combination of err output as well as
return codes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Dave Olson <olson@cumulusnetworks.com>
2016-04-06 20:07:27 -04:00
Don Slice
2bd5af06b8 bgpd: Resolve ability to add route-map out to peer-group member
Modified the configuration code to properly allow a peer-group member
to have a route-map out applied when one does not exist on the peer-group
itself.  This capability already existed for route-map in.

Ticket: CM-10058
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
2016-04-06 12:08:42 +00:00
Donald Sharp
66e373aec0 bgpd: Another hash_get crash fix
Basically when modifying the peer->su, we must *always*
release the hash and then re-install it, else
we will cause crashes when we go to look up data
that is not going to be there.

Ticket: CM-10212
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2016-04-04 12:44:46 -04:00
Donald Sharp
c147b93c40 Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster 2016-04-01 15:28:21 -04:00
Donald Sharp
ff7c833388 bgp: Fix crash in hash_get for peer
This commit partially backs out 83260f0.

Ticket: CM-10212
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-04-01 15:27:58 -04:00
vivek
b8fd6a15a6 BGP: Enable multiple instance support by default
Quagga BGP needed a config 'bgp multiple-instance' in order to be able
to configure and use VRFs. Since this support is intrinsic to the
implementation, make this configuration on by default. Corresponding
change to 'show running-config' (and write) to display only if "no" is
configured.

This change will eliminate one unnecessary step in the configuration.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Don Slice <dslice@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-10070
Reviewed By: CCR-4383
Testing Done:  Manual
2016-03-31 17:46:24 -07:00
Donald Sharp
0aaa34db89 bgp: Order neighbor information in show run
When displaying the output of a 'show run',
display the neighbor information in an ordered
manner.

Ticket: CM-10184
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2016-03-31 14:01:33 -04:00
Donald Sharp
f813b13b71 bgpd: Add group pointer to peer_create function.
When creating a 'struct peer' add in the ability to set the peer group
associated with that peer.

Ticket: CM-10184
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2016-03-31 14:01:12 -04:00
vivek
83260f0093 BGP: Fix BGP unnumbered peerings across VRFs
Upon receipt of incoming connection, a peer structure (doppelganger) is
created internally and the connection processed for it. The problem is
that in the case of BGP unnumbered, the sockunion structure within BGP was
being updated (in peer_create()) prior to the peer's flags being updated,
so it didn't take into account the 'v6only' configuration. This results
in subsequent problems when bgp_bind() is done - the socket ends up being
bound to the BGP instance instead of the interface.

In the case of an incoming connection, we should just use the addresses
on which the connection was setup/accepted, there is no need to attempt to
derive it again. Further, there is no need to attempt to update addresses
at the time of peer_create() since that is done when the connection is
attempted in bgp_start().

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>

Ticket: CM-10028
Reviewed By: CCR-4373
Testing Done: Manual, bgpsmoke
2016-03-28 15:12:14 -07:00
Donald Sharp
50905aa278 bgpd: Fix VU#270232, VPNv4 NLRI parser memcpys to stack on unchecked length
Address CERT vulnerability report VU#270232, memcpy to stack data structure
based on length field from packet data whose length field upper-bound was
not properly checked.

This likely allows BGP peers that are enabled to send Labeled-VPN SAFI
routes to Quagga bgpd to remotely exploit Quagga bgpd.

Mitigation: Do not enable Labeled-VPN SAFI with untrusted neighbours.

Impact: Labeled-VPN SAFI is not enabled by default.

* bgp_mplsvpn.c: (bgp_nlri_parse_vpnv4) The prefixlen is checked for
  lower-bound, but not for upper-bound against received data length.
  The packet data is then memcpy'd to the stack based on the prefixlen.

  Extend the prefixlen check to ensure it is within the bound of the NLRI
  packet data AND the on-stack prefix structure AND the maximum size for the
  address family.

Reported-by: Kostya Kortchinsky <kostyak@google.com>

This commit a joint effort between:

Lou Berger <lberger@labn.net>
Donald Sharp <sharpd@cumulusnetworks.com>
Paul Jakma <paul.jakma@hpe.com> / <paul@jakma.org>
2016-03-28 08:55:18 -04:00
vivek
01080f7cf9 BGP: Enhance clear commands for VRFs
Fix and enhance the entire hierarchy of clear commands in BGP to work
for VRFs.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-9945
Reviewed By: CCR-4360
Testing Done: Manual (brief)
2016-03-25 09:19:51 -07:00
Donald Sharp
1e22a2af50 bgpd, lib, ospfd, ospf6d: Fix bfd interface lookup
bfd was receiving a callback with an interface name string
but was ignoring the passed in vrf to find the ifp pointer.
This commit fixes that code path in bfd.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Radhika Mahankali <radhika@cumulusnetworks.com>
2016-03-24 06:03:02 -07:00
Donald Sharp
f896287128 bgpd, lib, zebra: Add ability to retrieve ifp without specifying a vrf
There are cases where we get an interface name but do not have a
corresponding vrf.  We care about getting an interface pointer
so just provide a function that searches all vrf's for the ifp.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Radhicak Mahankali <radhika@cumulusnetworks.com>
Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-03-23 12:38:30 -07:00
vivek
5fe9f9631d Quagga: Make routemap updates or deletes work for VRFs
Updates to routemaps and delete of the routemap were not working properly
for VRFs. This was because while routemaps are global, the routemap update
processing timer and the processing were at the per-instance level. This
approach was unable to handle processing for multiple instances as the
routemap has no tracking of which instances are still pending processing.
This lead to the processing happening correctly only for the first instance
- which could be the default instance or some other instance. It could also
result in reference to freed memory for an instance.

The fix done is to make the update/delete processing also global and not per
instance. This means that the route-map delay timer will be global and a global
thread will handle the change (or delete) for all instances instead of spawning
a separate thread for each instance. To support this, a global BGP command
"bgp route-map delay-timer <value>" has been implemented. The existing command
per-instance is not deleted but will update the global timer.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-6970, CM-9918
Reviewed By: CCR-4320
Testing Done: Manual, bgpsmoke
2016-03-22 17:46:30 +00:00
Don Slice
84361d615d quagga: delete interface from default table when moved to vrf
All daemons changed to flag an interface that has been moved to a vrf as DELETED instead of INTERNAL.
When they were flagged as IFINDEX_INTERNAL, ospf, rip, and isis would re-install them in the default
assuming that they were being "pre-defined" before the kernel definitions.

Ticket: CM-9265
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
2016-03-18 19:53:15 +00:00
root
4c2620da59 bgpd: Fix initialization check for bgp tests
With the vrf startup code put in place we've modified
bgp startup.  If we are running inside of the 'make check'
infrastructure zclient is going to be NULL since it is
not initialized yet nor do we really want to connect
to zebra.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2016-03-18 09:36:05 -04:00
vivek
59ecefe2db BGP: Fix linkage between BGP instance and VRF structure
The issue here has to do with the fact that VRFs (like interfaces) are not
actually getting deleted when they are removed - they remain present. This
leads to situations in which BGP may try to unlink more than once, which
messes up the reference count (lock) in the BGP instance.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9419
Reviewed By: CCR-4302
Testing Done: Manual, also verified by Atul

<DETAILED DESCRIPTION (REPLACE)>
2016-03-16 20:38:31 +00:00
vivek
a3cb01d89c BGP: Check in multipath comparison before invoking sockunion_cmp
During route selection for Multipath routes, when multiple peers are
flapping, it is possible that the old (former) multipath list of routes
for a destination may include routes from peers which are no longer in
Established state. When the new multipath list is compared against the
old list to identify changes, additional checks are needed to avoid
comparing connection addresses if the peer is not in Established state.
This patch introduces those checks.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Don Slice <dslice@cumulusnetworks.com>

Ticket: CM-9671
Reviewed By: CCR-4277
Testing Done: Manual (problem could not be replicated to verify)
2016-03-13 06:03:10 +00:00
Daniel Walton
e99789d89d BGP: remove deprecated debugs from the parser
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9838
2016-03-11 16:33:58 +00:00
Daniel Walton
4873b3b930 show bgp neighbor should accept peer hostname
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-9616
2016-03-10 22:14:08 +00:00
Daniel Walton
f9e9e0736f BGP memory leak in peer hostname
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9786
2016-03-10 03:58:48 +00:00
radhika
055c4dfcde Support for multi-client and client reg msg
Ticket: CM-7615, CM-7773
Reviewed By: CCR-3610, CCR-3708
Testing Done: Unit, BGP Smoke and OSPF Smoke

Changes (70790261926b17200c8c9377c4576cd3b486fcef) ported from 2.5

Issue (related to CM-7615): 1. CM-7615: There is mismatch in the client name between ptm display of client BFD sessions and the zebra logs. For example, if bgpd added BFD session, zebra logs will show the client as “bgp” but the ptm display will show it as “quagga”
2. Bigger problem is when 2 clients (for example OSPF and BGP) from Quagga register for same BFD session and only one client de-registers the BFD session. This results in BFD session deletion from PTM even though other client still has the BFD registration.

Root Cause: Even though BGP, OSPF and OSPF6 are 3 different clients from Quagga that are trying to register/deregister BFD sessions with PTM, all 3 are represented as one client “quagga” from zebra. This makes it hard for PTM/BFD to distinguish between all three when BFD peer registration/deregistration happens from the clients.

Fix: Send the actual client name bgp, ospf or ospf6 from zebra with BFD reg/dereg messages instead of one unified client name “quagga”

CM-7773: BFD sessions are not getting cleaned from PTM even though no BGP peering exists in Quagga.

Root Cause: PTM cleans up stale BFD sessions from a client when it finds a change in seq id advertised by the client. But, if PTM never detects a change in the seq id then the stale BFD sessions never get cleaned up. The test restarts the quagga without saving the configuration, which results in no BGP peering. No BGP peers are registered with PTM after restart and PTM does not detect a client seq id change resulting in stale BFD sessions.

Fix: New client registration message was added in PTM. Every client that is interested in BFD monitoring will register with PTM with the client seq id. Client will register with a different seq id (typically pid) every time it restarts. This will help in detecting the change in seq id and cleanup of stale BFD sessions for a client.

Code Changes: To support the new client registration message following changes have been made
  - Added support for client registration messaging in zebra for sending messages to PTM.
  - Added support for client registration messaging between zebra and clients (BGP, OSPF and OSPF6) in BFD library.
  - Expanded the reg/de reg peer messaging between zebra and clients to support client specific seq id to distinguish between multiple clients registering for BFD peer rather than one “quagga” client.
  - Changes in bgpd, ospfd and ospf6d to send client registrations at the time of daemon initialization and on receiving BFD peer replay message.
2016-03-08 23:31:32 -08:00
vivek
8386ac4390 BGP: Update commands for VRF support
Ensure commands dealing with update-groups and peer-groups support VRFs.
Also implement a new command "show bgp vrfs" to show summary information of
all configured VRFs. Some additional code cleanup in this area.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-9247
Reviewed By: CCR-4267
Testing Done: Manual
2016-03-09 03:39:38 +00:00
Daniel Walton
3914b418c5 Exclamation points are missing at the end of an address-family
sub-context

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Don Slice <dslice@cumulusnetworks.com>

Ticket: CM-9268
2016-03-08 16:14:39 +00:00
radhika
d553294e09 Zebra and bgpd: VRF support for BFD
Following changes have been done to support VRF for BFD in zebra and bgpd.
 - Pass the correct VRF value from bgpd to zebra for reg and dereg of BFD destinations.
 - Send the non-default vrf name in reg/dereg messages of multihop destination to BFD/PTM from zebra.

Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>

Ticket: CM-8450
Reviewed By: CCR-4253
Testing Done: Unit, PTM smoke, BGP Smoke
2016-03-08 05:10:56 -08:00
vivek
50ef26d42f BGP: Update commands for VRF support
Ensure commands dealing with display of routes and nexthops support
VRFs.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-9247
Reviewed By: CCR-4250
Testing Done: Manual
2016-03-07 00:08:49 +00:00
Donald Sharp
91bce9882c bgpd: Remove expensive prefix count from json.
'show bgp ipv4 uni summ' is counting each prefix sent
to each neighbor.  At scale this is an expensive
operation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2016-03-02 15:10:02 -05:00
vivek
a4499b8312 BGP: Handle unknown interface at delete
When BGP deals with interfaces at a VRF-level, it may get an interface delete
for a VRF which it has just de-registered, so it may not be able to locate
the interface. This is no longer an error, so handle this in the message
processing.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-9462
Reviewed By: None (trivial)
Testing Done: None
2016-03-02 07:40:14 +00:00
Daniel Walton
d1570739d9 "show ip bgp neighbor json" displays "Hostname: ", invalidates json
format

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9611
2016-03-01 21:59:25 +00:00
vivek
8dee039673 BGP: Unnumbered peering in a VRF
Code changes to make unnumbered peering work in a VRF. The changes have
to do with locating the interface in the correct VRF (in order to look for
neighbor address) in the case of outgoing connections and when specifying
source address as well as fetching the correct instance for an incoming
connection based on reading the device the socket is bound to (the multi-vrf
socket option in the kernel).

Additionally, for IPv4 unnumbered peering in a VRF (based on /30 or /31
addresses), bind to the VRF rather than the interface.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9311
Reviewed By: CCR-4192
Testing Done: Manual, bgpsmoke
2016-02-29 18:04:29 +00:00
vivek
bfcd43b236 Quagga: Implement VRF change semantics for an interface
Handle VRF change for an interface in BGP (the only VRF client
right now).

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:   Don Slice <dslice@cumulusnetworks.com>

Ticket: CM-9527
Reviewed By: CCR-4174
Testing Done: Manual tests of various scenarios
2016-02-25 19:39:25 +00:00
Donald Sharp
a7ee645d23 bgpd: Fix function indirection when none is needed
bgp_update_main was only called by bgp_update.
bgp_update only called bgp_update_main.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reivewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2016-02-24 15:05:46 -05:00
vivek
23afb7ada0 Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster 2016-02-24 04:10:07 +00:00
vivek
b33adb7c40 BGP: Fix interface list upon instance creation/deletion
The BGP instance cleanup was deleting interfaces in that instance after
prior fixes, but this ended up deleting the interface list header which
was not being re-created. Added code to re-create this at the time an
instance is created.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-9466
Reviewed By: CCR-4164
Testing Done: Manual and verified failed test
2016-02-24 04:09:21 +00:00
Don Slice
9b81bc8c5c bgpd: Add exclamation point separators between address-family blocks
Added the exclamation point and newline between each address-family block in bgp

Ticket: CM-9268
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
2016-02-23 20:28:44 +00:00
Don Slice
d1e5048edb BGPD: Make "Bind to connect" messages conditional no debug
Added debug requirement to issue the Bind to connect messages that were filling the logs.

Ticket:CM-9463
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
2016-02-23 15:16:23 +00:00
vivek
009b18fc80 BGP: Cleanup interfaces properly on instance delete or exit
Perform interface cleanup as an instance is deleted. This takes care of the
scenario when BGP exits (or is stopped/restarted) too as instances undergo
deletion and the interface cleanup is done as the last step in that.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Fixes: 46abd3e3e6

Ticket: CM-9410
Reviewed By: CCR-4143
Testing Done: Reran failed test
2016-02-22 06:36:37 +00:00
vivek
d1be1f083d BGP: Link BGP instance to corresponding VRF
Link BGP instance (Default or VRF) to the corresponding VRF structure and
modify lookup to use this. The logic is very similar to what is implemented
in zebra - the 'struct zebra_vrf' there is essentially 'struct bgp' in BGP.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9122
Reviewed By: CCR-4102
Testing Done: Manual
2016-02-19 18:43:30 -08:00
vivek
46abd3e3e6 BGP: Ensure correct sequence of processing at exit
With VRF support, certain objects are now maintained per BGP instance. At
exit, the list of BGP instances has to be freed only after processing the
per-instance objects.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Fixes: ad4cbda1a3

Ticket: CM-9340
Reviewed By:
Testing Done:
2016-02-17 10:05:24 -08:00
vivek
ad4cbda1a3 BGP: VRF registration and cleanup
Various changes and fixes related to VRF registration, deletion,
BGP exit etc.

- Define instance type
- Ensure proper handling upon instance create, delete and
  VRF add/delete from zebra
- Cleanup upon bgp_exit()
- Ensure messages are not sent to zebra for unknown VRFs

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9128, CM-7203
Reviewed By: CCR-4098
Testing Done: Manual
2016-02-12 13:50:22 -08:00
vivek
0e5223e7a0 Quagga: Support VRF unregister for clients
Clients (BGP, OSPF etc.) register with Zebra for information about
a VRF such as Router ID, interfaces and redistribution. Add API to
support unregister also which is required for the non-default VRF.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9128
Reviewed By: CCR-4098
Testing Done: Manual testing
2016-02-12 11:37:33 -08:00
vivek
7cb4355691 BGP: Perform cleanup upon instance delete
When a BGP instance is deleted through 'no router bgp', the required
cleanup was not being performed. This is after VRF-related changes.
Fix to ensure this is taken care of.

Note: Further changes needed in this area for VRFs.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9597
Reviewed By: CCR-4097
Testing Done: Verified failed test
2016-02-11 17:06:02 -08:00
Daniel Walton
ad695d6e8d BGPD crash around bgp_config_write ()
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>

Ticket: CM-9255
2016-02-11 17:28:11 +00:00