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).
Building the name
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
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", );