hub_linux_test.go 986 B

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