function mapFromCidrv4
mapFromCidrv4(cidr: PrefixedCidrv4): PrefixedCidrv6

Converts an IPv4 CIDR block with a prefix length to its IPv4-mapped IPv6 CIDR representation.

Parameters

The IPv4 CIDR block

Return Type

The equivalent IPv4-mapped IPv6 CIDR block, with a prefix length

mapFromCidrv4(cidr: MaskedCidrv4): MaskedCidrv6

Converts an IPv4 CIDR block with a mask to its IPv4-mapped IPv6 CIDR representation.

Parameters

The IPv4 CIDR block

Return Type

The equivalent IPv4-mapped IPv6 CIDR block, with a mask

mapFromCidrv4(cidr: Cidrv4): Cidrv6

Converts an IPv4 CIDR block to its IPv4-mapped IPv6 CIDR representation.

The address is embedded into the ::ffff:0:0/96 prefix. The dialect is preserved: a prefix length is offset by 96, so an IPv4 /8 becomes an IPv6 /104; a mask becomes the low 32 bits under the all-ones /96 prefix, so 255.0.0.0 becomes ffff:ffff:ffff:ffff:ffff:ffff:ff00:0.

Examples

Example 1

import { assertEquals } from "@std/assert";
import { mapFromCidrv4, stringifyCidrv6 } from "@hertzg/ip/cidrv6";
import { parseCidrv4 } from "@hertzg/ip/cidrv4";

assertEquals(
  stringifyCidrv6(mapFromCidrv4(parseCidrv4("10.0.0.0/8"))),
  "::ffff:a00:0/104",
);
assertEquals(
  stringifyCidrv6(mapFromCidrv4(parseCidrv4("192.168.1.0/24"))),
  "::ffff:c0a8:100/120",
);
assertEquals(
  stringifyCidrv6(mapFromCidrv4(parseCidrv4("0.0.0.0/0"))),
  "::ffff:0:0/96",
);

A masked block maps to a masked block

import { assertEquals } from "@std/assert";
import { mapFromCidrv4 } from "@hertzg/ip/cidrv6";

assertEquals(
  mapFromCidrv4({ address: 167772160, mask: 0xFF000000 }),
  { address: 0xFFFF0A000000n, mask: 0xFFFFFFFFFFFFFFFFFFFFFFFFFF000000n },
);

Parameters

cidr: Cidrv4

The IPv4 CIDR block

Return Type

The equivalent IPv4-mapped IPv6 CIDR block