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