Add inet_pton for windows

This commit is contained in:
brenosilva 2012-06-15 20:44:10 +00:00
parent ab4d5acce6
commit ead368268e
2 changed files with 39 additions and 0 deletions

View File

@ -570,6 +570,41 @@ char *file_basename(apr_pool_t *mp, const char *filename) {
return d;
}
#ifdef WIN32
int inet_pton(int family, const char *src, void *dst) {
struct addrinfo addr;
struct sockaddr_in *in = NULL;
struct sockaddr_in6 *in6 = NULL;
struct addrinfo *addr_info = NULL;
memset(&addr, 0, sizeof(struct addrinfo));
addr.ai_family = family;
if (getaddrinfo(src, NULL, &addr, &addr_info) != 0)
return -1;
if (addr_info) {
if (addr_info->ai_family == AF_INET) {
in = (struct sockaddr_in*)addr_info->ai_addr;
memcpy(dst, &in->sin_addr, 4);
}
else if (addr_info->ai_family == AF_INET6) {
in6 = (struct sockaddr_in6*)addr_info->ai_addr;
memcpy(dst, &in6->sin6_addr, 16);
}
else {
freeaddrinfo(addr_info);
return -1;
}
freeaddrinfo(addr_info);
return 1;
}
return -1;
}
#endif
/**
*
*/

View File

@ -28,6 +28,10 @@
#include "modsecurity.h"
#include "re.h"
#if WIN32
int DSOLOCAL inet_pton(int family, const char *src, void *dst)
#endif
int DSOLOCAL normalize_path_inplace(unsigned char *input, int len, int win, int *changed);
int DSOLOCAL parse_boolean(const char *input);