Use global IP address structure for transaction
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 11 Aug 2009 07:55:20 +0000 (00:55 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 11 Aug 2009 07:55:20 +0000 (00:55 -0700)
include/inet.h
src/inet.c

index 66285d8..d943a26 100644 (file)
 #ifndef __CONNMAN_INET_H
 #define __CONNMAN_INET_H
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 #include <arpa/inet.h>
 
 #include <connman/device.h>
+#include <connman/ipconfig.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 int connman_inet_ifindex(const char *name);
 char *connman_inet_ifname(int index);
@@ -38,8 +39,7 @@ int connman_inet_ifdown(int index);
 
 struct connman_device *connman_inet_create_device(int index);
 
-int connman_inet_set_address(int index, struct in_addr address,
-                       struct in_addr netmask, struct in_addr broadcast);
+int connman_inet_set_address(int index, struct connman_ipaddress *ipaddress);
 int connman_inet_clear_address(int index);
 int connman_inet_set_gateway(int index, struct in_addr gateway);
 
index 3fc162c..09183a0 100644 (file)
@@ -455,8 +455,7 @@ done:
        return device;
 }
 
-int connman_inet_set_address(int index, struct in_addr address,
-                       struct in_addr netmask, struct in_addr broadcast)
+int connman_inet_set_address(int index, struct connman_ipaddress *ipaddress)
 {
        struct ifreq ifr;
        struct sockaddr_in addr;
@@ -478,7 +477,7 @@ int connman_inet_set_address(int index, struct in_addr address,
 
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
-       addr.sin_addr = address;
+       addr.sin_addr.s_addr = inet_addr(ipaddress->local);
        memcpy(&ifr.ifr_addr, &addr, sizeof(ifr.ifr_addr));
 
        err = ioctl(sk, SIOCSIFADDR, &ifr);
@@ -488,7 +487,7 @@ int connman_inet_set_address(int index, struct in_addr address,
 
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
-       addr.sin_addr = netmask;
+       addr.sin_addr.s_addr = htonl(~(0xfffffffflu >> ipaddress->prefixlen));
        memcpy(&ifr.ifr_netmask, &addr, sizeof(ifr.ifr_netmask));
 
        err = ioctl(sk, SIOCSIFNETMASK, &ifr);
@@ -498,7 +497,7 @@ int connman_inet_set_address(int index, struct in_addr address,
 
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
-       addr.sin_addr = broadcast;
+       addr.sin_addr.s_addr = inet_addr(ipaddress->broadcast);
        memcpy(&ifr.ifr_broadaddr, &addr, sizeof(ifr.ifr_broadaddr));
 
        err = ioctl(sk, SIOCSIFBRDADDR, &ifr);