Hi, On Fri, Mar 05, 2010 at 10:52:53AM -0600, Karl O. Pinc wrote: > > open() first will exclusively lock it for you... > > From OpenBSD's tun(4) man page: > > Each device has the exclusive open property; it cannot be > opened if it is > already open and in use by another process. > ... > On the last close of the device, all queued packets are > discarded. If the device was created by opening /dev/tunN, > it will be > automatically destroyed. Devices created via ifconfig(8) are > only marked > as not running and traffic will be dropped returning EHOSTDOWN. > > Which means to me that you want to omit the ifconfig destroy and > create, thus: > > TUN/TAP device /dev/tun1 opened with open(2) > /* iterate increasing tunN number until you get other than > * EBUSY (the device was already opened), or suchlike searching */ > /sbin/ifconfig tun1 10.1.1.18 10.1.1.17 mtu 1500 netmask \ > 255.255.255.255 up
This is what other platforms do, e.g. FreeBSD and Linux (on close, auto-destroy - and if you want persistance, you need to do something special). Maybe this was changed between older OpenBSD versions and the current versions? Given this information, I will prepare a patch that will handle OpenBSD the same way as FreeBSD is done - run open_tun() first, do_ifconfig() second, and do away with the "ifconfig destroy" logic. I'll send the patch to the list for testing. gert -- USENET is *not* the non-clickable part of WWW! //www.muc.de/~gert/ Gert Doering - Munich, Germany g...@greenie.muc.de fax: +49-89-35655025 g...@net.informatik.tu-muenchen.de