hub_linux_test.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // +build linux
  2. package udp_test
  3. import (
  4. "os"
  5. "syscall"
  6. "testing"
  7. "github.com/v2ray/v2ray-core/common/alloc"
  8. v2net "github.com/v2ray/v2ray-core/common/net"
  9. "github.com/v2ray/v2ray-core/proxy"
  10. "github.com/v2ray/v2ray-core/testing/assert"
  11. "github.com/v2ray/v2ray-core/transport/internet/internal"
  12. . "github.com/v2ray/v2ray-core/transport/internet/udp"
  13. )
  14. func TestHubSocksOption(t *testing.T) {
  15. assert := assert.On(t)
  16. if os.Geteuid() != 0 {
  17. // This test case requires root permission.
  18. return
  19. }
  20. hub, err := ListenUDP(v2net.LocalHostIP, v2net.Port(0), ListenOption{
  21. Callback: func(*alloc.Buffer, *proxy.SessionInfo) {},
  22. ReceiveOriginalDest: true,
  23. })
  24. assert.Error(err).IsNil()
  25. conn := hub.Connection()
  26. fd, err := internal.GetSysFd(conn)
  27. assert.Error(err).IsNil()
  28. v, err := syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_TRANSPARENT)
  29. assert.Error(err).IsNil()
  30. assert.Int(v).Equals(1)
  31. v, err = syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_RECVORIGDSTADDR)
  32. assert.Error(err).IsNil()
  33. assert.Int(v).Equals(1)
  34. }