Device indices are unsigned and use if_nametoindex as fallback

This commit is contained in:
shemminger 2005-06-07 22:15:48 +00:00
parent 9bec1a4363
commit 99f830de2f
3 changed files with 20 additions and 12 deletions

View File

@ -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.

View 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__ */

View 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)