summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2006-01-02 23:41:21 +1100
committerDamien Miller <djm@mindrot.org>2006-01-02 23:41:21 +1100
commita1d9a18e142d05cb8cfe10dc7abf253f1e2c6a5b (patch)
tree024259a94d18aec90c07a7a824eb542c76ebb538
parent5444618987402d50fb9c6c722919fe2d428d05bb (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--ChangeLog7
-rw-r--r--misc.c16
2 files changed, 17 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e883930..57712392 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 $
diff --git a/misc.c b/misc.c
index 26d7cad2..0339cede 100644
--- a/misc.c
+++ b/misc.c
@@ -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;