hub_linux_test.go 996 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // +build linux
  2. package udp_test
  3. import (
  4. "os"
  5. "syscall"
  6. "testing"
  7. "v2ray.com/core/common/alloc"
  8. v2net "v2ray.com/core/common/net"
  9. "v2ray.com/core/proxy"
  10. "v2ray.com/core/testing/assert"
  11. "v2ray.com/core/transport/internet/internal"
  12. . "v2ray.com/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. val, err := syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_TRANSPARENT)
  29. assert.Error(err).IsNil()
  30. assert.Int(val).Equals(1)
  31. val, err = syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_RECVORIGDSTADDR)
  32. assert.Error(err).IsNil()
  33. assert.Int(val).Equals(1)
  34. }