(ip1, ip2 []byte)
| 33 | } |
| 34 | |
| 35 | func commonBits(ip1, ip2 []byte) uint8 { |
| 36 | size := len(ip1) |
| 37 | if size == net.IPv4len { |
| 38 | a := binary.BigEndian.Uint32(ip1) |
| 39 | b := binary.BigEndian.Uint32(ip2) |
| 40 | x := a ^ b |
| 41 | return uint8(bits.LeadingZeros32(x)) |
| 42 | } else if size == net.IPv6len { |
| 43 | a := binary.BigEndian.Uint64(ip1) |
| 44 | b := binary.BigEndian.Uint64(ip2) |
| 45 | x := a ^ b |
| 46 | if x != 0 { |
| 47 | return uint8(bits.LeadingZeros64(x)) |
| 48 | } |
| 49 | a = binary.BigEndian.Uint64(ip1[8:]) |
| 50 | b = binary.BigEndian.Uint64(ip2[8:]) |
| 51 | x = a ^ b |
| 52 | return 64 + uint8(bits.LeadingZeros64(x)) |
| 53 | } else { |
| 54 | panic("Wrong size bit string") |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | func (node *trieEntry) addToPeerEntries() { |
| 59 | node.perPeerElem = node.peer.trieEntries.PushBack(node) |
no outgoing calls