diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-12-08 15:26:56 -0800 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-12-08 15:26:56 -0800 |
| commit | ef16372d77e3822c13f23370e55a280b784aeef2 (patch) | |
| tree | ff113dc4e0766fc8e497f33559c4b5c5ebf8e6f4 /zebra/connected.c | |
| parent | a565fbdd91d21ed8cc2f7ecc29033acfce35b1dc (diff) | |
| parent | 2bf26d4184cd6b6fdea42629725cd2005f8bef47 (diff) | |
Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster
Diffstat (limited to 'zebra/connected.c')
| -rw-r--r-- | zebra/connected.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/zebra/connected.c b/zebra/connected.c index 41b68d1564..f67b44ba80 100644 --- a/zebra/connected.c +++ b/zebra/connected.c @@ -36,6 +36,7 @@ #include "zebra/redistribute.h" #include "zebra/interface.h" #include "zebra/connected.h" +#include "zebra/rtadv.h" extern struct zebra_t zebrad; /* communicate the withdrawal of a connected address */ @@ -71,6 +72,10 @@ connected_withdraw (struct connected *ifc) listnode_delete (ifc->ifp->connected, ifc); connected_free (ifc); } + + /* 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); } static void @@ -93,6 +98,9 @@ connected_announce (struct interface *ifp, struct connected *ifc) if (ifc->address->family == AF_INET) if_subnet_add (ifp, ifc); + else if (ifc->address->family == AF_INET6) + ipv6_nd_suppress_ra_set (ifp, RA_ENABLE); + zebra_interface_address_add_update (ifp, ifc); if (if_is_operative(ifp)) |
