Author: qingli
Date: Fri Oct  2 01:34:55 2009
New Revision: 197695
URL: http://svn.freebsd.org/changeset/base/197695

Log:
  Previously, if an address alias is configured on an interface, and
  this address alias has a prefix matching that of another address
  configured on the same interface, then the ARP entry for the alias
  is not deleted from the ARP table when that address alias is removed.
  This patch fixes the aforementioned issue.
  
  PR:           kern/139113
  MFC after:    3 days

Modified:
  head/sys/netinet/in.c

Modified: head/sys/netinet/in.c
==============================================================================
--- head/sys/netinet/in.c       Fri Oct  2 01:07:28 2009        (r197694)
+++ head/sys/netinet/in.c       Fri Oct  2 01:34:55 2009        (r197695)
@@ -1060,6 +1060,8 @@ in_scrubprefix(struct in_ifaddr *target)
            !(target->ia_ifp->if_flags & IFF_LOOPBACK)) {
                error = ifa_del_loopback_route((struct ifaddr *)target,
                                       (struct sockaddr *)&target->ia_addr);
+               /* remove arp cache */
+               arp_ifscrub(target->ia_ifp, IA_SIN(target)->sin_addr.s_addr);
        }
 
        if ((target->ia_flags & IFA_ROUTE) == 0) {
@@ -1082,8 +1084,6 @@ in_scrubprefix(struct in_ifaddr *target)
                prefix = target->ia_addr.sin_addr;
                mask = target->ia_sockmask.sin_addr;
                prefix.s_addr &= mask.s_addr;
-               /* remove arp cache */
-               arp_ifscrub(target->ia_ifp, IA_SIN(target)->sin_addr.s_addr);
        }
 
        IN_IFADDR_RLOCK();
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to