CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-ip

IP address utilities for node.js providing IPv4/IPv6 address manipulation, validation, and network operations

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

address-conversion.mddocs/

Address Conversion

Functions for converting IP addresses between different representations including strings, buffers, and long integers with support for both IPv4 and IPv6 addresses.

Capabilities

Buffer Conversion

toBuffer

Converts an IP address string to a Buffer representation.

/**
 * Converts IP address string to Buffer
 * @param {string} ip - IPv4 or IPv6 address string
 * @param {Buffer} [buff] - Optional pre-allocated buffer to write to
 * @param {number} [offset=0] - Optional offset position in buffer
 * @returns {Buffer} Buffer containing IP address bytes (4 bytes for IPv4, 16 bytes for IPv6)
 * @throws {Error} Throws error for invalid IP address format
 */
function toBuffer(ip, buff, offset);

Usage Examples:

const ip = require('ip');

// Convert IPv4 to buffer
const ipv4Buffer = ip.toBuffer('127.0.0.1');
console.log(ipv4Buffer); // <Buffer 7f 00 00 01>

// Convert IPv6 to buffer
const ipv6Buffer = ip.toBuffer('::1');
console.log(ipv6Buffer.length); // 16

// Convert to existing buffer at offset
const buffer = Buffer.alloc(128);
ip.toBuffer('192.168.1.1', buffer, 64);
console.log(buffer.slice(64, 68)); // <Buffer c0 a8 01 01>

// IPv6 mapped IPv4
const mappedBuffer = ip.toBuffer('::ffff:127.0.0.1');
console.log(mappedBuffer.toString('hex')); // '00000000000000000000ffff7f000001'

toString

Converts a Buffer to IP address string representation.

/**
 * Converts Buffer to IP address string
 * @param {Buffer} buff - Buffer containing IP address bytes
 * @param {number} [offset=0] - Starting position in buffer
 * @param {number} [length] - Number of bytes to read (4 for IPv4, 16 for IPv6)
 * @returns {string} String representation of IP address
 */
function toString(buff, offset, length);

Usage Examples:

const ip = require('ip');

// Convert IPv4 buffer to string
const ipv4Buffer = Buffer.from([127, 0, 0, 1]);
console.log(ip.toString(ipv4Buffer)); // '127.0.0.1'

// Convert IPv6 buffer to string
const ipv6Buffer = Buffer.alloc(16);
ipv6Buffer[15] = 1; // ::1
console.log(ip.toString(ipv6Buffer)); // '::1'

// Convert with offset and length
const buffer = Buffer.from([0, 0, 0, 0, 192, 168, 1, 1]);
console.log(ip.toString(buffer, 4, 4)); // '192.168.1.1'

Long Integer Conversion (IPv4 only)

toLong

Converts IPv4 address string to 32-bit unsigned integer.

/**
 * Converts IPv4 address string to 32-bit unsigned integer
 * @param {string} ip - IPv4 address string (e.g., '127.0.0.1')
 * @returns {number} 32-bit unsigned integer representation
 */
function toLong(ip);

Usage Examples:

const ip = require('ip');

console.log(ip.toLong('127.0.0.1')); // 2130706433
console.log(ip.toLong('192.168.1.1')); // 3232235777
console.log(ip.toLong('255.255.255.255')); // 4294967295

fromLong

Converts 32-bit unsigned integer to IPv4 address string.

/**
 * Converts 32-bit unsigned integer to IPv4 address string
 * @param {number} ipl - 32-bit unsigned integer
 * @returns {string} IPv4 address string
 */
function fromLong(ipl);

Usage Examples:

const ip = require('ip');

console.log(ip.fromLong(2130706433)); // '127.0.0.1'
console.log(ip.fromLong(3232235777)); // '192.168.1.1'
console.log(ip.fromLong(4294967295)); // '255.255.255.255'

// Round-trip conversion
const originalIp = '10.0.0.1';
const longForm = ip.toLong(originalIp);
const backToString = ip.fromLong(longForm);
console.log(backToString); // '10.0.0.1'

normalizeToLong

Normalizes various IPv4 address formats to 32-bit unsigned integer, supporting decimal, octal, hexadecimal, and abbreviated notations.

/**
 * Normalizes various IPv4 formats to 32-bit unsigned integer
 * @param {string} addr - IPv4 address in various formats
 * @returns {number} 32-bit unsigned integer or -1 for invalid input
 */
function normalizeToLong(addr);

Usage Examples:

const ip = require('ip');

// Standard decimal notation
console.log(ip.normalizeToLong('127.0.0.1')); // 2130706433

// Abbreviated formats
console.log(ip.normalizeToLong('127.1')); // 2130706433 (127.0.0.1)
console.log(ip.normalizeToLong('127.0.1')); // 2130706433 (127.0.0.1)

// Hexadecimal notation
console.log(ip.normalizeToLong('0x7f.0x0.0x0.0x1')); // 2130706433
console.log(ip.normalizeToLong('0x7f000001')); // 2130706433

// Octal notation (digits 0-7 after leading zero)
console.log(ip.normalizeToLong('010.0.0.01')); // 134217729 (8.0.0.1)

// Invalid formats return -1
console.log(ip.normalizeToLong('256.1.1.1')); // -1
console.log(ip.normalizeToLong('019.0.0.1')); // -1 (invalid octal)
console.log(ip.normalizeToLong('0xGG.0.0.1')); // -1 (invalid hex)

docs

address-conversion.md

address-validation.md

bitwise-operations.md

index.md

network-interfaces.md

network-operations.md

tile.json