| #define _GNU_SOURCE | |
| #include <net/if.h> | |
| #include <sys/socket.h> | |
| #include <sys/ioctl.h> | |
| #include <string.h> | |
| #include "syscall.h" | |
| unsigned if_nametoindex(const char *name) | |
| { | |
| struct ifreq ifr; | |
| int fd, r; | |
| if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0; | |
| strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); | |
| r = ioctl(fd, SIOCGIFINDEX, &ifr); | |
| __syscall(SYS_close, fd); | |
| return r < 0 ? 0 : ifr.ifr_ifindex; | |
| } |