function vxlanHeader
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.

Examples

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)

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);

Return Type

Coder<VxlanHeader>

A coder for VxlanHeader values.

Usage

import { vxlanHeader } from ".";