function cidrv6Overlaps
cidrv6Overlaps(): boolean

Checks if two IPv6 CIDR blocks overlap (share at least one address).

Two CIDRs overlap when one contains at least one address of the other. This is equivalent to checking containment using the shorter prefix. The check is symmetric: cidrv6Overlaps(a, b) === cidrv6Overlaps(b, a).

Examples

Overlapping CIDRs

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

assert(cidrv6Overlaps(parseCidrv6("2001:db8::/32"), parseCidrv6("2001:db8:1::/48")));
assert(cidrv6Overlaps(parseCidrv6("2001:db8:1::/48"), parseCidrv6("2001:db8::/32")));
assert(cidrv6Overlaps(parseCidrv6("fd00::/120"), parseCidrv6("fd00::/120")));
assertEquals(cidrv6Overlaps(parseCidrv6("2001:db8::/32"), parseCidrv6("2001:db9::/32")), false);

/0 overlaps everything

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

const all = parseCidrv6("::/0");
assert(cidrv6Overlaps(all, parseCidrv6("2001:db8::/32")));
assert(cidrv6Overlaps(all, parseCidrv6("::1/128")));

Adjacent but non-overlapping

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

assertEquals(cidrv6Overlaps(parseCidrv6("2001:db8::/33"), parseCidrv6("2001:db8:8000::/33")), false);

Parameters

The first CIDR block

The second CIDR block

Return Type

boolean

true if the two CIDR blocks share at least one address

Usage

import { cidrv6Overlaps } from "mod.ts";