diff options
author | Damien Miller <djm@mindrot.org> | 2006-01-02 23:41:21 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2006-01-02 23:41:21 +1100 |
commit | a1d9a18e142d05cb8cfe10dc7abf253f1e2c6a5b (patch) | |
tree | 024259a94d18aec90c07a7a824eb542c76ebb538 | |
parent | 5444618987402d50fb9c6c722919fe2d428d05bb (diff) |
- reyk@cvs.openbsd.org 2006/01/02 07:53:44
[misc.c]
clarify tun(4) opening - set the mode and bring the interface up. also
(re)sets the tun(4) layer 2 LINK0 flag for existing tunnel interfaces.
suggested and ok by djm@
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | misc.c | 16 |
2 files changed, 17 insertions, 6 deletions
@@ -23,6 +23,11 @@ - djm@cvs.openbsd.org 2006/01/02 01:20:31 [sftp-client.c sftp-common.h sftp-server.c] use a common max. packet length, no binary change + - reyk@cvs.openbsd.org 2006/01/02 07:53:44 + [misc.c] + clarify tun(4) opening - set the mode and bring the interface up. also + (re)sets the tun(4) layer 2 LINK0 flag for existing tunnel interfaces. + suggested and ok by djm@ 20060101 - (djm) [Makefile.in configure.ac includes.h misc.c] @@ -3613,4 +3618,4 @@ - (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu -$Id: ChangeLog,v 1.4069 2006/01/02 12:40:50 djm Exp $ +$Id: ChangeLog,v 1.4070 2006/01/02 12:41:21 djm Exp $ @@ -24,7 +24,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: misc.c,v 1.39 2006/01/01 10:08:48 stevesk Exp $"); +RCSID("$OpenBSD: misc.c,v 1.40 2006/01/02 07:53:44 reyk Exp $"); #ifdef SSH_TUN_OPENBSD #include <net/if.h> @@ -581,11 +581,17 @@ tun_open(int tun, int mode) if (ioctl(sock, SIOCGIFFLAGS, &ifr) == -1) goto failed; - if (mode == SSH_TUNMODE_ETHERNET) { + + /* Set interface mode */ + ifr.ifr_flags &= ~IFF_UP; + if (mode == SSH_TUNMODE_ETHERNET) ifr.ifr_flags |= IFF_LINK0; - if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) - goto failed; - } + else + ifr.ifr_flags &= ~IFF_LINK0; + if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) + goto failed; + + /* Bring interface up */ ifr.ifr_flags |= IFF_UP; if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1) goto failed; |