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

Diff for /src/usr.bin/ssh/canohost.c between version 1.16.2.3 and 1.16.2.4

version 1.16.2.3, 2001/03/21 19:46:23 version 1.16.2.4, 2001/05/07 21:09:27
Line 49 
Line 49 
              NULL, 0, NI_NUMERICHOST) != 0)               NULL, 0, NI_NUMERICHOST) != 0)
                 fatal("get_remote_hostname: getnameinfo NI_NUMERICHOST failed");                  fatal("get_remote_hostname: getnameinfo NI_NUMERICHOST failed");
   
         debug("Trying to reverse map address %.100s.", ntop);          debug3("Trying to reverse map address %.100s.", ntop);
         /* Map the IP address to a host name. */          /* Map the IP address to a host name. */
         if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name),          if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name),
              NULL, 0, NI_NAMEREQD) != 0) {               NULL, 0, NI_NAMEREQD) != 0) {
Line 180 
Line 180 
  * Returns the remote IP-address of socket as a string.  The returned   * Returns the remote IP-address of socket as a string.  The returned
  * string must be freed.   * string must be freed.
  */   */
   
 char *  char *
 get_peer_ipaddr(int socket)  get_socket_address(int socket, int remote, int flags)
 {  {
         struct sockaddr_storage from;          struct sockaddr_storage addr;
         socklen_t fromlen;          socklen_t addrlen;
         char ntop[NI_MAXHOST];          char ntop[NI_MAXHOST];
   
         /* Get IP address of client. */          /* Get IP address of client. */
         fromlen = sizeof(from);          addrlen = sizeof(addr);
         memset(&from, 0, sizeof(from));          memset(&addr, 0, sizeof(addr));
         if (getpeername(socket, (struct sockaddr *) & from, &fromlen) < 0) {  
                 debug("get_peer_ipaddr: getpeername failed: %.100s", strerror(errno));          if (remote) {
                 return NULL;                  if (getpeername(socket, (struct sockaddr *)&addr, &addrlen)
                       < 0) {
                           debug("get_socket_ipaddr: getpeername failed: %.100s",
                               strerror(errno));
                           return NULL;
                   }
           } else {
                   if (getsockname(socket, (struct sockaddr *)&addr, &addrlen)
                       < 0) {
                           debug("get_socket_ipaddr: getsockname failed: %.100s",
                               strerror(errno));
                           return NULL;
                   }
         }          }
         /* Get the IP address in ascii. */          /* Get the address in ascii. */
         if (getnameinfo((struct sockaddr *)&from, fromlen, ntop, sizeof(ntop),          if (getnameinfo((struct sockaddr *)&addr, addrlen, ntop, sizeof(ntop),
              NULL, 0, NI_NUMERICHOST) != 0) {               NULL, 0, flags) != 0) {
                 error("get_peer_ipaddr: getnameinfo NI_NUMERICHOST failed");                  error("get_socket_ipaddr: getnameinfo %d failed", flags);
                 return NULL;                  return NULL;
         }          }
         return xstrdup(ntop);          return xstrdup(ntop);
 }  }
   
   char *
   get_peer_ipaddr(int socket)
   {
           return get_socket_address(socket, 1, NI_NUMERICHOST);
   }
   
   char *
   get_local_ipaddr(int socket)
   {
           return get_socket_address(socket, 0, NI_NUMERICHOST);
   }
   
   char *
   get_local_name(int socket)
   {
           return get_socket_address(socket, 0, NI_NAMEREQD);
   }
   
 /*  /*
  * Returns the IP-address of the remote host as a string.  The returned   * Returns the IP-address of the remote host as a string.  The returned
  * string must not be freed.   * string must not be freed.
Line 227 
Line 256 
                 }                  }
         }          }
         return canonical_host_ip;          return canonical_host_ip;
   }
   
   const char *
   get_remote_name_or_ip(u_int utmp_len, int reverse_mapping_check)
   {
           static const char *remote = "";
           if (utmp_len > 0)
                   remote = get_canonical_hostname(reverse_mapping_check);
           if (utmp_len == 0 || strlen(remote) > utmp_len)
                   remote = get_remote_ipaddr();
           return remote;
 }  }
   
 /* Returns the local/remote port for the socket. */  /* Returns the local/remote port for the socket. */

Legend:
Removed from v.1.16.2.3  
changed lines
  Added in v.1.16.2.4