[BACK]Return to servconf.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/servconf.c between version 1.130.2.1 and 1.130.2.2

version 1.130.2.1, 2004/08/19 04:13:27 version 1.130.2.2, 2005/03/10 17:15:04
Line 26 
Line 26 
 static void add_listen_addr(ServerOptions *, char *, u_short);  static void add_listen_addr(ServerOptions *, char *, u_short);
 static void add_one_listen_addr(ServerOptions *, char *, u_short);  static void add_one_listen_addr(ServerOptions *, char *, u_short);
   
 /* AF_UNSPEC or AF_INET or AF_INET6 */  
 extern int IPv4or6;  
 /* Use of privilege separation or not */  /* Use of privilege separation or not */
 extern int use_privsep;  extern int use_privsep;
   
Line 40 
Line 38 
         options->num_ports = 0;          options->num_ports = 0;
         options->ports_from_cmdline = 0;          options->ports_from_cmdline = 0;
         options->listen_addrs = NULL;          options->listen_addrs = NULL;
           options->address_family = -1;
         options->num_host_key_files = 0;          options->num_host_key_files = 0;
         options->pid_file = NULL;          options->pid_file = NULL;
         options->server_key_bits = -1;          options->server_key_bits = -1;
Line 235 
Line 234 
         sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup,          sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup,
         sKerberosGetAFSToken,          sKerberosGetAFSToken,
         sKerberosTgtPassing, sChallengeResponseAuthentication,          sKerberosTgtPassing, sChallengeResponseAuthentication,
         sPasswordAuthentication, sKbdInteractiveAuthentication, sListenAddress,          sPasswordAuthentication, sKbdInteractiveAuthentication,
           sListenAddress, sAddressFamily,
         sPrintMotd, sPrintLastLog, sIgnoreRhosts,          sPrintMotd, sPrintLastLog, sIgnoreRhosts,
         sX11Forwarding, sX11DisplayOffset, sX11UseLocalhost,          sX11Forwarding, sX11DisplayOffset, sX11UseLocalhost,
         sStrictModes, sEmptyPasswd, sTCPKeepAlive,          sStrictModes, sEmptyPasswd, sTCPKeepAlive,
Line 300 
Line 300 
         { "skeyauthentication", sChallengeResponseAuthentication }, /* alias */          { "skeyauthentication", sChallengeResponseAuthentication }, /* alias */
         { "checkmail", sDeprecated },          { "checkmail", sDeprecated },
         { "listenaddress", sListenAddress },          { "listenaddress", sListenAddress },
           { "addressfamily", sAddressFamily },
         { "printmotd", sPrintMotd },          { "printmotd", sPrintMotd },
         { "printlastlog", sPrintLastLog },          { "printlastlog", sPrintLastLog },
         { "ignorerhosts", sIgnoreRhosts },          { "ignorerhosts", sIgnoreRhosts },
Line 366 
Line 367 
   
         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->address_family == -1)
                   options->address_family = AF_UNSPEC;
         if (port == 0)          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]);
Line 381 
Line 384 
         int gaierr;          int gaierr;
   
         memset(&hints, 0, sizeof(hints));          memset(&hints, 0, sizeof(hints));
         hints.ai_family = IPv4or6;          hints.ai_family = options->address_family;
         hints.ai_socktype = SOCK_STREAM;          hints.ai_socktype = SOCK_STREAM;
         hints.ai_flags = (addr == NULL) ? AI_PASSIVE : 0;          hints.ai_flags = (addr == NULL) ? AI_PASSIVE : 0;
         snprintf(strport, sizeof strport, "%u", port);          snprintf(strport, sizeof strport, "%u", port);
Line 402 
Line 405 
         char *cp, **charptr, *arg, *p;          char *cp, **charptr, *arg, *p;
         int *intptr, value, i, n;          int *intptr, value, i, n;
         ServerOpCodes opcode;          ServerOpCodes opcode;
           u_short port;
   
         cp = line;          cp = line;
         arg = strdelim(&cp);          arg = strdelim(&cp);
Line 468 
Line 472 
   
         case sListenAddress:          case sListenAddress:
                 arg = strdelim(&cp);                  arg = strdelim(&cp);
                 if (!arg || *arg == '\0' || strncmp(arg, "[]", 2) == 0)                  if (arg == NULL || *arg == '\0')
                         fatal("%s line %d: missing inet addr.",                          fatal("%s line %d: missing address",
                             filename, linenum);                              filename, linenum);
                 if (*arg == '[') {                  p = hpdelim(&arg);
                         if ((p = strchr(arg, ']')) == NULL)                  if (p == NULL)
                                 fatal("%s line %d: bad ipv6 inet addr usage.",                          fatal("%s line %d: bad address:port usage",
                                     filename, linenum);                              filename, linenum);
                         arg++;                  p = cleanhostname(p);
                         memmove(p, p+1, strlen(p+1)+1);                  if (arg == NULL)
                 } else if (((p = strchr(arg, ':')) == NULL) ||                          port = 0;
                             (strchr(p+1, ':') != NULL)) {                  else if ((port = a2port(arg)) == 0)
                         add_listen_addr(options, arg, 0);                          fatal("%s line %d: bad port number", filename, linenum);
                         break;  
                 }  
                 if (*p == ':') {  
                         u_short port;  
   
                         p++;                  add_listen_addr(options, p, port);
                         if (*p == '\0')  
                                 fatal("%s line %d: bad inet addr:port usage.",                  break;
                                     filename, linenum);  
                         else {          case sAddressFamily:
                                 *(p-1) = '\0';                  arg = strdelim(&cp);
                                 if ((port = a2port(p)) == 0)                  intptr = &options->address_family;
                                         fatal("%s line %d: bad port number.",                  if (options->listen_addrs != NULL)
                                             filename, linenum);                          fatal("%s line %d: address family must be specified before "
                                 add_listen_addr(options, arg, port);                              "ListenAddress.", filename, linenum);
                         }                  if (strcasecmp(arg, "inet") == 0)
                 } else if (*p == '\0')                          value = AF_INET;
                         add_listen_addr(options, arg, 0);                  else if (strcasecmp(arg, "inet6") == 0)
                           value = AF_INET6;
                   else if (strcasecmp(arg, "any") == 0)
                           value = AF_UNSPEC;
                 else                  else
                         fatal("%s line %d: bad inet addr usage.",                          fatal("%s line %d: unsupported address family \"%s\".",
                             filename, linenum);                              filename, linenum, arg);
                   if (*intptr == -1)
                           *intptr = value;
                 break;                  break;
   
         case sHostKeyFile:          case sHostKeyFile:
Line 679 
Line 684 
   
         case sGatewayPorts:          case sGatewayPorts:
                 intptr = &options->gateway_ports;                  intptr = &options->gateway_ports;
                 goto parse_flag;                  arg = strdelim(&cp);
                   if (!arg || *arg == '\0')
                           fatal("%s line %d: missing yes/no/clientspecified "
                               "argument.", filename, linenum);
                   value = 0;      /* silence compiler */
                   if (strcmp(arg, "clientspecified") == 0)
                           value = 2;
                   else if (strcmp(arg, "yes") == 0)
                           value = 1;
                   else if (strcmp(arg, "no") == 0)
                           value = 0;
                   else
                           fatal("%s line %d: Bad yes/no/clientspecified "
                               "argument: %s", filename, linenum, arg);
                   if (*intptr == -1)
                           *intptr = value;
                   break;
   
         case sUseDNS:          case sUseDNS:
                 intptr = &options->use_dns;                  intptr = &options->use_dns;

Legend:
Removed from v.1.130.2.1  
changed lines
  Added in v.1.130.2.2