diff options
Diffstat (limited to 'libglouglou/libggnet_traceroute.c')
-rw-r--r-- | libglouglou/libggnet_traceroute.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libglouglou/libggnet_traceroute.c b/libglouglou/libggnet_traceroute.c index 561f0aa..1960cff 100644 --- a/libglouglou/libggnet_traceroute.c +++ b/libglouglou/libggnet_traceroute.c @@ -140,7 +140,8 @@ ggnet_traceroute_free(struct ggnet_traceroute *ggtr) struct ggnet_traceroute_req * ggnet_traceroute_trace(struct ggnet_traceroute *ggtr, struct addr *ip, enum tracemode mode, - void (*cb_usr)(struct addr *, struct ggnet_traceroute_req *, void *), + void (*cb_done)(struct ggnet_traceroute_req *, void *), + void (*cb_hop)(struct ggnet_traceroute_req *, struct ggnet_traceroute_hop *, void *), void *data) { struct ggnet_traceroute_req *req; @@ -177,7 +178,8 @@ ggnet_traceroute_trace(struct ggnet_traceroute *ggtr, _cb_trace_timeout, req); event_add(req->run.ev_timeout, NULL); - req->cb_usr = cb_usr; + req->cb_done = cb_done; + req->cb_hop = cb_hop; req->data = data; req->ggtr = ggtr; @@ -232,6 +234,8 @@ _cb_recv(evutil_socket_t fd, short what, void *arg) printf("XXX cbggnet_traceroute cb_recv %s -> %s\n", addr_ntoa(&req->srcip), addr_ntoa(&req->target->ip)); #if 0 + // XXX call cb_hop if hop successfuly detected + // req->cb_hop(req, hop, req->data); req = arg; ggtr = req->ggtr; @@ -403,7 +407,7 @@ _cb_trace_timeout(evutil_socket_t fd, short what, void *arg) last = _hop_last(req); if (last) req->target->ttl = last->ttl + 1; - req->cb_usr(&req->srcip, req, req->data); + req->cb_done(req, req->data); } static int |