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