From d0874dfb4502f2a9936a9e985787767ffa232b0e Mon Sep 17 00:00:00 2001 From: qingli Date: Fri, 7 Oct 2011 18:01:34 +0000 Subject: [PATCH] Remove the reference held on the loopback route when the interface address is being deleted. Only the last reference holder deletes the loopback route. All other delete operations just clear the IFA_RTSELF flag. PR: kern/159601 Submitted by: pluknet Reviewed by: discussed on net@ MFC after: 3 days --- sys/netinet/in.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/netinet/in.c b/sys/netinet/in.c index da4e8a0dfa58..3201fa60d43f 100644 --- a/sys/netinet/in.c +++ b/sys/netinet/in.c @@ -1126,8 +1126,10 @@ in_scrubprefix(struct in_ifaddr *target, u_int flags) RT_LOCK(ia_ro.ro_rt); if (ia_ro.ro_rt->rt_refcnt <= 1) freeit = 1; - else + else if (flags & LLE_STATIC) { RT_REMREF(ia_ro.ro_rt); + target->ia_flags &= ~IFA_RTSELF; + } RTFREE_LOCKED(ia_ro.ro_rt); } if (freeit && (flags & LLE_STATIC)) {