function addressToArpa
addressToArpa(address: Address): string

Builds the reverse DNS pointer name of an IP address of either version.

Picks the version from the type of the address — number for IPv4, bigint for IPv6 — the same typeof dispatch stringifyAddress and addressToBytes use, and delegates to addressv4ToArpa or addressv6ToArpa.

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

An address that came from parseAddress as ::ffff:x.x.x.x arrives here already unwrapped to IPv4 (ADR 0004), so it gets an in-addr.arpa name. Callers wanting the ip6.arpa name of a mapped address hold the bigint from parseAddressv6 and call addressv6ToArpa.

Examples

Either version, one call

import { assertEquals } from "@std/assert";
import { addressToArpa } from "@hertzg/ip/arpa";
import { parseAddress } from "@hertzg/ip/address";

assertEquals(addressToArpa(parseAddress("192.168.0.1").address), "1.0.168.192.in-addr.arpa");
assertEquals(
  addressToArpa(parseAddress("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",
);

An IPv4-mapped address is IPv4 by the time it gets here

import { assertEquals } from "@std/assert";
import { addressToArpa } from "@hertzg/ip/arpa";
import { parseAddress } from "@hertzg/ip/address";

assertEquals(addressToArpa(parseAddress("::ffff:192.168.0.1").address), "1.0.168.192.in-addr.arpa");

Parameters

address: Address

The address, number for IPv4 or bigint for IPv6

Return Type

string

The in-addr.arpa or ip6.arpa name, without a trailing dot

Throws

RangeError

If the address is outside the range of its version