24 lines
402 B
Go
24 lines
402 B
Go
package stage3
|
|
|
|
import "unsafe"
|
|
|
|
const headerSize = 9
|
|
|
|
type packetHeader struct {
|
|
SrcIP byte
|
|
Counter uint64
|
|
}
|
|
|
|
func (h packetHeader) Marshal(buf []byte) int {
|
|
buf = buf[:9]
|
|
buf[0] = h.SrcIP
|
|
*(*uint64)(unsafe.Pointer(&buf[1])) = h.Counter
|
|
return headerSize
|
|
}
|
|
|
|
func (h *packetHeader) Parse(buf []byte) int {
|
|
h.SrcIP = buf[0]
|
|
h.Counter = *(*uint64)(unsafe.Pointer(&buf[1]))
|
|
return headerSize
|
|
}
|