diff options
Diffstat (limited to 'eperd/evtraceroute.c')
-rw-r--r-- | eperd/evtraceroute.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/eperd/evtraceroute.c b/eperd/evtraceroute.c new file mode 100644 index 0000000..d5e0d36 --- /dev/null +++ b/eperd/evtraceroute.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2013 RIPE NCC <atlas@ripe.net> + * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. + * Standalone version of the event-based traceroute. + */ + +#include "libbb.h" +#include <syslog.h> +#include <event2/event.h> +#include <event2/event_struct.h> + +#include "eperd.h" + +static void done(void *state UNUSED_PARAM) +{ + fprintf(stderr, "And we are done\n"); + exit(0); +} + +int evtraceroute_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int evtraceroute_main(int argc UNUSED_PARAM, char **argv) +{ + int r; + void *state; + + /* Create libevent event base */ + EventBase= event_base_new(); + if (!EventBase) + { + fprintf(stderr, "evtraceroute: event_base_new failed\n"); + exit(1); + } + DnsBase= evdns_base_new(EventBase, 1 /*initialize*/); + if (!DnsBase) + { + fprintf(stderr, "evdns_base_new failed\n"); + exit(1); + } + + state= traceroute_ops.init(argc, argv, done); + if (!state) + { + fprintf(stderr, "evtraceroute: traceroute_ops.init failed\n"); + exit(1); + } + traceroute_ops.start(state); + + r= event_base_loop(EventBase, 0); + if (r != 0) + { + fprintf(stderr, "evtraceroute: event_base_loop failed\n"); + exit(1); + } + return 0; /* not reached */ +} + |