luci-base: let luci.sys.net.devices() return all netdevs
authorJo-Philipp Wich <jo@mein.io>
Thu, 20 Jul 2017 09:44:25 +0000 (11:44 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 28 Jul 2017 13:44:10 +0000 (15:44 +0200)
The previous implementation of the function only returned ethernet
interfaces because it relied on the AF_PACKET family entries returned
by getifaddrs().

Change the function to simply collect all interface names it sees in
order to avoid missing tunnel interfaces.

Fixes FS#917.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/luasrc/sys.lua

index 99f3ee291972f94cad34a6079560cbb630204c59..115c54d54a7b1310469e1f1f07c0430e9b32e580 100644 (file)
@@ -348,8 +348,10 @@ end
 
 function net.devices()
        local devs = {}
+       local seen = {}
        for k, v in ipairs(nixio.getifaddrs()) do
-               if v.family == "packet" then
+               if v.name and not seen[v.name] then
+                       seen[v.name] = true
                        devs[#devs+1] = v.name
                end
        end