diff options
author | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
---|---|---|
committer | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
commit | 219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch) | |
tree | b9c0f3c43aebba2fcfef777592d0add39f2072f4 /package/ndisc/patches/patch-src_traceroute_c |
Initial import
Diffstat (limited to 'package/ndisc/patches/patch-src_traceroute_c')
-rw-r--r-- | package/ndisc/patches/patch-src_traceroute_c | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/package/ndisc/patches/patch-src_traceroute_c b/package/ndisc/patches/patch-src_traceroute_c new file mode 100644 index 000000000..c98acfc20 --- /dev/null +++ b/package/ndisc/patches/patch-src_traceroute_c @@ -0,0 +1,128 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- ndisc6-0.9.8.orig/src/traceroute.c 2008-05-01 14:52:28.000000000 +0200 ++++ ndisc6-0.9.8/src/traceroute.c 2009-05-10 19:31:06.000000000 +0200 +@@ -149,6 +149,7 @@ static ssize_t + recv_payload (int fd, void *buf, size_t len, + struct sockaddr_in6 *addr, int *hlim) + { ++ struct cmsghdr *cmsg; + char cbuf[CMSG_SPACE (sizeof (int))]; + struct iovec iov = + { +@@ -170,7 +171,7 @@ recv_payload (int fd, void *buf, size_t + return val; + + /* ensures the hop limit is 255 */ +- for (struct cmsghdr *cmsg = CMSG_FIRSTHDR (&hdr); ++ for (cmsg = CMSG_FIRSTHDR (&hdr); + cmsg != NULL; + cmsg = CMSG_NXTHDR (&hdr, cmsg)) + if ((cmsg->cmsg_level == IPPROTO_IPV6) +@@ -625,14 +626,16 @@ static void + display (const tracetest_t *tab, unsigned min_ttl, unsigned max_ttl, + unsigned retries) + { +- for (unsigned ttl = min_ttl; ttl <= max_ttl; ttl++) ++ unsigned int ttl, col; ++ ++ for (ttl = min_ttl; ttl <= max_ttl; ttl++) + { + struct sockaddr_in6 hop = { .sin6_family = AF_UNSPEC }; + const tracetest_t *line = tab + retries * (ttl - min_ttl); + + printf ("%2d ", ttl); + +- for (unsigned col = 0; col < retries; col++) ++ for (col = 0; col < retries; col++) + { + const tracetest_t *test = line + col; + if (test->result == TRACE_TIMEOUT) +@@ -821,6 +824,7 @@ static void setup_socket (int fd) + + static int setsock_rth (int fd, int type, const char **segv, int segc) + { ++ int i; + uint8_t hdr[inet6_rth_space (type, segc)]; + inet6_rth_init (hdr, sizeof (hdr), type, segc); + +@@ -829,7 +833,7 @@ static int setsock_rth (int fd, int type + hints.ai_family = AF_INET6; + hints.ai_flags = AI_IDN; + +- for (int i = 0; i < segc; i++) ++ for (i = 0; i < segc; i++) + { + struct addrinfo *res; + +@@ -868,7 +872,8 @@ static struct + + static int prepare_sockets (void) + { +- for (unsigned i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) ++ unsigned int i; ++ for (i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) + { + protofd[i].fd = socket (AF_INET6, SOCK_RAW, protofd[i].protocol); + if (protofd[i].fd == -1) +@@ -883,8 +888,9 @@ static int prepare_sockets (void) + + static int get_socket (int protocol) + { ++ unsigned int i; + errno = EPROTONOSUPPORT; +- for (unsigned i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) ++ for (i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) + if (protofd[i].protocol == protocol) + { + int fd = protofd[i].fd; +@@ -902,7 +908,8 @@ static int get_socket (int protocol) + + static void drop_sockets (void) + { +- for (unsigned i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) ++ unsigned int i; ++ for (i = 0; i < sizeof (protofd) / sizeof (protofd[0]); i++) + if (protofd[i].fd != -1) + close (protofd[i].fd); + } +@@ -914,6 +921,8 @@ traceroute (const char *dsthost, const c + unsigned timeout, unsigned delay, unsigned retries, + size_t packet_len, int min_ttl, int max_ttl) + { ++ unsigned int i, j, step, progress; ++ + /* Creates ICMPv6 socket to collect error packets */ + int icmpfd = get_socket (IPPROTO_ICMPV6); + if (icmpfd == -1) +@@ -1020,7 +1029,7 @@ traceroute (const char *dsthost, const c + .filter = f, + }; + +- for (unsigned i = 0; i < 4; i++) ++ for (i = 0; i < 4; i++) + { + /* A = icmp->ip6_dst.s6_addr32[i]; */ + pc->code = BPF_LD + BPF_W + BPF_ABS; +@@ -1076,7 +1085,7 @@ traceroute (const char *dsthost, const c + tracetest_t tab[(1 + max_ttl - min_ttl) * retries]; + memset (tab, 0, sizeof (tab)); + +- for (unsigned step = 1, progress = 0; ++ for (step = 1, progress = 0; + step < (1 + max_ttl - min_ttl) + retries; + step++) + { +@@ -1093,10 +1102,10 @@ traceroute (const char *dsthost, const c + mono_nanosleep (&delay_ts); + + /* Sends requests */ +- for (unsigned i = 0; i < retries; i++) ++ for (j = 0; j < retries; j++) + { +- int attempt = (retries - 1) - i; +- int hlim = min_ttl + step + i - retries; ++ int attempt = (retries - 1) - j; ++ int hlim = min_ttl + step + j - retries; + + if ((hlim > max_ttl) || (hlim < min_ttl)) + continue; |