From 07306a2a00c908979fbb8cf3127278bae00803a4 Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Tue, 9 Jul 2013 11:45:00 +0200 Subject: WIP, improve traceroute * del trace on timeout (still WIP) * keep track of nodes traceroute usage * fix IP address storage / transfer * add some debug printf around --- gg_sniff/pcap.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'gg_sniff/pcap.c') diff --git a/gg_sniff/pcap.c b/gg_sniff/pcap.c index 5a247d6..c80085d 100644 --- a/gg_sniff/pcap.c +++ b/gg_sniff/pcap.c @@ -144,7 +144,7 @@ ggsniff_pcap_init(struct event_base *ev_base, struct gg_client *ggcli, ggnet_set_dns(net, 1, ev_base, cb_nodename); // XXX IN PROGRESS traceroute, disabled for now, 20130705 // laurent - //ggnet_set_traceroute(net, 1, iface, ev_base, cb_nodetraceroute); + ggnet_set_traceroute(net, 1, iface, ev_base, cb_nodetraceroute); } _cap.ggcli = ggcli; @@ -327,7 +327,7 @@ cb_conntimer(int fd, short why, void *data) if (_cap.net->node_count > NODE_MAX_WITHOUT_TIMEOUT) { LIST_FOREACH_SAFE(n, &_cap.net->node_list, entry, ntmp) { - if (n->used == 0 && + if (n->used_conn == 0 && _cap.net->time > n->lastseen + NODE_TIMEOUT) ggnet_node_del(_cap.net, n); } @@ -372,6 +372,7 @@ cb_nodetraceroute(struct ggnet *net, struct ggnet_traceroute_req *req) pkt.trace_addr = req->target->ip.addr_ip; pkt.trace_src = req->srcip.addr_ip; printf("XXX oooooooooooooooooo %x\n", pkt.trace_addr); + printf("XXX oooooooooooooooooo %x\n", pkt.trace_src); pkt.trace_hopcount = req->hopcount_answering; i = 0; TAILQ_FOREACH(h, &req->hops_list, entry) { @@ -379,7 +380,7 @@ cb_nodetraceroute(struct ggnet *net, struct ggnet_traceroute_req *req) //pkt.trace_hops[i].addr = ip.s_addr; if (h->ip.addr_ip == 0) continue; - pkt.trace_hops[i].addr = ntohl(h->ip.addr_ip); + pkt.trace_hops[i].addr = h->ip.addr_ip; printf("XXX ------------------- %x\n", pkt.trace_hops[i].addr); pkt.trace_hops[i].delay = h->delay; pkt.trace_hops[i].loss = h->loss; @@ -443,8 +444,9 @@ ip_handle(struct ip *ip, const u_char *pend, u_int wirelen) } len -= ip_hlen; - src.s_addr = ntohl(ip->ip_src.s_addr); - dst.s_addr = ntohl(ip->ip_dst.s_addr); + memcpy(&src, &ip->ip_src, sizeof(struct in_addr)); + memcpy(&dst, &ip->ip_dst, sizeof(struct in_addr)); + printf("XXX %s (%d) -> %s (%d)\n", inet_ntoa(src), src.s_addr, inet_ntoa(dst), dst.s_addr); src_port = 0; dst_port = 0; proto = IPPROTO_IP; -- cgit v1.2.3-59-g8ed1b