summaryrefslogtreecommitdiff
path: root/package/ndisc/patches/patch-src_traceroute_c
diff options
context:
space:
mode:
authorwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
committerwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
commit219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch)
treeb9c0f3c43aebba2fcfef777592d0add39f2072f4 /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_c128
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;