summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqingli <qingli@FreeBSD.org>2009-08-30 02:07:23 +0000
committerqingli <qingli@FreeBSD.org>2009-08-30 02:07:23 +0000
commite888e87097a7cec9033b618fd32b4ac0f4e5c43f (patch)
tree06e469c3f6c345b00820a5501878d3d958d2d30b
parentd105721a2238d8018e13ee3e8aa7face7a10a2e5 (diff)
downloadFreeBSD-src-e888e87097a7cec9033b618fd32b4ac0f4e5c43f.zip
FreeBSD-src-e888e87097a7cec9033b618fd32b4ac0f4e5c43f.tar.gz
Prefix on-link verification is being performed on statically
configured prefixes. Since these statically configured prefixes do not have any associated advertising routers, these prefixes are treated as unreachable and those prefix routes are deleted from the routing table. Therefore bypass prefixes that are not learned from router advertisements during prefix on-link check. Reviewed by: hrs
-rw-r--r--sys/netinet6/nd6_rtr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/netinet6/nd6_rtr.c b/sys/netinet6/nd6_rtr.c
index 9d1f0d6..4ec64fb 100644
--- a/sys/netinet6/nd6_rtr.c
+++ b/sys/netinet6/nd6_rtr.c
@@ -1415,6 +1415,9 @@ pfxlist_onlink_check()
if (pr->ndpr_raf_onlink == 0)
continue;
+ if (pr->ndpr_raf_auto == 0)
+ continue;
+
if ((pr->ndpr_stateflags & NDPRF_DETACHED) == 0 &&
find_pfxlist_reachable_router(pr) == NULL)
pr->ndpr_stateflags |= NDPRF_DETACHED;
@@ -1431,6 +1434,9 @@ pfxlist_onlink_check()
if (pr->ndpr_raf_onlink == 0)
continue;
+ if (pr->ndpr_raf_auto == 0)
+ continue;
+
if ((pr->ndpr_stateflags & NDPRF_DETACHED) != 0)
pr->ndpr_stateflags &= ~NDPRF_DETACHED;
}
@@ -1454,6 +1460,9 @@ pfxlist_onlink_check()
if (pr->ndpr_raf_onlink == 0)
continue;
+ if (pr->ndpr_raf_auto == 0)
+ continue;
+
if ((pr->ndpr_stateflags & NDPRF_DETACHED) != 0 &&
(pr->ndpr_stateflags & NDPRF_ONLINK) != 0) {
if ((e = nd6_prefix_offlink(pr)) != 0) {
OpenPOWER on IntegriCloud