|
|
@@ -17,8 +17,15 @@ type Destination interface {
|
|
|
IsUDP() bool // True if destination is reachable via UDP
|
|
|
}
|
|
|
|
|
|
-func TCPDestinationFromAddr(addr *net.TCPAddr) Destination {
|
|
|
- return TCPDestination(IPAddress(addr.IP), Port(addr.Port))
|
|
|
+func DestinationFromAddr(addr net.Addr) Destination {
|
|
|
+ switch addr := addr.(type) {
|
|
|
+ case *net.TCPAddr:
|
|
|
+ return TCPDestination(IPAddress(addr.IP), Port(addr.Port))
|
|
|
+ case *net.UDPAddr:
|
|
|
+ return UDPDestination(IPAddress(addr.IP), Port(addr.Port))
|
|
|
+ default:
|
|
|
+ panic("Unknown address type.")
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// TCPDestination creates a TCP destination with given address
|
|
|
@@ -26,10 +33,6 @@ func TCPDestination(address Address, port Port) Destination {
|
|
|
return &tcpDestination{address: address, port: port}
|
|
|
}
|
|
|
|
|
|
-func UDPDestinationFromAddr(addr *net.UDPAddr) Destination {
|
|
|
- return UDPDestination(IPAddress(addr.IP), Port(addr.Port))
|
|
|
-}
|
|
|
-
|
|
|
// UDPDestination creates a UDP destination with given address
|
|
|
func UDPDestination(address Address, port Port) Destination {
|
|
|
return &udpDestination{address: address, port: port}
|