Add inet helper to retrieve current flags
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 14 Sep 2009 13:13:46 +0000 (06:13 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 14 Sep 2009 13:13:46 +0000 (06:13 -0700)
include/inet.h
src/inet.c

index 119fca2..d8be5b7 100644 (file)
@@ -34,6 +34,8 @@ extern "C" {
 int connman_inet_ifindex(const char *name);
 char *connman_inet_ifname(int index);
 
+short int connman_inet_ifflags(int index);
+
 int connman_inet_ifup(int index);
 int connman_inet_ifdown(int index);
 
index 1261c5f..a20fabb 100644 (file)
@@ -89,6 +89,36 @@ char *connman_inet_ifname(int index)
        return strdup(ifr.ifr_name);
 }
 
+short int connman_inet_ifflags(int index)
+{
+       struct ifreq ifr;
+       int sk, err;
+
+       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       if (sk < 0)
+               return -errno;
+
+       memset(&ifr, 0, sizeof(ifr));
+       ifr.ifr_ifindex = index;
+
+       if (ioctl(sk, SIOCGIFNAME, &ifr) < 0) {
+               err = -errno;
+               goto done;
+       }
+
+       if (ioctl(sk, SIOCGIFFLAGS, &ifr) < 0) {
+               err = -errno;
+               goto done;
+       }
+
+       err = ifr.ifr_flags;
+
+done:
+       close(sk);
+
+       return err;
+}
+
 int connman_inet_ifup(int index)
 {
        struct ifreq ifr;