pppoeHeader(): Coder<PppoeHeader>
Creates a coder for a PPPoE header and its payload (RFC 2516).
The payload length is derived from the header's length field
(payload.length === length); length itself is written verbatim on
encode, not recomputed, so callers are responsible for keeping it in sync
with payload.length.
Decode a known PADT (session teardown) wire capture
Decode a known PADT (session teardown) wire capture
import { assertEquals } from "@std/assert"; import { pppoeHeader, PPPOE_CODE, PPPOE_HEADER_SIZE } from "@binstruct/pppoe"; const wire = new Uint8Array([ 0x11, 0xa7, 0x00, 0x2a, 0x00, 0x00, ]); const [decoded, read] = pppoeHeader().decode(wire); assertEquals(read, PPPOE_HEADER_SIZE); assertEquals(decoded.versionType, { version: 1, type: 1 }); assertEquals(decoded.code, PPPOE_CODE.PADT); assertEquals(decoded.sessionId, 0x002a); assertEquals(decoded.length, 0); assertEquals(decoded.payload.length, 0);
Empty-payload session keepalive
Empty-payload session keepalive
import { assertEquals } from "@std/assert"; import { pppoeHeader, PPPOE_CODE, PPPOE_HEADER_SIZE } from "@binstruct/pppoe"; const coder = pppoeHeader(); const buffer = new Uint8Array(PPPOE_HEADER_SIZE); const written = coder.encode({ versionType: { version: 1, type: 1 }, code: PPPOE_CODE.SESSION_DATA, sessionId: 0x1234, length: 0, payload: new Uint8Array(0), }, buffer); const [decoded] = coder.decode(buffer); assertEquals(written, PPPOE_HEADER_SIZE); assertEquals(decoded.sessionId, 0x1234); assertEquals(decoded.payload.length, 0);
Coder<PppoeHeader>
A coder for PppoeHeader values.