summaryrefslogtreecommitdiff
path: root/misc.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2017-10-23 05:08:00 +0000
committerDamien Miller <djm@mindrot.org>2017-10-23 16:14:30 +1100
commitb7548b12a6b2b4abf4d057192c353147e0abba08 (patch)
treedc76477cd371b6197ba840c3a178bfbcf6d7baba /misc.c
parent887669ef032d63cf07f53cada216fa8a0c9a7d72 (diff)
upstream commit
Expose devices allocated for tun/tap forwarding. At the client, the device may be obtained from a new %T expansion for LocalCommand. At the server, the allocated devices will be listed in a SSH_TUNNEL variable exposed to the environment of any user sessions started after the tunnel forwarding was established. ok markus Upstream-ID: e61e53f8ae80566e9ddc0d67a5df5bdf2f3c9f9e
Diffstat (limited to 'misc.c')
-rw-r--r--misc.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/misc.c b/misc.c
index d4d0e44a5..7f1d42567 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.c,v 1.114 2017/10/21 23:06:24 millert Exp $ */ 1/* $OpenBSD: misc.c,v 1.115 2017/10/23 05:08:00 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved. 4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved.
@@ -964,16 +964,19 @@ read_keyfile_line(FILE *f, const char *filename, char *buf, size_t bufsz,
964} 964}
965 965
966int 966int
967tun_open(int tun, int mode) 967tun_open(int tun, int mode, char **ifname)
968{ 968{
969#if defined(CUSTOM_SYS_TUN_OPEN) 969#if defined(CUSTOM_SYS_TUN_OPEN)
970 return (sys_tun_open(tun, mode)); 970 return (sys_tun_open(tun, mode, ifname));
971#elif defined(SSH_TUN_OPENBSD) 971#elif defined(SSH_TUN_OPENBSD)
972 struct ifreq ifr; 972 struct ifreq ifr;
973 char name[100]; 973 char name[100];
974 int fd = -1, sock; 974 int fd = -1, sock;
975 const char *tunbase = "tun"; 975 const char *tunbase = "tun";
976 976
977 if (ifname != NULL)
978 *ifname = NULL;
979
977 if (mode == SSH_TUNMODE_ETHERNET) 980 if (mode == SSH_TUNMODE_ETHERNET)
978 tunbase = "tap"; 981 tunbase = "tap";
979 982
@@ -1020,6 +1023,9 @@ tun_open(int tun, int mode)
1020 } 1023 }
1021 } 1024 }
1022 1025
1026 if (ifname != NULL)
1027 *ifname = xstrdup(ifr.ifr_name);
1028
1023 close(sock); 1029 close(sock);
1024 return fd; 1030 return fd;
1025 1031