Browse Source

Set unix.SO_REUSEPORT=1 for TPROXY Inbound FakeUDP

Solved some issues.
pull/201/head
RPRX 4 years ago committed by GitHub
parent
commit
ae98dc75cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      proxy/dokodemo/fakeudp_linux.go

7
proxy/dokodemo/fakeudp_linux.go

@ -7,6 +7,8 @@ import (
"net"
"os"
"syscall"
"golang.org/x/sys/unix"
)
func FakeUDP(addr *net.UDPAddr, mark int) (net.PacketConn, error) {
@ -33,6 +35,11 @@ func FakeUDP(addr *net.UDPAddr, mark int) (net.PacketConn, error) {
return nil, &net.OpError{Op: "fake", Err: fmt.Errorf("set socket option: SO_REUSEADDR: %s", err)}
}
if err = syscall.SetsockoptInt(fileDescriptor, syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil {
syscall.Close(fileDescriptor)
return nil, &net.OpError{Op: "fake", Err: fmt.Errorf("set socket option: SO_REUSEPORT: %s", err)}
}
if err = syscall.SetsockoptInt(fileDescriptor, syscall.SOL_IP, syscall.IP_TRANSPARENT, 1); err != nil {
syscall.Close(fileDescriptor)
return nil, &net.OpError{Op: "fake", Err: fmt.Errorf("set socket option: IP_TRANSPARENT: %s", err)}

Loading…
Cancel
Save