This source file includes following definitions.
- opal_inet_pton
- opal_inet_ntop
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 #include "opal_config.h"
  21 
  22 #include "opal/win32/opal_inet.h"
  23 #include "opal/util/output.h"
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 int opal_inet_pton(int af, const char *src, void *dst)
  35 {
  36     int addr_len;
  37     struct sockaddr sa;
  38     struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
  39     struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
  40 
  41     memset (&sa, 0, sizeof(struct sockaddr));
  42 
  43     switch (af) {
  44     case AF_INET:
  45         addr_len = sizeof(struct sockaddr_in);
  46         break;
  47 
  48     case AF_INET6:
  49         addr_len = sizeof(struct sockaddr_in6);
  50         break;
  51 
  52     default:
  53         return -1;
  54     }
  55 
  56     if ( 0 == WSAStringToAddress ((LPTSTR) src, af, NULL, (LPSOCKADDR) &sa, &addr_len )) {
  57         switch (af) {
  58         case AF_INET:
  59             memcpy (dst, &sin->sin_addr, sizeof(struct in_addr));
  60             break;
  61 
  62         case AF_INET6:
  63             memcpy (dst, &sin6->sin6_addr, sizeof(struct in6_addr));
  64             break;
  65         }
  66         return 1;
  67     } else {
  68         opal_output(0, "WSAStringToAddress failed %s:%d. Error code: %d", __FILE__, __LINE__, GetLastError());
  69         return 0;
  70     }
  71 }
  72 
  73 
  74 
  75 
  76 
  77 
  78 
  79 
  80 const char *opal_inet_ntop(int af, const void *src, char *dst, size_t size)
  81 {
  82     int addr_len;
  83     struct sockaddr sa;
  84     DWORD str_len = size;
  85     struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
  86     struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
  87 
  88     memset (&sa, 0, sizeof (struct sockaddr));
  89 
  90     switch (af) {
  91     case AF_INET:
  92         addr_len = sizeof(struct sockaddr_in);
  93         sin->sin_family = af;
  94         memcpy (&sin->sin_addr, src, sizeof (struct in_addr));
  95         break;
  96 
  97     case AF_INET6:
  98         addr_len = sizeof(struct sockaddr_in6);
  99         sin6->sin6_family = af;
 100         memcpy (&sin6->sin6_addr, src, sizeof (struct in6_addr));
 101         break;
 102 
 103     default:
 104         return NULL;
 105     }
 106 
 107     if ( 0 == WSAAddressToString ((LPSOCKADDR) &sa, addr_len, NULL, dst, &str_len )) {
 108         return dst;
 109     } else {
 110         opal_output(0, "WSAAddressToString failed %s:%d. Error code: %d", __FILE__, __LINE__, GetLastError());
 111         return NULL;
 112     }
 113 }