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, и другой процесс уже открыл его.

Другие вопросы по тегам