user2044000
user2044000

Reputation: 53

ioctl (TUNSETIFF) : device or resource busy

I am unable to set TUN interface. Everywhere i searched and it says the device should be rooted. I am setting up proxyserver on my ubuntu 14.04 system

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;

}

Upvotes: 5

Views: 18143

Answers (1)

hackmaxed
hackmaxed

Reputation: 41

Check your device name (i.e. ifr.ifr_name). Another process maybe using the same device. For example, you may be trying to use tun0 and another process has it open already.

Upvotes: 1

Related Questions