aboutsummaryrefslogtreecommitdiffstats
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
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
-rw-r--r--gg_sniff/Makefile2
-rw-r--r--gg_sniff/dns.c100
-rw-r--r--gg_sniff/gg_sniff.c6
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)