Преглед на файлове

gluon-mesh-batman-adv-core: don't break network configuration on upgrades with mesh_on_lan=true

Matthias Schiffer преди 9 години
родител
ревизия
66f6ff2385
променени са 1 файла, в които са добавени 19 реда и са изтрити 10 реда
  1. 19 10
      package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan

+ 19 - 10
package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan

@@ -1,23 +1,32 @@
 #!/usr/bin/lua
 
 local site = require 'gluon.site_config'
-local uci = require 'luci.model.uci'
 local util = require 'gluon.util'
 local sysconfig = require 'gluon.sysconfig'
 
-local c = uci.cursor()
+local uci = require('luci.model.uci').cursor()
+local lutil = require 'luci.util'
 
-if sysconfig.lan_ifname then
-  if not c:get('network', 'mesh_lan') then
-    c:section('network', 'interface', 'mesh_lan',
+if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
+  local enable = site.mesh_on_lan
+
+  if enable then
+    local interfaces = uci:get('network', 'client', 'ifname')
+
+    if interfaces and lutil.contains(interfaces:split(' '), sysconfig.lan_ifname) then
+      enable = false
+    end
+  end
+
+  uci:section('network', 'interface', 'mesh_lan',
               { ifname  = sysconfig.lan_ifname
               , proto   = 'batadv'
               , mesh    = 'bat0'
               , macaddr = util.generate_mac(1, 1)
-              , auto    = site.mesh_on_lan and 1 or 0
-              })
-  end
+              , auto    = enable and 1 or 0
+  })
+
+  uci:save('network')
+  uci:commit('network')
 end
 
-c:save('network')
-c:commit('network')