Fix the SIOC[DG]LIFADDR ioctls in in_lifaddr_ioctl() to work with IPv4

interface address rather than IPv6.

Submitted by:	hrs
Reviewed by:	bz
MFC after:	1 week
This commit is contained in:
John Baldwin 2012-01-04 13:23:51 +00:00
parent ba89031aea
commit 0823c29b81

View File

@ -735,7 +735,7 @@ in_lifaddr_ioctl(struct socket *so, u_long cmd, caddr_t data,
if (iflr->flags & IFLR_PREFIX)
return (EINVAL);
/* copy args to in_aliasreq, perform ioctl(SIOCAIFADDR_IN6). */
/* copy args to in_aliasreq, perform ioctl(SIOCAIFADDR). */
bzero(&ifra, sizeof(ifra));
bcopy(iflr->iflr_name, ifra.ifra_name,
sizeof(ifra.ifra_name));
@ -785,7 +785,7 @@ in_lifaddr_ioctl(struct socket *so, u_long cmd, caddr_t data,
}
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
if (ifa->ifa_addr->sa_family != AF_INET6)
if (ifa->ifa_addr->sa_family != AF_INET)
continue;
if (match.s_addr == 0)
break;
@ -817,7 +817,7 @@ in_lifaddr_ioctl(struct socket *so, u_long cmd, caddr_t data,
} else {
struct in_aliasreq ifra;
/* fill in_aliasreq and do ioctl(SIOCDIFADDR_IN6) */
/* fill in_aliasreq and do ioctl(SIOCDIFADDR) */
bzero(&ifra, sizeof(ifra));
bcopy(iflr->iflr_name, ifra.ifra_name,
sizeof(ifra.ifra_name));