From 240f87bc4777961b88e247ad333d9cab8da0fd43 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 14 Sep 2009 06:13:46 -0700 Subject: [PATCH] Add inet helper to retrieve current flags --- include/inet.h | 2 ++ src/inet.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/include/inet.h b/include/inet.h index 119fca2..d8be5b7 100644 --- a/include/inet.h +++ b/include/inet.h @@ -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); diff --git a/src/inet.c b/src/inet.c index 1261c5f..a20fabb 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; -- 2.7.4