mirror of
https://github.com/halleysfifthinc/Toyota-AVC-LAN
synced 2025-06-08 08:26:09 +00:00
47 lines
1.1 KiB
Julia
47 lines
1.1 KiB
Julia
# NOTE: Not using @enum because it craps out when displaying unknown values
|
|
const LINKTYPE_NULL = UInt32(0)
|
|
const LINKTYPE_ETHERNET = UInt32(1)
|
|
|
|
struct PcapHeader
|
|
magic::UInt32
|
|
version_major::UInt16
|
|
version_minor::UInt16
|
|
thiszone::Int32
|
|
sigfigs::UInt32
|
|
snaplen::UInt32
|
|
linktype::UInt32
|
|
end
|
|
|
|
function Base.bswap(x::PcapHeader)
|
|
PcapHeader(
|
|
bswap(x.magic),
|
|
bswap(x.version_major),
|
|
bswap(x.version_minor),
|
|
bswap(x.thiszone),
|
|
bswap(x.sigfigs),
|
|
bswap(x.snaplen),
|
|
bswap(x.linktype))
|
|
end
|
|
|
|
function process_header(x::PcapHeader)
|
|
if x.magic == 0xa1b2c3d4
|
|
bswapped = false
|
|
nanotime = false
|
|
elseif x.magic == 0xd4c3b2a1
|
|
bswapped = true
|
|
nanotime = false
|
|
elseif x.magic == 0xa1b23c4d
|
|
bswapped = false
|
|
nanotime = true
|
|
elseif x.magic == 0x4d3cb2a1
|
|
bswapped = true
|
|
nanotime = true
|
|
else
|
|
throw(ArgumentError("Invalid pcap header"))
|
|
end
|
|
if bswapped
|
|
x = bswap(x)
|
|
end
|
|
x, bswapped, nanotime
|
|
end
|