cidrOverlaps<T extends Cidr>(): boolean
Checks if two CIDR blocks overlap (share at least one address).
Dispatches to cidrv4Overlaps or cidrv6Overlaps based on the address type. Throws TypeError when mixing IPv4 and IPv6 CIDRs.
IPv4 overlap
IPv4 overlap
import { assert, assertEquals } from "@std/assert"; import { cidrOverlaps, parseCidr } from "@hertzg/ip/cidr"; assert(cidrOverlaps(parseCidr("10.0.0.0/8"), parseCidr("10.1.0.0/16"))); assertEquals(cidrOverlaps(parseCidr("10.0.0.0/8"), parseCidr("172.16.0.0/12")), false);
IPv6 overlap
IPv6 overlap
import { assert, assertEquals } from "@std/assert"; import { cidrOverlaps, parseCidr } from "@hertzg/ip/cidr"; assert(cidrOverlaps(parseCidr("2001:db8::/32"), parseCidr("2001:db8:1::/48"))); assertEquals(cidrOverlaps(parseCidr("2001:db8::/32"), parseCidr("2001:db9::/32")), false);
Mixed versions throw TypeError
Mixed versions throw TypeError
import { assertThrows } from "@std/assert"; import { cidrOverlaps, parseCidr } from "@hertzg/ip/cidr"; assertThrows( () => cidrOverlaps(parseCidr("10.0.0.0/8"), parseCidr("2001:db8::/32")), TypeError, ); assertThrows( () => cidrOverlaps(parseCidr("::/0"), parseCidr("0.0.0.0/0")), TypeError, );
T extends Cidr