[IOMultiplexerV2] fixed some WIN32 compilation issues
[NextIRCd.git] / src / IOHandler / IODNSLookup.c
index f458bf5ca033bf89e4f0eb4d264c8209a8539f3f..36c1f044cd23b45ddfa62085d5368f234dbfbe17 100644 (file)
@@ -6,6 +6,7 @@
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  * 
+ * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #include "IOLog.h"
 #include "IOSockets.h"
 
+#ifdef WIN32
+#ifdef _WIN32_WINNT
+#undef _WIN32_WINNT
+#endif
+#define _WIN32_WINNT 0x501
+#include <winsock2.h>
+#include <windows.h>
+#include <ws2tcpip.h>
+#else
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/ip.h> 
+#include <arpa/inet.h>
+#include <unistd.h>
+#include <fcntl.h>
+#endif
+#include "compat/inet.h"
+
 #include <string.h>
 
 struct _IODNSQuery *iodnsquery_first = NULL;
@@ -211,6 +230,23 @@ void iodns_abort(struct IODNSQuery *descriptor) {
        _stop_dnsquery(query);
 }
 
+int iodns_print_address(struct IODNSAddress *address, int ipv6, char *buffer, int length) {
+       int af;
+       void *addr;
+       if(ipv6) {
+               af = AF_INET6;
+               addr = (void *)(&((struct sockaddr_in6 *)address->address)->sin6_addr);
+       } else {
+               af = AF_INET;
+               addr = (void *)(&((struct sockaddr_in *)address->address)->sin_addr);
+       }
+       buffer = (char*) inet_ntop(af, addr, buffer, length);
+       if(!buffer)
+               return 0;
+       else
+               return strlen(buffer);
+}
+
 void iodns_free_result(struct IODNSResult *result) {
        struct IODNSResult *next;
        for(;result;result = next) {