version 1.75, 2001/04/12 19:15:25 |
version 1.76, 2001/04/12 20:09:37 |
|
|
#include "kex.h" |
#include "kex.h" |
#include "mac.h" |
#include "mac.h" |
|
|
/* add listen address */ |
void add_listen_addr(ServerOptions *options, char *addr, u_short port); |
void add_listen_addr(ServerOptions *options, char *addr, char *port); |
|
void add_one_listen_addr(ServerOptions *options, char *addr, u_short port); |
void add_one_listen_addr(ServerOptions *options, char *addr, u_short port); |
|
|
/* AF_UNSPEC or AF_INET or AF_INET6 */ |
/* AF_UNSPEC or AF_INET or AF_INET6 */ |
|
|
if (options->num_ports == 0) |
if (options->num_ports == 0) |
options->ports[options->num_ports++] = SSH_DEFAULT_PORT; |
options->ports[options->num_ports++] = SSH_DEFAULT_PORT; |
if (options->listen_addrs == NULL) |
if (options->listen_addrs == NULL) |
add_listen_addr(options, NULL, NULL); |
add_listen_addr(options, NULL, 0); |
if (options->pid_file == NULL) |
if (options->pid_file == NULL) |
options->pid_file = _PATH_SSH_DAEMON_PID_FILE; |
options->pid_file = _PATH_SSH_DAEMON_PID_FILE; |
if (options->server_key_bits == -1) |
if (options->server_key_bits == -1) |
|
|
return sBadOption; |
return sBadOption; |
} |
} |
|
|
/* |
|
* add listen address |
|
*/ |
|
void |
void |
add_listen_addr(ServerOptions *options, char *addr, char *port) |
add_listen_addr(ServerOptions *options, char *addr, u_short port) |
{ |
{ |
int i; |
int i; |
|
|
if (options->num_ports == 0) |
if (options->num_ports == 0) |
options->ports[options->num_ports++] = SSH_DEFAULT_PORT; |
options->ports[options->num_ports++] = SSH_DEFAULT_PORT; |
if (port == NULL) |
if (port == 0) |
for (i = 0; i < options->num_ports; i++) |
for (i = 0; i < options->num_ports; i++) |
add_one_listen_addr(options, addr, options->ports[i]); |
add_one_listen_addr(options, addr, options->ports[i]); |
else |
else |
add_one_listen_addr(options, addr, atoi(port)); |
add_one_listen_addr(options, addr, port); |
} |
} |
|
|
void |
void |
|
|
if (!arg || *arg == '\0') |
if (!arg || *arg == '\0') |
fatal("%s line %d: missing port number.", |
fatal("%s line %d: missing port number.", |
filename, linenum); |
filename, linenum); |
options->ports[options->num_ports++] = atoi(arg); |
options->ports[options->num_ports++] = a2port(arg); |
|
if (options->ports[options->num_ports-1] == 0) |
|
fatal("%s line %d: Badly formatted port number.", |
|
filename, linenum); |
break; |
break; |
|
|
case sServerKeyBits: |
case sServerKeyBits: |
|
|
memmove(p, p+1, strlen(p+1)+1); |
memmove(p, p+1, strlen(p+1)+1); |
} else if (((p = strchr(arg, ':')) == NULL) || |
} else if (((p = strchr(arg, ':')) == NULL) || |
(strchr(p+1, ':') != NULL)) { |
(strchr(p+1, ':') != NULL)) { |
add_listen_addr(options, arg, NULL); |
add_listen_addr(options, arg, 0); |
break; |
break; |
} |
} |
if (*p == ':') { |
if (*p == ':') { |
|
u_short port; |
|
|
p++; |
p++; |
if (*p == '\0') |
if (*p == '\0') |
fatal("%s line %d: bad inet addr:port usage.", |
fatal("%s line %d: bad inet addr:port usage.", |
filename, linenum); |
filename, linenum); |
else { |
else { |
*(p-1) = '\0'; |
*(p-1) = '\0'; |
add_listen_addr(options, arg, p); |
if ((port = a2port(p)) == 0) |
|
fatal("%s line %d: bad port number.", |
|
filename, linenum); |
|
add_listen_addr(options, arg, port); |
} |
} |
} else if (*p == '\0') |
} else if (*p == '\0') |
add_listen_addr(options, arg, NULL); |
add_listen_addr(options, arg, 0); |
else |
else |
fatal("%s line %d: bad inet addr usage.", |
fatal("%s line %d: bad inet addr usage.", |
filename, linenum); |
filename, linenum); |