On Fri, Nov 09, 2018 at 05:07:10PM +1000, David Gwynne wrote:
> On Fri, Nov 09, 2018 at 06:33:46AM +0100, Florian Obser wrote:
> > please update usage(), then it's OK florian@
> > 
> > Could you do tracerute6, too?
> 
> like this?
> 

Can you also update traceroute.8 ? :)


> Index: sbin/ping/ping.8
> ===================================================================
> RCS file: /cvs/src/sbin/ping/ping.8,v
> retrieving revision 1.59
> diff -u -p -r1.59 ping.8
> --- sbin/ping/ping.8  26 Oct 2016 16:18:45 -0000      1.59
> +++ sbin/ping/ping.8  9 Nov 2018 07:00:46 -0000
> @@ -87,6 +87,7 @@
>  .Op Fl l Ar preload
>  .Op Fl p Ar pattern
>  .Op Fl s Ar packetsize
> +.Op Fl T Ar toskeyword
>  .Op Fl V Ar rtable
>  .Op Fl w Ar maxwait
>  .Ar host
> @@ -221,8 +222,7 @@ which translates into 64 ICMP data bytes
>  when combined with the 8 bytes of ICMP header data.
>  The maximum packet size is 65467 for IPv4 and 65527 for IPv6.
>  .It Fl T Ar toskeyword
> -.Pq IPv4 only
> -Change the TOS value.
> +Change the IPv4 TOS or IPv6 Traffic Class value.
>  .Ar toskeyword
>  may be one of
>  .Cm critical ,
> Index: sbin/ping/ping.c
> ===================================================================
> RCS file: /cvs/src/sbin/ping/ping.c,v
> retrieving revision 1.230
> diff -u -p -r1.230 ping.c
> --- sbin/ping/ping.c  14 Oct 2018 19:47:53 -0000      1.230
> +++ sbin/ping/ping.c  9 Nov 2018 07:00:46 -0000
> @@ -150,7 +150,7 @@ int options;
>  /*                   0x0200 */
>  #define      F_HDRINCL       0x0400
>  #define      F_TTL           0x0800
> -/*                   0x1000 */
> +#define      F_TOS           0x1000
>  #define      F_AUD_RECV      0x2000
>  #define      F_AUD_MISS      0x4000
>  
> @@ -291,7 +291,7 @@ main(int argc, char *argv[])
>       preload = 0;
>       datap = &outpack[ECHOLEN + ECHOTMLEN];
>       while ((ch = getopt(argc, argv, v6flag ?
> -         "c:dEefHh:I:i:Ll:mNnp:qS:s:V:vw:" :
> +         "c:dEefHh:I:i:Ll:mNnp:qS:s:T:V:vw:" :
>           "DEI:LRS:c:defHi:l:np:qs:T:t:V:vw:")) != -1) {
>               switch(ch) {
>               case 'c':
> @@ -386,6 +386,7 @@ main(int argc, char *argv[])
>  #ifndef SMALL
>               case 'T':
>                       options |= F_HDRINCL;
> +                     options |= F_TOS;
>                       errno = 0;
>                       errstr = NULL;
>                       if (map_tos(optarg, &tos))
> @@ -673,6 +674,13 @@ main(int argc, char *argv[])
>                       *(int *)(CMSG_DATA(scmsg)) = hoplimit;
>               }
>  
> +             if (options & F_TOS) {
> +                     optval = tos;
> +                     if (setsockopt(s, IPPROTO_IPV6, IPV6_TCLASS, &optval,
> +                         (socklen_t)sizeof(optval)) < 0)
> +                             warn("setsockopt(IPV6_TVAL)"); /* XXX err? */
> +             }
> +
>               optval = 1;
>               if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &optval,
>                   (socklen_t)sizeof(optval)) < 0)
> @@ -2160,7 +2168,8 @@ usage(void)
>               fprintf(stderr,
>                   "usage: ping6 [-dEefHLmnqv] [-c count] [-h hoplimit] "
>                   "[-I sourceaddr]\n\t[-i wait] [-l preload] [-p pattern] "
> -                 "[-s packetsize] [-V rtable]\n\t[-w maxwait] host\n");
> +                 "[-s packetsize] [-T toskeyword]\n\t"
> +                 "[-V rtable] [-w maxwait] host\n");
>       } else {
>               fprintf(stderr,
>                   "usage: ping [-DdEefHLnqRv] [-c count] [-I ifaddr]"
> Index: usr.sbin/traceroute/traceroute.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/traceroute/traceroute.c,v
> retrieving revision 1.157
> diff -u -p -r1.157 traceroute.c
> --- usr.sbin/traceroute/traceroute.c  20 Oct 2018 19:55:01 -0000      1.157
> +++ usr.sbin/traceroute/traceroute.c  9 Nov 2018 07:00:46 -0000
> @@ -414,7 +414,7 @@ main(int argc, char *argv[])
>               err(1, "sysctl");
>       conf->max_ttl = i;
>  
> -     while ((ch = getopt(argc, argv, v6flag ? "AcDdf:Ilm:np:q:Ss:w:vV:" :
> +     while ((ch = getopt(argc, argv, v6flag ? "AcDdf:Ilm:np:q:Ss:t:w:vV:" :
>           "AcDdf:g:Ilm:nP:p:q:Ss:t:V:vw:x")) != -1)
>               switch (ch) {
>               case 'A':
> @@ -802,6 +802,12 @@ main(int argc, char *argv[])
>                   0)
>                       err(1, "bind sndsock");
>  
> +             if (conf->tflag) {
> +                     if (setsockopt(sndsock, IPPROTO_IPV6, IPV6_TCLASS,
> +                         &conf->tos, sizeof(conf->tos)) < 0)
> +                             err(6, "IPV6_TCLASS");
> +             }
> +
>               len = sizeof(from6);
>               if (getsockname(sndsock, (struct sockaddr *)&from6, &len) < 0)
>                       err(1, "getsockname");
> @@ -943,10 +949,10 @@ void
>  usage(int v6flag)
>  {
>       if (v6flag) {
> -             fprintf(stderr, "usage: traceroute6 [-AcDdIlnSv] [-f first_hop] 
> "
> -                 "[-m max_hop] [-p port]\n"
> -                 "\t[-q nqueries] [-s src_addr] [-V rtable] [-w waittime] "
> -                 "host\n\t[datalen]\n");
> +             fprintf(stderr, "usage: %s "
> +                 "[-AcDdIlnSv] [-f first_hop] [-m max_hop] [-p port]\n"
> +                 "\t[-q nqueries] [-s src_addr] [-t toskeyword] [-V rtable] "
> +                 "[-w waittime]\n\thost [datalen]\n", __progname);
>       } else {
>               fprintf(stderr,
>                   "usage: %s [-AcDdIlnSvx] [-f first_ttl] [-g gateway_addr] "
> 

Reply via email to