> unit = 13; > if ((fd = open("/dev/tun0", O_RDONLY)) == -1) > err(1, "failed to open /dev/tun0"); > if (ioctl(fd, TUNSIFUNIT, &unit) == -1) > err(1, "ioctl failed");
I like it. I've got a few questions from npppd and openvpn users hitting the 4 tun limit, and think it would make more sense to to write code that dynamically creates tun interfaces (in C/C++ progs such as the mentioned) if you didn't have to use system() or something like if (stat(node, &_stat) == 0) continue; dev_t dev = makedev(40, i); // from MAKEDEV :( if (mknod(node, 0600 | S_IFCHR, dev) < 0) // from MAKEDEV :( syslog(LOG_ERR, "mknod %s: %m", node); chown(node, 0, 0); but rather the ioctl example above.