1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
*** ssh.c.orig Wed May 12 13:19:28 1999
--- ssh.c Mon Jan 10 22:56:13 2000
***************
*** 218,223 ****
--- 218,231 ----
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,282 ****
--- 285,297 ----
{
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");
***************
*** 413,418 ****
--- 428,436 ----
#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,527 ****
--- 540,565 ----
}
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;
***************
*** 789,799 ****
--- 827,844 ----
{
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);
|