-/* $OpenBSD: readconf.c,v 1.174 2009/01/15 17:38:43 stevesk Exp $ */
+/* $OpenBSD: readconf.c,v 1.181 2009/12/29 16:38:41 stevesk Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly,
oSendEnv, oControlPath, oControlMaster, oHashKnownHosts,
oTunnel, oTunnelDevice, oLocalCommand, oPermitLocalCommand,
- oVisualHostKey, oZeroKnowledgePasswordAuthentication,
- oDeprecated, oUnsupported
+ oVisualHostKey, oUseRoaming, oRDomain,
+ oZeroKnowledgePasswordAuthentication, oDeprecated, oUnsupported
} OpCodes;
/* Textual representations of the tokens. */
{ "localcommand", oLocalCommand },
{ "permitlocalcommand", oPermitLocalCommand },
{ "visualhostkey", oVisualHostKey },
+ { "useroaming", oUseRoaming },
+#ifdef USE_ROUTINGDOMAIN
+ { "routingdomain", oRDomain },
+#else
+ { "routingdomain", oUnsupported },
+#endif
#ifdef JPAKE
{ "zeroknowledgepasswordauthentication",
oZeroKnowledgePasswordAuthentication },
}
if (parse_forward(&fwd, fwdarg,
- opcode == oDynamicForward ? 1 : 0) == 0)
+ opcode == oDynamicForward ? 1 : 0,
+ opcode == oRemoteForward ? 1 : 0) == 0)
fatal("%.200s line %d: Bad forwarding specification.",
filename, linenum);
intptr = &options->visual_host_key;
goto parse_flag;
+ case oUseRoaming:
+ intptr = &options->use_roaming;
+ goto parse_flag;
+
+#ifdef USE_ROUTINGDOMAIN
+ case oRDomain:
+ arg = strdelim(&s);
+ if (!arg || *arg == '\0')
+ fatal("%.200s line %d: Missing argument.",
+ filename, linenum);
+ value = a2rdomain(arg);
+ if (value == -1)
+ fatal("%.200s line %d: Bad rdomain.",
+ filename, linenum);
+ if (*activep)
+ options->rdomain = value;
+ break;
+#endif
+
case oDeprecated:
debug("%s line %d: Deprecated option \"%s\"",
filename, linenum, keyword);
options->tun_remote = -1;
options->local_command = NULL;
options->permit_local_command = -1;
+ options->use_roaming = -1;
+ options->rdomain = -1;
options->visual_host_key = -1;
options->zero_knowledge_password_authentication = -1;
}
/* options->macs, default set in myproposals.h */
/* options->hostkeyalgorithms, default set in myproposals.h */
if (options->protocol == SSH_PROTO_UNKNOWN)
- options->protocol = SSH_PROTO_1|SSH_PROTO_2;
+ options->protocol = SSH_PROTO_2;
if (options->num_identity_files == 0) {
if (options->protocol & SSH_PROTO_1) {
len = 2 + strlen(_PATH_SSH_CLIENT_IDENTITY) + 1;
options->tun_remote = SSH_TUNID_ANY;
if (options->permit_local_command == -1)
options->permit_local_command = 0;
+ if (options->use_roaming == -1)
+ options->use_roaming = 1;
if (options->visual_host_key == -1)
options->visual_host_key = 0;
if (options->zero_knowledge_password_authentication == -1)
/* options->hostname will be set in the main program if appropriate */
/* options->host_key_alias should not be set by default */
/* options->preferred_authentications will be set in ssh */
+ /* options->rdomain should not be set by default */
}
/*
* returns number of arguments parsed or zero on error
*/
int
-parse_forward(Forward *fwd, const char *fwdspec, int dynamicfwd)
+parse_forward(Forward *fwd, const char *fwdspec, int dynamicfwd, int remotefwd)
{
int i;
char *p, *cp, *fwdarg[4];
} else {
if (!(i == 3 || i == 4))
goto fail_free;
- if (fwd->connect_port == 0)
+ if (fwd->connect_port <= 0)
goto fail_free;
}
- if (fwd->listen_port == 0)
+ if (fwd->listen_port < 0 || (!remotefwd && fwd->listen_port == 0))
goto fail_free;
if (fwd->connect_host != NULL &&
strlen(fwd->connect_host) >= NI_MAXHOST)
goto fail_free;
+ if (fwd->listen_host != NULL &&
+ strlen(fwd->listen_host) >= NI_MAXHOST)
+ goto fail_free;
+
return (i);