// connect to other clients that actually try to holepunch TCP.
const dialTcpFromListenPort = false
+var SocketIPTypeOfService = 0
+
var tcpListenConfig = net.ListenConfig{
Control: func(network, address string, c syscall.RawConn) (err error) {
controlErr := c.Control(func(fd uintptr) {
if dialTcpFromListenPort {
err = setReusePortSockOpts(fd)
}
+ if err == nil && SocketIPTypeOfService != 0 {
+ err = setSockIPTOS(fd, SocketIPTypeOfService)
+ }
})
if err != nil {
return
if dialTcpFromListenPort {
err = setReusePortSockOpts(fd)
}
+ if err == nil && SocketIPTypeOfService != 0 {
+ err = setSockIPTOS(fd, SocketIPTypeOfService)
+ }
})
if err == nil {
err = controlErr
func setSockNoLinger(fd uintptr) (err error) {
return syscall.SetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER, &lingerOffVal)
}
+
+func setSockIPTOS(fd uintptr, val int) (err error) {
+ return syscall.SetsockoptInt(int(fd), syscall.IPPROTO_IP, syscall.IP_TOS, val)
+}
func setSockNoLinger(fd uintptr) (err error) {
return syscall.SetsockoptLinger(syscall.Handle(fd), syscall.SOL_SOCKET, syscall.SO_LINGER, &lingerOffVal)
}
+
+func setSockIPTOS(fd uintptr, val int) (err error) {
+ return nil
+}