summaryrefslogtreecommitdiff
path: root/src/inet.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-09-14 06:13:46 -0700
committerMarcel Holtmann <marcel@holtmann.org>2009-09-14 06:13:46 -0700
commit240f87bc4777961b88e247ad333d9cab8da0fd43 (patch)
tree905ef777754ee3434ce3181068e4c2bd278a598c /src/inet.c
parente36d8124e142f27d99d16575b0122dc4401794cc (diff)
downloadconnman-240f87bc4777961b88e247ad333d9cab8da0fd43.tar.gz
connman-240f87bc4777961b88e247ad333d9cab8da0fd43.tar.bz2
connman-240f87bc4777961b88e247ad333d9cab8da0fd43.zip
Add inet helper to retrieve current flags
Diffstat (limited to 'src/inet.c')
-rw-r--r--src/inet.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/inet.c b/src/inet.c
index 1261c5fa..a20fabbc 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -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;