networkInterface() fix secondary and link-local ip

This commit is contained in:
Sebastian Hildebrandt 2025-12-25 08:11:30 +01:00
parent 69b406913e
commit 6b160d9a90

View File

@ -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);