aboutsummaryrefslogtreecommitdiffstats
path: root/gg_sniff/gg_sniff.c
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2012-12-04 13:17:32 +0100
committerLaurent Ghigonis <laurent@p1sec.com>2012-12-04 13:17:32 +0100
commit7165b548cd57f4d628789f6f9097eb5f43d3ceec (patch)
treec0e95c44dd09feb7966734ae59a5490843dd8d67 /gg_sniff/gg_sniff.c
parentfix ggnet_conn_find() prototype (diff)
downloadglouglou-7165b548cd57f4d628789f6f9097eb5f43d3ceec.tar.xz
glouglou-7165b548cd57f4d628789f6f9097eb5f43d3ceec.zip
work on gg_sniff, now it compiles
Diffstat (limited to 'gg_sniff/gg_sniff.c')
-rw-r--r--gg_sniff/gg_sniff.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/gg_sniff/gg_sniff.c b/gg_sniff/gg_sniff.c
index c07a1f4..7b8c08d 100644
--- a/gg_sniff/gg_sniff.c
+++ b/gg_sniff/gg_sniff.c
@@ -26,6 +26,7 @@
#endif
#define GG_SNIFF_USER "_gg_sniff"
+#define GG_SNIFF_LOGFILE "/var/log/ggsniff.log"
#if defined(__OpenBSD__)
void __dead
@@ -43,7 +44,7 @@ usage(void)
static void
sig_handler(int sig, short why, void *data)
{
- log_info("got signal %d", sig);
+ gg_log_info("got signal %d", sig);
if (sig == SIGINT || sig == SIGTERM)
event_loopexit(NULL);
}
@@ -52,10 +53,14 @@ int
main(int argc, char **argv)
{
struct event_base *ev_base;
- struct ggnet *net;
+ struct gg_client *ggcli = NULL;
+ struct ggnet *net = NULL;
struct event ev_sigint, ev_sigterm, ev_sigchld, ev_sighup;
+ char ggserv_ip[30] = "127.0.0.1";
+ char iface[30] = "lo";
+ int ggserv_port = GLOUGLOU_PROBE_DEFAULT_PORT;
int pcap_init = 0;
- int sniff_init = 0;
+ int dns_init = 0;
int loglevel = 0;
int op;
@@ -75,6 +80,15 @@ main(int argc, char **argv)
/* NOTREACHED */
}
}
+ switch (argc) {
+ case 3: ggserv_port = atoi(argv[3]);
+ case 2: strncpy(ggserv_ip, argv[2], sizeof(ggserv_ip));
+ case 1: strncpy(iface, argv[1], sizeof(iface));
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
gg_log_init(GG_SNIFF_LOGFILE, loglevel);
@@ -83,14 +97,14 @@ main(int argc, char **argv)
net = ggnet_new();
if (!net)
goto quit;
- ggcli = gg_client_connect();
+ ggcli = gg_client_connect(ev_base, ggserv_ip, ggserv_port, NULL, NULL, NULL);
if (!ggcli)
goto quit;
- pcap_init = ggsniff_pcap_init(ev_base);
+ pcap_init = ggsniff_pcap_init(ev_base, ggcli, net, iface);
if (!pcap_init)
goto quit;
- sniff_init = ggsniff_dns_init(ev_base);
- if (!sniff_init)
+ dns_init = ggsniff_dns_init(ev_base);
+ if (!dns_init)
goto quit;
signal_set(&ev_sigint, SIGINT, sig_handler, NULL);
@@ -105,20 +119,20 @@ main(int argc, char **argv)
droppriv(GG_SNIFF_USER, 1, NULL);
- log_info("entering event loop");
+ gg_log_info("entering event loop");
event_base_dispatch(ev_base);
quit:
if (dns_init)
ggsniff_dns_shutdown();
- if (sniff_init)
+ if (pcap_init)
ggsniff_pcap_shutdown();
if (ggcli)
gg_client_disconnect(ggcli);
if (net)
ggnet_free(net);
- log_info("exiting");
+ gg_log_info("exiting");
gg_log_shutdown();