Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Dec 2008 02:44:58 +0000 (UTC)
From:      Qing Li <qingli@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r186071 - projects/arpv2_merge_1/sys/netinet
Message-ID:  <200812140244.mBE2iwq5046914@svn.freebsd.org>

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



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