diff options
author | Damien Miller <djm@mindrot.org> | 2010-08-10 12:47:40 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2010-08-10 12:47:40 +1000 |
commit | 2c4b13aa32cbe05801857d3a1a0080d8b0030155 (patch) | |
tree | 77842aeb9a61df86530f4963f90884ecf28a8d17 | |
parent | 792010bafde7f901d339039b56f648912fd54b02 (diff) |
- (djm) bz#1561: don't bother setting IFF_UP on tun(4) device if it is
already set. Makes FreeBSD user openable tunnels useful; patch from
richard.burakowski+ossh AT mrburak.net, ok dtucker@
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | openbsd-compat/port-tun.c | 8 |
2 files changed, 10 insertions, 3 deletions
@@ -1,4 +1,9 @@ 20100809 + - (djm) bz#1561: don't bother setting IFF_UP on tun(4) device if it is + already set. Makes FreeBSD user openable tunnels useful; patch from + richard.burakowski+ossh AT mrburak.net, ok dtucker@ + +20100809 - OpenBSD CVS Sync - djm@cvs.openbsd.org 2010/08/08 16:26:42 [version.h] diff --git a/openbsd-compat/port-tun.c b/openbsd-compat/port-tun.c index ddc92d0f..0d756f74 100644 --- a/openbsd-compat/port-tun.c +++ b/openbsd-compat/port-tun.c @@ -173,9 +173,11 @@ sys_tun_open(int tun, int mode) if (ioctl(sock, SIOCGIFFLAGS, &ifr) == -1) goto failed; - ifr.ifr_flags |= IFF_UP; - if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) - goto failed; + if ((ifr.ifr_flags & IFF_UP) == 0) { + ifr.ifr_flags |= IFF_UP; + if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) + goto failed; + } close(sock); return (fd); |