Index: dnstracer.c --- dnstracer.c.orig 2008-02-09 13:47:37 +0100 +++ dnstracer.c 2008-02-10 10:08:43 +0100 @@ -689,7 +689,11 @@ } void +#ifdef NOIPV6 +dump_data(struct sockaddr_in *dest4, void *dest6, struct dnssession *session) +#else dump_data(struct sockaddr_in *dest4, struct sockaddr_in6 *dest6, struct dnssession *session) +#endif { struct dnsrr *answerrr; struct dnsrr *authorityrr; @@ -810,6 +814,7 @@ exit(1); } +#if defined(AI_NUMERICHOST) && defined(EAI_NODATA) if (global_source_address != NULL) { struct addrinfo hints, *src_res; int error; @@ -836,6 +841,7 @@ exit(1); } } +#endif return s; } @@ -1123,6 +1129,25 @@ /*****************************************************************************/ +static char *my_strcasestr(const char *s, const char *find) +{ + char c, sc; + size_t len; + + if ((c = *find++) != 0) { + c = tolower((unsigned char)c); + len = strlen(find); + do { + do { + if ((sc = *s++) == 0) + return (NULL); + } while ((char)tolower((unsigned char)sc) != c); + } while (strncasecmp(s, find, len) != 0); + s--; + } + return ((char *)s); +} + // // The core of this program // @@ -1198,7 +1223,11 @@ // don't have to worry about packets received from previous sessions. // session = (struct dnssession *)calloc(1, sizeof(struct dnssession)); +#ifdef NOIPV6 + session->socket = create_socket(AF_INET); +#else session->socket = create_socket(ipv6 ? AF_INET6 : AF_INET); +#endif session->ipv6 = ipv6; session->server = strdup(server_ip); session->host = strdup(host); @@ -1377,8 +1406,12 @@ struct hostent *h; char **addr_list = NULL; +#ifndef NOIPV6 h = gethostbyname2(nextserver_name, ip == 0 ? AF_INET : AF_INET6); +#else + h = gethostbyname(nextserver_name); +#endif if (h == NULL) continue; //