4 "github.com/anacrolix/dht/v2/krpc"
6 "github.com/anacrolix/torrent/bencode"
10 Added krpc.CompactIPv4NodeAddrs `bencode:"added"`
11 AddedFlags []PexPeerFlags `bencode:"added.f"`
12 Added6 krpc.CompactIPv6NodeAddrs `bencode:"added6"`
13 Added6Flags []PexPeerFlags `bencode:"added6.f"`
14 Dropped krpc.CompactIPv4NodeAddrs `bencode:"dropped"`
15 Dropped6 krpc.CompactIPv6NodeAddrs `bencode:"dropped6"`
18 func (m *PexMsg) Len() int {
19 return len(m.Added) + len(m.Added6) + len(m.Dropped) + len(m.Dropped6)
22 func (m *PexMsg) Message(pexExtendedId ExtensionNumber) Message {
23 payload := bencode.MustMarshal(m)
26 ExtendedID: pexExtendedId,
27 ExtendedPayload: payload,
31 func LoadPexMsg(b []byte) (ret PexMsg, err error) {
32 err = bencode.Unmarshal(b, &ret)
36 type PexPeerFlags byte
38 func (me PexPeerFlags) Get(f PexPeerFlags) bool {
43 PexPrefersEncryption PexPeerFlags = 1 << iota