function cidrv6Contains
cidrv6Contains(
cidr: Cidrv6,
address: bigint
): boolean

Checks if an IPv6 address is contained within a CIDR block.

Examples

Basic contains check

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

const cidr = parseCidrv6("2001:db8::/32");

assert(cidrv6Contains(cidr, parseAddressv6("2001:db8::").address));
assert(cidrv6Contains(cidr, parseAddressv6("2001:db8::1").address));
assert(cidrv6Contains(cidr, parseAddressv6("2001:db8:ffff:ffff:ffff:ffff:ffff:ffff").address));
assertEquals(cidrv6Contains(cidr, parseAddressv6("2001:db9::1").address), false);
assertEquals(cidrv6Contains(cidr, parseAddressv6("2001:db7:ffff:ffff:ffff:ffff:ffff:ffff").address), false);

IP assignment workflow

import { assert } from "@std/assert";
import {
  cidrv6Contains,
  cidrv6FirstAddress,
  cidrv6LastAddress,
  parseCidrv6,
} from "@hertzg/ip/cidrv6";

const cidr = parseCidrv6("fd00::/120"); // 256 IPs
let currentIp = cidrv6FirstAddress(cidr) + 1n;

const assigned: bigint[] = [];
while (currentIp < cidrv6LastAddress(cidr)) {
  assert(cidrv6Contains(cidr, currentIp));
  assigned.push(currentIp);
  currentIp = currentIp + 1n;
}

Parameters

cidr: Cidrv6

The CIDR block to check against

address: bigint

The address to check, as a 128-bit bigint

Return Type

boolean

true if the address is within the CIDR block, false otherwise

Usage

import { cidrv6Contains } from "cidrv6.ts";