dnstracer.patch 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Index: dnstracer.c
  2. --- dnstracer.c.orig 2008-02-09 13:47:37 +0100
  3. +++ dnstracer.c 2008-02-10 10:08:43 +0100
  4. @@ -689,7 +689,11 @@
  5. }
  6. void
  7. +#ifdef NOIPV6
  8. +dump_data(struct sockaddr_in *dest4, void *dest6, struct dnssession *session)
  9. +#else
  10. dump_data(struct sockaddr_in *dest4, struct sockaddr_in6 *dest6, struct dnssession *session)
  11. +#endif
  12. {
  13. struct dnsrr *answerrr;
  14. struct dnsrr *authorityrr;
  15. @@ -810,6 +814,7 @@
  16. exit(1);
  17. }
  18. +#if defined(AI_NUMERICHOST) && defined(EAI_NODATA)
  19. if (global_source_address != NULL) {
  20. struct addrinfo hints, *src_res;
  21. int error;
  22. @@ -836,6 +841,7 @@
  23. exit(1);
  24. }
  25. }
  26. +#endif
  27. return s;
  28. }
  29. @@ -1123,6 +1129,25 @@
  30. /*****************************************************************************/
  31. +static char *my_strcasestr(const char *s, const char *find)
  32. +{
  33. + char c, sc;
  34. + size_t len;
  35. +
  36. + if ((c = *find++) != 0) {
  37. + c = tolower((unsigned char)c);
  38. + len = strlen(find);
  39. + do {
  40. + do {
  41. + if ((sc = *s++) == 0)
  42. + return (NULL);
  43. + } while ((char)tolower((unsigned char)sc) != c);
  44. + } while (strncasecmp(s, find, len) != 0);
  45. + s--;
  46. + }
  47. + return ((char *)s);
  48. +}
  49. +
  50. //
  51. // The core of this program
  52. //
  53. @@ -1198,7 +1223,11 @@
  54. // don't have to worry about packets received from previous sessions.
  55. //
  56. session = (struct dnssession *)calloc(1, sizeof(struct dnssession));
  57. +#ifdef NOIPV6
  58. + session->socket = create_socket(AF_INET);
  59. +#else
  60. session->socket = create_socket(ipv6 ? AF_INET6 : AF_INET);
  61. +#endif
  62. session->ipv6 = ipv6;
  63. session->server = strdup(server_ip);
  64. session->host = strdup(host);
  65. @@ -1377,8 +1406,12 @@
  66. struct hostent *h;
  67. char **addr_list = NULL;
  68. +#ifndef NOIPV6
  69. h = gethostbyname2(nextserver_name,
  70. ip == 0 ? AF_INET : AF_INET6);
  71. +#else
  72. + h = gethostbyname(nextserver_name);
  73. +#endif
  74. if (h == NULL) continue;
  75. //