Don't create a bogus ARP entry for 0.0.0.0.
This commit is contained in:
parent
f0b40b1c97
commit
ce9122fd3e
@ -758,23 +758,24 @@ arp_ifinit(struct ifnet *ifp, struct ifaddr *ifa)
|
||||
{
|
||||
struct llentry *lle;
|
||||
|
||||
if (ntohl(IA_SIN(ifa)->sin_addr.s_addr) != INADDR_ANY)
|
||||
if (ntohl(IA_SIN(ifa)->sin_addr.s_addr) != INADDR_ANY) {
|
||||
arprequest(ifp, &IA_SIN(ifa)->sin_addr,
|
||||
&IA_SIN(ifa)->sin_addr, IF_LLADDR(ifp));
|
||||
/*
|
||||
* interface address is considered static entry
|
||||
* because the output of the arp utility shows
|
||||
* that L2 entry as permanent
|
||||
*/
|
||||
IF_AFDATA_LOCK(ifp);
|
||||
lle = lla_lookup(LLTABLE(ifp), (LLE_CREATE | LLE_IFADDR | LLE_STATIC),
|
||||
(struct sockaddr *)IA_SIN(ifa));
|
||||
IF_AFDATA_UNLOCK(ifp);
|
||||
if (lle == NULL)
|
||||
log(LOG_INFO, "arp_ifinit: cannot create arp "
|
||||
"entry for interface address\n");
|
||||
else
|
||||
LLE_RUNLOCK(lle);
|
||||
/*
|
||||
* interface address is considered static entry
|
||||
* because the output of the arp utility shows
|
||||
* that L2 entry as permanent
|
||||
*/
|
||||
IF_AFDATA_LOCK(ifp);
|
||||
lle = lla_lookup(LLTABLE(ifp), (LLE_CREATE | LLE_IFADDR | LLE_STATIC),
|
||||
(struct sockaddr *)IA_SIN(ifa));
|
||||
IF_AFDATA_UNLOCK(ifp);
|
||||
if (lle == NULL)
|
||||
log(LOG_INFO, "arp_ifinit: cannot create arp "
|
||||
"entry for interface address\n");
|
||||
else
|
||||
LLE_RUNLOCK(lle);
|
||||
}
|
||||
ifa->ifa_rtrequest = NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user