From: Joan Lledó <[email protected]>

    Replace raw uint32_t parameters with lwIP's ip4_addr_t / ip6_addr_t so
    callers don't have to cast back and forth. Drop the now-unused
    addr6_prefix_len parameter from configure_device() and the addr6
    parameter handling in update_if_args, and update all call sites in
    iioctl-ops.c, options.c and pfinet-ops.c accordingly.
---
 lwip/iioctl-ops.c | 54 +++++++++++++++++++++--------------------
 lwip/lwip-util.c  | 62 +++++++++++++++++++++++------------------------
 lwip/lwip-util.h  | 16 ++++++------
 lwip/options.c    | 20 +++++++--------
 lwip/options.h    |  2 +-
 lwip/pfinet-ops.c | 19 +++++++++------
 6 files changed, 88 insertions(+), 85 deletions(-)

diff --git a/lwip/iioctl-ops.c b/lwip/iioctl-ops.c
index 875bfb75..9f62d059 100644
--- a/lwip/iioctl-ops.c
+++ b/lwip/iioctl-ops.c
@@ -81,7 +81,7 @@ siocgifXaddr (struct sock_user *user,
   struct sockaddr_in *sin = (struct sockaddr_in *) addr;
   size_t buflen = sizeof (struct sockaddr);
   struct netif *netif;
-  uint32_t addrs[5];
+  ip4_addr_t addrs[5];
 
   if (!user)
     return EOPNOTSUPP;
@@ -104,7 +104,7 @@ siocgifXaddr (struct sock_user *user,
     {
       inquire_device (netif, &addrs[ADDR], &addrs[NETMASK], &addrs[DSTADDR],
                      &addrs[BRDADDR], &addrs[GWADDR], 0, 0);
-      sin->sin_addr.s_addr = addrs[type];
+      sin->sin_addr.s_addr = addrs[type].addr;
     }
 
   return err;
@@ -128,7 +128,7 @@ siocsifXaddr (struct sock_user *user,
   struct sockaddr_in sin;
   size_t buflen = sizeof (struct sockaddr_in);
   struct netif *netif;
-  uint32_t ipv4_addrs[5];
+  ip4_addr_t ipv4_addrs[5];
 
   if (!user)
     return EOPNOTSUPP;
@@ -160,11 +160,11 @@ siocsifXaddr (struct sock_user *user,
                      &ipv4_addrs[DSTADDR], &ipv4_addrs[BRDADDR],
                      &ipv4_addrs[GWADDR], 0, 0);
 
-      ipv4_addrs[type] = ((struct sockaddr_in *) addr)->sin_addr.s_addr;
+      ipv4_addrs[type].addr = ((struct sockaddr_in *) addr)->sin_addr.s_addr;
 
       err = configure_device (netif, ipv4_addrs[ADDR], ipv4_addrs[NETMASK],
                              ipv4_addrs[DSTADDR], ipv4_addrs[BRDADDR],
-                             ipv4_addrs[GWADDR], 0, 0);
+                             ipv4_addrs[GWADDR], 0);
     }
 
   return err;
@@ -212,7 +212,7 @@ lwip_S_rioctl_siocaddrt (struct sock_user *user,
   struct netif *netif;
   struct sockaddr sa;
   size_t buflen = sizeof (struct sockaddr);
-  uint32_t ipv4_addrs[5];
+  ip4_addr_t ipv4_addrs[5];
 
   if (!user)
     return EOPNOTSUPP;
@@ -247,11 +247,12 @@ lwip_S_rioctl_siocaddrt (struct sock_user *user,
        */
 
       /* masking current IP must match given dest to be valid */
-      if (ipv4_addrs[ADDR] != INADDR_ANY && ipv4_addrs[ADDR] != INADDR_NONE
-         && (ipv4_addrs[ADDR] & route.rt_mask) != route.rt_dest)
+      if (ipv4_addrs[ADDR].addr != INADDR_ANY
+         && ipv4_addrs[ADDR].addr != INADDR_NONE
+         && (ipv4_addrs[ADDR].addr & route.rt_mask) != route.rt_dest)
        return ENETUNREACH;
 
-      ipv4_addrs[NETMASK] = route.rt_mask;
+      ipv4_addrs[NETMASK].addr = route.rt_mask;
     }
   else if (route.rt_gateway != INADDR_ANY)
     {
@@ -261,11 +262,12 @@ lwip_S_rioctl_siocaddrt (struct sock_user *user,
        */
 
       /* First we verify the gateway is reachable from this netif */
-      if (ipv4_addrs[ADDR] != INADDR_ANY && ipv4_addrs[ADDR] != INADDR_NONE
-         && ipv4_addrs[NETMASK] != INADDR_ANY
-         && ipv4_addrs[NETMASK] != INADDR_NONE
-         && (route.rt_gateway & ipv4_addrs[NETMASK]) !=
-         (ipv4_addrs[ADDR] & ipv4_addrs[NETMASK]))
+      if (ipv4_addrs[ADDR].addr != INADDR_ANY
+         && ipv4_addrs[ADDR].addr != INADDR_NONE
+         && ipv4_addrs[NETMASK].addr != INADDR_ANY
+         && ipv4_addrs[NETMASK].addr != INADDR_NONE
+         && (route.rt_gateway & ipv4_addrs[NETMASK].addr) !=
+         (ipv4_addrs[ADDR].addr & ipv4_addrs[NETMASK].addr))
        return EHOSTUNREACH;
 
       /*
@@ -276,7 +278,7 @@ lwip_S_rioctl_siocaddrt (struct sock_user *user,
        */
       tcpip_callback (clear_gateways, NULL);
 
-      ipv4_addrs[GWADDR] = route.rt_gateway;
+      ipv4_addrs[GWADDR].addr = route.rt_gateway;
       tcpip_callback (set_default_if, netif);
     }
   else
@@ -287,7 +289,7 @@ lwip_S_rioctl_siocaddrt (struct sock_user *user,
 
   err = configure_device (netif, ipv4_addrs[ADDR], ipv4_addrs[NETMASK],
                          ipv4_addrs[DSTADDR], ipv4_addrs[BRDADDR],
-                         ipv4_addrs[GWADDR], 0, 0);
+                         ipv4_addrs[GWADDR], 0);
 
   return err;
 }
@@ -312,7 +314,7 @@ lwip_S_rioctl_siocdelrt (struct sock_user *user,
   struct netif *netif;
   struct sockaddr sa;
   size_t buflen = sizeof (struct sockaddr);
-  uint32_t ipv4_addrs[5];
+  ip4_addr_t ipv4_addrs[5];
 
   if (!user)
     return EOPNOTSUPP;
@@ -343,12 +345,12 @@ lwip_S_rioctl_siocdelrt (struct sock_user *user,
        */
 
       /* We remove the netmask only if it matches the given one */
-      if (ipv4_addrs[NETMASK] != INADDR_ANY
-         && ipv4_addrs[NETMASK] != INADDR_NONE
-         && ipv4_addrs[NETMASK] != route.rt_mask)
+      if (ipv4_addrs[NETMASK].addr != INADDR_ANY
+         && ipv4_addrs[NETMASK].addr != INADDR_NONE
+         && ipv4_addrs[NETMASK].addr != route.rt_mask)
        return EINVAL;
 
-      ipv4_addrs[NETMASK] = INADDR_NONE;
+      ipv4_addrs[NETMASK].addr = INADDR_NONE;
     }
   else if (route.rt_gateway != INADDR_ANY)
     {
@@ -358,16 +360,16 @@ lwip_S_rioctl_siocdelrt (struct sock_user *user,
        */
 
       /* We remove the gateway only if it matches the given one */
-      if (ipv4_addrs[GWADDR] != INADDR_ANY
-         && ipv4_addrs[GWADDR] != INADDR_NONE
-         && ipv4_addrs[GWADDR] != route.rt_gateway)
+      if (ipv4_addrs[GWADDR].addr != INADDR_ANY
+         && ipv4_addrs[GWADDR].addr != INADDR_NONE
+         && ipv4_addrs[GWADDR].addr != route.rt_gateway)
        return EINVAL;
 
       /* And only if it was the default one */
       if (netif != netif_default)
        return EINVAL;
 
-      ipv4_addrs[GWADDR] = INADDR_NONE;
+      ipv4_addrs[GWADDR].addr = INADDR_NONE;
     }
   else
     {
@@ -377,7 +379,7 @@ lwip_S_rioctl_siocdelrt (struct sock_user *user,
 
   err = configure_device (netif, ipv4_addrs[ADDR], ipv4_addrs[NETMASK],
                          ipv4_addrs[DSTADDR], ipv4_addrs[BRDADDR],
-                         ipv4_addrs[GWADDR], 0, 0);
+                         ipv4_addrs[GWADDR], 0);
 
   return err;
 }
diff --git a/lwip/lwip-util.c b/lwip/lwip-util.c
index c265ad6a..35f38694 100644
--- a/lwip/lwip-util.c
+++ b/lwip/lwip-util.c
@@ -249,13 +249,12 @@ init_ifs (void *arg)
 struct update_if_args
 {
   struct netif *netif;
-  uint32_t addr;
-  uint32_t netmask;
-  uint32_t peer;
-  uint32_t broadcast;
-  uint32_t gateway;
-  uint32_t *addr6;
-  uint8_t *addr6_prefix_len;
+  ip4_addr_t addr;
+  ip4_addr_t netmask;
+  ip4_addr_t peer;
+  ip4_addr_t broadcast;
+  ip4_addr_t gateway;
+  ip6_addr_t *addr6;
 };
 
 /*
@@ -267,9 +266,7 @@ update_if (void *arg)
   int i;
   struct update_if_args *args = arg;
 
-  netif_set_addr (args->netif, (ip4_addr_t *) & args->addr,
-                          (ip4_addr_t *) & args->netmask,
-                          (ip4_addr_t *) & args->gateway);
+  netif_set_addr (args->netif, &args->addr, &args->netmask, &args->gateway);
 
   if (args->addr6)
     for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
@@ -295,29 +292,29 @@ update_if (void *arg)
 
 /* Get the IP configuration of an interface */
 void
-inquire_device (struct netif *netif, uint32_t * addr, uint32_t * netmask,
-               uint32_t * peer, uint32_t * broadcast, uint32_t * gateway,
-               uint32_t * addr6, uint8_t * addr6_prefix_len)
+inquire_device (struct netif *netif, ip4_addr_t * addr, ip4_addr_t * netmask,
+                ip4_addr_t * peer, ip4_addr_t * broadcast, ip4_addr_t * 
gateway,
+                ip6_addr_t * addr6, uint8_t * addr6_prefix_len)
 {
   int i;
 
   if (netif)
     {
       if (addr)
-       *addr = netif_ip4_addr (netif)->addr;
+       addr->addr = netif_ip4_addr (netif)->addr;
 
       if (netmask)
-       *netmask = netif_ip4_netmask (netif)->addr;
+       netmask->addr = netif_ip4_netmask (netif)->addr;
 
       if (peer)
-       *peer = INADDR_NONE;
+       peer->addr = INADDR_NONE;
 
       if (broadcast)
-       *broadcast =
+       broadcast->addr =
          netif_ip4_addr (netif)->addr | ~netif_ip4_netmask (netif)->addr;
 
       if (gateway)
-       *gateway = netif_ip4_gw (netif)->addr;
+       gateway->addr = netif_ip4_gw (netif)->addr;
 
       if (addr6)
        for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
@@ -339,9 +336,9 @@ inquire_device (struct netif *netif, uint32_t * addr, 
uint32_t * netmask,
  * Called from ioctls.
  */
 error_t
-configure_device (struct netif *netif, uint32_t addr, uint32_t netmask,
-                 uint32_t peer, uint32_t broadcast, uint32_t gateway,
-                 uint32_t * addr6, uint8_t * addr6_prefix_len)
+configure_device (struct netif *netif, ip4_addr_t addr, ip4_addr_t netmask,
+                 ip4_addr_t peer, ip4_addr_t broadcast, ip4_addr_t gateway,
+                 ip6_addr_t * addr6)
 {
   error_t err = 0;
 
@@ -349,25 +346,27 @@ configure_device (struct netif *netif, uint32_t addr, 
uint32_t netmask,
    * The caller is trying to set an invalid address,
    * set all fields to empty so it passes the validation
    */
-  if (addr == INADDR_ANY || addr == INADDR_NONE)
+  if (addr.addr == INADDR_ANY || addr.addr == INADDR_NONE)
     {
-      addr = INADDR_NONE;
-      netmask = INADDR_NONE;
-      peer = INADDR_NONE;
-      broadcast = INADDR_NONE;
-      gateway = INADDR_NONE;
+      addr.addr = INADDR_NONE;
+      netmask.addr = INADDR_NONE;
+      peer.addr = INADDR_NONE;
+      broadcast.addr = INADDR_NONE;
+      gateway.addr = INADDR_NONE;
     }
 
-  if (netmask != INADDR_NONE)
+  if (netmask.addr != INADDR_NONE)
     /*
      * If broadcasting is enabled and we have a netmask lesser than 31 bits
      * long, we need to update the broadcast address too.
      */
     if ((netif->flags & NETIF_FLAG_BROADCAST)
-       && ip4_addr_netmask_valid (netmask) && netmask <= 0xfffffffc)
-      broadcast = (addr | ~netmask);
+       && ip4_addr_netmask_valid (netmask.addr)
+       && netmask.addr <= 0xfffffffc)
+      broadcast.addr = (addr.addr | ~netmask.addr);
 
-  if (!ipv4config_is_valid (addr, netmask, gateway, broadcast))
+  if (!ipv4config_is_valid
+      (addr.addr, netmask.addr, gateway.addr, broadcast.addr))
     err = EINVAL;
   else
     {
@@ -380,7 +379,6 @@ configure_device (struct netif *netif, uint32_t addr, 
uint32_t netmask,
       arg->broadcast = broadcast;
       arg->gateway = gateway;
       arg->addr6 = addr6;
-      arg->addr6_prefix_len = addr6_prefix_len;
       err = err_to_errno(tcpip_callback (update_if, arg));
     }
 
diff --git a/lwip/lwip-util.h b/lwip/lwip-util.h
index c1bf8c58..018ffc96 100644
--- a/lwip/lwip-util.h
+++ b/lwip/lwip-util.h
@@ -31,13 +31,13 @@
 
 void init_ifs (void *arg);
 
-void inquire_device (struct netif *netif, uint32_t * addr, uint32_t * netmask,
-                    uint32_t * peer, uint32_t * broadcast,
-                    uint32_t * gateway, uint32_t * addr6,
-                    uint8_t * addr6_prefix_len);
-error_t configure_device (struct netif *netif, uint32_t addr,
-                         uint32_t netmask, uint32_t peer, uint32_t broadcast,
-                         uint32_t gateway, uint32_t * addr6,
-                         uint8_t * addr6_prefix_len);
+void inquire_device (struct netif *netif, ip4_addr_t * addr,
+                    ip4_addr_t * netmask, ip4_addr_t * peer,
+                    ip4_addr_t * broadcast, ip4_addr_t * gateway,
+                    ip6_addr_t * addr6, uint8_t * addr6_prefix_len);
+error_t configure_device (struct netif *netif, ip4_addr_t addr,
+                         ip4_addr_t netmask, ip4_addr_t peer,
+                         ip4_addr_t broadcast, ip4_addr_t gateway,
+                         ip6_addr_t * addr6);
 
 #endif /* LWIP_UTIL_H */
diff --git a/lwip/options.c b/lwip/options.c
index a22be26c..c25a60ef 100644
--- a/lwip/options.c
+++ b/lwip/options.c
@@ -296,8 +296,8 @@ trivfs_append_args (struct trivfs_control * fsys, char 
**argz,
   error_t err = 0;
   struct netif *netif;
   int i;
-  uint32_t addr, netmask, gateway;
-  uint32_t addr6[LWIP_IPV6_NUM_ADDRESSES][4];
+  ip4_addr_t addr, netmask, gateway;
+  ip6_addr_t addr6[LWIP_IPV6_NUM_ADDRESSES];
   uint8_t addr6_prefix_len[LWIP_IPV6_NUM_ADDRESSES];
 
 #define ADD_OPT(fmt, args...)           \
@@ -318,16 +318,16 @@ trivfs_append_args (struct trivfs_control * fsys, char 
**argz,
          continue;
        }
 
-      inquire_device (netif, &addr, &netmask, 0, 0, &gateway,
-                     (uint32_t *) addr6, addr6_prefix_len);
+    inquire_device (netif, &addr, &netmask, 0, 0, &gateway, addr6,
+                   addr6_prefix_len);
 
       ADD_OPT ("--interface=%s", netif_get_state (netif)->devname);
-      if (addr != INADDR_NONE)
-       ADD_ADDR_OPT ("address", addr);
-      if (netmask != INADDR_NONE)
-       ADD_ADDR_OPT ("netmask", netmask);
-      if (gateway != INADDR_NONE)
-       ADD_ADDR_OPT ("gateway", gateway);
+      if (addr.addr != INADDR_NONE)
+       ADD_ADDR_OPT ("address", addr.addr);
+      if (netmask.addr != INADDR_NONE)
+       ADD_ADDR_OPT ("netmask", netmask.addr);
+      if (gateway.addr != INADDR_NONE)
+       ADD_ADDR_OPT ("gateway", gateway.addr);
       for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++)
        if (!ip6_addr_isany (((ip6_addr_t *) & addr6[i])))
          ADD_OPT ("--address6=%s/%d",
diff --git a/lwip/options.h b/lwip/options.h
index 7d1c96c7..10893545 100644
--- a/lwip/options.h
+++ b/lwip/options.h
@@ -45,7 +45,7 @@ struct parse_interface
   ip4_addr_t address, netmask, peer, gateway;
 
   /* New IPv6 configuration to apply. */
-  uint32_t addr6[LWIP_IPV6_NUM_ADDRESSES][4];
+  ip6_addr_t addr6[LWIP_IPV6_NUM_ADDRESSES];
 };
 
 /* Used to hold data during argument parsing.  */
diff --git a/lwip/pfinet-ops.c b/lwip/pfinet-ops.c
index e87cfe0d..0755fcb3 100644
--- a/lwip/pfinet-ops.c
+++ b/lwip/pfinet-ops.c
@@ -138,7 +138,8 @@ static uint32_t get_routes(ifrtreq_t *rtable) {
   ifrtreq_t *rtable_it;
   struct netif *netif;
   char *devname;
-  uint32_t addr, netmask, gw, count;
+  ip4_addr_t addr, netmask, gw;
+  uint32_t count;
 
   rtable_it = rtable;
   count = 0;
@@ -148,9 +149,9 @@ static uint32_t get_routes(ifrtreq_t *rtable) {
   if (netif_default != NULL) {
     inquire_device (netif_default, 0, 0, 0, 0, &gw, 0, 0);
 
-    if (gw != INADDR_ANY && gw != INADDR_NONE) {
+    if (gw.addr != INADDR_ANY && gw.addr != INADDR_NONE) {
       devname = netif_get_state (netif_default)->devname;
-      add_route(rtable_it++, devname, INADDR_ANY, INADDR_ANY, gw);
+      add_route(rtable_it++, devname, INADDR_ANY, INADDR_ANY, gw.addr);
       count++;
     }
   }
@@ -161,11 +162,13 @@ static uint32_t get_routes(ifrtreq_t *rtable) {
   {
     inquire_device (netif, &addr, &netmask, 0, 0, &gw, 0, 0);
 
-    if(addr != INADDR_ANY && addr != INADDR_NONE
-      && netmask != INADDR_ANY && netmask != INADDR_NONE) {
-      devname = netif_get_state (netif)->devname;
-      add_route(rtable_it++, devname, addr & netmask, netmask, INADDR_ANY);
-      count++;
+    if (addr.addr != INADDR_ANY && addr.addr != INADDR_NONE
+       && netmask.addr != INADDR_ANY && netmask.addr != INADDR_NONE)
+      {
+       devname = netif_get_state (netif)->devname;
+       add_route (rtable_it++, devname, addr.addr & netmask.addr,
+                  netmask.addr, INADDR_ANY);
+       count++;
       }
 
     if (count == MAX_ROUTES)
-- 
2.50.1


Reply via email to