function arpData
arpData(): Coder<ArpData>

Creates a coder for the common Ethernet/IPv4 ARP packet (RFC 826).

Examples

Round-trip encode and decode an ARP reply

import { assertEquals } from "@std/assert";
import { parseAddressv4 } from "@hertzg/ip/addressv4";
import { parse as parseMac } from "@hertzg/mac";
import {
  ARP_ETHERNET_IPV4_SIZE,
  ARP_HARDWARE_TYPE,
  ARP_HW_LEN_ETHERNET,
  ARP_OPCODE,
  ARP_PROTOCOL_TYPE,
  ARP_PROTO_LEN_IPV4,
  arpData,
} from "@binstruct/arp";

const coder = arpData();
const reply = {
  hardwareType: ARP_HARDWARE_TYPE.ETHERNET,
  protocolType: ARP_PROTOCOL_TYPE.IPV4,
  hardwareAddressLength: ARP_HW_LEN_ETHERNET,
  protocolAddressLength: ARP_PROTO_LEN_IPV4,
  operation: ARP_OPCODE.REPLY,
  senderHardwareAddress: parseMac("aa:bb:cc:dd:ee:ff"),
  senderProtocolAddress: parseAddressv4("192.168.1.2").address,
  targetHardwareAddress: parseMac("00:11:22:33:44:55"),
  targetProtocolAddress: parseAddressv4("192.168.1.1").address,
};

const buffer = new Uint8Array(ARP_ETHERNET_IPV4_SIZE);
const bytesWritten = coder.encode(reply, buffer);
const [decoded, bytesRead] = coder.decode(buffer);

assertEquals(bytesWritten, ARP_ETHERNET_IPV4_SIZE);
assertEquals(bytesRead, ARP_ETHERNET_IPV4_SIZE);
assertEquals(decoded, reply);

Return Type

Coder<ArpData>

A coder for ArpData values.

Usage

import { arpData } from ".";