diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/if_indextoname.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/if_indextoname.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/if_indextoname.c b/mdk-stage1/dietlibc/lib/if_indextoname.c new file mode 100644 index 000000000..e683755f6 --- /dev/null +++ b/mdk-stage1/dietlibc/lib/if_indextoname.c @@ -0,0 +1,29 @@ +#include <linux/if.h> +#include <linux/net.h> +#include <sys/ioctl.h> +#include <unistd.h> +#include <sys/socket.h> + +#ifndef SOCK_DGRAM +#define SOCK_DGRAM 2 +#endif + +char* if_indextoname(unsigned int interface,char* blub) { + struct ifreq ifr; + int fd; + + fd=socket(AF_INET6,SOCK_DGRAM,0); + if (fd<0) fd=socket(AF_INET,SOCK_DGRAM,0); + ifr.ifr_ifindex=interface; + if (ioctl(fd,SIOCGIFNAME,&ifr)==0) { + int i; + close(fd); + for (i=0; i<IFNAMSIZ-1; i++) + if (!(blub[i]=ifr.ifr_name[i])) + return blub; + blub[i]=0; + return blub; + } + close(fd); + return 0; +} |