Author: qingli
Date: Mon Jun 24 05:01:13 2013
New Revision: 252141
URL: http://svnweb.freebsd.org/changeset/base/252141

Log:
  Delete the nd6 entries associated with an off-link prefix
  if the same prefix cannot be found on an alternative
  interface.
  
  Reviewed by:  hrs
  MFC after:    1 week

Modified:
  head/sys/netinet6/nd6_rtr.c

Modified: head/sys/netinet6/nd6_rtr.c
==============================================================================
--- head/sys/netinet6/nd6_rtr.c Mon Jun 24 05:00:31 2013        (r252140)
+++ head/sys/netinet6/nd6_rtr.c Mon Jun 24 05:01:13 2013        (r252141)
@@ -1720,6 +1720,7 @@ nd6_prefix_offlink(struct nd_prefix *pr)
                }
        }
        error = a_failure;
+       a_failure = 1;
        if (error == 0) {
                pr->ndpr_stateflags &= ~NDPRF_ONLINK;
 
@@ -1758,7 +1759,8 @@ nd6_prefix_offlink(struct nd_prefix *pr)
                                                &opr->ndpr_prefix.sin6_addr),
                                            opr->ndpr_plen, if_name(ifp),
                                            if_name(opr->ndpr_ifp), e));
-                               }
+                               } else
+                                       a_failure = 0;
                        }
                }
        } else {
@@ -1770,6 +1772,10 @@ nd6_prefix_offlink(struct nd_prefix *pr)
                    if_name(ifp), error));
        }
 
+       if (a_failure)
+               lltable_prefix_free(AF_INET6, (struct sockaddr *)&sa6,
+                   (struct sockaddr *)&mask6, LLE_STATIC);
+
        return (error);
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to