ioctl (TUNSETIFF): устройство или ресурс занят
Я не могу установить интерфейс TUN. Везде где я искал и там говорится, что устройство должно быть рутировано. Я устанавливаю прокси-сервер в моей системе Ubuntu 14.04
static int get_interface(char *name) {
int interface = open("/dev/net/tun", O_RDWR | O_NONBLOCK);
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
if (ioctl(interface, TUNSETIFF, (void *)&ifr) < 0) {
perror("Cannot get TUN interface");
exit(1);
}
return interface;
}
1 ответ
Проверьте имя вашего устройства (например, ifr.ifr_name). Другой процесс, возможно, с использованием того же устройства. Например, вы можете пытаться использовать tun0, и другой процесс уже открыл его.