Skip to content

Commit 67984da

Browse files
committed
luci-mod-status: add dynamic ethernet devices
Extend port status view to include dynamically detected ethernet interfaces (e.g. USB adapters). Devices are merged into the existing port list if not already present. Loopback interfaces are excluded. Filter against /sys/class/net to avoid stale entries after device removal. Tested on: - GL.iNet GL-MT6000 - OpenWrt 25.12.1 - Apple USB ethernet adapters (100 Mbps and 2.5 Gbps) Verified link state changes and hotplug (add/remove). Signed-off-by: Karsten Hoehn <git@karstenhoehn.net>
1 parent a6b7ad4 commit 67984da

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

  • modules/luci-mod-status/htdocs/luci-static/resources/view/status/include

modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/29_ports.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,13 +412,18 @@ return baseclass.extend({
412412
});
413413
});
414414

415-
return Promise.all(psePromises).then((pseResults) => {
415+
return Promise.all([
416+
Promise.all(psePromises),
417+
L.resolveDefault(fs.list('/sys/class/net'), [])
418+
]).then(([pseResults, devs]) => {
416419
const pseMap = {};
417420
pseResults.forEach((r) => {
418421
if (r.pse)
419422
pseMap[r.name] = r.pse;
420423
});
421-
data.push(pseMap);
424+
const present = (devs || []).map(d => d.name || d);
425+
data.push(pseMap);
426+
data.push(present);
422427
return data;
423428
});
424429
});
@@ -462,6 +467,23 @@ return baseclass.extend({
462467
}
463468
}
464469

470+
const presentDevices = new Set(data[6] || []);
471+
for (const dev in port_map) {
472+
if (dev === 'lo')
473+
continue;
474+
475+
if (!presentDevices.has(dev))
476+
continue;
477+
478+
if (!known_ports.find(p => p.device === dev)) {
479+
known_ports.push({
480+
role: 'extra',
481+
device: dev,
482+
netdev: network.instantiateDevice(dev)
483+
});
484+
}
485+
}
486+
465487
known_ports.sort(function(a, b) {
466488
return L.naturalCompare(a.device, b.device);
467489
});

0 commit comments

Comments
 (0)