function cidrv4Contains
cidrv4Contains(
cidr: Cidrv4,
address: number
): boolean

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

Examples

Basic contains check

import { assert, assertEquals } from "@std/assert";
import { cidrv4Contains, parseCidrv4 } from "@hertzg/ip/cidrv4";
import { parseAddressv4 } from "@hertzg/ip/addressv4";

const cidr = parseCidrv4("192.168.1.0/24");

assert(cidrv4Contains(cidr, parseAddressv4("192.168.1.0").address));
assert(cidrv4Contains(cidr, parseAddressv4("192.168.1.100").address));
assert(cidrv4Contains(cidr, parseAddressv4("192.168.1.255").address));
assertEquals(cidrv4Contains(cidr, parseAddressv4("192.168.2.1").address), false);
assertEquals(cidrv4Contains(cidr, parseAddressv4("192.168.0.255").address), false);

IP assignment workflow

import { assert } from "@std/assert";
import {
  cidrv4BroadcastAddress,
  cidrv4Contains,
  cidrv4NetworkAddress,
  parseCidrv4,
} from "@hertzg/ip/cidrv4";

const cidr = parseCidrv4("10.0.0.0/29");
let currentIp = cidrv4NetworkAddress(cidr) + 1;

const assigned: number[] = [];
while (currentIp < cidrv4BroadcastAddress(cidr)) {
  assert(cidrv4Contains(cidr, currentIp));
  assigned.push(currentIp);
  currentIp = currentIp + 1;
}

Parameters

cidr: Cidrv4

The CIDR block to check against

address: number

The address to check, as a 32-bit unsigned integer

Return Type

boolean

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

Usage

import { cidrv4Contains } from "cidrv4.ts";