Explorar el Código

兼容 ipv4 && ipv6

guozhanxin hace 4 años
padre
commit
05bf357285
Se han modificado 1 ficheros con 12 adiciones y 0 borrados
  1. 12 0
      components/net/sal_socket/src/sal_socket.c

+ 12 - 0
components/net/sal_socket/src/sal_socket.c

@@ -1021,7 +1021,13 @@ int sal_ioctlsocket(int socket, long cmd, void *arg)
         {
         {
         case SIOCGIFADDR:
         case SIOCGIFADDR:
             addr_in = (struct sockaddr_in *)&(ifr->ifr_ifru.ifru_addr);
             addr_in = (struct sockaddr_in *)&(ifr->ifr_ifru.ifru_addr);
+#if NETDEV_IPV4 && NETDEV_IPV6
             addr_in->sin_addr.s_addr = sock->netdev->ip_addr.u_addr.ip4.addr;
             addr_in->sin_addr.s_addr = sock->netdev->ip_addr.u_addr.ip4.addr;
+#elif NETDEV_IPV4
+            addr_in->sin_addr.s_addr = sock->netdev->ip_addr.addr;
+#elif NETDEV_IPV6
+#error "not only support IPV6"
+#endif /* NETDEV_IPV4 && NETDEV_IPV6*/
             return 0;
             return 0;
 
 
         case SIOCSIFADDR:
         case SIOCSIFADDR:
@@ -1032,7 +1038,13 @@ int sal_ioctlsocket(int socket, long cmd, void *arg)
 
 
         case SIOCGIFNETMASK:
         case SIOCGIFNETMASK:
             addr_in = (struct sockaddr_in *)&(ifr->ifr_ifru.ifru_netmask);
             addr_in = (struct sockaddr_in *)&(ifr->ifr_ifru.ifru_netmask);
+#if NETDEV_IPV4 && NETDEV_IPV6
             addr_in->sin_addr.s_addr = sock->netdev->netmask.u_addr.ip4.addr;
             addr_in->sin_addr.s_addr = sock->netdev->netmask.u_addr.ip4.addr;
+#elif NETDEV_IPV4
+            addr_in->sin_addr.s_addr = sock->netdev->netmask.addr;
+#elif NETDEV_IPV6
+#error "not only support IPV6"
+#endif /* NETDEV_IPV4 && NETDEV_IPV6*/
             return 0;
             return 0;
 
 
         case SIOCSIFNETMASK:
         case SIOCSIFNETMASK: