function cidrContains
cidrContains(
cidr: Cidr,
address: Address
): boolean

Checks if a CIDR block contains an address.

Dispatches to cidrv4Contains or cidrv6Contains based on the address type. Unlike cidrContainsCidr, a version mismatch does not throw — an IPv6 address is not contained in an IPv4 CIDR block, and the reverse, so both return false. The address usually arrives from the network while the CIDR comes from configuration, which makes a mismatch ordinary traffic on a dual-stack listener rather than a caller mistake.

IPv4-mapped IPv6 addresses are not converted here. parseAddress already unwraps them, so an address from parseAddress matches an IPv4 CIDR; one from parseAddressv6 stays a bigint and does not.

Examples

IPv4 and IPv6 containment

import { assert, assertEquals } from "@std/assert";
import { cidrContains, parseCidr } from "@hertzg/ip/cidr";
import { parseAddress } from "@hertzg/ip/address";

assert(cidrContains(parseCidr("10.0.0.0/8"), parseAddress("10.1.2.3").address));
assertEquals(cidrContains(parseCidr("10.0.0.0/8"), parseAddress("11.0.0.1").address), false);

assert(cidrContains(parseCidr("2001:db8::/32"), parseAddress("2001:db8::1").address));
assertEquals(cidrContains(parseCidr("2001:db8::/32"), parseAddress("2001:db9::1").address), false);

Mixed versions return false instead of throwing

import { assertEquals } from "@std/assert";
import { cidrContains, parseCidr } from "@hertzg/ip/cidr";
import { parseAddress } from "@hertzg/ip/address";

assertEquals(cidrContains(parseCidr("10.0.0.0/8"), parseAddress("2001:db8::1").address), false);
assertEquals(cidrContains(parseCidr("::/0"), parseAddress("10.1.2.3").address), false);

IPv4-mapped IPv6 depends on which parser produced the address

import { assert, assertEquals } from "@std/assert";
import { cidrContains, parseCidr } from "@hertzg/ip/cidr";
import { parseAddress } from "@hertzg/ip/address";
import { parseAddressv6 } from "@hertzg/ip/addressv6";

assert(cidrContains(parseCidr("10.0.0.0/8"), parseAddress("::ffff:10.1.2.3").address));
assertEquals(
  cidrContains(parseCidr("10.0.0.0/8"), parseAddressv6("::ffff:10.1.2.3").address),
  false,
);

Parameters

cidr: Cidr

The CIDR block that may contain the address

address: Address

The address to test for membership

Return Type

boolean

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