6 "github.com/anacrolix/dht/v2/krpc"
7 "github.com/anacrolix/torrent/bencode"
11 Added krpc.CompactIPv4NodeAddrs `bencode:"added"`
12 AddedFlags []PexPeerFlags `bencode:"added.f"`
13 Added6 krpc.CompactIPv6NodeAddrs `bencode:"added6"`
14 Added6Flags []PexPeerFlags `bencode:"added6.f"`
15 Dropped krpc.CompactIPv4NodeAddrs `bencode:"dropped"`
16 Dropped6 krpc.CompactIPv6NodeAddrs `bencode:"dropped6"`
19 func (m *PexMsg) AppendAdded(addr krpc.NodeAddr, f PexPeerFlags) {
22 m.Added = append(m.Added, addr)
23 m.AddedFlags = append(m.AddedFlags, f)
24 } else if len(ip) == net.IPv6len {
25 m.Added6 = append(m.Added6, addr)
26 m.Added6Flags = append(m.Added6Flags, f)
30 func (m *PexMsg) AppendDropped(addr krpc.NodeAddr) {
33 m.Dropped = append(m.Dropped, addr)
34 } else if len(ip) == net.IPv6len {
35 m.Dropped6 = append(m.Dropped6, addr)
39 func (pexMsg *PexMsg) Message(pexExtendedId ExtensionNumber) Message {
40 payload := bencode.MustMarshal(pexMsg)
43 ExtendedID: pexExtendedId,
44 ExtendedPayload: payload,
48 type PexPeerFlags byte
50 func (me PexPeerFlags) Get(f PexPeerFlags) bool {
55 PexPrefersEncryption PexPeerFlags = 1 << iota