11# Coherence across libraries
2- > Autogenerated by ` src/scripts/build-coherence-md.ts `
2+ > Autogenerated by [ ` src/scripts/build-coherence-md.ts ` ] ( ./src/scripts/build-coherence-md.ts )
33## IPv4
4- Address | node: net | [ ` ip ` ] ( https://github.com/indutny/node- ip ) | [ ` @webpod/ip ` ] ( https://github.com/webpod/ip ) | [ ` @webpod/ip/core ` ] ( https://github.com/webpod/ ip ) | [ ` is-ip ` ] ( https://github.com/sindresorhus/is-ip ) | [ ` ipaddr.js ` ] ( https://github.com/whitequark/ipaddr.js/ ) | [ ` ip-address ` ] ( https://github.com/beaugunderson/ip-address ) | [ ` ip2buf ` ] ( https://github.com/reklatsmasters/ip2buf ) | [ ` neoip ` ] ( https://github.com/Zaptic/neoip ) | Comment
4+ Address | node: net | [ ` @webpod/ ip` ] ( https://github.com/webpod/ ip ) | [ ` @webpod/ip/core ` ] ( https://github.com/webpod/ip ) | [ ` ip ` ] ( https://github.com/indutny/node- ip ) | [ ` is-ip ` ] ( https://github.com/sindresorhus/is-ip ) | [ ` ipaddr.js ` ] ( https://github.com/whitequark/ipaddr.js/ ) | [ ` ip-address ` ] ( https://github.com/beaugunderson/ip-address ) | [ ` ip2buf ` ] ( https://github.com/reklatsmasters/ip2buf ) | [ ` neoip ` ] ( https://github.com/Zaptic/neoip ) | Comment
55--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
66` 127.0.0.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | localhost
77` 192.168.1.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | private LAN
88` 255.255.255.255 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | broadcast
99` 0.0.0.0 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | unspecified
1010` 8.8.8.8 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Google DNS
11- ` 256.1.1.1 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | octet out of range
11+ ` 256.1.1.1 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | octet out of range
1212` 192.168.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | not enough octets
1313` 192.168.1.1.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | too many octets
14- ` 192.168.01.1 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ❌ | ❌ | ❌ | ✓ | leading octet zero
14+ ` 192.168.01.1 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ❌ | ❌ | ❌ | ✓ | leading octet zero
1515` abc.def.gha.bcd ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | non-numeric
1616` ... ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | empty octets
1717` 1..2.3 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | empty middle octet
1818`` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | empty string
1919## IPv6
20- Address | node: net | [ ` ip ` ] ( https://github.com/indutny/node- ip ) | [ ` @webpod/ip ` ] ( https://github.com/webpod/ip ) | [ ` @webpod/ip/core ` ] ( https://github.com/webpod/ ip ) | [ ` is-ip ` ] ( https://github.com/sindresorhus/is-ip ) | [ ` ipaddr.js ` ] ( https://github.com/whitequark/ipaddr.js/ ) | [ ` ip-address ` ] ( https://github.com/beaugunderson/ip-address ) | [ ` ip2buf ` ] ( https://github.com/reklatsmasters/ip2buf ) | [ ` neoip ` ] ( https://github.com/Zaptic/neoip ) | Comment
20+ Address | node: net | [ ` @webpod/ ip` ] ( https://github.com/webpod/ ip ) | [ ` @webpod/ip/core ` ] ( https://github.com/webpod/ip ) | [ ` ip ` ] ( https://github.com/indutny/node- ip ) | [ ` is-ip ` ] ( https://github.com/sindresorhus/is-ip ) | [ ` ipaddr.js ` ] ( https://github.com/whitequark/ipaddr.js/ ) | [ ` ip-address ` ] ( https://github.com/beaugunderson/ip-address ) | [ ` ip2buf ` ] ( https://github.com/reklatsmasters/ip2buf ) | [ ` neoip ` ] ( https://github.com/Zaptic/neoip ) | Comment
2121--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
2222` ::1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | loopback
2323` :: ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | unspecified
@@ -26,26 +26,26 @@ Address | node:net | [`ip`](https://github.com/indutny/node-ip) | [`@webpod/ip`]
2626` ::ffff:192.0.2.128 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | IPv4-mapped IPv6
2727` 2001:0db8:85a3:0000:0000:8a2e:0370:7334 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | full form
2828` 0:0:0:0:0:0:0:1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | expanded loopback
29- ` 2001::85a3::7334 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | multiple ::
30- ` 12345:: ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | hextet too long
29+ ` 2001::85a3::7334 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | multiple ::
30+ ` 12345:: ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | hextet too long
3131` abcd:efgh::1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | non-hex character
32- ` 1:2:3:4:5:6:7 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | too few hextets
32+ ` 1:2:3:4:5:6:7 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ❌ | ✓ | too few hextets
3333` 1:2:3:4:5:6:7:8:9 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | too many hextets
34- ` :1:2:3:4:5:6:7 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | leading colon without ::
35- ` 1:2:3:4:5:6:7: ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | trailing colon without ::
36- ` 1:2:3::4:5:6:7:8 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | too many hextets with ::
37- ` 1:2::4:5::8 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | multiple compressors ::
38- ` ::: ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | triple colon not allowed
34+ ` :1:2:3:4:5:6:7 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | leading colon without ::
35+ ` 1:2:3:4:5:6:7: ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | trailing colon without ::
36+ ` 1:2:3::4:5:6:7:8 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ❌ | ✓ | ✓ | ✓ | too many hextets with ::
37+ ` 1:2::4:5::8 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | multiple compressors ::
38+ ` ::: ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | triple colon not allowed
3939` ::g ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | invalid hex digit after compression
4040` 2001:db8:85a3:0:0:8a2e:37023:7334 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | hextet exceeds 16 bits
41- ` ::ffff:999.0.2.128 ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | invalid embedded IPv4
41+ ` ::ffff:999.0.2.128 ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | invalid embedded IPv4
4242` ::ffff:192.0.2 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | truncated IPv4 in mapped address
43- ` 2001:db8::: ` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | extra colon at end
44- `` | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | empty string
43+ ` 2001:db8::: ` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | extra colon at end
44+ `` | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ✓ | empty string
4545## Private IP
46- Address | [ ` ip ` ] ( https://github.com/indutny/node- ip ) | [ ` @webpod/ip ` ] ( https://github.com/webpod/ip ) | [ ` @webpod/ip/core ` ] ( https://github.com/webpod/ ip ) | [ ` ipaddr.js ` ] ( https://github.com/whitequark/ipaddr.js/ ) | [ ` neoip ` ] ( https://github.com/Zaptic/neoip ) | Comment
46+ Address | [ ` @webpod/ ip` ] ( https://github.com/webpod/ ip ) | [ ` @webpod/ip/core ` ] ( https://github.com/webpod/ip ) | [ ` ip ` ] ( https://github.com/indutny/node- ip ) | [ ` ipaddr.js ` ] ( https://github.com/whitequark/ipaddr.js/ ) | [ ` neoip ` ] ( https://github.com/Zaptic/neoip ) | Comment
4747--- | --- | --- | --- | --- | --- | ---
48- ` 0.0.0.0 ` | ❌ | ✓ | ✓ | ✓ | ✓ | unspecified
48+ ` 0.0.0.0 ` | ✓ | ✓ | ❌ | ✓ | ✓ | unspecified
4949` 127.0.0.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | loopback
5050` 127.0.0.2 ` | ✓ | ✓ | ✓ | ✓ | ✓ | loopback range
5151` 127.1.1.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | loopback shorthand
@@ -64,7 +64,7 @@ Address | [`ip`](https://github.com/indutny/node-ip) | [`@webpod/ip`](https://gi
6464` 10.0.2.3 ` | ✓ | ✓ | ✓ | ✓ | ✓ | private 10/8
6565` 10.1.23.45 ` | ✓ | ✓ | ✓ | ✓ | ✓ | private 10/8
6666` 12.1.2.3 ` | ✓ | ✓ | ✓ | ✓ | ✓ | public, outside 10/8
67- ` 198.18.0.0 ` | ❌ | ✓ | ✓ | ❌ | ✓ | benchmark range
67+ ` 198.18.0.0 ` | ✓ | ✓ | ❌ | ❌ | ✓ | benchmark range
6868` fd12:3456:789a:1::1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | ULA fc00::/7
6969` fe80::f2de:f1ff:fe3f:307e ` | ✓ | ✓ | ✓ | ✓ | ✓ | link-local fe80::/10
7070` ::ffff:10.100.1.42 ` | ✓ | ✓ | ✓ | ❌ | ✓ | IPv4-mapped private
@@ -75,14 +75,14 @@ Address | [`ip`](https://github.com/indutny/node-ip) | [`@webpod/ip`](https://gi
7575` ::1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | loopback
7676` fe80::1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | link-local
7777` 0x7f.1 ` | ✓ | ✓ | ✓ | ✓ | ✓ | CVE-2023 -42282: hex loopback
78- ` 127.1 ` | ❌ | ✓ | ✓ | ✓ | ✓ | CVE-2024 -29415: short loopback
78+ ` 127.1 ` | ✓ | ✓ | ❌ | ✓ | ✓ | CVE-2024 -29415: short loopback
7979` 2130706433 ` | ✓ | ✓ | ✓ | ✓ | ✓ | CVE-2024 -29415: integer loopback
80- ` ::fFFf:127.0.0.1 ` | ❌ | ✓ | ✓ | ❌ | ✓ | CVE-2024 -29415: IPv6-mapped loopback
81- ` ::0:ffff:127.0.0.1 ` | ❌ | ✓ | ✓ | ❌ | ✓ | ↑
82- ` 0::0:ffff:127.0.0.1 ` | ❌ | ✓ | ✓ | ❌ | ✓ | ↑
83- ` 0:0:0:0:0:ffff:127.0.0.1 ` | ❌ | ✓ | ✓ | ❌ | ✓ | ↑
84- ` 017700000001 ` | ✓ | n/a | n/a | ❌ | ❌ | octal 127.0.0.1
85- ` 01200034567 ` | ✓ | n/a | n/a | ❌ | ❌ | invalid: octal-style
86- ` 012.1.2.3 ` | ✓ | n/a | n/a | ❌ | ❌ | invalid: octal-style IPv4
87- ` 000:0:0000::01 ` | ❌ | ✓ | ✓ | ✓ | ✓ | valid: zero-compression
88- ` ::fFFf:127.255.255.256 ` | ✓ | n/a | n/a | n/a | ✓ | invalid: IPv4 overflow
80+ ` ::fFFf:127.0.0.1 ` | ✓ | ✓ | ❌ | ❌ | ✓ | CVE-2024 -29415: IPv6-mapped loopback
81+ ` ::0:ffff:127.0.0.1 ` | ✓ | ✓ | ❌ | ❌ | ✓ | ↑
82+ ` 0::0:ffff:127.0.0.1 ` | ✓ | ✓ | ❌ | ❌ | ✓ | ↑
83+ ` 0:0:0:0:0:ffff:127.0.0.1 ` | ✓ | ✓ | ❌ | ❌ | ✓ | ↑
84+ ` 017700000001 ` | n/a | n/a | ✓ | ❌ | ❌ | octal 127.0.0.1
85+ ` 01200034567 ` | n/a | n/a | ✓ | ❌ | ❌ | invalid: octal-style
86+ ` 012.1.2.3 ` | n/a | n/a | ✓ | ❌ | ❌ | invalid: octal-style IPv4
87+ ` 000:0:0000::01 ` | ✓ | ✓ | ❌ | ✓ | ✓ | valid: zero-compression
88+ ` ::fFFf:127.255.255.256 ` | n/a | n/a | ✓ | n/a | ✓ | invalid: IPv4 overflow
0 commit comments