From 9ad9ef1d70c80204f0456adf6741848e43fbec27 Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Sat, 8 Jun 2013 13:47:06 +0200 Subject: libglouglou: move functions around no functional change --- libglouglou/libggnet_traceroute.c | 150 +++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 74 deletions(-) diff --git a/libglouglou/libggnet_traceroute.c b/libglouglou/libggnet_traceroute.c index 6a635d0..2691d3e 100644 --- a/libglouglou/libggnet_traceroute.c +++ b/libglouglou/libggnet_traceroute.c @@ -75,14 +75,16 @@ #define TIMEOUT_AFTERTARGET_US 500000 static void _req_free(struct ggnet_traceroute_req *); -static void _cb_recv(evutil_socket_t, short, void *); static void _cb_send(evutil_socket_t, short, void *); +static void _cb_recv(evutil_socket_t, short, void *); static void _cb_trace_timeout(evutil_socket_t, short, void *); +static void _timeout_set(struct ggnet_traceroute_req *, int, int); static struct ggnet_traceroute_hop * _hop_ip_id(struct ggnet_traceroute_req *, int); static struct ggnet_traceroute_hop * _hop_sport(struct ggnet_traceroute_req *, int); -static void _timeout_set(struct ggnet_traceroute_req *, int, int); +static struct ggnet_traceroute_hop * + _hop_last(struct ggnet_traceroute_req *); static int pcap_dloff(pcap_t *); // XXX move to libggnet_utils ? struct trace_pkt { @@ -222,6 +224,69 @@ _req_free(struct ggnet_traceroute_req *req) free(req); } +static void +_cb_send(evutil_socket_t fd, short what, void *arg) +{ + struct ggnet_traceroute_req *req; + struct ggnet_traceroute_hop *hop; + struct ggnet_traceroute *ggtr; + u_char buf[BUFSIZ]; + struct trace_pkt *pkt; + int len, lensent, ttl, ip_id, sport, i; + + req = arg; + printf("XXX cbggnet_traceroute cb_send %s -> %s\n", + addr_ntoa(&req->srcip), addr_ntoa(&req->target->ip)); + ggtr = req->ggtr; + pkt = (struct trace_pkt *)buf; + len = IP_HDR_LEN + TCP_HDR_LEN; + + for (ttl=req->run.last_ttl_sent; ttl<15; ttl++) { + hop = calloc(1, sizeof(struct ggnet_traceroute_hop)); + if (!hop) { + printf("cannot allocate ggnet_traceroute_hop\n"); + exit(1); + } + hop->ttl = ttl; + //addr_pack(hop->ip, ADDR_TYPE_IP, IP_ADDR_BITS, ip, IP_ADDR_LEN); + ip_id = rand_uint16(ggtr->pkt_rand); + sport = rand_uint16(ggtr->pkt_rand); + switch (req->mode) { + case TRACEMODE_AUTO: + case TRACEMODE_TCP: + req->params.tcp.dport = TRACE_DPORT; + ip_pack_hdr(&pkt->pkt_hdr_i.ip, IP_TOS_LOWDELAY, len, + ip_id, 0, ttl, IP_PROTO_TCP, + req->srcip.addr_ip, req->target->ip.addr_ip); + tcp_pack_hdr(&pkt->pkt_hdr_t.tcp, + sport, req->params.tcp.dport, + rand_uint32(ggtr->pkt_rand), 0, + TH_SYN, rand_uint16(ggtr->pkt_rand), 0); + break; + case TRACEMODE_ICMP: + ip_pack_hdr(&pkt->pkt_hdr_i.ip, IP_TOS_LOWDELAY, len, + ip_id, 0, ttl, IP_PROTO_ICMP, + req->srcip.addr_ip, req->target->ip.addr_ip); + icmp_pack_hdr(&pkt->pkt_hdr_t.icmp, ICMP_ECHO, 8); + break; + } + ip_checksum(pkt, len); + TAILQ_INSERT_TAIL(&req->hops_list, hop, entry); + for (i=0; iip_ids[i] = ip_id; + hop->sports[i] = sport; + lensent = ip_send(ggtr->pkt_ip, pkt, len); + if (len < 0) + warn("_cb_send : ip_send error"); + if (lensent < len) + warn("_cb_send : ip_send short send (%d < %d", + lensent, len); + } + } + req->run.last_ttl_sent = ttl; + _timeout_set(req, TIMEOUT_TOTAL_S, 0); +} + static void _cb_recv(evutil_socket_t fd, short what, void *arg) { @@ -336,66 +401,20 @@ reschedule_recv: } static void -_cb_send(evutil_socket_t fd, short what, void *arg) +_cb_trace_timeout(evutil_socket_t fd, short what, void *arg) { struct ggnet_traceroute_req *req; - struct ggnet_traceroute_hop *hop; - struct ggnet_traceroute *ggtr; - u_char buf[BUFSIZ]; - struct trace_pkt *pkt; - int len, lensent, ttl, ip_id, sport, i; + struct ggnet_traceroute_hop *last; req = arg; - printf("XXX cbggnet_traceroute cb_send %s -> %s\n", - addr_ntoa(&req->srcip), addr_ntoa(&req->target->ip)); - ggtr = req->ggtr; - pkt = (struct trace_pkt *)buf; - len = IP_HDR_LEN + TCP_HDR_LEN; - for (ttl=req->run.last_ttl_sent; ttl<15; ttl++) { - hop = calloc(1, sizeof(struct ggnet_traceroute_hop)); - if (!hop) { - printf("cannot allocate ggnet_traceroute_hop\n"); - exit(1); - } - hop->ttl = ttl; - //addr_pack(hop->ip, ADDR_TYPE_IP, IP_ADDR_BITS, ip, IP_ADDR_LEN); - ip_id = rand_uint16(ggtr->pkt_rand); - sport = rand_uint16(ggtr->pkt_rand); - switch (req->mode) { - case TRACEMODE_AUTO: - case TRACEMODE_TCP: - req->params.tcp.dport = TRACE_DPORT; - ip_pack_hdr(&pkt->pkt_hdr_i.ip, IP_TOS_LOWDELAY, len, - ip_id, 0, ttl, IP_PROTO_TCP, - req->srcip.addr_ip, req->target->ip.addr_ip); - tcp_pack_hdr(&pkt->pkt_hdr_t.tcp, - sport, req->params.tcp.dport, - rand_uint32(ggtr->pkt_rand), 0, - TH_SYN, rand_uint16(ggtr->pkt_rand), 0); - break; - case TRACEMODE_ICMP: - ip_pack_hdr(&pkt->pkt_hdr_i.ip, IP_TOS_LOWDELAY, len, - ip_id, 0, ttl, IP_PROTO_ICMP, - req->srcip.addr_ip, req->target->ip.addr_ip); - icmp_pack_hdr(&pkt->pkt_hdr_t.icmp, ICMP_ECHO, 8); - break; - } - ip_checksum(pkt, len); - TAILQ_INSERT_TAIL(&req->hops_list, hop, entry); - for (i=0; iip_ids[i] = ip_id; - hop->sports[i] = sport; - lensent = ip_send(ggtr->pkt_ip, pkt, len); - if (len < 0) - warn("_cb_send : ip_send error"); - if (lensent < len) - warn("_cb_send : ip_send short send (%d < %d", - lensent, len); - } - } - req->run.last_ttl_sent = ttl; - _timeout_set(req, TIMEOUT_TOTAL_S, 0); + printf("XXX cbggnet_traceroute cb_trace_timeout (%s -> %s)\n", + addr_ntoa(&req->srcip), addr_ntoa(&req->target->ip)); + last = _hop_last(req); + printf("XXX last %p\n", last); + if (last) + req->target->ttl = last->ttl + 1; + req->cb_done(req, req->data); } static void @@ -457,23 +476,6 @@ _hop_last(struct ggnet_traceroute_req *req) return last; } -static void -_cb_trace_timeout(evutil_socket_t fd, short what, void *arg) -{ - struct ggnet_traceroute_req *req; - struct ggnet_traceroute_hop *last; - - req = arg; - - printf("XXX cbggnet_traceroute cb_trace_timeout (%s -> %s)\n", - addr_ntoa(&req->srcip), addr_ntoa(&req->target->ip)); - last = _hop_last(req); - printf("XXX last %p\n", last); - if (last) - req->target->ttl = last->ttl + 1; - req->cb_done(req, req->data); -} - static int pcap_dloff(pcap_t *pd) { -- cgit v1.2.3-59-g8ed1b