summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorqingli <qingli@FreeBSD.org>2009-10-02 01:34:55 +0000
committerqingli <qingli@FreeBSD.org>2009-10-02 01:34:55 +0000
commit81ff2327e3bf0610ae49d4c4699530ebfed23529 (patch)
tree8c78c40f783fb728954f1bb83b7e54f32406354e /sys/netinet
parent46de945b601f1859257a366aa6caee9b16da01dc (diff)
downloadFreeBSD-src-81ff2327e3bf0610ae49d4c4699530ebfed23529.zip
FreeBSD-src-81ff2327e3bf0610ae49d4c4699530ebfed23529.tar.gz
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
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/in.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 11e098e..5b20d5b 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -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();
OpenPOWER on IntegriCloud