/get-ip-range

Simple utility to convert either CIDR notation or two IP addresses to an array of the range of IP addresses

Primary LanguageJavaScriptISC LicenseISC

get-ip-range

Simple utility to convert either CIDR notation, a hyphenated IP range, or two IP addresses to an array of the range of IP addresses.


Build StatusCoverage StatusISC License


Installation

$ npm i get-ip-range

Accepted formats

IPv4

  • CIDR "x.x.x.x/x"
  • Range "x.x.x.x-x.x.x.x"
  • Two IPs "x.x.x.x, x.x.x.x"

IPv6

  • CIDR "x:x:x:x:x:x:x:x/x"
  • Range "::x:x:x-::x:x:x"
  • Two IPs "::x:x:x", "::x:x:x"

N.B. Shorthand IPv6 is supported


Usage

const getIPRange = require('get-ip-range');

const ipv4CIDR = getIPRange('192.168.1.134/29');
const ipv4Range = getIPRange('192.168.1.128-192.168.1.135');
const twoIPv4 = getIPRange('192.168.1.128', '192.168.1.135');

// All return:
//
// [
//   '192.168.1.128',
//   '192.168.1.129',
//   '192.168.1.130',
//   '192.168.1.131',
//   '192.168.1.132',
//   '192.168.1.133',
//   '192.168.1.134',
//   '192.168.1.135',
// ]
//

const ipv6CIDR = getIPRange('0:0:0:0:0:ffff:102:304/126');
const ipv6Range = getIPRange('::ffff:102:304-::ffff:102:307');
const twoIPv6 = getIPRange('::ffff:102:304', '::ffff:102:307');

// All return:
//
// [
//   '::ffff:102:304',
//   '::ffff:102:305',
//   '::ffff:102:306',
//   '::ffff:102:307',
// ]
//

Errors

If the supplied IP address(es) are invalid, the request will throw an error. Please handle errors appropriately.