It turns out that the split is now such that 'ifra' is only used once in
in_ioctl() and 'ifr' is only used once in in_ioctl_change_ifaddr().
Is there a reason not to do this?
Index: sys/netinet/in.c
===================================================================
RCS file: /cvs/src/sys/netinet/in.c,v
retrieving revision 1.154
diff -u -p -r1.154 in.c
--- sys/netinet/in.c 31 May 2018 07:39:19 -0000 1.154
+++ sys/netinet/in.c 31 May 2018 07:47:23 -0000
@@ -214,7 +214,6 @@ in_ioctl(u_long cmd, caddr_t data, struc
struct ifreq *ifr = (struct ifreq *)data;
struct ifaddr *ifa;
struct in_ifaddr *ia = NULL;
- struct in_aliasreq *ifra = (struct in_aliasreq *)data;
struct sockaddr_in oldaddr;
int error = 0;
@@ -305,7 +304,7 @@ in_ioctl(u_long cmd, caddr_t data, struc
}
ia->ia_netmask = ia->ia_sockmask.sin_addr.s_addr =
- ifra->ifra_addr.sin_addr.s_addr;
+ satosin(&ifr->ifr_addr)->sin_addr.s_addr;
break;
}
@@ -317,7 +316,6 @@ int
in_ioctl_change_ifaddr(u_long cmd, caddr_t data, struct ifnet *ifp,
int privileged)
{
- struct ifreq *ifr = (struct ifreq *)data;
struct ifaddr *ifa;
struct in_ifaddr *ia = NULL;
struct in_aliasreq *ifra = (struct in_aliasreq *)data;
@@ -369,7 +367,7 @@ in_ioctl_change_ifaddr(u_long cmd, caddr
newifaddr = 0;
in_ifscrub(ifp, ia);
- error = in_ifinit(ifp, ia, satosin(&ifr->ifr_addr), newifaddr);
+ error = in_ifinit(ifp, ia, &ifra->ifra_addr, newifaddr);
if (error)
break;
dohooks(ifp->if_addrhooks, 0);