diff options
Diffstat (limited to 'libglouglou/libggnet_traceroute.h')
-rw-r--r-- | libglouglou/libggnet_traceroute.h | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/libglouglou/libggnet_traceroute.h b/libglouglou/libggnet_traceroute.h index 9cd64ad..5b172a9 100644 --- a/libglouglou/libggnet_traceroute.h +++ b/libglouglou/libggnet_traceroute.h @@ -31,18 +31,23 @@ struct ggnet_traceroute_hop { int asn; }; -struct ggnet_traceroute_req { - LIST_ENTRY(ggnet_traceroute_req) entry; - struct ggnet_traceroute_hop *target; - struct addr srcip; +struct ggnet_traceroute_req_params { enum tracemode mode; union { struct { int dport; + int sport; } tcp; struct icmp { } icmp; - } params; + }; +}; + +struct ggnet_traceroute_req { + LIST_ENTRY(ggnet_traceroute_req) entry; + struct ggnet_traceroute_hop *target; + struct addr srcip; + struct ggnet_traceroute_req_params *params; TAILQ_HEAD(tailhead, ggnet_traceroute_hop) hops_list; struct { struct event *ev_recv; @@ -74,8 +79,22 @@ struct ggnet_traceroute * ggnet_traceroute_new(struct event_base *, char *); void ggnet_traceroute_free(struct ggnet_traceroute *); struct ggnet_traceroute_req * + ggnet_traceroute_trace_tcp(struct ggnet_traceroute *, + struct addr *ip, int dport, + void (*cb_done)(struct ggnet_traceroute_req *, void *), + void (*cb_hop)(struct ggnet_traceroute_req *, + struct ggnet_traceroute_hop *, void *), + void *); +struct ggnet_traceroute_req * + ggnet_traceroute_trace_tcp_intrace(struct ggnet_traceroute *, + struct addr *ip, int dport, int sport, + void (*cb_done)(struct ggnet_traceroute_req *, void *), + void (*cb_hop)(struct ggnet_traceroute_req *, + struct ggnet_traceroute_hop *, void *), + void *); +struct ggnet_traceroute_req * ggnet_traceroute_trace(struct ggnet_traceroute *, - struct addr *ip, enum tracemode, + struct addr *ip, struct ggnet_traceroute_req_params *, void (*cb_done)(struct ggnet_traceroute_req *, void *), void (*cb_hop)(struct ggnet_traceroute_req *, struct ggnet_traceroute_hop *, void *), |