src/share/classes/sun/nio/ch/DatagramChannelImpl.java

Print this page
rev 7398 : 8032808: Support Solaris SO_FLOW_SLA socket option
Reviewed-by: michaelm
rev 7400 : 8029607: Type of Service (TOS) cannot be set in IPv6 header
Reviewed-by: alanb

*** 31,40 **** --- 31,41 ---- import java.nio.ByteBuffer; import java.nio.channels.*; import java.nio.channels.spi.*; import java.util.*; import sun.net.ResourceManager; + import sun.net.ExtendedOptionsImpl; /** * An implementation of DatagramChannels. */
*** 192,210 **** throw new UnsupportedOperationException("'" + name + "' not supported"); synchronized (stateLock) { ensureOpen(); ! if (name == StandardSocketOptions.IP_TOS) { ! // IPv4 only; no-op for IPv6 ! if (family == StandardProtocolFamily.INET) { ! Net.setSocketOption(fd, family, name, value); ! } ! return this; ! } ! ! if (name == StandardSocketOptions.IP_MULTICAST_TTL || name == StandardSocketOptions.IP_MULTICAST_LOOP) { // options are protocol dependent Net.setSocketOption(fd, family, name, value); return this; --- 193,204 ---- throw new UnsupportedOperationException("'" + name + "' not supported"); synchronized (stateLock) { ensureOpen(); ! if (name == StandardSocketOptions.IP_TOS || ! name == StandardSocketOptions.IP_MULTICAST_TTL || name == StandardSocketOptions.IP_MULTICAST_LOOP) { // options are protocol dependent Net.setSocketOption(fd, family, name, value); return this;
*** 253,272 **** throw new UnsupportedOperationException("'" + name + "' not supported"); synchronized (stateLock) { ensureOpen(); ! if (name == StandardSocketOptions.IP_TOS) { ! // IPv4 only; always return 0 on IPv6 ! if (family == StandardProtocolFamily.INET) { ! return (T) Net.getSocketOption(fd, family, name); ! } else { ! return (T) Integer.valueOf(0); ! } ! } ! ! if (name == StandardSocketOptions.IP_MULTICAST_TTL || name == StandardSocketOptions.IP_MULTICAST_LOOP) { return (T) Net.getSocketOption(fd, family, name); } --- 247,258 ---- throw new UnsupportedOperationException("'" + name + "' not supported"); synchronized (stateLock) { ensureOpen(); ! if (name == StandardSocketOptions.IP_TOS || ! name == StandardSocketOptions.IP_MULTICAST_TTL || name == StandardSocketOptions.IP_MULTICAST_LOOP) { return (T) Net.getSocketOption(fd, family, name); }
*** 315,324 **** --- 301,313 ---- set.add(StandardSocketOptions.SO_BROADCAST); set.add(StandardSocketOptions.IP_TOS); set.add(StandardSocketOptions.IP_MULTICAST_IF); set.add(StandardSocketOptions.IP_MULTICAST_TTL); set.add(StandardSocketOptions.IP_MULTICAST_LOOP); + if (ExtendedOptionsImpl.flowSupported()) { + set.add(jdk.net.ExtendedSocketOptions.SO_FLOW_SLA); + } return Collections.unmodifiableSet(set); } } @Override