commit 3d44323d83ce2404e0b6a1369158950e7c7f777a
parent 2891cccd2f9ecaaa53bd3897d5962e96980324a1
Author: Oliver Lowe <o@olowe.co>
Date: Sun, 4 Aug 2024 19:24:13 +1000
pcap: use data slice length to set length in header
One less thing to keep in sync.
Diffstat:
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/pcap/parser.go b/pcap/parser.go
@@ -24,7 +24,6 @@ type GlobalHeader struct {
type Header struct {
Time time.Time
- InclLen uint32
OrigLen uint32
}
@@ -71,7 +70,6 @@ func decode(reader io.Reader) (*File, error) {
}
hh := Header{
Time: time.Unix(int64(h.Seconds), int64(h.SubSeconds)*1000),
- InclLen: h.InclLen,
OrigLen: h.OrigLen,
}
@@ -102,12 +100,16 @@ func encode(file *File) ([]byte, error) {
for _, p := range file.Packets {
sec, nsec := timestamp(p.Header.Time)
- usec := nsec / 1000
- h := header{sec, usec, p.Header.InclLen, p.Header.OrigLen}
- if err := binary.Write(buf, binary.LittleEndian, &h); err != nil {
+ h := header{
+ Seconds: sec,
+ SubSeconds: nsec / 1000,
+ InclLen: uint32(len(p.Data)),
+ OrigLen: p.Header.OrigLen,
+ }
+ if err := binary.Write(buf, binary.LittleEndian, h); err != nil {
return nil, fmt.Errorf("packet header: %v", err)
}
- if err := binary.Write(buf, binary.LittleEndian, &p.Data); err != nil {
+ if err := binary.Write(buf, binary.LittleEndian, p.Data); err != nil {
return nil, fmt.Errorf("packet data: %v", err)
}
}