2
0
mirror of synced 2025-02-24 14:48:27 +00:00
torrent/pex.go

33 lines
844 B
Go
Raw Normal View History

2015-08-17 19:52:47 +10:00
package torrent
import "github.com/anacrolix/dht/krpc"
2015-08-17 19:52:47 +10:00
type peerExchangeMessage struct {
Added krpc.CompactIPv4NodeAddrs `bencode:"added"`
AddedFlags []pexPeerFlags `bencode:"added.f"`
Added6 krpc.CompactIPv6NodeAddrs `bencode:"added6"`
2018-02-13 00:50:32 +11:00
Added6Flags []pexPeerFlags `bencode:"added6.f"`
Dropped krpc.CompactIPv4NodeAddrs `bencode:"dropped"`
Dropped6 krpc.CompactIPv6NodeAddrs `bencode:"dropped6"`
2015-08-17 19:52:47 +10:00
}
type pexPeerFlags byte
2018-02-13 00:50:32 +11:00
func (me pexPeerFlags) Get(f pexPeerFlags) bool {
return me&f == f
}
const (
pexPrefersEncryption = 0x01
pexSeedUploadOnly = 0x02
pexSupportsUtp = 0x04
pexHolepunchSupport = 0x08
pexOutgoingConn = 0x10
)
2018-02-13 00:50:32 +11:00
func (me *peerExchangeMessage) AddedPeers() (ret Peers) {
ret.FromPex(me.Added, me.AddedFlags)
ret.FromPex(me.Added6, me.Added6Flags)
return
}