aboutsummaryrefslogtreecommitdiffstats
path: root/libglouglou/libggnet_traceroute.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglouglou/libggnet_traceroute.c')
-rw-r--r--libglouglou/libggnet_traceroute.c10
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