mirror_frr/zebra
vivek 4a04e5f796 BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor
Instead of turning on IPv6 RA on every interface as soon as it has an IPv6
address, only enable it upon configuration of BGP neighbor. When the BGP
neighbor is deleted, signal that RAs can be turned off.

To support this, introduce new message interaction between BGP and Zebra.
Also, take appropriate actions in BGP upon interface add/del since the
unnumbered neighbor could exist prior to interface creation etc.

Only unnumbered IPv6 neighbors require RA, the /30 or /31 based neighbors
don't. However, to keep the interaction simple and not have to deal with
too many dynamic conditions (e.g., address deletes or neighbor change to/from
'v6only'), RAs on the interface are triggered upon any unnumbered neighbor
configuration.

BGP-triggered RAs will cause RAs to be initiated on the interface; however,
if BGP asks that RAs be stopped (upon delete of unnumbered neighbor), RAs
will continue to be exchanged if the operator has explicitly enabled.

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

Ticket: CM-10640
Reviewed By: CCR-4589
Testing Done: Various manual and automated (refer to defect)
2016-05-02 13:53:38 -07:00
..
.gitignore [administrivia] Update gitignore files 2008-08-22 20:02:08 +01:00
client_main.c lib, vtysh: Return actual problem further up 2016-04-06 20:07:27 -04:00
connected.c BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
connected.h Zebra: Remove reliance on NEXTHOP_TYPE_IPV4_ONLINK 2015-11-16 12:48:07 -08:00
debug.c Zebra: Cleanup RIB debugs 2015-11-20 08:48:32 -08:00
debug.h Zebra: Cleanup RIB debugs 2015-11-20 08:48:32 -08:00
GNOME-PRODUCT-ZEBRA-MIB Initial revision 2002-12-13 20:15:29 +00:00
GNOME-SMI Initial revision 2002-12-13 20:15:29 +00:00
if_ioctl_solaris.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
if_ioctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
if_netlink.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
if_null.c lib, zebra: Rework zebra_ns to be a bit more modular 2016-04-14 20:56:57 -04:00
if_proc.c zebra: zebra-warnings.patch 2015-05-19 18:04:26 -07:00
if_sysctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
interface.c BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
interface.h BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
ioctl_null.c testzebra: pragma weak: detect systems with weak alias and provide alternative 2013-01-11 21:50:06 +01:00
ioctl_solaris.c Fixed ioctl_solaris.c:if_get_mtu() for IPv6'less operation 2007-08-21 16:12:40 +00:00
ioctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
ioctl.h [zebra/solaris] Interface state fixups for Solaris. 2006-01-25 04:31:40 +00:00
ipforward_aix.c Initial revision 2002-12-13 20:15:29 +00:00
ipforward_ews.c Initial revision 2002-12-13 20:15:29 +00:00
ipforward_proc.c zebra: fix warnings in forward proc 2011-12-07 01:24:09 +04:00
ipforward_solaris.c 2005-06-28 Paul Jakma <paul.jakma@sun.com> 2005-06-28 17:17:12 +00:00
ipforward_sysctl.c 2005-06-28 Paul Jakma <paul.jakma@sun.com> 2005-06-28 17:17:12 +00:00
ipforward.h 2005-06-28 Paul Jakma <paul.jakma@sun.com> 2005-06-28 17:17:12 +00:00
irdp_interface.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
irdp_main.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
irdp_packet.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
irdp.h zebra: deal with irdp compile warnings 2009-12-10 14:22:44 +03:00
kernel_netlink.c Initial revision 2002-12-13 20:15:29 +00:00
kernel_null.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
kernel_socket.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
kernel_socket.h [lib] mes_lookup string lookup table argument should be marked const 2008-08-22 19:52:58 +01:00
main.c quagga: Fixup startup to allow consistency between sysV and systemd 2016-04-27 16:04:48 -04:00
Makefile.am zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
misc_null.c zebra: zebra-warnings.patch 2015-05-19 18:04:26 -07:00
mtu_kvm.c 2004-05-09 Paul Jakma <paul@dishone.st> 2004-05-09 11:00:23 +00:00
redistribute_null.c zebra: Fix zebra_rnh_register crash 2016-04-20 16:17:14 -04:00
redistribute.c zebra: Change interface handling so non-vrf aware protocols correctly handle them 2016-04-22 05:26:12 -07:00
redistribute.h zebra: Fix zebra_rnh_register crash 2016-04-20 16:17:14 -04:00
rib.h zebra: Stop passing around vrf_id for static_XXX functions 2016-05-02 13:17:00 -04:00
router-id.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
router-id.h zebra: maintain the router-id per VRF 2015-10-30 00:19:15 -07:00
rt_ioctl.c zebra, bgp: Remove some missed values 2015-12-09 04:26:02 -08:00
rt_netlink.c BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
rt_netlink.h lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
rt_socket.c ZEBRA: Remove NEXTHOP_TYPE_XXX_IFNAME 2015-12-04 10:44:37 -08:00
rt.h Zebra: Implement route replace for IPv6 2015-11-19 12:22:55 -08:00
rtadv_null.c BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
rtadv.c BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
rtadv.h BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
rtread_getmsg.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
rtread_netlink.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
rtread_proc.c Multi-Instance OSPF Summary 2015-05-19 18:03:42 -07:00
rtread_sysctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
test_main.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
testrib.conf zebra: Add an example config file for testzebra 2009-08-28 14:51:37 +01:00
zebra_fpm_netlink.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
zebra_fpm_private.h zebra: add module to communicate routes to FPM 2012-11-30 21:41:17 +01:00
zebra_fpm.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
zebra_fpm.h zebra: add module to communicate routes to FPM 2012-11-30 21:41:17 +01:00
zebra_ns.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
zebra_ns.h lib, zebra: Rework zebra_ns to be a bit more modular 2016-04-14 20:56:57 -04:00
zebra_ptm_null.c Zebra and bgpd: VRF support for BFD 2016-03-08 05:10:56 -08:00
zebra_ptm_redistribute.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
zebra_ptm_redistribute.h Zebra and bgpd: VRF support for BFD 2016-03-08 05:10:56 -08:00
zebra_ptm.c zebra: Fix PTM to not pass a default vrf name 2016-04-27 15:55:23 -04:00
zebra_ptm.h Addition on hidden command "bfd multihop/singlehop" and "ptm-enable" per interface command 2016-04-21 15:39:38 -07:00
zebra_rib.c zebra: Stop passing around vrf_id for static_XXX functions 2016-05-02 13:17:00 -04:00
zebra_rnh_null.c Zebra: Fix static NHT to work properly in a VRF 2016-02-26 19:13:34 +00:00
zebra_rnh.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
zebra_rnh.h Zebra: Fix static NHT to work properly in a VRF 2016-02-26 19:51:34 +00:00
zebra_routemap.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
zebra_routemap.h Create override for quagga reinstall of originated routes 2015-08-26 05:21:40 -07:00
zebra_snmp.c zebra: Refactor struct zebra_t 2016-04-14 20:56:45 -04:00
zebra_vrf.c zebra: Refactor zebra_vrf_static_table 2016-05-02 13:16:45 -04:00
zebra_vrf.h zebra: Refactor zebra_vrf_static_table 2016-05-02 13:16:45 -04:00
zebra_vty.c zebra: Stop passing around vrf_id for static_XXX functions 2016-05-02 13:17:00 -04:00
zebra.conf.sample Initial revision 2002-12-13 20:15:29 +00:00
zserv_null.c zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00
zserv.c BGP: Trigger IPv6 router advertisements upon config of unnumbered neighbor 2016-05-02 13:53:38 -07:00
zserv.h zebra: Refactor zebra_vrf 2016-04-14 20:57:04 -04:00