| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // +build linux
- package udp_test
- import (
- "os"
- "syscall"
- "testing"
- "v2ray.com/core/common/buf"
- v2net "v2ray.com/core/common/net"
- "v2ray.com/core/testing/assert"
- "v2ray.com/core/transport/internet/internal"
- . "v2ray.com/core/transport/internet/udp"
- )
- func TestHubSocksOption(t *testing.T) {
- assert := assert.On(t)
- if os.Geteuid() != 0 {
- // This test case requires root permission.
- return
- }
- hub, err := ListenUDP(v2net.LocalHostIP, v2net.Port(0), ListenOption{
- Callback: func(*buf.Buffer, v2net.Destination, v2net.Destination) {},
- ReceiveOriginalDest: true,
- })
- assert.Error(err).IsNil()
- conn := hub.Connection()
- fd, err := internal.GetSysFd(conn)
- assert.Error(err).IsNil()
- val, err := syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_TRANSPARENT)
- assert.Error(err).IsNil()
- assert.Int(val).Equals(1)
- val, err = syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_RECVORIGDSTADDR)
- assert.Error(err).IsNil()
- assert.Int(val).Equals(1)
- }
|