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);
-extern unsigned ll_index_to_addr(unsigned idx, unsigned char *addr,
- unsigned alen);
#endif /* __LL_MAP_H__ */
unsigned flags;
int index;
unsigned short type;
- unsigned short alen;
char name[IFNAMSIZ];
- unsigned char addr[20];
};
#define IDXMAP_SIZE 1024
im->type = ifi->ifi_type;
im->flags = ifi->ifi_flags;
- if (tb[IFLA_ADDRESS]) {
- int alen;
- im->alen = alen = RTA_PAYLOAD(tb[IFLA_ADDRESS]);
- if (alen > sizeof(im->addr))
- alen = sizeof(im->addr);
- memcpy(im->addr, RTA_DATA(tb[IFLA_ADDRESS]), alen);
- } else {
- im->alen = 0;
- memset(im->addr, 0, sizeof(im->addr));
- }
strcpy(im->name, RTA_DATA(tb[IFLA_IFNAME]));
return 0;
}
return 0;
}
-unsigned ll_index_to_addr(unsigned idx, unsigned char *addr,
- unsigned alen)
-{
- const struct ll_cache *im;
-
- if (idx == 0)
- return 0;
-
- for (im = idxhead(idx); im; im = im->idx_next) {
- if (im->index == idx) {
- if (alen > sizeof(im->addr))
- alen = sizeof(im->addr);
- if (alen > im->alen)
- alen = im->alen;
- memcpy(addr, im->addr, alen);
- return alen;
- }
- }
- return 0;
-}
-
unsigned ll_name_to_index(const char *name)
{
static char ncache[IFNAMSIZ];