function addressv6ToArpa
addressv6ToArpa(address: bigint): string

Builds the reverse DNS pointer name of an IPv6 address.

All 32 nibbles of the expanded address are written in reverse order, one per label, under ip6.arpa, as RFC 3596 §2.5 specifies. Nothing is compressed and no leading zero is elided — the name always has 34 labels.

The name is relative — it carries no trailing dot. Append "." if a resolver requires an absolute name.

An IPv4-mapped address reaches this function only when the caller holds it as a bigint, in which case it gets the ip6.arpa name of its 128-bit value. addressToArpa never sees one, since parseAddress unwraps mapped addresses to IPv4 (see ADR 0004).

Examples

Building the name

import { assertEquals } from "@std/assert";
import { addressv6ToArpa } from "@hertzg/ip/arpav6";
import { parseAddressv6 } from "@hertzg/ip/addressv6";

assertEquals(
  addressv6ToArpa(parseAddressv6("2001:db8::1").address),
  "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa",
);
assertEquals(
  addressv6ToArpa(parseAddressv6("::").address),
  "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa",
);

An IPv4-mapped address held as a bigint keeps its ip6.arpa name

import { assertEquals } from "@std/assert";
import { addressv6ToArpa } from "@hertzg/ip/arpav6";
import { parseAddressv6 } from "@hertzg/ip/addressv6";

assertEquals(
  addressv6ToArpa(parseAddressv6("::ffff:192.168.0.1").address),
  "1.0.0.0.8.a.0.c.f.f.f.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa",
);

Parameters

address: bigint

The address as a 128-bit bigint

Return Type

string

The ip6.arpa name, without a trailing dot

Throws

RangeError

If the address is negative or greater than 2^128-1