[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.24 and 1.25

version 1.24, 2001/04/05 15:48:19 version 1.25, 2001/04/12 19:15:24
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);
 }  }
   
 /*  /*

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25