diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-09-14 06:13:46 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-09-14 06:13:46 -0700 |
commit | 240f87bc4777961b88e247ad333d9cab8da0fd43 (patch) | |
tree | 905ef777754ee3434ce3181068e4c2bd278a598c /src/inet.c | |
parent | e36d8124e142f27d99d16575b0122dc4401794cc (diff) | |
download | connman-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.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -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; |