]> Sergey Matveev's repositories - btrtrc.git/blobdiff - netip-addrport.go
Relax TestTcpSimultaneousOpen
[btrtrc.git] / netip-addrport.go
index cf9edfd5ed753e001e9f9d4713753be35c5d9e8e..a57ea2067070a4f71668e1491bceada232f949aa 100644 (file)
@@ -2,12 +2,15 @@ package torrent
 
 import (
        "fmt"
-       "net"
        "net/netip"
 
        "github.com/anacrolix/dht/v2/krpc"
 )
 
+type addrPorter interface {
+       AddrPort() netip.AddrPort
+}
+
 func ipv4AddrPortFromKrpcNodeAddr(na krpc.NodeAddr) (_ netip.AddrPort, err error) {
        ip4 := na.IP.To4()
        if ip4 == nil {
@@ -32,9 +35,7 @@ func ipv6AddrPortFromKrpcNodeAddr(na krpc.NodeAddr) (_ netip.AddrPort, err error
 
 func addrPortFromPeerRemoteAddr(pra PeerRemoteAddr) (netip.AddrPort, error) {
        switch v := pra.(type) {
-       case *net.TCPAddr:
-               return v.AddrPort(), nil
-       case *net.UDPAddr:
+       case addrPorter:
                return v.AddrPort(), nil
        case netip.AddrPort:
                return v, nil
@@ -42,3 +43,10 @@ func addrPortFromPeerRemoteAddr(pra PeerRemoteAddr) (netip.AddrPort, error) {
                return netip.ParseAddrPort(pra.String())
        }
 }
+
+func krpcNodeAddrFromAddrPort(addrPort netip.AddrPort) krpc.NodeAddr {
+       return krpc.NodeAddr{
+               IP:   addrPort.Addr().AsSlice(),
+               Port: int(addrPort.Port()),
+       }
+}