20int SPF_win32_startup()
22 WORD wVersionRequested;
26 wVersionRequested = MAKEWORD( 2, 2 );
28 err = WSAStartup( wVersionRequested, &wsaData );
32 if ( LOBYTE( wsaData.wVersion ) != 2 ||
33 HIBYTE( wsaData.wVersion ) != 2 )
42int SPF_win32_cleanup()
47char *inet_ntop(
int af,
const void *src,
char *dst,
size_t size )
50 struct sockaddr_in src_sockaddr;
51 struct sockaddr_in6 src6_sockaddr;
60 src_sockaddr.sin_family = AF_INET;
61 src_sockaddr.sin_port = 0;
62 memcpy( &src_sockaddr.sin_addr, src,
sizeof(
struct in_addr ) );
63 pSrc_sockaddr = &src_sockaddr;
64 src_size =
sizeof(
struct sockaddr_in );
67 src6_sockaddr.sin6_family = AF_INET6;
68 src6_sockaddr.sin6_port = 0;
69 src6_sockaddr.sin6_flowinfo = 0;
70 src6_sockaddr.sin6_scope_id = 0;
71 memcpy( &src6_sockaddr.sin6_addr, src,
sizeof(
struct in6_addr ) );
72 pSrc_sockaddr = &src6_sockaddr;
73 src_size =
sizeof(
struct sockaddr_in6 );
80 result = WSAAddressToStringA( (LPSOCKADDR)pSrc_sockaddr, src_size,
83 error = GetLastError();
93int inet_pton(
int af,
const char *src,
void *dst )
96 struct sockaddr_in6 dst_sockaddr;
97 struct sockaddr_in6 *pDst_sockaddr;
102 pDst_sockaddr = &dst_sockaddr;
107 dst_size =
sizeof(
struct sockaddr_in );
110 dst_size =
sizeof(
struct sockaddr_in6 );
116 result = WSAStringToAddressA( src, af,
NULL,
117 (LPSOCKADDR)pDst_sockaddr, &dst_size );
121 error = GetLastError();
129 memcpy( dst, &((
struct sockaddr_in*)pDst_sockaddr)->sin_addr,
130 sizeof(
struct in_addr ) );
133 memcpy( dst, &pDst_sockaddr->sin6_addr,
134 sizeof(
struct in6_addr ) );
141int gethostnameFQDN(
char *name,
int namelen )
147 result = gethostname( name, namelen );
151 he = gethostbyname( name );
155 fullnamelen = strlen( he->h_name );
157 if (fullnamelen < namelen)
158 strcpy( name, he->h_name );