|
@@ -1,128 +0,0 @@
|
|
|
-$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:29:37.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;
|
|
|
-+
|
|
|
- /* 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;
|