Skip to content

Latest commit

 

History

History
96 lines (74 loc) · 2.96 KB

README.md

File metadata and controls

96 lines (74 loc) · 2.96 KB

ctr-ipaddr-js

Maintainability Test Coverage

Installation

$ npm install ctr-ipaddr

Usage

const {IPv4} = require('ctr-ipaddr');

Convert dotted string into long representation

let ipLong = IPv4.toLong("192.168.0.1"); // => 3232235521

Convert long representation to dotted string

let ipStr = IPv4.fromLong(3232235521); // => "192.168.0.1"

Convert to CIDR mask

let cidr1 = IPv4.cidrFromMask("255.255.255.0"); // => 24
let cidr2 = IPv4.cidrFromMask(24); // => 24
let cidr3 = IPv4.cidrFromMask(4294967040); // => 24

Initializing the object

let ip1 = new IPv4("192.168.0.1/24");
let ip2 = new IPv4("192.168.0.1/255.255.255.0");
let ip3 = new IPv4("192.168.0.1", 24);
let ip4 = new IPv4("192.168.0.1", "255.255.255.0");
let ip5 = new IPv4(3232235521, 24);

After initialization it offers you following properties:

{
  "ip": "192.168.0.1",
  "ipLong": 3232235521,
  "mask": "255.255.255.0",
  "maskLong": 4294967040,
  "maskCidr": 24,
  "hostMaskLong": 255,
  "hostMask": "0.0.0.255",
  "netSize": 256,
  "netAddrLong": 3232235520,
  "netAddr": "192.168.0.0",
  "broadcastLong": 3232235775,
  "broadcast": "192.168.0.255" 
}

Generator method eachForSubnet

On the instance of an object there is also a generator method * eachForSubnet(startIp = void 0), which returns a generator for all IPv4 objects for IP addresses from a subnet. If you not specify the startIp parameter the generation will be started from the first address of the subnet.

let subnet = ip1.eachForSubnet();
subnet.next(); // => { value: IPv4 { ip: 192.168.0.0, ... }, done: false }
subnet.next(); // => { value: IPv4 { ip: 192.168.0.1, ... }, done: false }
subnet.next(); // => { value: IPv4 { ip: 192.168.0.2, ... }, done: false }
...
subnet.next(); // => { value: IPv4 { ip: 192.168.0.255, ... }, done: false }
subnet.next(); // => { value: undefined, done: true }
let subnet = ip1.eachForSubnet("192.168.0.253");
subnet.next(); // => { value: IPv4 { ip: 192.168.0.253, ... }, done: false }
subnet.next(); // => { value: IPv4 { ip: 192.168.0.254, ... }, done: false }
subnet.next(); // => { value: IPv4 { ip: 192.168.0.255, ... }, done: false }
subnet.next(); // => { value: undefined, done: true }

Checking if an address belongs to the subnet

On the instance of an object there is a method named belongsToSubnet(ip), which returns true when the given ip address belongs to the subnet represented by the instance.

ip1.belongsToSubnet("192.168.0.5"); // => true
ip1.belongsToSubnet("10.0.0.1"); // => false