strong-cidr

Utility for expanding CIDR blocks into lists of IP addresses

Usage no npm install needed!

<script type="module">
  import strongCidr from 'https://cdn.skypack.dev/strong-cidr';
</script>

README

Strong CIDR

Forked from Kirk Gordon's cidr-js and updated to ECMAScript 2018. Now with async!

A utility for obtaining metadata from CIDR blocks. Can provide a list of valid IP addresses (sorted in ascending order) or the range (start & end) of the block.

NPM

License: MIT Maintainability

Documentation

Instance Methods

Instance Methods

filter(Array ipArray)

Filters ipArray into contiguous ranges (if possible). Returns a Promise.

Arguments

  • ipArray - An Array of IP address strings.

Example

const CIDR = require('strong-cidr');
const cidr = new CIDR();

cidr.range([
  // contiguous block
  '127.0.0.0',
  '127.0.0.1',
  '127.0.0.2',
  '127.0.0.3',
  '127.0.0.4',
  '127.0.0.5',
  '127.0.0.6',

  // new contiguous block
  '127.0.1.1',
  '127.0.1.2',
  '127.0.1.3',

  // dangling block
  '127.0.1.5'
]).then(results => {
  /*
  results = {
    '12700': [
      '127.0.0.1',
      '127.0.0.2',
      '127.0.0.3',
      '127.0.0.4',
      '127.0.0.5',
      '127.0.0.6'
    ],
    '12701': [
      '127.0.1.1',
      '127.0.1.2',
      '127.0.1.3'
    ],
    '127015': [
      '127.0.1.5'
    ]
  }
  */
});

getCIDRBlocks(Array ipArray)

Derives largest possible CIDR blocks from a list of IP addresses. Returns a Promise.

Arguments

  • ipArray - An Array of IP address strings.

Example

const CIDR = require('strong-cidr');
const cidr = new CIDR();
const ipArray = [
  // contiguous block
  '127.0.0.0',
  '127.0.0.1',
  '127.0.0.2',
  '127.0.0.3',
  '127.0.0.4',
  '127.0.0.5',
  '127.0.0.6',

  // new contiguous block
  '127.0.1.1',
  '127.0.1.2',
  '127.0.1.3',

  // dangling block
  '127.0.1.5'
];

cidr.getCIDRBlocks(ipArray).then(result => {
  /*
  results = [
    '127.0.0.0/30',
    '127.0.0.4/31',
    '127.0.0.6/32',
    '127.0.1.1/32',
    '127.0.1.2/31',
    '127.0.1.5'
  ]
  */
});

list(String cidr)

Expands a valid CIDR block into an Array of all valid IPs within that range. Returns a Promise

Arguments

  • cidr - A String containing a valid CIDR block, e.g. '192.168.200.44/30'

Example

const CIDR = require('strong-cidr');
const cidr = new CIDR();
const cidrBlock = '192.168.200.44/30';

cidr.list(cidrBlock).then(results => {
  // results = [ '192.168.200.44', '192.168.200.45', '192.168.200.46', '192.168.200.47' ]
});

range(String cidr)

Derives the start and end of a provided CIDR block. Returns a Promise.

Arguments

  • cidr - A String containing a valid CIDR block, e.g. '10.250.254.32/31'

Example

const CIDR = require('strong-cidr');
const cidr = new CIDR();
const cidrBlock = '10.250.254.32/31';

cidr.range(cidrBlock).then(results => {
  // results = { start: '10.250.254.32', end: '10.250.254.33' }
});