Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Jun 2013 05:01:13 +0000 (UTC)
From:      Qing Li <qingli@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r252141 - head/sys/netinet6
Message-ID:  <201306240501.r5O51DWS037062@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306240501.r5O51DWS037062>