svn commit: r186071 - projects/arpv2_merge_1/sys/netinet

Qing Li qingli at FreeBSD.org
Sat Dec 13 18:44:58 PST 2008


Author: qingli
Date: Sun Dec 14 02:44:58 2008
New Revision: 186071
URL: http://svn.freebsd.org/changeset/base/186071

Log:
  We will delete the interface address ARP entry only
  when we remove the address.

Modified:
  projects/arpv2_merge_1/sys/netinet/in.c

Modified: projects/arpv2_merge_1/sys/netinet/in.c
==============================================================================
--- projects/arpv2_merge_1/sys/netinet/in.c	Sun Dec 14 01:12:55 2008	(r186070)
+++ projects/arpv2_merge_1/sys/netinet/in.c	Sun Dec 14 02:44:58 2008	(r186071)
@@ -1140,12 +1140,14 @@ in_lltable_lookup(struct lltable *llt, u
 		lle->lle_head = lleh;
 		LIST_INSERT_HEAD(lleh, lle, lle_next);
 	} else if (flags & LLE_DELETE) {
-		LLE_WLOCK(lle);
-		lle->la_flags = LLE_DELETED;
-		LLE_WUNLOCK(lle);
+		if (!(lle->la_flags & LLE_IFADDR) || (flags & LLE_IFADDR)) {
+			LLE_WLOCK(lle);
+			lle->la_flags = LLE_DELETED;
+			LLE_WUNLOCK(lle);
 #ifdef DIAGNOSTICS
-		log(LOG_INFO, "ifaddr cache = %p  is deleted\n", lle);	
+			log(LOG_INFO, "ifaddr cache = %p  is deleted\n", lle);	
 #endif
+		}
 		lle = (void *)-1;
 		
 	}


More information about the svn-src-projects mailing list