#!/usr/bin/lua local site = require 'gluon.site_config' local util = require 'gluon.util' local uci = require('luci.model.uci').cursor() local function configure_radio(radio, index, config) uci:delete('wireless', radio, 'disabled') uci:set('wireless', radio, 'channel', config.channel) uci:set('wireless', radio, 'htmode', config.htmode) uci:set('wireless', radio, 'country', site.regdom) local client = 'client_' .. radio uci:delete('wireless', client) uci:section('wireless', 'wifi-iface', client, { device = radio, network = 'client', mode = 'ap', ssid = config.ssid, macaddr = util.generate_mac(2, index), } ) local mesh = 'mesh_' .. radio uci:delete('network', mesh) uci:delete('network', mesh .. '_vlan') if config.mesh_vlan then uci:section('network', 'interface', mesh, { proto = 'none', mtu = '1532', } ) uci:section('network', 'interface', mesh .. '_vlan', { ifname = '@' .. mesh .. '.' .. config.mesh_vlan, proto = 'batadv', mtu = '1528', mesh = 'bat0', } ) else uci:section('network', 'interface', mesh, { proto = 'batadv', mtu = '1528', mesh = 'bat0', } ) end uci:delete('wireless', mesh) uci:section('wireless', 'wifi-iface', mesh, { device = radio, network = mesh, mode = 'adhoc', ssid = config.mesh_ssid, bssid = config.mesh_bssid, macaddr = util.generate_mac(3, index), mcast_rate = config.mesh_mcast_rate, } ) end local radios = {} uci:foreach('wireless', 'wifi-device', function(s) table.insert(radios, s['.name']) end ) for index, radio in ipairs(radios) do local hwmode = uci:get('wireless', radio, 'hwmode') local config if hwmode == '11g' or hwmode == '11ng' then configure_radio(radio, index, site.wifi24) elseif hwmode == '11a' or hwmode == '11na' then configure_radio(radio, index, site.wifi5) end end uci:save('wireless') uci:save('network') uci:commit('wireless') uci:commit('network')