]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
Device indices are unsigned and use if_nametoindex as fallback
authorshemminger <shemminger>
Tue, 7 Jun 2005 22:15:48 +0000 (22:15 +0000)
committershemminger <shemminger>
Tue, 7 Jun 2005 22:15:48 +0000 (22:15 +0000)
ChangeLog
include/ll_map.h
lib/ll_map.c

index ec73a2d4e9f1ec465879a24986dbd1b441147b0c..2cd6691a432b5c8822731327b07929fea36679ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-06-07  Stephen Hemminger  <shemminger@osdl.org>
+
+       * Fix 'ip link' map to handle case where device gets autoloaded
+         by using if_nametoindex as fallback
+       * Device indices are unsigned not int.
+
 2005-06-07   Masahide NAKAMURA <nakam@linux-ipv6.org>
        
        * [ip] show timestamp when using '-t' option.
index 3bff5e94160f560b90dae802215225de79b9cbec..d085813fdc3d252e670272e5afd9f2ea31168889 100644 (file)
@@ -4,10 +4,10 @@
 extern int ll_remember_index(const struct sockaddr_nl *who, 
                             struct nlmsghdr *n, void *arg);
 extern int ll_init_map(struct rtnl_handle *rth);
-extern int ll_name_to_index(const char *name);
-extern const char *ll_index_to_name(int idx);
-extern const char *ll_idx_n2a(int idx, char *buf);
-extern int ll_index_to_type(int idx);
-extern unsigned ll_index_to_flags(int idx);
+extern unsigned ll_name_to_index(const char *name);
+extern const char *ll_index_to_name(unsigned idx);
+extern const char *ll_idx_n2a(unsigned idx, char *buf);
+extern int ll_index_to_type(unsigned idx);
+extern unsigned ll_index_to_flags(unsigned idx);
 
 #endif /* __LL_MAP_H__ */
index 89c0d20a1de71f50e3808314d6568d8836ce84ce..1acbf8f862ac19f62727b4e9e35cec870262fb4f 100644 (file)
@@ -17,6 +17,7 @@
 #include <fcntl.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
+#include <net/if.h>
 #include <string.h>
 
 #include "libnetlink.h"
@@ -25,7 +26,7 @@
 struct idxmap
 {
        struct idxmap * next;
-       int             index;
+       unsigned        index;
        int             type;
        int             alen;
        unsigned        flags;
@@ -86,7 +87,7 @@ int ll_remember_index(const struct sockaddr_nl *who,
        return 0;
 }
 
-const char *ll_idx_n2a(int idx, char *buf)
+const char *ll_idx_n2a(unsigned idx, char *buf)
 {
        struct idxmap *im;
 
@@ -100,14 +101,14 @@ const char *ll_idx_n2a(int idx, char *buf)
 }
 
 
-const char *ll_index_to_name(int idx)
+const char *ll_index_to_name(unsigned idx)
 {
        static char nbuf[16];
 
        return ll_idx_n2a(idx, nbuf);
 }
 
-int ll_index_to_type(int idx)
+int ll_index_to_type(unsigned idx)
 {
        struct idxmap *im;
 
@@ -119,7 +120,7 @@ int ll_index_to_type(int idx)
        return -1;
 }
 
-unsigned ll_index_to_flags(int idx)
+unsigned ll_index_to_flags(unsigned idx)
 {
        struct idxmap *im;
 
@@ -132,7 +133,7 @@ unsigned ll_index_to_flags(int idx)
        return 0;
 }
 
-int ll_name_to_index(const char *name)
+unsigned ll_name_to_index(const char *name)
 {
        static char ncache[16];
        static int icache;
@@ -152,7 +153,8 @@ int ll_name_to_index(const char *name)
                        }
                }
        }
-       return 0;
+
+       return if_nametoindex(name);
 }
 
 int ll_init_map(struct rtnl_handle *rth)