View | Details | Raw Unified | Return to bug 145300
Collapse All | Expand All

(-)/usr/src/sys/net/if.c (-1 / +12 lines)
Lines 142-147 Link Here
142
static void	if_attach_internal(struct ifnet *, int);
142
static void	if_attach_internal(struct ifnet *, int);
143
static void	if_detach_internal(struct ifnet *, int);
143
static void	if_detach_internal(struct ifnet *, int);
144
144
145
#ifdef INET
146
/* XXX: better way to grab access to this function? */
147
extern void arp_ifscrub(struct ifnet *ifp, uint32_t addr);
148
#endif /* INET */
149
145
#ifdef INET6
150
#ifdef INET6
146
/*
151
/*
147
 * XXX: declare here to avoid to include many inet6 related files..
152
 * XXX: declare here to avoid to include many inet6 related files..
Lines 3197-3204 Link Here
3197
		 * the address change.
3202
		 * the address change.
3198
		 */
3203
		 */
3199
		TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
3204
		TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
3200
			if (ifa->ifa_addr->sa_family == AF_INET)
3205
			if (ifa->ifa_addr->sa_family == AF_INET) {
3206
				struct in_ifaddr *ia = (struct in_ifaddr *)ifa;
3207
3208
				/* Delete previous mappings in the ARP table 
3209
				 * first then send a gratuitous ARP */
3210
				arp_ifscrub(ifp, (uint32_t)(IA_SIN(ia)->sin_addr.s_addr));
3201
				arp_ifinit(ifp, ifa);
3211
				arp_ifinit(ifp, ifa);
3212
			}
3202
		}
3213
		}
3203
#endif
3214
#endif
3204
	}
3215
	}

Return to bug 145300