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);

Reply via email to