1*c9945492SAndroid Build Coastguard Worker #define _GNU_SOURCE 2*c9945492SAndroid Build Coastguard Worker #include <net/if.h> 3*c9945492SAndroid Build Coastguard Worker #include <sys/socket.h> 4*c9945492SAndroid Build Coastguard Worker #include <sys/ioctl.h> 5*c9945492SAndroid Build Coastguard Worker #include <string.h> 6*c9945492SAndroid Build Coastguard Worker #include "syscall.h" 7*c9945492SAndroid Build Coastguard Worker if_nametoindex(const char * name)8*c9945492SAndroid Build Coastguard Workerunsigned if_nametoindex(const char *name) 9*c9945492SAndroid Build Coastguard Worker { 10*c9945492SAndroid Build Coastguard Worker struct ifreq ifr; 11*c9945492SAndroid Build Coastguard Worker int fd, r; 12*c9945492SAndroid Build Coastguard Worker 13*c9945492SAndroid Build Coastguard Worker if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0; 14*c9945492SAndroid Build Coastguard Worker strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); 15*c9945492SAndroid Build Coastguard Worker r = ioctl(fd, SIOCGIFINDEX, &ifr); 16*c9945492SAndroid Build Coastguard Worker __syscall(SYS_close, fd); 17*c9945492SAndroid Build Coastguard Worker return r < 0 ? 0 : ifr.ifr_ifindex; 18*c9945492SAndroid Build Coastguard Worker } 19