diff --git a/lib/network.js b/lib/network.js index f50248c..d8eeb21 100644 --- a/lib/network.js +++ b/lib/network.js @@ -872,18 +872,36 @@ function networkInterfaces(callback, rescan, defaultString) { let ieee8021xState = ''; let type = ''; + let ip4link = ''; + let ip4linksubnet = ''; + let ip6link = ''; + let ip6linksubnet = ''; + if ({}.hasOwnProperty.call(ifaces, dev)) { - let ifaceName = dev; - ifaces[dev].forEach(function (details) { + const ifaceName = dev; + ifaces[dev].forEach((details) => { if (details.family === 'IPv4' || details.family === 4) { + if (ip4.match(/^169.254/i)) { + ip4link = details.address; + ip4linksubnet = details.netmask; + } else if (!ip4) { + ip4 = details.address; + ip4subnet = details.netmask; + } + } + if (!ip4 && (details.family === 'IPv4' || details.family === 4)) { ip4 = details.address; ip4subnet = details.netmask; } if (details.family === 'IPv6' || details.family === 6) { - if (!ip6 || ip6.match(/^fe80::/i)) { + if (!ip6 && !ip6.match(/^fe80::/i)) { ip6 = details.address; ip6subnet = details.netmask; } + if (ip6.match(/^fe80::/i)) { + ip6link = details.address; + ip6linksubnet = details.netmask; + } } mac = details.mac; // fallback due to https://github.com/nodejs/node/issues/13581 (node 8.1 - node 8.2) @@ -895,7 +913,15 @@ function networkInterfaces(callback, rescan, defaultString) { mac = _mac[dev] || ''; } }); - let iface = dev.split(':')[0].trim().toLowerCase(); + if (!ip4 && ip4link) { + ip4 = ip4link; + ip4subnet = ip4linksubnet; + } + if (!ip6 && ip6link) { + ip6 = ip6link; + ip6subnet = ip6linksubnet; + } + const iface = dev.split(':')[0].trim().toLowerCase(); let ifaceSanitized = ''; const s = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(iface); const l = util.mathMin(s.length, 2000);