IPv4.PacketA fully decoded packet header with verified checksum and total length.
Decoding errors.
`Invalid_IPv4_packet: the buffer is too short or contains invalid header fields.`Invalid_checksum: the IPv4 header checksum does not match.type 'a packet = {src : Ipaddr.V4.t;dst : Ipaddr.V4.t;uid : int;flags : Flag.t list;off : int;ttl : int;protocol : int;checksum_and_length : 'a;opt : Slice_bstr.t;}An IPv4 packet header parameterized by its checksum state ('a is either partial or complete).
uid: the IP identification field, used for fragment reassembly.off: the fragment offset (in 8-byte units).ttl: Time-To-Live.protocol: the upper-layer protocol number (6 = TCP, 17 = UDP, 1 = ICMP).opt: IP options (usually empty).val decode :
Slice_bstr.t ->
(complete packet * Slice_bstr.t, [> error ]) resultdecode slice decodes an IPv4 packet header from slice and returns the header along with a sub-slice pointing to the payload.