---
 src/connman.h |  2 ++
 src/inet.c    | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/src/connman.h b/src/connman.h
index cb7a115..adeaf8c 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -223,6 +223,8 @@ int __connman_inet_add_fwmark_rule(uint32_t table_id, int 
family, uint32_t fwmar
 int __connman_inet_del_fwmark_rule(uint32_t table_id, int family, uint32_t 
fwmark);
 int __connman_inet_add_default_to_table(uint32_t table_id, int ifindex, const 
char *gateway);
 int __connman_inet_del_default_from_table(uint32_t table_id, int ifindex, 
const char *gateway);
+int __connman_inet_get_address_netmask(int ifindex,
+               struct sockaddr_in *address, struct sockaddr_in *netmask);
 
 #include <connman/resolver.h>
 
diff --git a/src/inet.c b/src/inet.c
index 458d916..90ec5f7 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -2977,3 +2977,40 @@ out:
        freeifaddrs(ifaddr);
        return err;
 }
+
+int __connman_inet_get_address_netmask(int ifindex,
+                                       struct sockaddr_in *address,
+                                       struct sockaddr_in *netmask)
+{
+       int sk, ret = -EINVAL;
+       struct ifreq ifr;
+
+       DBG("index %d", ifindex);
+
+       sk = socket(PF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+       if (sk < 0)
+               return -EINVAL;
+
+       memset(&ifr, 0, sizeof(ifr));
+       ifr.ifr_ifindex = ifindex;
+
+       if (ioctl(sk, SIOCGIFNAME, &ifr) < 0)
+               goto out;
+
+       if (ioctl(sk, SIOCGIFNETMASK, &ifr) < 0)
+               goto out;
+
+       memcpy(netmask, (struct sockaddr_in *)&ifr.ifr_netmask,
+                                               sizeof(struct sockaddr_in));
+
+       if (ioctl(sk, SIOCGIFADDR, &ifr) < 0)
+               goto out;
+
+       memcpy(address, (struct sockaddr_in *)&ifr.ifr_addr,
+                                               sizeof(struct sockaddr_in));
+       ret = 0;
+
+out:
+       close(sk);
+       return ret;
+}
-- 
1.7.11.7

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to