#include #include #include "resolver.hh" /* Originally Written by John MacPherson */ /* Despite John's comment regarding endianess before the original version * of this line, it caused problems with big-endian machines! Wrapping it * in a htonl fixes things. */ #define dottedquad(a,b,c,d) htonl((d) + (c << 8) + (b << 16) + (a << 24)); int main(void) { Resolver r(false); in_addr i; in_addr p; char *t = NULL; /* Localhost should work everywhere */ r.get_ip("localhost", &i); p.s_addr = dottedquad(127,0,0,1); assert(p.s_addr==i.s_addr); i.s_addr = dottedquad(127,0,0,1); t = r.get_name(i); if (t) { if (strcasecmp(t, "localhost")!=0) { fprintf(stderr, "WARNING: 127.0.0.1 resolves to %s" " instead of localhost!\nPlease check your " " resolver!\n", t); } } else { fprintf(stderr, "FAILED: Unable to resolve 127.0.0.1\n"); } /* Use Root Servers because they are unlikey to change IP */ i.s_addr = dottedquad(192,228,79,201); t = r.get_name(i); if (t) { if (strcasecmp(t, "b.root-servers.net")!=0) { fprintf(stderr, "WARNING: 192.228.79.201 resolves to " "%s. Expected b.root-servers.net please check " "your resolver!\n", t); } } else { fprintf(stderr, "FAILED: Unable to resolve 128.9.0.107\n"); } i.s_addr = dottedquad(192,203,230,10); t = r.get_name(i); if (t) { if (strcasecmp(t, "e.root-servers.net")!=0) { fprintf(stderr, "WARNING: 192.203.230.10 resolves to " "%s. Expected e.root-servers.net please check " "your resolver!\n", t); } } else { fprintf(stderr, "FAILED: Unable to resolve 192.203.230.10\n"); } r.get_ip("c.root-servers.net", &i); p.s_addr = dottedquad(192,33,4,12); if (p.s_addr!=i.s_addr) { fprintf(stderr, "FAILED: could not resolve c.root-servers.net" " to 192.33.4.12\n"); } fflush(stdout); fflush(stderr); return (0); }