function igmpMessage
igmpMessage(): Coder<IgmpMessage>

Creates a coder for an IGMPv2 message (RFC 2236) — the fixed 8-byte type/maxResponseTime/checksum/groupAddress structure.

Examples

Decode a known General Query

import { assertEquals } from "@std/assert";
import { IGMP_TYPE, igmpMessage } from "@binstruct/igmp";

// deno-fmt-ignore
const wire = new Uint8Array([
  0x11, 0x64, 0xee, 0x9b,
  0x00, 0x00, 0x00, 0x00,
]);

const [decoded, read] = igmpMessage().decode(wire);

assertEquals(read, 8);
assertEquals(decoded.type, IGMP_TYPE.MEMBERSHIP_QUERY);
assertEquals(decoded.maxResponseTime, 100);
assertEquals(decoded.checksum, 0xee9b);
assertEquals(decoded.groupAddress, 0);

Round-trip a Leave Group message

import { assertEquals } from "@std/assert";
import { IGMP_MESSAGE_SIZE, IGMP_TYPE, igmpMessage } from "@binstruct/igmp";

const coder = igmpMessage();
const message = {
  type: IGMP_TYPE.LEAVE_GROUP,
  maxResponseTime: 0,
  checksum: 0x1234,
  groupAddress: 0xe0000005,
};

const buffer = new Uint8Array(IGMP_MESSAGE_SIZE);
const written = coder.encode(message, buffer);
const [decoded, read] = coder.decode(buffer);

assertEquals(written, IGMP_MESSAGE_SIZE);
assertEquals(read, IGMP_MESSAGE_SIZE);
assertEquals(decoded, message);

Return Type

Coder<IgmpMessage>

A coder for IgmpMessage values.

Usage

import { igmpMessage } from ".";