Add helper for getting index from interface names
authorMarcel Holtmann <marcel@holtmann.org>
Sun, 28 Dec 2008 05:18:29 +0000 (06:18 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Sun, 28 Dec 2008 05:18:29 +0000 (06:18 +0100)
plugins/inet.c
plugins/inet.h

index e3fedfb..97f338e 100644 (file)
 
 #include "inet.h"
 
+int inet_name2index(const char *name)
+{
+       struct ifreq ifr;
+       int sk, err;
+
+       if (name == NULL)
+               return -1;
+
+       sk = socket(PF_INET, SOCK_DGRAM, 0);
+       if (sk < 0)
+               return -1;
+
+       memset(&ifr, 0, sizeof(ifr));
+       strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
+
+       err = ioctl(sk, SIOCGIFINDEX, &ifr);
+
+       close(sk);
+
+       if (err < 0)
+               return -1;
+
+       return ifr.ifr_ifindex;
+}
+
 char *inet_index2name(int index)
 {
        struct ifreq ifr;
index 3246cc1..23437ac 100644 (file)
@@ -19,6 +19,8 @@
  *
  */
 
+int inet_name2index(const char *name);
+
 char *inet_index2name(int index);
 char *inet_index2ident(int index, const char *prefix);