Chromium Code Reviews| Index: net/udp/udp_socket_libevent.cc |
| diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc |
| index 90c7da6504103dead9150b5cf28adde33b598f5f..363f87f0f6f1298ef68a0088f45e633068d9190d 100644 |
| --- a/net/udp/udp_socket_libevent.cc |
| +++ b/net/udp/udp_socket_libevent.cc |
| @@ -651,4 +651,24 @@ int UDPSocketLibevent::SetMulticastLoopbackMode(bool loopback) { |
| socket_options_ &= ~SOCKET_OPTION_MULTICAST_LOOP; |
| return OK; |
| } |
| + |
| +int UDPSocketLibevent::SetDiffServCodePoint(DiffServCodePoint dscp) { |
| + if (dscp == DSCP_NO_CHANGE) { |
| + return OK; |
| + } |
| + int rv; |
| + int dscp_and_ecn = dscp << 2; |
| + if (addr_family_ == AF_INET) { |
| + rv = setsockopt(socket_, IPPROTO_IP, IP_TOS, |
|
cbentzel
2013/08/23 04:05:35
Looks like this may not work on XP. http://support
|
| + &dscp_and_ecn, sizeof(dscp_and_ecn)); |
| + } else { |
| + rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_TCLASS, |
| + &dscp_and_ecn, sizeof(dscp_and_ecn)); |
| + } |
| + if (rv < 0) |
| + return MapSystemError(errno); |
| + |
| + return OK; |
| +} |
| + |
| } // namespace net |