summaryrefslogtreecommitdiffstats
path: root/zebra/connected.c
diff options
context:
space:
mode:
authorvivek <vivek@cumulusnetworks.com>2016-02-19 03:47:32 +0100
committervivek <vivek@cumulusnetworks.com>2016-02-19 03:47:32 +0100
commit30a3822f2bc1db2fa3fbee8bec42898996ecbb07 (patch)
treea7928b1aa1f591ca8d6eab53f09420896605ff67 /zebra/connected.c
parentMerge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga in... (diff)
downloadfrr-30a3822f2bc1db2fa3fbee8bec42898996ecbb07.tar.xz
frr-30a3822f2bc1db2fa3fbee8bec42898996ecbb07.zip
Zebra: Restrict automatic RA enable to relevant interfaces
When enabling IPv6 Router Advertisements automatically based on the presence of IPv6 address on an interface, do it only for relevant interfaces. Note: This needs a configure option for completion. Ticket: CM-9358 Reviewed By: CCR-4116 Testing Done: Manual verification
Diffstat (limited to 'zebra/connected.c')
-rw-r--r--zebra/connected.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/zebra/connected.c b/zebra/connected.c
index f040e9d36..fea7fc06f 100644
--- a/zebra/connected.c
+++ b/zebra/connected.c
@@ -68,8 +68,11 @@ connected_withdraw (struct connected *ifc)
UNSET_FLAG(ifc->conf, ZEBRA_IFC_QUEUED);
/* Enable RA suppression if there are no IPv6 addresses on this interface */
- if (! ipv6_address_configured(ifc->ifp))
- ipv6_nd_suppress_ra_set (ifc->ifp, RA_SUPPRESS);
+ if (interface_ipv6_auto_ra_allowed (ifc->ifp))
+ {
+ if (! ipv6_address_configured(ifc->ifp))
+ ipv6_nd_suppress_ra_set (ifc->ifp, RA_SUPPRESS);
+ }
if (!CHECK_FLAG (ifc->conf, ZEBRA_IFC_CONFIGURED))
{
@@ -99,7 +102,10 @@ connected_announce (struct interface *ifp, struct connected *ifc)
if_subnet_add (ifp, ifc);
else if (ifc->address->family == AF_INET6)
- ipv6_nd_suppress_ra_set (ifp, RA_ENABLE);
+ {
+ if (interface_ipv6_auto_ra_allowed (ifp))
+ ipv6_nd_suppress_ra_set (ifp, RA_ENABLE);
+ }
zebra_interface_address_add_update (ifp, ifc);