hub_linux_test.go 1022 B

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