| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2003-2006 Niels Provos <provos@citi.umich.edu> | 2 * Copyright (c) 2003-2006 Niels Provos <provos@citi.umich.edu> |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 #endif | 35 #endif |
| 36 | 36 |
| 37 #include <sys/types.h> | 37 #include <sys/types.h> |
| 38 #include <sys/stat.h> | 38 #include <sys/stat.h> |
| 39 #ifdef HAVE_SYS_TIME_H | 39 #ifdef HAVE_SYS_TIME_H |
| 40 #include <sys/time.h> | 40 #include <sys/time.h> |
| 41 #endif | 41 #endif |
| 42 #include <sys/queue.h> | 42 #include <sys/queue.h> |
| 43 #ifndef WIN32 | 43 #ifndef WIN32 |
| 44 #include <sys/socket.h> | 44 #include <sys/socket.h> |
| 45 #include <sys/signal.h> | 45 #include <signal.h> |
| 46 #include <netinet/in.h> | 46 #include <netinet/in.h> |
| 47 #include <arpa/inet.h> | 47 #include <arpa/inet.h> |
| 48 #include <unistd.h> | 48 #include <unistd.h> |
| 49 #endif | 49 #endif |
| 50 #ifdef HAVE_NETINET_IN6_H | 50 #ifdef HAVE_NETINET_IN6_H |
| 51 #include <netinet/in6.h> | 51 #include <netinet/in6.h> |
| 52 #endif | 52 #endif |
| 53 #ifdef HAVE_NETDB_H | 53 #ifdef HAVE_NETDB_H |
| 54 #include <netdb.h> | 54 #include <netdb.h> |
| 55 #endif | 55 #endif |
| (...skipping 26 matching lines...) Expand all Loading... |
| 82 | 82 |
| 83 if (result != DNS_ERR_NONE) { | 83 if (result != DNS_ERR_NONE) { |
| 84 fprintf(stdout, "[Error code %d] ", result); | 84 fprintf(stdout, "[Error code %d] ", result); |
| 85 goto out; | 85 goto out; |
| 86 } | 86 } |
| 87 | 87 |
| 88 fprintf(stderr, "type: %d, count: %d, ttl: %d: ", type, count, ttl); | 88 fprintf(stderr, "type: %d, count: %d, ttl: %d: ", type, count, ttl); |
| 89 | 89 |
| 90 switch (type) { | 90 switch (type) { |
| 91 case DNS_IPv6_AAAA: { | 91 case DNS_IPv6_AAAA: { |
| 92 #if defined(HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_NTOP) | 92 #if defined(HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_NTOP) && defined(INET6_AD
DRSTRLEN) |
| 93 struct in6_addr *in6_addrs = addresses; | 93 struct in6_addr *in6_addrs = addresses; |
| 94 char buf[INET6_ADDRSTRLEN+1]; | 94 char buf[INET6_ADDRSTRLEN+1]; |
| 95 int i; | 95 int i; |
| 96 /* a resolution that's not valid does not help */ | 96 /* a resolution that's not valid does not help */ |
| 97 if (ttl < 0) | 97 if (ttl < 0) |
| 98 goto out; | 98 goto out; |
| 99 for (i = 0; i < count; ++i) { | 99 for (i = 0; i < count; ++i) { |
| 100 const char *b = inet_ntop(AF_INET6, &in6_addrs[i], buf,s
izeof(buf)); | 100 const char *b = inet_ntop(AF_INET6, &in6_addrs[i], buf,s
izeof(buf)); |
| 101 if (b) | 101 if (b) |
| 102 fprintf(stderr, "%s ", b); | 102 fprintf(stderr, "%s ", b); |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 struct in_addr *in_addrs = addresses; | 251 struct in_addr *in_addrs = addresses; |
| 252 if (in_addrs[0].s_addr != htonl(0xc0a80b0bUL) || ttl != 12345) { | 252 if (in_addrs[0].s_addr != htonl(0xc0a80b0bUL) || ttl != 12345) { |
| 253 fprintf(stdout, "Bad IPv4 response \"%s\" %d. ", | 253 fprintf(stdout, "Bad IPv4 response \"%s\" %d. ", |
| 254 inet_ntoa(in_addrs[0]), ttl); | 254 inet_ntoa(in_addrs[0]), ttl); |
| 255 dns_ok = 0; | 255 dns_ok = 0; |
| 256 goto out; | 256 goto out; |
| 257 } | 257 } |
| 258 break; | 258 break; |
| 259 } | 259 } |
| 260 case DNS_IPv6_AAAA: { | 260 case DNS_IPv6_AAAA: { |
| 261 #if defined (HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_NTOP) | 261 #if defined (HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_NTOP) && defined(INET6_A
DDRSTRLEN) |
| 262 struct in6_addr *in6_addrs = addresses; | 262 struct in6_addr *in6_addrs = addresses; |
| 263 char buf[INET6_ADDRSTRLEN+1]; | 263 char buf[INET6_ADDRSTRLEN+1]; |
| 264 if (memcmp(&in6_addrs[0].s6_addr, "abcdefghijklmnop", 16) | 264 if (memcmp(&in6_addrs[0].s6_addr, "abcdefghijklmnop", 16) |
| 265 || ttl != 123) { | 265 || ttl != 123) { |
| 266 const char *b = inet_ntop(AF_INET6, &in6_addrs[0],buf,si
zeof(buf)); | 266 const char *b = inet_ntop(AF_INET6, &in6_addrs[0],buf,si
zeof(buf)); |
| 267 fprintf(stdout, "Bad IPv6 response \"%s\" %d. ", b, ttl)
; | 267 fprintf(stdout, "Bad IPv6 response \"%s\" %d. ", b, ttl)
; |
| 268 dns_ok = 0; | 268 dns_ok = 0; |
| 269 goto out; | 269 goto out; |
| 270 } | 270 } |
| 271 #endif | 271 #endif |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 { | 367 { |
| 368 dns_server(); /* Do this before we call evdns_init. */ | 368 dns_server(); /* Do this before we call evdns_init. */ |
| 369 | 369 |
| 370 evdns_init(); | 370 evdns_init(); |
| 371 dns_gethostbyname(); | 371 dns_gethostbyname(); |
| 372 dns_gethostbyname6(); | 372 dns_gethostbyname6(); |
| 373 dns_gethostbyaddr(); | 373 dns_gethostbyaddr(); |
| 374 | 374 |
| 375 evdns_shutdown(0); | 375 evdns_shutdown(0); |
| 376 } | 376 } |
| OLD | NEW |