Author: qingli
Date: Fri Oct  7 18:01:34 2011
New Revision: 226114
URL: http://svn.freebsd.org/changeset/base/226114

Log:
  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

Modified:
  head/sys/netinet/in.c

Modified: head/sys/netinet/in.c
==============================================================================
--- head/sys/netinet/in.c       Fri Oct  7 16:39:03 2011        (r226113)
+++ head/sys/netinet/in.c       Fri Oct  7 18:01:34 2011        (r226114)
@@ -1126,8 +1126,10 @@ in_scrubprefix(struct in_ifaddr *target,
                        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)) {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to