vxlanHeader(): Coder<VxlanHeader>
Creates a coder for a VXLAN header (RFC 7348) and its encapsulated inner frame.
Nothing is validated or computed on encode — flagsReserved1.flags (which
should carry VXLAN_FLAG_VALID_VNI), the reserved fields, and
vniReserved2.vni are all written exactly as given. innerFrame is
encoded verbatim and, on decode, consumes every byte after the 8-byte
header.
Decode a known wire-format header
Decode a known wire-format header
import { assertEquals } from "@std/assert"; import { vxlanHeader, VXLAN_FLAG_VALID_VNI, VXLAN_HEADER_SIZE } from "@binstruct/vxlan"; // deno-fmt-ignore const wire = new Uint8Array([ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, ]); const [decoded, read] = vxlanHeader().decode(wire); assertEquals(read, wire.length); assertEquals(decoded.flagsReserved1.flags, VXLAN_FLAG_VALID_VNI); assertEquals(decoded.vniReserved2.vni, 42); assertEquals(decoded.innerFrame.length, wire.length - VXLAN_HEADER_SIZE);
Empty inner frame (header only)
Empty inner frame (header only)
import { assertEquals } from "@std/assert"; import { vxlanHeader, VXLAN_FLAG_VALID_VNI, VXLAN_HEADER_SIZE } from "@binstruct/vxlan"; const coder = vxlanHeader(); const buffer = new Uint8Array(VXLAN_HEADER_SIZE); const written = coder.encode({ flagsReserved1: { flags: VXLAN_FLAG_VALID_VNI, reserved1: 0 }, vniReserved2: { vni: 0, reserved2: 0 }, innerFrame: new Uint8Array(0), }, buffer); const [decoded] = coder.decode(buffer); assertEquals(written, VXLAN_HEADER_SIZE); assertEquals(decoded.innerFrame.length, 0);
Coder<VxlanHeader>
A coder for VxlanHeader values.