aboutsummaryrefslogtreecommitdiffstats
path: root/gg_sniff/dns.c
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2012-12-15 03:13:23 +0100
committerLaurent Ghigonis <laurent@p1sec.com>2012-12-15 03:13:23 +0100
commit698d7b43f9712fbcfeb6144f8e2bfe10dbc9225c (patch)
tree92c59eb1e2ff9407e14039c7c6f7b7632618fc51 /gg_sniff/dns.c
parentintegrate gg_sniff dns handling into libggnet (diff)
downloadglouglou-698d7b43f9712fbcfeb6144f8e2bfe10dbc9225c.tar.xz
glouglou-698d7b43f9712fbcfeb6144f8e2bfe10dbc9225c.zip
remove dns from gg_sniff now that it's in libggnet
Diffstat (limited to 'gg_sniff/dns.c')
-rw-r--r--gg_sniff/dns.c100
1 files changed, 0 insertions, 100 deletions
diff --git a/gg_sniff/dns.c b/gg_sniff/dns.c
deleted file mode 100644
index f04f5ea..0000000
--- a/gg_sniff/dns.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-
-#include <event2/dns.h>
-#include <event2/util.h>
-#include <event2/event.h>
-
-#include <libglouglou.h>
-
-/*
- * For dns with libevent, see
- * http://www.wangafu.net/~nickm/libevent-2.0/doxygen/html/dns_8h.html
- * http://www.wangafu.net/~nickm/libevent-book/Ref9_dns.html
- * spike/evdns_chrooted.c
- * spike/evdns.c
- */
-
-static void _cb_evdns_reverse(int, char, int, int, void *, void *);
-
-struct req_reverse {
- LIST_ENTRY(req_reverse) entry;
- struct evdns_request *ereq;
- struct in_addr ip;
- void (*cb_usr)(struct in_addr *, char *, void *);
- void *data;
-};
-
-struct event_base *_ev_base;
-struct evdns_base *_evdns_base;
-int _req_reverse_pending = 0;
-LIST_HEAD(, req_reverse) _req_reverse_list; /* XXX for now unused. remove ? */
-
-int
-ggsniff_dns_init(struct event_base *ev_base)
-{
- _ev_base = ev_base;
- _evdns_base = evdns_base_new(ev_base, 1);
- if (!_evdns_base)
- return 0;
- return 1;
-}
-
-void
-ggsniff_dns_shutdown(void)
-{
- evdns_base_free(_evdns_base, 1);
-}
-
-int
-ggsniff_dns_reverse(struct in_addr *ip,
- void (*cb_usr)(struct in_addr *, char *, void *),
- void *data)
-{
- struct evutil_addrinfo hints;
- struct req_reverse *req;
- struct evdns_request *ereq;
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC;
- hints.ai_flags = EVUTIL_AI_CANONNAME;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_protocol = IPPROTO_TCP;
-
- req = xmalloc(sizeof(struct req_reverse));
- memcpy(&req->ip, ip, sizeof(struct in_addr));
- req->cb_usr = cb_usr;
- req->data = data;
-
- LIST_INSERT_HEAD(&_req_reverse_list, req, entry);
- _req_reverse_pending++;
- ereq = evdns_base_resolve_reverse(_evdns_base, ip, 0, _cb_evdns_reverse, req);
- if (ereq == NULL) {
- gg_log_warn("gg_sniff dns request for %d returned immediately]\n",
- ip->s_addr);
- /* remove req from list and free it happened in the callback. */
- return 0;
- }
- req->ereq = ereq;
-
- return 1;
-}
-
-static void
-_cb_evdns_reverse(int result, char type, int count,
- int ttl, void *addresses, void *arg)
-{
- struct req_reverse *req;
-
- req = arg;
- if (type != DNS_PTR) {
- gg_log_warn("gg_sniff dns reverse received non DNS_PTR record !");
- goto free;
- }
- req->cb_usr(&req->ip, addresses, req->data);
-
-free:
- LIST_REMOVE(req, entry);
- _req_reverse_pending--;
- free(req);
-}