diff -uNr iproute-2.6.29/iproute2-2.6.29/Makefile iproute-2.6.29-new/iproute2-2.6.29/Makefile --- iproute-2.6.29/iproute2-2.6.29/Makefile 2009-10-14 21:20:37.000000000 +0530 +++ iproute-2.6.29-new/iproute2-2.6.29/Makefile 2009-10-13 00:13:44.000000000 +0530 @@ -28,7 +28,7 @@ CFLAGS = $(CCOPTS) -I../include $(DEFINES) YACCFLAGS = -d -t -v -LDLIBS += -L../lib -lnetlink -lutil +LDLIBS += -L../lib -lnetlink -lutil -lnetdevname SUBDIRS=lib ip tc misc netem genl diff -uNr iproute-2.6.29/iproute2-2.6.29/ip/iplink.c iproute-2.6.29-new/iproute2-2.6.29/ip/iplink.c --- iproute-2.6.29/iproute2-2.6.29/ip/iplink.c 2009-03-25 03:45:14.000000000 +0530 +++ iproute-2.6.29-new/iproute2-2.6.29/ip/iplink.c 2009-10-13 00:39:33.000000000 +0530 @@ -602,6 +602,7 @@ return 0; } +#include static int do_set(int argc, char **argv) { @@ -615,6 +616,7 @@ struct ifreq ifr0, ifr1; char *newname = NULL; int htype, halen; + char kernel_name[IFNAMSZ]; while (argc > 0) { if (strcmp(*argv, "up") == 0) { @@ -711,7 +713,10 @@ usage(); if (dev) duparg2("dev", *argv); - dev = *argv; + if (netdev_pathname_to_name(*argv,kernel_name) < 0) { + show_pathname_usage(); + } + dev = kernel_name; } argc--; argv++; } diff -uNr iproute-2.6.29/iproute2-2.6.29/ip/ipmaddr.c iproute-2.6.29-new/iproute2-2.6.29/ip/ipmaddr.c --- iproute-2.6.29/iproute2-2.6.29/ip/ipmaddr.c 2009-03-25 03:45:14.000000000 +0530 +++ iproute-2.6.29-new/iproute2-2.6.29/ip/ipmaddr.c 2009-10-13 01:02:25.000000000 +0530 @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -244,6 +245,7 @@ static int multiaddr_list(int argc, char **argv) { struct ma_info *list = NULL; + static char kernel_name_1[IFNAMSZ]; if (!filter.family) filter.family = preferred_family; @@ -257,7 +259,10 @@ usage(); if (filter.dev) duparg2("dev", *argv); - filter.dev = *argv; + if (netdev_pathname_to_namn(*argv,kernel_name_1) < 0 ) { + show_pathname_usage(); + } + filter.dev = kernel_name_1; } argv++; argc--; } @@ -289,7 +294,9 @@ NEXT_ARG(); if (ifr.ifr_name[0]) duparg("dev", *argv); - strncpy(ifr.ifr_name, *argv, IFNAMSIZ); + if (netdev_pathname_to_name(*argv,ifr.ifr_name) < 0) { + show_pathname_usage(); + } } else { if (matches(*argv, "address") == 0) { NEXT_ARG(); diff -uNr iproute-2.6.29/iproute2-2.6.29/lib/ll_map.c iproute-2.6.29-new/iproute2-2.6.29/lib/ll_map.c --- iproute-2.6.29/iproute2-2.6.29/lib/ll_map.c 2009-10-14 21:47:08.000000000 +0530 +++ iproute-2.6.29-new/iproute2-2.6.29/lib/ll_map.c 2009-10-14 21:19:03.000000000 +0530 @@ -18,6 +18,7 @@ #include #include #include +#include #include "libnetlink.h" #include "ll_map.h" @@ -139,10 +140,13 @@ static char ncache[16]; static int icache; struct idxmap *im; + char kernel_name[IFNAMSIZ]; int i; if (name == NULL) return 0; + netdev_pathname_to_name(name,kernel_name); + strncpy(name,kernel_name,IFNAMSIZ); if (icache && strcmp(name, ncache) == 0) return icache; for (i=0; i<16; i++) { diff -uNr iproute-2.6.29/iproute2-2.6.29/tc/f_fw.c iproute-2.6.29-new/iproute2-2.6.29/tc/f_fw.c --- iproute-2.6.29/iproute2-2.6.29/tc/f_fw.c 2009-03-25 03:45:14.000000000 +0530 +++ iproute-2.6.29-new/iproute2-2.6.29/tc/f_fw.c 2009-10-14 21:55:32.000000000 +0530 @@ -18,6 +18,7 @@ #include #include #include +#include #include #include /* IFNAMSIZ */ #include "utils.h" @@ -39,6 +40,7 @@ struct tcmsg *t = NLMSG_DATA(n); struct rtattr *tail; + char kernel_name[IFNAMSIZ]; memset(&tp, 0, sizeof(tp)); tail = NLMSG_TAIL(n); @@ -98,7 +100,8 @@ fprintf(stderr, "Illegal indev\n"); return -1; } - strncpy(d, *argv, sizeof (d) - 1); + netdev_pathname_to_name(*argv,kernel_name); + strncpy(d, kernel_name, sizeof (d) - 1); addattr_l(n, MAX_MSG, TCA_FW_INDEV, d, strlen(d) + 1); } else if (strcmp(*argv, "help") == 0) { explain();