Quellcode durchsuchen

gluon-mesh-batman-adv-core: move config not specific to batman-adv to gluon-core

Matthias Schiffer vor 8 Jahren
Ursprung
Commit
8434896014

+ 166 - 17
package/gluon-core/luasrc/lib/gluon/upgrade/200-wireless

@@ -1,10 +1,11 @@
 #!/usr/bin/lua
 
 local util = require 'gluon.util'
-local uci = require('luci.model.uci').cursor()
 local site = require 'gluon.site_config'
 local sysconfig = require 'gluon.sysconfig'
 
+local uci = require('luci.model.uci').cursor()
+
 -- Initial
 if not sysconfig.gluon_version then
   uci:delete_all('wireless', 'wifi-iface')
@@ -18,30 +19,178 @@ local function get_channel(radio, config)
   end
 end
 
+local function is_disabled(name)
+  if uci:get('wireless', name) then
+    return uci:get_bool('wireless', name, 'disabled')
+  end
+end
+
+-- Returns the first argument that is not nil; don't call without any non-nil arguments!
+local function first_non_nil(first, ...)
+  if first ~= nil then
+    return first
+  else
+    return first_non_nil(...)
+  end
+end
+
+
+local function configure_ibss(config, radio, index, suffix, disabled)
+  local name = 'ibss_' .. radio
+
+  uci:delete('network', name)
+  uci:delete('network', name .. '_vlan')
+  uci:delete('wireless', name)
+
+  if not config then
+    return
+  end
+
+  local macaddr = util.get_wlan_mac(radio, index, 3)
+  if not macaddr then
+    return
+  end
+
+  if config.vlan then
+    uci:section('network', 'interface', name,
+      {
+        proto = 'none',
+      }
+    )
+
+    uci:section('network', 'interface', name .. '_vlan',
+      {
+        ifname = '@' .. name .. '.' .. config.vlan,
+        proto = 'gluon_mesh',
+      }
+    )
+  else
+    uci:section('network', 'interface', name,
+      {
+        proto = 'gluon_mesh',
+      }
+    )
+  end
+
+  uci:section('wireless', 'wifi-iface', name,
+    {
+      device = radio,
+      network = name,
+      mode = 'adhoc',
+      ssid = config.ssid,
+      bssid = config.bssid,
+      macaddr = macaddr,
+      mcast_rate = config.mcast_rate,
+      ifname = suffix and 'ibss' .. suffix,
+      disabled = disabled and 1 or 0,
+    }
+  )
+end
+
+local function configure_mesh(config, radio, index, suffix, disabled)
+  local name = 'mesh_' .. radio
+  local macfilter = uci:get('wireless', name, 'macfilter')
+  local maclist = uci:get('wireless', name, 'maclist')
+
+  uci:delete('network', name)
+  uci:delete('wireless', name)
+
+  if not config then
+    return
+  end
+
+  local macaddr = util.get_wlan_mac(radio, index, 2)
+  if not macaddr then
+    return
+  end
+
+  uci:section('network', 'interface', name,
+    {
+      proto = 'gluon_mesh',
+    }
+  )
+
+  uci:section('wireless', 'wifi-iface', name,
+    {
+      device = radio,
+      network = name,
+      mode = 'mesh',
+      mesh_id = config.id,
+      mesh_fwding = 0,
+      macaddr = macaddr,
+      mcast_rate = config.mcast_rate,
+      ifname = suffix and 'mesh' .. suffix,
+      disabled = disabled and 1 or 0,
+      macfilter = macfilter,
+      maclist = maclist,
+    }
+  )
+end
+
 local function configure_radio(radio, index, config)
-  if config then
-    local channel = get_channel(radio, config)
+  if not config then
+    return
+  end
+
+  local suffix = radio:match('^radio(%d+)$')
+  if not suffix then
+    return
+  end
+
+  local channel = get_channel(radio, config)
 
-    uci:delete('wireless', radio, 'disabled')
+  uci:delete('wireless', radio, 'disabled')
 
-    uci:set('wireless', radio, 'channel', channel)
-    uci:set('wireless', radio, 'htmode', 'HT20')
-    uci:set('wireless', radio, 'country', site.regdom)
+  uci:set('wireless', radio, 'channel', channel)
+  uci:set('wireless', radio, 'htmode', 'HT20')
+  uci:set('wireless', radio, 'country', site.regdom)
 
-    if config.supported_rates then
-      uci:set_list('wireless', radio, 'supported_rates', config.supported_rates)
-    else
-      uci:delete('wireless', radio, 'supported_rates')
-    end
+  if config.supported_rates then
+    uci:set_list('wireless', radio, 'supported_rates', config.supported_rates)
+  else
+    uci:delete('wireless', radio, 'supported_rates')
+  end
 
-    if config.basic_rate then
-      uci:set_list('wireless', radio, 'basic_rate', config.basic_rate)
-    else
-      uci:delete('wireless', radio, 'basic_rate')
-    end
+  if config.basic_rate then
+    uci:set_list('wireless', radio, 'basic_rate', config.basic_rate)
+  else
+    uci:delete('wireless', radio, 'basic_rate')
   end
+
+
+  local ibss_disabled = is_disabled('ibss_' .. radio)
+  local mesh_disabled = is_disabled('mesh_' .. radio)
+
+  configure_ibss(config.ibss, radio, index, suffix,
+    first_non_nil(
+      ibss_disabled,
+      mesh_disabled,
+      (config.ibss or {}).disabled, -- will be nil if config.ibss or config.ibss.disabled is unset
+      false
+    )
+  )
+  configure_mesh(config.mesh, radio, index, suffix,
+    first_non_nil(
+      mesh_disabled,
+      ibss_disabled,
+      (config.mesh or {}).disabled, -- will be nil if config.mesh or config.mesh.disabled is unset
+      false
+    )
+  )
 end
 
 util.iterate_radios(configure_radio)
 
+
+if uci:get('system', 'rssid_wlan0') then
+  if uci:get('wireless', 'mesh_radio0') then
+    uci:set('system', 'rssid_wlan0', 'dev', 'mesh0')
+  else
+    uci:set('system', 'rssid_wlan0', 'dev', 'ibss0')
+  end
+
+  uci:save('system')
+end
+
 uci:save('wireless')
+uci:save('network')

+ 4 - 6
package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan → package/gluon-core/luasrc/lib/gluon/upgrade/210-interface-wan

@@ -1,12 +1,10 @@
 #!/usr/bin/lua
 
 local site = require 'gluon.site_config'
-local uci = require 'luci.model.uci'
+local uci = require('luci.model.uci').cursor()
 
-local c = uci.cursor()
-
-if not c:get('network', 'mesh_wan') then
-  c:section('network', 'interface', 'mesh_wan', {
+if not uci:get('network', 'mesh_wan') then
+  uci:section('network', 'interface', 'mesh_wan', {
     ifname     = 'br-wan',
     proto      = 'gluon_mesh',
     transitive = 1,
@@ -15,4 +13,4 @@ if not c:get('network', 'mesh_wan') then
   })
 end
 
-c:save('network')
+uci:save('network')

+ 0 - 1
package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan → package/gluon-core/luasrc/lib/gluon/upgrade/220-interface-lan

@@ -18,7 +18,6 @@ uci:section('network', 'interface', 'mesh_lan', {
   proto         = 'gluon_mesh',
   transitive    = 1,
   fixed_mtu     = 1,
-  macaddr       = util.get_mac(2),
 })
 
 if uci:get('network', 'mesh_lan', 'auto') == nil then

+ 2 - 1
package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/300-gluon-mesh-batman-adv-core-wan → package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-mac-addresses

@@ -4,6 +4,7 @@ local util = require 'gluon.util'
 local uci = require('luci.model.uci').cursor()
 
 
--- fix up duplicate mac addresses (for mesh-on-WAN)
+-- fix up duplicate mac addresses (for meshing)
 uci:set('network', 'wan', 'macaddr', util.get_mac(1))
+uci:set('network', 'mesh_lan', 'macaddr', util.get_mac(2))
 uci:save('network')

+ 0 - 144
package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless

@@ -1,144 +0,0 @@
-#!/usr/bin/lua
-
-local site = require 'gluon.site_config'
-local util = require 'gluon.util'
-
-local uci = require('luci.model.uci').cursor()
-
-
-local function is_disabled(name)
-  if uci:get('wireless', name) then
-    return uci:get_bool('wireless', name, 'disabled')
-  end
-end
-
--- Returns the first argument that is not nil; don't call without any non-nil arguments!
-local function first_non_nil(first, ...)
-  if first ~= nil then
-    return first
-  else
-    return first_non_nil(...)
-  end
-end
-
-
-local function configure_ibss(config, radio, index, suffix, disabled)
-  local name = 'ibss_' .. radio
-
-  uci:delete('network', name)
-  uci:delete('network', name .. '_vlan')
-  uci:delete('wireless', name)
-
-  if not config then
-    return
-  end
-
-  local macaddr = util.get_wlan_mac(radio, index, 3)
-  if not macaddr then
-    return
-  end
-
-  if config.vlan then
-    uci:section('network', 'interface', name,
-      {
-        proto = 'none',
-      }
-    )
-
-    uci:section('network', 'interface', name .. '_vlan',
-      {
-        ifname = '@' .. name .. '.' .. config.vlan,
-        proto = 'gluon_mesh',
-      }
-    )
-  else
-    uci:section('network', 'interface', name,
-      {
-        proto = 'gluon_mesh',
-      }
-    )
-  end
-
-  uci:section('wireless', 'wifi-iface', name,
-    {
-      device = radio,
-      network = name,
-      mode = 'adhoc',
-      ssid = config.ssid,
-      bssid = config.bssid,
-      macaddr = macaddr,
-      mcast_rate = config.mcast_rate,
-      ifname = suffix and 'ibss' .. suffix,
-      disabled = disabled and 1 or 0,
-    }
-  )
-end
-
-local function configure_mesh(config, radio, index, suffix, disabled)
-  local name = 'mesh_' .. radio
-  local macfilter = uci:get('wireless', name, 'macfilter')
-  local maclist = uci:get('wireless', name, 'maclist')
-
-  uci:delete('network', name)
-  uci:delete('wireless', name)
-
-  if not config then
-    return
-  end
-
-  local macaddr = util.get_wlan_mac(radio, index, 2)
-  if not macaddr then
-    return
-  end
-
-  uci:section('network', 'interface', name,
-    {
-      proto = 'gluon_mesh',
-    }
-  )
-
-  uci:section('wireless', 'wifi-iface', name,
-    {
-      device = radio,
-      network = name,
-      mode = 'mesh',
-      mesh_id = config.id,
-      mesh_fwding = 0,
-      macaddr = macaddr,
-      mcast_rate = config.mcast_rate,
-      ifname = suffix and 'mesh' .. suffix,
-      disabled = disabled and 1 or 0,
-      macfilter = macfilter,
-      maclist = maclist,
-    }
-  )
-end
-
-local function configure_radio(radio, index, config)
-  local suffix = radio:match('^radio(%d+)$')
-
-  local ibss_disabled = is_disabled('ibss_' .. radio)
-  local mesh_disabled = is_disabled('mesh_' .. radio)
-
-  configure_ibss(config.ibss, radio, index, suffix,
-                 first_non_nil(
-                   ibss_disabled,
-                   mesh_disabled,
-                   (config.ibss or {}).disabled, -- will be nil if config.ibss or config.ibss.disabled is unset
-                   false
-                 )
-  )
-  configure_mesh(config.mesh, radio, index, suffix,
-                 first_non_nil(
-                   mesh_disabled,
-                   ibss_disabled,
-                   (config.mesh or {}).disabled, -- will be nil if config.mesh or config.mesh.disabled is unset
-                   false
-                 )
-  )
-end
-
-util.iterate_radios(configure_radio)
-
-uci:save('wireless')
-uci:save('network')

+ 0 - 13
package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/350-gluon-mesh-batman-adv-core-rssid

@@ -1,13 +0,0 @@
-#!/usr/bin/lua
-
-local uci = require('luci.model.uci').cursor()
-
-if uci:get('system', 'rssid_wlan0') then
-  if uci:get('wireless', 'mesh_radio0') then
-    uci:set('system', 'rssid_wlan0', 'dev', 'mesh0')
-  else
-    uci:set('system', 'rssid_wlan0', 'dev', 'ibss0')
-  end
-
-  uci:save('system')
-end