[IOMultiplexerV2] Added iodns_print_address: inet_ntop eqivalent function for struct...
authorpk910 <philipp@zoelle1.de>
Thu, 24 Jul 2014 08:38:27 +0000 (10:38 +0200)
committerpk910 <philipp@zoelle1.de>
Thu, 24 Jul 2014 08:45:51 +0000 (10:45 +0200)
src/IOHandler/IODNSLookup.c
src/IOHandler/IODNSLookup.h

index f458bf5ca033bf89e4f0eb4d264c8209a8539f3f..e6201639fa84af990c2e4fa6cd3b3a5bf376837b 100644 (file)
 #include "IOLog.h"
 #include "IOSockets.h"
 
 #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 <string.h>
 
 struct _IODNSQuery *iodnsquery_first = NULL;
 #include <string.h>
 
 struct _IODNSQuery *iodnsquery_first = NULL;
@@ -211,6 +228,23 @@ void iodns_abort(struct IODNSQuery *descriptor) {
        _stop_dnsquery(query);
 }
 
        _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 = 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) {
 void iodns_free_result(struct IODNSResult *result) {
        struct IODNSResult *next;
        for(;result;result = next) {
index 78113ee02b89efe7e7b8dd5202c169ba3f2a07e5..61966d83363b54d502cf0b43455e5a3a04087b23 100644 (file)
@@ -152,6 +152,8 @@ struct IODNSQuery *iodns_getaddrinfo(char *hostname, int records, iodns_callback
 struct IODNSQuery *iodns_getnameinfo(const struct sockaddr *addr, size_t addrlen, iodns_callback *callback, void *arg);
 void iodns_abort(struct IODNSQuery *query);
 
 struct IODNSQuery *iodns_getnameinfo(const struct sockaddr *addr, size_t addrlen, iodns_callback *callback, void *arg);
 void iodns_abort(struct IODNSQuery *query);
 
+int iodns_print_address(struct IODNSAddress *addr, int ipv6, char *buffer, int length);
+
 void iodns_free_result(struct IODNSResult *result);
 
 #endif
 void iodns_free_result(struct IODNSResult *result);
 
 #endif