diff options
author | vivek <vivek@cumulusnetworks.com> | 2016-02-19 03:47:32 +0100 |
---|---|---|
committer | vivek <vivek@cumulusnetworks.com> | 2016-02-19 03:47:32 +0100 |
commit | 30a3822f2bc1db2fa3fbee8bec42898996ecbb07 (patch) | |
tree | a7928b1aa1f591ca8d6eab53f09420896605ff67 /zebra/connected.c | |
parent | Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga in... (diff) | |
download | frr-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.c | 12 |
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); |