hub_linux_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // +build linux
  2. package udp_test
  3. import (
  4. "runtime"
  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"
  12. . "github.com/v2ray/v2ray-core/transport/internet/udp"
  13. )
  14. func TestHubSocksOption(t *testing.T) {
  15. assert := assert.On(t)
  16. hub, err := ListenUDP(v2net.LocalHostIP, v2net.Port(0), ListenOption{
  17. Callback: func(*alloc.Buffer, *proxy.SessionInfo) {},
  18. ReceiveOriginalDest: true,
  19. })
  20. assert.Error(err).IsNil()
  21. conn := hub.Connection()
  22. sysfd, ok := conn.(internet.SysFd)
  23. assert.Bool(ok).IsTrue()
  24. fd, err := sysfd.SysFd()
  25. assert.Error(err).IsNil()
  26. v, err := syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_TRANSPARENT)
  27. assert.Error(err).IsNil()
  28. assert.Int(v).Equals(1)
  29. v, err = syscall.GetsockoptInt(fd, syscall.SOL_IP, syscall.IP_RECVORIGDSTADDR)
  30. assert.Error(err).IsNil()
  31. assert.Int(v).Equals(1)
  32. }