IP address utilities for node.js providing IPv4/IPv6 address manipulation, validation, and network operations
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Bitwise manipulation functions for IP addresses including NOT and OR operations with support for both IPv4 and IPv6 addresses and mixed-protocol operations.
Performs bitwise NOT (inversion) operation on an IP address, flipping all bits.
/**
* Performs bitwise NOT operation on IP address
* @param {string} addr - IP address to invert
* @returns {string} Bitwise inverted IP address string
*/
function not(addr);Usage Examples:
const ip = require('ip');
// IPv4 bitwise NOT
console.log(ip.not('255.255.255.0')); // '0.0.0.255'
console.log(ip.not('192.168.1.0')); // '63.87.254.255'
console.log(ip.not('0.0.0.0')); // '255.255.255.255'
// IPv6 bitwise NOT
console.log(ip.not('ffff::')); // '::ffff:ffff:ffff:ffff'
console.log(ip.not('::1')); // 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe'
// Practical use case: Convert subnet mask to wildcard mask
const subnetMask = '255.255.255.192';
const wildcardMask = ip.not(subnetMask);
console.log(wildcardMask); // '0.0.0.63'Performs bitwise OR operation between two IP addresses, supporting same-protocol and mixed IPv4/IPv6 operations.
/**
* Performs bitwise OR operation on two IP addresses
* @param {string} a - First IP address
* @param {string} b - Second IP address
* @returns {string} Result of bitwise OR operation
*/
function or(a, b);Usage Examples:
const ip = require('ip');
// IPv4 bitwise OR
console.log(ip.or('192.168.1.0', '0.0.0.255')); // '192.168.1.255'
console.log(ip.or('10.0.0.0', '0.0.5.100')); // '10.0.5.100'
console.log(ip.or('255.255.255.0', '0.0.0.63')); // '255.255.255.63'
// IPv6 bitwise OR
console.log(ip.or('::ff', '::abcd:dcba:abcd:dcba'));
// '::abcd:dcba:abcd:dcff'
console.log(ip.or('ffff::', '::1'));
// 'ffff::1'
// Mixed IPv4/IPv6 operations
console.log(ip.or('0.0.0.255', '::abcd:dcba:abcd:dcba'));
// '::abcd:dcba:abcd:dcff'
console.log(ip.or('192.168.1.100', '::ff'));
// '::c0a8:16ff'
// Practical use case: Set specific bits in network address
const networkAddr = '192.168.1.0';
const hostBits = '0.0.0.100';
const fullAddress = ip.or(networkAddr, hostBits);
console.log(fullAddress); // '192.168.1.100'const ip = require('ip');
// Calculate broadcast address using OR operation
const networkAddress = '192.168.1.128'; // /26 network
const subnetMask = '255.255.255.192'; // /26 mask
const wildcardMask = ip.not(subnetMask); // '0.0.0.63'
const broadcastAddress = ip.or(networkAddress, wildcardMask);
console.log(broadcastAddress); // '192.168.1.191'
// Verify against subnet function
const subnet = ip.subnet('192.168.1.128', subnetMask);
console.log(subnet.broadcastAddress); // '192.168.1.191' (matches)const ip = require('ip');
// Create custom network masks using bitwise operations
const baseMask = '255.255.0.0'; // /16
const additionalBits = '0.0.255.0'; // Additional /24 subnet bits
const combinedMask = ip.or(baseMask, additionalBits);
console.log(combinedMask); // '255.255.255.0' (/24)
// Invert masks for wildcard operations
const accessListMask = ip.not('255.255.255.240'); // /28 inverted
console.log(accessListMask); // '0.0.0.15' (wildcard for /28)