github.com/eagleql/xray-core@v1.4.4/transport/internet/tcp/sockopt_freebsd.go (about) 1 // +build freebsd 2 3 package tcp 4 5 import ( 6 "github.com/eagleql/xray-core/common/net" 7 "github.com/eagleql/xray-core/transport/internet" 8 ) 9 10 // GetOriginalDestination from tcp conn 11 func GetOriginalDestination(conn internet.Connection) (net.Destination, error) { 12 la := conn.LocalAddr() 13 ra := conn.RemoteAddr() 14 ip, port, err := internet.OriginalDst(la, ra) 15 if err != nil { 16 return net.Destination{}, newError("failed to get destination").Base(err) 17 } 18 dest := net.TCPDestination(net.IPAddress(ip), net.Port(port)) 19 if !dest.IsValid() { 20 return net.Destination{}, newError("failed to parse destination.") 21 } 22 return dest, nil 23 }