blob: e0a386fc79b7fbf376d508735eb55cd5f09cbffb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package main
import "encoding/binary"
const (
// FNV-1a
offset32 = uint32(2166136261)
prime32 = uint32(16777619)
)
func hashPacket(p PacketTruncated) uint32 {
h := offset32
b := make([]byte, 12)
binary.BigEndian.PutUint32(b[0:4], p.To)
binary.BigEndian.PutUint32(b[4:8], p.From)
binary.BigEndian.PutUint32(b[8:12], p.ID)
for ; len(b) >= 4; b = b[4:] {
h = (h ^ uint32(b[0])) * prime32
h = (h ^ uint32(b[1])) * prime32
h = (h ^ uint32(b[2])) * prime32
h = (h ^ uint32(b[3])) * prime32
}
return h
}
|