diff options
author | Laurent Ghigonis <laurent@p1sec.com> | 2012-12-15 03:13:23 +0100 |
---|---|---|
committer | Laurent Ghigonis <laurent@p1sec.com> | 2012-12-15 03:13:23 +0100 |
commit | 698d7b43f9712fbcfeb6144f8e2bfe10dbc9225c (patch) | |
tree | 92c59eb1e2ff9407e14039c7c6f7b7632618fc51 | |
parent | integrate gg_sniff dns handling into libggnet (diff) | |
download | glouglou-698d7b43f9712fbcfeb6144f8e2bfe10dbc9225c.tar.xz glouglou-698d7b43f9712fbcfeb6144f8e2bfe10dbc9225c.zip |
remove dns from gg_sniff now that it's in libggnet
-rw-r--r-- | gg_sniff/Makefile | 2 | ||||
-rw-r--r-- | gg_sniff/dns.c | 100 | ||||
-rw-r--r-- | gg_sniff/gg_sniff.c | 6 |
3 files changed, 1 insertions, 107 deletions
diff --git a/gg_sniff/Makefile b/gg_sniff/Makefile index 07910a1..297e8a5 100644 --- a/gg_sniff/Makefile +++ b/gg_sniff/Makefile @@ -3,7 +3,7 @@ LDFLAGS += -levent -lglouglou -lpcap BINARY = gg_sniff USER = _gg_sniff -SOURCES = gg_sniff.c pcap.c dns.c +SOURCES = gg_sniff.c pcap.c OBJECTS = $(SOURCES:.c=.o) PREFIX = /usr/local 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); -} diff --git a/gg_sniff/gg_sniff.c b/gg_sniff/gg_sniff.c index 467b59c..0714fdd 100644 --- a/gg_sniff/gg_sniff.c +++ b/gg_sniff/gg_sniff.c @@ -62,7 +62,6 @@ main(int argc, char **argv) char *iface = NULL; int ggserv_port = GLOUGLOU_PROBE_DEFAULT_PORT; int pcap_init = 0; - int dns_init = 0; int loglevel = 0; int retval = -1; int op; @@ -110,9 +109,6 @@ main(int argc, char **argv) pcap_init = ggsniff_pcap_init(_ev_base, ggcli, net, iface); if (!pcap_init) goto quit; - dns_init = ggsniff_dns_init(_ev_base); - if (!dns_init) - goto quit; ev_sigint = evsignal_new(_ev_base, SIGINT, sig_handler, NULL); ev_sigterm = evsignal_new(_ev_base, SIGTERM, sig_handler, NULL); @@ -131,8 +127,6 @@ main(int argc, char **argv) retval = 0; quit: - if (dns_init) - ggsniff_dns_shutdown(); if (pcap_init) ggsniff_pcap_shutdown(); if (ggcli) |