| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 
							- package internet
 
- import (
 
- 	"syscall"
 
- 	"v2ray.com/core/common/net"
 
- )
 
- const (
 
- 	// TCP_FASTOPEN is the socket option on darwin for TCP fast open.
 
- 	TCP_FASTOPEN = 0x105
 
- 	// TCP_FASTOPEN_SERVER is the value to enable TCP fast open on darwin for server connections.
 
- 	TCP_FASTOPEN_SERVER = 0x01
 
- 	// TCP_FASTOPEN_CLIENT is the value to enable TCP fast open on darwin for client connections.
 
- 	TCP_FASTOPEN_CLIENT = 0x02
 
- )
 
- func applyOutboundSocketOptions(network string, address string, fd uintptr, config *SocketConfig) error {
 
- 	if isTCPSocket(network) {
 
- 		switch config.Tfo {
 
- 		case SocketConfig_Enable:
 
- 			if err := syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, TCP_FASTOPEN, TCP_FASTOPEN_CLIENT); err != nil {
 
- 				return err
 
- 			}
 
- 		case SocketConfig_Disable:
 
- 			if err := syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, TCP_FASTOPEN, 0); err != nil {
 
- 				return err
 
- 			}
 
- 		}
 
- 	}
 
- 	return nil
 
- }
 
- func applyInboundSocketOptions(network string, fd uintptr, config *SocketConfig) error {
 
- 	if isTCPSocket(network) {
 
- 		switch config.Tfo {
 
- 		case SocketConfig_Enable:
 
- 			if err := syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, TCP_FASTOPEN, TCP_FASTOPEN_SERVER); err != nil {
 
- 				return err
 
- 			}
 
- 		case SocketConfig_Disable:
 
- 			if err := syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, TCP_FASTOPEN, 0); err != nil {
 
- 				return err
 
- 			}
 
- 		}
 
- 	}
 
- 	return nil
 
- }
 
- func bindAddr(fd uintptr, address net.Address, port net.Port) error {
 
- 	return nil
 
- }
 
 
  |