luci-mod-admin-full: fix changing alias interface ifnames
authorJo-Philipp Wich <jo@mein.io>
Sun, 15 Jul 2018 15:21:02 +0000 (17:21 +0200)
committerJo-Philipp Wich <jo@mein.io>
Sun, 15 Jul 2018 15:29:01 +0000 (17:29 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua

index 5c630bb5ce1499ed953fc7139679a0efaf6cd102..06bce01fc4459adb2f8696b0e9c67d99424c51d8 100644 (file)
@@ -285,6 +285,7 @@ if not net:is_floating() then
        ifname_single.template = "cbi/network_ifacelist"
        ifname_single.widget = "radio"
        ifname_single.nobridges = true
+       ifname_single.noaliases = false
        ifname_single.rmempty = false
        ifname_single.network = arg[1]
        ifname_single:depends("type", "")
@@ -295,12 +296,18 @@ if not net:is_floating() then
        end
 
        function ifname_single.write(self, s, val)
-               local i
+               local _, i
                local new_ifs = { }
                local old_ifs = { }
 
-               for _, i in ipairs(net:get_interfaces() or { net:get_interface() }) do
-                       old_ifs[#old_ifs+1] = i:name()
+               local alias = net:is_alias()
+
+               if alias then
+                       old_ifs[1] = '@' .. alias
+               else
+                       for _, i in ipairs(net:get_interfaces() or { net:get_interface() }) do
+                               old_ifs[#old_ifs+1] = i:name()
+                       end
                end
 
                for i in ut.imatch(val) do
@@ -335,6 +342,7 @@ if not net:is_virtual() then
        ifname_multi = s:taboption("physical", Value, "ifname_multi", translate("Interface"))
        ifname_multi.template = "cbi/network_ifacelist"
        ifname_multi.nobridges = true
+       ifname_multi.noaliases = true
        ifname_multi.rmempty = false
        ifname_multi.network = arg[1]
        ifname_multi.widget = "checkbox"