Skip to content

Commit 8f42db0

Browse files
committed
make getIpAddresses return ip6 addresses too
1 parent db222ca commit 8f42db0

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

lib/iputils.js

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,24 @@ var getIpAddresses = (function() {
7070

7171
var os = require('os');
7272

73+
var isIpv6WeCareAbout = (function() {
74+
var ignoredTopSegments = {
75+
"fe80": true,
76+
"ff00": true,
77+
"fc00": true,
78+
"fec0": true,
79+
};
80+
return function(address) {
81+
// honestly I don't really understand ipv6 and which address make no sense. It seems
82+
// like the top few bits might stay but
83+
84+
// should probably check for 0 using ip6addr
85+
86+
var topSegment = address.substr(0, 4).toLowerCase();
87+
return ignoredTopSegments[topSegment] === undefined;
88+
}
89+
}());
90+
7391
return function() {
7492
var now = Date.now();
7593
if (!addresses || now - lastRead > cacheTime) {
@@ -78,9 +96,13 @@ var getIpAddresses = (function() {
7896
addresses = [];
7997
for (var k in interfaces) {
8098
for (var k2 in interfaces[k]) {
81-
var address = interfaces[k][k2];
82-
if (address.family === 'IPv4' && !address.internal) {
83-
addresses.push(address.address);
99+
var iface = interfaces[k][k2];
100+
if (!iface.internal) {
101+
if (iface.family === 'IPv4') {
102+
addresses.push(iface.address);
103+
} else if (iface.family === 'IPv6' && isIpv6WeCareAbout(iface.address)) {
104+
addresses.push("[" + iface.address + "]");
105+
}
84106
}
85107
}
86108
}

0 commit comments

Comments
 (0)