diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/if_nametoindex.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/if_nametoindex.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/if_nametoindex.c b/mdk-stage1/dietlibc/lib/if_nametoindex.c new file mode 100644 index 000000000..5923963b1 --- /dev/null +++ b/mdk-stage1/dietlibc/lib/if_nametoindex.c @@ -0,0 +1,27 @@ +#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 + +int if_nametoindex(char* blub) { + struct ifreq ifr; + int fd; + char *tmp; + int len=sizeof(ifr.ifr_name); + fd=socket(AF_INET6,SOCK_DGRAM,0); + if (fd<0) fd=socket(AF_INET,SOCK_DGRAM,0); + for (tmp=ifr.ifr_name; len>0; --len) { + if ((*tmp++=*blub++)==0) break; + } + if (ioctl(fd,SIOCGIFINDEX,&ifr)==0) { + close(fd); + return ifr.ifr_ifindex; + } + close(fd); + return 0; +} |