[PATCH] add traceroute6 applet

Denys Vlasenko vda.linux at googlemail.com
Tue Nov 24 01:20:53 UTC 2009


On Monday 23 November 2009 19:06, Leonid Lisovskiy wrote:
> On Mon, Nov 23, 2009 at 8:24 AM, Denys Vlasenko
> <vda.linux at googlemail.com> wrote:
> 
> >
> > +#if ENABLE_TRACEROUTE6
> > +       else if (af == AF_INET6) {
> > +               struct sockaddr_in6 firsthop = dest_lsa->u.sin6;
> > +               len_and_sockaddr *source_lsa;
> > +               int probe_fd = xsocket(AF_INET6, SOCK_DGRAM, 0);
> > +
> > +               if (op & OPT_DEVICE) {
> > +                       setsockopt_bindtodevice(probe_fd, device);
> > +               }
> > +               firsthop.sin6_port = htons(1025);
> > +               xconnect(probe_fd, (struct sockaddr*)&firsthop, sizeof(firsthop));
> > +               source_lsa = get_sock_lsa(probe_fd);
> > +               if (source_lsa == NULL)
> > +                       bb_error_msg_and_die("can't get probe addr");
> > +               close(probe_fd);
> > +               source_lsa->u.sin6.sin6_port = 0;
> > +
> > +               xbind(sndsock, &source_lsa->u.sa, source_lsa->len);
> > +               xbind(rcvsock, &source_lsa->u.sa, source_lsa->len);
> > +               free(source_lsa);
> > +       }
> > +#endif
> >
> > What this code does? Why we don't do it for IPv4?
> 
> I copied this part of code from original traceroute6. Sorry, don't
> know it's exact purpose :(
> 
> > Please review attached patch.
> well done!
> 
> > Please try current git, I tested only "traceroute -6 ::1" ...
> Unfortunately, some part of logic were broken:
> 
> $ ./traceroute6.old ipv6.google.com
> traceroute to ipv6.google.com (2001:4860:a003::68), 30 hops max, 16 byte packets
>  1  lly-1.tunnel.tserv24.sto1.ipv6.he.net (2001:470:27:10a::1)  19.726
> ms  20.205 ms  19.876 ms
>  2  gige-g2-20.core1.sto1.he.net (2001:470:0:11e::1)  21.942 ms
> 19.738 ms  19.667 ms
>  3  10gigabitethernet3-3.core1.fra1.he.net (2001:470:0:110::1)  44.269
> ms  44.588 ms  44.491 ms
>  4  de-cix10.net.google.com (2001:7f8::3b41:0:1)  46.607 ms  45.039 ms
>  82.129 ms
>  5  *  *  *
>  6  fx-in-x68.1e100.net (2001:4860:a003::68)  45.759 ms  46.032 ms  46.416 ms
> 
> 
> $ ./traceroute6.new ipv6.google.com
> traceroute to ipv6.google.com (2001:4860:a003::68), 30 hops max, 16 byte packets
>  1  lly-1.tunnel.tserv24.sto1.ipv6.he.net (2001:470:27:10a::1)  22.040
> ms  22.335 ms  23.165 ms
>  2  gige-g2-20.core1.sto1.he.net (2001:470:0:11e::1)  19.792 ms
> 22.004 ms  23.475 ms
>  3  10gigabitethernet3-3.core1.fra1.he.net (2001:470:0:110::1)  50.445
> ms  48.177 ms  50.867 ms
>  4  de-cix10.net.google.com (2001:7f8::3b41:0:1)  47.779 ms !S  52.634
> ms !S  46.719 ms !S
> 
> Will try to find problem, but it will take some time.


Please show output of "tcpdump -s0 -nl -xX host 2001:4860:a003::68 or icmp"
for both cases, and attach a strace log of both cases using this cmd:
strace -oLOGFILE -tt -s999 ./traceroute6.old/new ipv6.google.com

--
vda


More information about the busybox mailing list