summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@cvs.openbsd.org>2003-05-16 03:27:13 +0000
committerDamien Miller <djm@cvs.openbsd.org>2003-05-16 03:27:13 +0000
commitea5e1e7b5a616ddf2e7aa04bec77b9a1142f72a4 (patch)
tree9be91c00de78445cbd34fe6a0012f8ce3dc28920
parent196cb361691e6b713df554208e03d0c32bcd4634 (diff)
add AddressFamily option to ssh_config (like -4, -6 on commandline).
Portable bug #534; ok markus@
-rw-r--r--usr.bin/ssh/readconf.c17
-rw-r--r--usr.bin/ssh/ssh-keysign.c6
-rw-r--r--usr.bin/ssh/ssh_config3
-rw-r--r--usr.bin/ssh/ssh_config.59
4 files changed, 30 insertions, 5 deletions
diff --git a/usr.bin/ssh/readconf.c b/usr.bin/ssh/readconf.c
index df769736403..7af9af25fae 100644
--- a/usr.bin/ssh/readconf.c
+++ b/usr.bin/ssh/readconf.c
@@ -12,7 +12,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: readconf.c,v 1.111 2003/05/15 14:55:25 djm Exp $");
+RCSID("$OpenBSD: readconf.c,v 1.112 2003/05/16 03:27:12 djm Exp $");
#include "ssh.h"
#include "xmalloc.h"
@@ -107,6 +107,7 @@ typedef enum {
oHostKeyAlgorithms, oBindAddress, oSmartcardDevice,
oClearAllForwardings, oNoHostAuthenticationForLocalhost,
oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout,
+ oAddressFamily,
oDeprecated, oUnsupported
} OpCodes;
@@ -194,6 +195,7 @@ static struct {
{ "nohostauthenticationforlocalhost", oNoHostAuthenticationForLocalhost },
{ "rekeylimit", oRekeyLimit },
{ "connecttimeout", oConnectTimeout },
+ { "addressfamily", oAddressFamily },
{ NULL, oBadOption }
};
@@ -284,6 +286,7 @@ process_config_line(Options *options, const char *host,
size_t len;
u_short fwd_port, fwd_host_port;
char sfwd_host_port[6];
+ extern int IPv4or6;
/* Strip trailing whitespace */
for(len = strlen(line) - 1; len > 0; len--) {
@@ -718,6 +721,18 @@ parse_int:
*intptr = value;
break;
+ case oAddressFamily:
+ arg = strdelim(&s);
+ if (strcasecmp(arg, "inet") == 0)
+ IPv4or6 = AF_INET;
+ else if (strcasecmp(arg, "inet6") == 0)
+ IPv4or6 = AF_INET6;
+ else if (strcasecmp(arg, "any") == 0)
+ IPv4or6 = AF_UNSPEC;
+ else
+ fatal("Unsupported AddressFamily \"%s\"", arg);
+ break;
+
case oEnableSSHKeysign:
intptr = &options->enable_ssh_keysign;
goto parse_flag;
diff --git a/usr.bin/ssh/ssh-keysign.c b/usr.bin/ssh/ssh-keysign.c
index 33977af665d..f50c3fb6bc4 100644
--- a/usr.bin/ssh/ssh-keysign.c
+++ b/usr.bin/ssh/ssh-keysign.c
@@ -22,7 +22,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh-keysign.c,v 1.11 2003/04/02 14:36:26 markus Exp $");
+RCSID("$OpenBSD: ssh-keysign.c,v 1.12 2003/05/16 03:27:12 djm Exp $");
#include <openssl/evp.h>
#include <openssl/rand.h>
@@ -42,7 +42,9 @@ RCSID("$OpenBSD: ssh-keysign.c,v 1.11 2003/04/02 14:36:26 markus Exp $");
#include "pathnames.h"
#include "readconf.h"
-uid_t original_real_uid; /* XXX readconf.c needs this */
+/* XXX readconf.c needs these */
+uid_t original_real_uid;
+int IPv4or6;
static int
valid_request(struct passwd *pw, char *host, Key **ret, u_char *data,
diff --git a/usr.bin/ssh/ssh_config b/usr.bin/ssh/ssh_config
index 8a0acc17ffd..721e374e0fb 100644
--- a/usr.bin/ssh/ssh_config
+++ b/usr.bin/ssh/ssh_config
@@ -1,4 +1,4 @@
-# $OpenBSD: ssh_config,v 1.17 2003/05/15 14:55:25 djm Exp $
+# $OpenBSD: ssh_config,v 1.18 2003/05/16 03:27:12 djm Exp $
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
@@ -25,6 +25,7 @@
# HostbasedAuthentication no
# BatchMode no
# CheckHostIP yes
+# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/identity
diff --git a/usr.bin/ssh/ssh_config.5 b/usr.bin/ssh/ssh_config.5
index c5de4a9de92..67166b75808 100644
--- a/usr.bin/ssh/ssh_config.5
+++ b/usr.bin/ssh/ssh_config.5
@@ -34,7 +34,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $OpenBSD: ssh_config.5,v 1.9 2003/05/15 14:55:25 djm Exp $
+.\" $OpenBSD: ssh_config.5,v 1.10 2003/05/16 03:27:12 djm Exp $
.Dd September 25, 1999
.Dt SSH_CONFIG 5
.Os
@@ -115,6 +115,13 @@ The host is the
.Ar hostname
argument given on the command line (i.e., the name is not converted to
a canonicalized host name before matching).
+.It Cm AddressFamily
+Specifies which address family to use when connecting. Valid arguments are
+.Dq any ,
+.Dq inet
+(Use IPv4 only) or
+.Dq inet6
+(Use IPv6 only.)
.It Cm AFSTokenPassing
Specifies whether to pass AFS tokens to remote host.
The argument to this keyword must be