Skip to content

Commit 96296ab

Browse files

File tree

3 files changed

+34
-8
lines changed

3 files changed

+34
-8
lines changed

lib/ipaddr.js

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,16 @@
207207
[new IPv4([198, 51, 100, 0]), 24],
208208
[new IPv4([203, 0, 113, 0]), 24],
209209
[new IPv4([240, 0, 0, 0]), 4]
210-
]
210+
],
211+
// RFC7534, RFC7535
212+
as112: [
213+
[new IPv4([192, 175, 48, 0]), 24],
214+
[new IPv4([192, 31, 196, 0]), 24],
215+
],
216+
// RFC7450
217+
amt: [
218+
[new IPv4([192, 52, 193, 0]), 24],
219+
],
211220
};
212221

213222
// The 'kind' method exists on both IPv4 and IPv6 classes.
@@ -537,6 +546,8 @@
537546
loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],
538547
uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],
539548
ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],
549+
// RFC6666
550+
discard: [new IPv6([0x100, 0, 0, 0, 0, 0, 0, 0]), 64],
540551
// RFC6145
541552
rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],
542553
// RFC6052
@@ -545,13 +556,23 @@
545556
'6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],
546557
// RFC6052, RFC6146
547558
teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],
548-
// RFC4291
549-
reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]],
559+
// RFC5180
550560
benchmarking: [new IPv6([0x2001, 0x2, 0, 0, 0, 0, 0, 0]), 48],
561+
// RFC7450
551562
amt: [new IPv6([0x2001, 0x3, 0, 0, 0, 0, 0, 0]), 32],
552-
as112v6: [new IPv6([0x2001, 0x4, 0x112, 0, 0, 0, 0, 0]), 48],
563+
as112v6: [
564+
[new IPv6([0x2001, 0x4, 0x112, 0, 0, 0, 0, 0]), 48],
565+
[new IPv6([0x2620, 0x4f, 0x8000, 0, 0, 0, 0, 0]), 48],
566+
],
553567
deprecated: [new IPv6([0x2001, 0x10, 0, 0, 0, 0, 0, 0]), 28],
554-
orchid2: [new IPv6([0x2001, 0x20, 0, 0, 0, 0, 0, 0]), 28]
568+
orchid2: [new IPv6([0x2001, 0x20, 0, 0, 0, 0, 0, 0]), 28],
569+
droneRemoteIdProtocolEntityTags: [new IPv6([0x2001, 0x30, 0, 0, 0, 0, 0, 0]), 28],
570+
reserved: [
571+
// RFC3849
572+
[new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 23],
573+
// RFC2928
574+
[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32],
575+
],
555576
};
556577

557578
// Checks if this address is an IPv4-mapped IPv6 address.

lib/ipaddr.js.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
declare module "ipaddr.js" {
2-
type IPvXRangeDefaults = 'unicast' | 'unspecified' | 'multicast' | 'linkLocal' | 'loopback' | 'reserved';
3-
type IPv4Range = IPvXRangeDefaults | 'broadcast' | 'carrierGradeNat' | 'private';
4-
type IPv6Range = IPvXRangeDefaults | 'uniqueLocal' | 'ipv4Mapped' | 'rfc6145' | 'rfc6052' | '6to4' | 'teredo';
2+
type IPvXRangeDefaults = 'unicast' | 'unspecified' | 'multicast' | 'linkLocal' | 'loopback' | 'reserved' | 'benchmarking' | 'amt';
3+
type IPv4Range = IPvXRangeDefaults | 'broadcast' | 'carrierGradeNat' | 'private' | 'as112';
4+
type IPv6Range = IPvXRangeDefaults | 'uniqueLocal' | 'ipv4Mapped' | 'rfc6145' | 'rfc6052' | '6to4' | 'teredo' | 'as112v6' | 'orchid2' | 'droneRemoteIdProtocolEntityTags';
55

66
interface RangeList<T> {
77
[name: string]: [T, number] | [T, number][];

test/ipaddr.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ describe('ipaddr', () => {
150150
assert.equal(ipaddr.IPv4.parse('10.1.0.1').range(), 'private');
151151
assert.equal(ipaddr.IPv4.parse('100.64.0.0').range(), 'carrierGradeNat');
152152
assert.equal(ipaddr.IPv4.parse('100.127.255.255').range(), 'carrierGradeNat');
153+
assert.equal(ipaddr.IPv4.parse('192.52.193.1').range(), 'amt');
153154
assert.equal(ipaddr.IPv4.parse('192.168.2.1').range(), 'private');
155+
assert.equal(ipaddr.IPv4.parse('192.175.48.0').range(), 'as112');
154156
assert.equal(ipaddr.IPv4.parse('224.100.0.1').range(), 'multicast');
155157
assert.equal(ipaddr.IPv4.parse('169.254.15.0').range(), 'linkLocal');
156158
assert.equal(ipaddr.IPv4.parse('127.1.1.1').range(), 'loopback');
@@ -423,6 +425,7 @@ describe('ipaddr', () => {
423425
assert.equal(ipaddr.IPv6.parse('fe80::1234:5678:abcd:0123').range(), 'linkLocal');
424426
assert.equal(ipaddr.IPv6.parse('ff00::1234').range(), 'multicast');
425427
assert.equal(ipaddr.IPv6.parse('::1').range(), 'loopback');
428+
assert.equal(ipaddr.IPv6.parse('100::42').range(), 'discard');
426429
assert.equal(ipaddr.IPv6.parse('fc00::').range(), 'uniqueLocal');
427430
assert.equal(ipaddr.IPv6.parse('::ffff:192.168.1.10').range(), 'ipv4Mapped');
428431
assert.equal(ipaddr.IPv6.parse('::ffff:0:192.168.1.10').range(), 'rfc6145');
@@ -432,8 +435,10 @@ describe('ipaddr', () => {
432435
assert.equal(ipaddr.IPv6.parse('2001:2::').range(), 'benchmarking');
433436
assert.equal(ipaddr.IPv6.parse('2001:3::').range(), 'amt');
434437
assert.equal(ipaddr.IPv6.parse('2001:4:112::').range(), 'as112v6');
438+
assert.equal(ipaddr.IPv6.parse('2620:4f:8000::').range(), 'as112v6');
435439
assert.equal(ipaddr.IPv6.parse('2001:10::').range(), 'deprecated');
436440
assert.equal(ipaddr.IPv6.parse('2001:20::').range(), 'orchid2');
441+
assert.equal(ipaddr.IPv6.parse('2001:30::').range(), 'droneRemoteIdProtocolEntityTags');
437442
assert.equal(ipaddr.IPv6.parse('2001:db8::3210').range(), 'reserved');
438443
assert.equal(ipaddr.IPv6.parse('2001:470:8:66::1').range(), 'unicast');
439444
assert.equal(ipaddr.IPv6.parse('2001:470:8:66::1%z').range(), 'unicast');

0 commit comments

Comments
 (0)