$NetBSD: patch-bi,v 1.1 2000/03/20 02:25:43 itojun Exp $ --- ssh.c.orig Wed May 12 07:19:28 1999 +++ ssh.c Fri Dec 24 21:50:42 1999 @@ -218,6 +218,14 @@ other functions. */ RandomState random_state; +/* Flag indicating whether IPv4 or IPv6. This can be set on the command line. + Default value is AF_UNSPEC means both IPv4 and IPv6. */ +#ifdef ENABLE_IPV6 +int IPv4or6 = AF_UNSPEC; +#else +int IPv4or6 = AF_INET; +#endif + /* Flag indicating whether debug mode is on. This can be set on the command line. */ int debug_flag = 0; @@ -277,12 +285,19 @@ { fprintf(stderr, "Usage: %s [options] host [command]\n", av0); fprintf(stderr, "Options:\n"); + fprintf(stderr, " -4 Use IPv4 only.\n"); +#ifdef ENABLE_IPV6 + fprintf(stderr, " -6 Use IPv6 only.\n"); +#endif +#ifdef ENABLE_ANOTHER_PORT_TRY + fprintf(stderr, " -A Try to connect to another port before original port.\n"); +#endif /* ENABLE_ANOTHER_PORT_TRY */ fprintf(stderr, " -l user Log in using this user name.\n"); fprintf(stderr, " -n Redirect input from /dev/null.\n"); fprintf(stderr, " -a Disable authentication agent forwarding.\n"); -#if defined(KERBEROS_TGT_PASSING) && defined(KRB5) - fprintf(stderr, " -k Disable Kerberos ticket passing.\n"); -#endif /* defined(KERBEROS_TGT_PASSING) && defined(KRB5) */ +#ifdef AFS + fprintf(stderr, " -k Disable Kerberos ticket and AFS token passing.\n"); +#endif /* AFS */ #ifndef SSH_NO_X11_FORWARDING fprintf(stderr, " -x Disable X11 connection forwarding.\n"); #endif @@ -413,6 +428,9 @@ #ifdef SIGWINCH struct winsize ws; #endif /* SIGWINCH */ +#ifdef ENABLE_ANOTHER_PORT_TRY + int another_port_flag = 0; +#endif /* ENABLE_ANOTHER_PORT_TRY */ /* Save the original real uid. It will be needed later (uid-swapping may clobber the real uid). */ @@ -522,6 +540,26 @@ } switch (opt) { + case '4': +#ifdef ENABLE_IPV6 + IPv4or6 = (IPv4or6 == AF_INET6) ? AF_UNSPEC : AF_INET; +#else + IPv4or6 = AF_INET; +#endif + break; + +#ifdef ENABLE_IPV6 + case '6': + IPv4or6 = (IPv4or6 == AF_INET) ? AF_UNSPEC : AF_INET6; + break; +#endif + +#ifdef ENABLE_ANOTHER_PORT_TRY + case 'A': + another_port_flag = 1; + break; +#endif /* ENABLE_ANOTHER_PORT_TRY */ + case 'n': stdin_null_flag = 1; break; @@ -541,6 +579,9 @@ case 'k': options.kerberos_tgt_passing = 0; +#ifdef AFS + options.afs_token_passing = 0; +#endif /* AFS */ break; case 'i': @@ -789,11 +830,18 @@ { use_privileged_port = 0; } +#ifdef ENABLE_ANOTHER_PORT_TRY + if (!another_port_flag) + options.another_port = 0; +#endif /* ENABLE_ANOTHER_PORT_TRY */ /* Open a connection to the remote host. This needs root privileges if rhosts_authentication is true. Note that the random_state is not yet used by this call, although a pointer to it is stored, and thus it need not be initialized. */ ok = ssh_connect(host, options.port, options.connection_attempts, +#ifdef ENABLE_ANOTHER_PORT_TRY + options.another_port, +#endif /* ENABLE_ANOTHER_PORT_TRY */ !use_privileged_port, original_real_uid, options.proxy_command, &random_state);