diff options
Diffstat (limited to 'libglouglou/libggnet_traceroute.h')
-rw-r--r-- | libglouglou/libggnet_traceroute.h | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libglouglou/libggnet_traceroute.h b/libglouglou/libggnet_traceroute.h index 92b2d43..5699bfb 100644 --- a/libglouglou/libggnet_traceroute.h +++ b/libglouglou/libggnet_traceroute.h @@ -10,6 +10,12 @@ #define TRACEROUTE_NB_PROBES 3 +enum tracemode { + TRACEMODE_AUTO = 0, + TRACEMODE_ICMP = 1, + TRACEMODE_TCP = 2, +}; + struct ggnet_traceroute_hop { TAILQ_ENTRY(ggnet_traceroute_hop) entry; int ttl; @@ -25,25 +31,28 @@ struct ggnet_traceroute_hop { struct ggnet_traceroute_req { LIST_ENTRY(ggnet_traceroute_req) entry; - struct ggnet_traceroute_hop *target; - struct addr srcip; + struct ggnet_traceroute_hop *target; + struct addr srcip; + enum tracemode mode; int probes_count; int hops_count; - TAILQ_HEAD(, ggnet_traceroute_hop) hops_list; + TAILQ_HEAD(tailhead, ggnet_traceroute_hop) hops_list; struct { struct event *ev_recv; struct event *ev_send; - struct evtimer *ev_timeout; + struct event *ev_timeout; struct timeval tv_timeout; int last_ttl_sent; } run; - void (*cb_usr)(struct in_addr *, char *, void *); + void (*cb_usr)(struct addr *, struct ggnet_traceroute_req *, void *); void *data; + struct ggnet_traceroute *ggtr; }; struct ggnet_traceroute { struct event_base *ev_base; pcap_t *pcap; + intf_t *intf; ip_t *pkt_ip; rand_t *pkt_rand; int pcap_fd; @@ -57,8 +66,8 @@ struct ggnet_traceroute * void ggnet_traceroute_free(struct ggnet_traceroute *); struct ggnet_traceroute_req * ggnet_traceroute_trace(struct ggnet_traceroute *, - struct in_addr *ip, - void (*cb_usr)(struct in_addr *, struct ggnet_traceroute_req *, void *), + struct addr *ip, enum tracemode, + void (*cb_usr)(struct addr *, struct ggnet_traceroute_req *, void *), void *); void ggnet_traceroute_cancel(struct ggnet_traceroute *, struct ggnet_traceroute_req *); |