function cidrv6Mask
cidrv6Mask(prefixLength: PrefixLengthv6): Maskv6

Creates a network mask from an IPv6 prefix length.

The prefix length must be between 0 and 128 (inclusive).

Examples

Creating masks

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

assertEquals(cidrv6Mask(128), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFn);
assertEquals(cidrv6Mask(64), 0xFFFFFFFFFFFFFFFF0000000000000000n);
assertEquals(cidrv6Mask(48), 0xFFFFFFFFFFFF00000000000000000000n);
assertEquals(cidrv6Mask(32), 0xFFFFFFFF000000000000000000000000n);
assertEquals(cidrv6Mask(0), 0n);

Error handling

import { assertThrows } from "@std/assert";
import { cidrv6Mask } from "@hertzg/ip/cidrv6";

assertThrows(() => cidrv6Mask(-1), RangeError);
assertThrows(() => cidrv6Mask(129), RangeError);

Parameters

prefixLength: PrefixLengthv6

The CIDR prefix length (0-128)

Return Type

The network mask as a bigint

Throws

RangeError

If the prefix length is out of range

cidrv6Mask(cidr: Cidrv6): Maskv6

Returns the network mask of an IPv6 CIDR block.

A MaskedCidrv6 gives back the mask it stores, as is; a PrefixedCidrv6 has its prefix length looked up. Total over every block, which is what lets every cidrv6* operation go through it; the inverse, cidrv6PrefixLength, is the partial one.

Examples

Both dialects yield the same mask

import { assertEquals } from "@std/assert";
import { cidrv6Mask, parseCidrv6 } from "@hertzg/ip/cidrv6";

const mask = 0xFFFFFFFF000000000000000000000000n;
assertEquals(cidrv6Mask(parseCidrv6("2001:db8::/32")), mask);
assertEquals(cidrv6Mask({ address: 0x20010db8n << 96n, mask }), mask);

A stored mask comes back untouched, contiguous or not

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

const mask = 0xFFFF0000FFFF00000000000000000000n;
assertEquals(cidrv6Mask({ address: 0n, mask }), mask);

Parameters

cidr: Cidrv6

The CIDR block

Return Type

The network mask as a bigint

Throws

RangeError

If a prefixed block's prefix length is out of range

cidrv6Mask(cidrOrPrefixLength: Cidrv6 | PrefixLengthv6): Maskv6

Returns the network mask of an IPv6 CIDR block or prefix length.

Parameters

cidrOrPrefixLength: Cidrv6 | PrefixLengthv6

A Cidrv6 block or a prefix length (0-128)

Return Type

The network mask as a bigint

Throws

RangeError

If a prefix length is out of range