#include #include #include #include #include #include static void _cb_dns(struct in_addr *, char *, void *); struct event_base *_ev_base; char *_name = NULL; int _answer = 0; int main(int argc, char *argv[]) { struct ggnet_dns *ggdns; struct in_addr ip; struct timeval tv; if (argc < 2) { printf("usage: dnsreverse \n"); exit(1); } inet_aton(argv[1], &ip); ip.s_addr = ntohl(ip.s_addr); bzero(&tv, sizeof(struct timeval)); tv.tv_sec = 5; _ev_base = event_base_new(); ggdns = ggnet_dns_new(_ev_base); ggnet_dns_reverse(ggdns, &ip, _cb_dns, NULL); event_base_loopexit(_ev_base, &tv); event_base_dispatch(_ev_base); if (_answer) printf("%x: %s\n", ip.s_addr, _name); else printf("no answer\n"); return 0; } static void _cb_dns(struct in_addr *ip, char *name, void *data) { _name = name; _answer = 1; event_base_loopexit(_ev_base, NULL); }