Index: share/man/man4/ip.4 =================================================================== --- share/man/man4/ip.4 +++ share/man/man4/ip.4 @@ -92,8 +92,8 @@ .Dv IP_TOS and .Dv IP_TTL -may be used to set the type-of-service and time-to-live -fields in the +may be used to set the differential service codepoint (DSCP) and +time-to-live (TTL) fields in the .Tn IP header for .Dv SOCK_STREAM , SOCK_DGRAM , @@ -102,8 +102,8 @@ sockets. For example, .Bd -literal -int tos = IPTOS_LOWDELAY; /* see */ -setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)); +int dscp = IPTOS_DSCP_EF; /* see */ +setsockopt(s, IPPROTO_IP, IP_TOS, &dscp, sizeof(dscp)); int ttl = 60; /* max = 255 */ setsockopt(s, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl)); Index: sys/netinet/ip.h =================================================================== --- sys/netinet/ip.h +++ sys/netinet/ip.h @@ -79,7 +79,7 @@ #define IPTOS_LOWDELAY 0x10 #define IPTOS_THROUGHPUT 0x08 #define IPTOS_RELIABILITY 0x04 -#define IPTOS_MINCOST 0x02 +#define IPTOS_MINCOST IPTOS_DSCP_CS0 /* * Definitions for IP precedence (also in ip_tos) (deprecated). Index: sys/netinet/tcp_usrreq.c =================================================================== --- sys/netinet/tcp_usrreq.c +++ sys/netinet/tcp_usrreq.c @@ -82,6 +82,7 @@ #include #include #include +#include #include #ifdef INET6 #include @@ -1757,6 +1758,12 @@ case IPPROTO_IP: switch (sopt->sopt_name) { case IP_TOS: + int optval; + if (sooptcopyin(sopt, &optval, sizeof optval, + sizeof optval)) + break; + inp->inp_ip_tos = optval & ~IPTOS_ECN_MASK; + break; case IP_TTL: /* Notify tcp stacks that care (e.g. RACK). */ break;