Skip to content

Commit ae98dc7

Browse files
authored
Set unix.SO_REUSEPORT=1 for TPROXY Inbound FakeUDP
Solved some issues.
1 parent 8ff4351 commit ae98dc7

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

proxy/dokodemo/fakeudp_linux.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"net"
88
"os"
99
"syscall"
10+
11+
"golang.org/x/sys/unix"
1012
)
1113

1214
func FakeUDP(addr *net.UDPAddr, mark int) (net.PacketConn, error) {
@@ -33,6 +35,11 @@ func FakeUDP(addr *net.UDPAddr, mark int) (net.PacketConn, error) {
3335
return nil, &net.OpError{Op: "fake", Err: fmt.Errorf("set socket option: SO_REUSEADDR: %s", err)}
3436
}
3537

38+
if err = syscall.SetsockoptInt(fileDescriptor, syscall.SOL_SOCKET, unix.SO_REUSEPORT, 1); err != nil {
39+
syscall.Close(fileDescriptor)
40+
return nil, &net.OpError{Op: "fake", Err: fmt.Errorf("set socket option: SO_REUSEPORT: %s", err)}
41+
}
42+
3643
if err = syscall.SetsockoptInt(fileDescriptor, syscall.SOL_IP, syscall.IP_TRANSPARENT, 1); err != nil {
3744
syscall.Close(fileDescriptor)
3845
return nil, &net.OpError{Op: "fake", Err: fmt.Errorf("set socket option: IP_TRANSPARENT: %s", err)}

0 commit comments

Comments
 (0)