Hi Jason, Thanks very much for your response!
I check the ping & traceroute code, For ping: if (options & F_TTL) { if (IN_MULTICAST(ntohl(dst4.sin_addr.s_addr))) moptions |= MULTICAST_TTL; else options |= F_HDRINCL; } For traceroute: void check_tos(struct ip *ip, int *last_tos) { struct icmp *icp; struct ip *inner_ip; icp = (struct icmp *) (((u_char *)ip)+(ip->ip_hl<<2)); inner_ip = (struct ip *) (((u_char *)icp)+8); if (inner_ip->ip_tos != *last_tos) printf (" (TOS=%d!)", inner_ip->ip_tos); *last_tos = inner_ip->ip_tos; } They indeed don't handle IPv6. But for netcat, it actually hangle IPv6 case at leaet from code in preceding mail. If netcat doesn't want to handle IPv6 intentionally, I think the IPv6 code should be removed, thanks! Best Regards Nan Xiao On Thu, Sep 20, 2018 at 7:45 PM Jason McIntyre <j...@kerhand.co.uk> wrote: > > On Wed, Sep 19, 2018 at 06:35:13PM +0800, Nan Xiao wrote: > > Hi tech@, > > > > For `-T' option explanation in netcat manual: > > > > -T keyword > > Change the IPv4 TOS value or the TLS options. > > > > But in fact, the netcat code not only processes IPv4 but also IPv6: > > > > if (Tflag != -1) { > > if (af == AF_INET && setsockopt(s, IPPROTO_IP, > > IP_TOS, &Tflag, sizeof(Tflag)) == -1) > > err(1, "set IP ToS"); > > > > else if (af == AF_INET6 && setsockopt(s, IPPROTO_IPV6, > > IPV6_TCLASS, &Tflag, sizeof(Tflag)) == -1) > > err(1, "set IPv6 traffic class"); > > } > > > > So I think maybe the netcat manual should be enriched at least for `-T' > > option, thanks! > > > > hi. > > i think if you submit a diff, there will be a better chance of getting > an ok (or otherwise). > > i'm unsure about -T myself. i know that we synced the -T options for > ping/nc/traceroute to keep them in sync with pf, but none of those other > docs claim support for ip6 classes - actually quite the opposite. > so i'm unsure if they work (have you tested?) or whether we want to > document them. > > jmc >