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

Diff for /src/usr.bin/ssh/channels.c between version 1.159 and 1.160

version 1.159, 2002/01/14 13:55:55 version 1.160, 2002/01/16 13:17:51
Line 2037 
Line 2037 
         IPv4or6 = af;          IPv4or6 = af;
 }  }
   
 /*  static int
  * Initiate forwarding of connections to local port "port" through the secure  channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_port,
  * channel to host:port from remote side.      const char *host_to_connect, u_short port_to_connect, int gateway_ports)
  */  
 int  
 channel_request_local_forwarding(u_short listen_port, const char *host_to_connect,  
     u_short port_to_connect, int gateway_ports)  
 {  {
         return channel_request_forwarding(  
             NULL, listen_port,  
             host_to_connect, port_to_connect,  
             gateway_ports, /*remote_fwd*/ 0);  
 }  
   
 /*  
  * If 'remote_fwd' is true we have a '-R style' listener for protocol 2  
  * (SSH_CHANNEL_RPORT_LISTENER).  
  */  
 int  
 channel_request_forwarding(  
     const char *listen_address, u_short listen_port,  
     const char *host_to_connect, u_short port_to_connect,  
     int gateway_ports, int remote_fwd)  
 {  
         Channel *c;          Channel *c;
         int success, sock, on = 1, type;          int success, sock, on = 1;
         struct addrinfo hints, *ai, *aitop;          struct addrinfo hints, *ai, *aitop;
         char ntop[NI_MAXHOST], strport[NI_MAXSERV];  
         const char *host;          const char *host;
           char ntop[NI_MAXHOST], strport[NI_MAXSERV];
         struct linger linger;          struct linger linger;
   
         success = 0;          success = 0;
           host = (type == SSH_CHANNEL_RPORT_LISTENER) ?
               listen_addr : host_to_connect;
   
         if (remote_fwd) {          if (host == NULL) {
                 host = listen_address;                  error("No forward host name.");
                 type = SSH_CHANNEL_RPORT_LISTENER;                  return success;
         } else {  
                 host = host_to_connect;  
                 type = SSH_CHANNEL_PORT_LISTENER;  
         }          }
   
         if (strlen(host) > SSH_CHANNEL_PATH_LEN - 1) {          if (strlen(host) > SSH_CHANNEL_PATH_LEN - 1) {
                 error("Forward host name too long.");                  error("Forward host name too long.");
                 return success;                  return success;
         }          }
   
         /* XXX listen_address is currently ignored */  
         /*          /*
          * getaddrinfo returns a loopback address if the hostname is           * getaddrinfo returns a loopback address if the hostname is
          * set to NULL and hints.ai_flags is not AI_PASSIVE           * set to NULL and hints.ai_flags is not AI_PASSIVE
Line 2101 
Line 2078 
                         continue;                          continue;
                 if (getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop, sizeof(ntop),                  if (getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop, sizeof(ntop),
                     strport, sizeof(strport), NI_NUMERICHOST|NI_NUMERICSERV) != 0) {                      strport, sizeof(strport), NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
                         error("channel_request_forwarding: getnameinfo failed");                          error("channel_setup_fwd_listener: getnameinfo failed");
                         continue;                          continue;
                 }                  }
                 /* Create a port to listen for the host. */                  /* Create a port to listen for the host. */
Line 2139 
Line 2116 
                     CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT,                      CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT,
                     0, xstrdup("port listener"), 1);                      0, xstrdup("port listener"), 1);
                 if (c == NULL) {                  if (c == NULL) {
                         error("channel_request_forwarding: channel_new failed");                          error("channel_setup_fwd_listener: channel_new failed");
                         close(sock);                          close(sock);
                         continue;                          continue;
                 }                  }
Line 2149 
Line 2126 
                 success = 1;                  success = 1;
         }          }
         if (success == 0)          if (success == 0)
                 error("channel_request_forwarding: cannot listen to port: %d",                  error("channel_setup_fwd_listener: cannot listen to port: %d",
                     listen_port);                      listen_port);
         freeaddrinfo(aitop);          freeaddrinfo(aitop);
         return success;          return success;
 }  }
   
   /* protocol local port fwd, used by ssh (and sshd in v1) */
   int
   channel_setup_local_fwd_listener(u_short listen_port,
       const char *host_to_connect, u_short port_to_connect, int gateway_ports)
   {
           return channel_setup_fwd_listener(SSH_CHANNEL_PORT_LISTENER,
               NULL, listen_port, host_to_connect, port_to_connect, gateway_ports);
   }
   
   /* protocol v2 remote port fwd, used by sshd */
   int
   channel_setup_remote_fwd_listener(const char *listen_address,
       u_short listen_port, int gateway_ports)
   {
           return channel_setup_fwd_listener(SSH_CHANNEL_RPORT_LISTENER,
               listen_address, listen_port, NULL, 0, gateway_ports);
   }
   
 /*  /*
  * Initiate forwarding of connections to port "port" on remote host through   * Initiate forwarding of connections to port "port" on remote host through
  * the secure channel to host:port from local side.   * the secure channel to host:port from local side.
Line 2238 
Line 2233 
                 packet_disconnect("Requested forwarding of port %d but user is not root.",                  packet_disconnect("Requested forwarding of port %d but user is not root.",
                                   port);                                    port);
         /* Initiate forwarding */          /* Initiate forwarding */
         channel_request_local_forwarding(port, hostname, host_port, gateway_ports);          channel_setup_local_fwd_listener(port, hostname, host_port, gateway_ports);
   
         /* Free the argument string. */          /* Free the argument string. */
         xfree(hostname);          xfree(hostname);

Legend:
Removed from v.1.159  
changed lines
  Added in v.1.160