gluon-core: replace nixio with luaposix and luabitops
This commit is contained in:
parent
60a0e78a4a
commit
fd10d7cbb0
@ -14,7 +14,7 @@ define Package/gluon-core
|
|||||||
TITLE:=Base files of Gluon
|
TITLE:=Base files of Gluon
|
||||||
DEPENDS:= \
|
DEPENDS:= \
|
||||||
+gluon-site +libgluonutil +libiwinfo-lua +lua-platform-info +lua-simple-uci +lua-hash +lua-jsonc \
|
+gluon-site +libgluonutil +libiwinfo-lua +lua-platform-info +lua-simple-uci +lua-hash +lua-jsonc \
|
||||||
+luci-lib-nixio +vxlan +odhcp6c +firewall +pretty-hostname
|
+luabitop +luaposix +luci-lib-nixio +vxlan +odhcp6c +firewall +pretty-hostname
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/gluon-core/description
|
define Package/gluon-core/description
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/usr/bin/lua
|
#!/usr/bin/lua
|
||||||
|
|
||||||
local fs = require 'nixio.fs'
|
|
||||||
local sysconfig = require 'gluon.sysconfig'
|
local sysconfig = require 'gluon.sysconfig'
|
||||||
|
local unistd = require 'posix.unistd'
|
||||||
|
|
||||||
|
|
||||||
if fs.stat('/lib/gluon/version/core') and not sysconfig.gluon_version then
|
if unistd.access('/lib/gluon/version/core') and not sysconfig.gluon_version then
|
||||||
-- This isn't an initial upgrade, so set gluon_version
|
-- This isn't an initial upgrade, so set gluon_version
|
||||||
sysconfig.gluon_version = ''
|
sysconfig.gluon_version = ''
|
||||||
end
|
end
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/lua
|
#!/usr/bin/lua
|
||||||
|
|
||||||
local fs = require 'nixio.fs'
|
local unistd = require 'posix.unistd'
|
||||||
|
|
||||||
|
|
||||||
if not fs.access('/lib/gluon/domains/') then
|
if not unistd.access('/lib/gluon/domains/') then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ end
|
|||||||
local uci = require('simple-uci').cursor()
|
local uci = require('simple-uci').cursor()
|
||||||
|
|
||||||
local domain = uci:get('gluon', 'core', 'domain')
|
local domain = uci:get('gluon', 'core', 'domain')
|
||||||
if domain and not fs.access('/lib/gluon/domains/' .. domain .. '.json') then
|
if domain and not unistd.access('/lib/gluon/domains/' .. domain .. '.json') then
|
||||||
io.stderr:write(string.format("Warning: invalid mesh domain '%s' configured, resetting to default...\n", domain))
|
io.stderr:write(string.format("Warning: invalid mesh domain '%s' configured, resetting to default...\n", domain))
|
||||||
domain = nil
|
domain = nil
|
||||||
end
|
end
|
||||||
|
@ -11,8 +11,6 @@ end
|
|||||||
local util = require 'gluon.util'
|
local util = require 'gluon.util'
|
||||||
local platform = require 'gluon.platform'
|
local platform = require 'gluon.platform'
|
||||||
|
|
||||||
local fs = require 'nixio.fs'
|
|
||||||
|
|
||||||
|
|
||||||
local try_files = {
|
local try_files = {
|
||||||
'/sys/class/net/eth0/address'
|
'/sys/class/net/eth0/address'
|
||||||
@ -52,7 +50,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
for _, file in ipairs(try_files) do
|
for _, file in ipairs(try_files) do
|
||||||
local addr = fs.readfile(file)
|
local addr = util.readfile(file)
|
||||||
|
|
||||||
if addr then
|
if addr then
|
||||||
sysconfig.primary_mac = util.trim(addr)
|
sysconfig.primary_mac = util.trim(addr)
|
||||||
|
@ -12,15 +12,15 @@ local util = require 'gluon.util'
|
|||||||
local platform = require 'gluon.platform'
|
local platform = require 'gluon.platform'
|
||||||
local site = require 'gluon.site'
|
local site = require 'gluon.site'
|
||||||
|
|
||||||
local fs = require 'nixio.fs'
|
|
||||||
local uci = require('simple-uci').cursor()
|
local uci = require('simple-uci').cursor()
|
||||||
|
local unistd = require 'posix.unistd'
|
||||||
|
|
||||||
|
|
||||||
local function iface_exists(ifaces)
|
local function iface_exists(ifaces)
|
||||||
if not ifaces then return nil end
|
if not ifaces then return nil end
|
||||||
|
|
||||||
for iface in ifaces:gmatch('%S+') do
|
for iface in ifaces:gmatch('%S+') do
|
||||||
if fs.access('/sys/class/net/' .. iface:gsub('%..*$', '')) then
|
if unistd.access('/sys/class/net/' .. iface:gsub('%..*$', '')) then
|
||||||
return ifaces
|
return ifaces
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/lua
|
#!/usr/bin/lua
|
||||||
|
|
||||||
local fs = require 'nixio.fs'
|
local unistd = require 'posix.unistd'
|
||||||
|
|
||||||
if not fs.access('/etc/opkg/distfeeds.conf') then
|
if not unistd.access('/etc/opkg/distfeeds.conf') then
|
||||||
os.exit(0)
|
os.exit(0)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -22,8 +22,8 @@ subst['%%A'] = f:read()
|
|||||||
f:close()
|
f:close()
|
||||||
|
|
||||||
subst['%%GS'] = site.site_code()
|
subst['%%GS'] = site.site_code()
|
||||||
subst['%%GV'] = util.trim(fs.readfile('/lib/gluon/gluon-version'))
|
subst['%%GV'] = util.trim(util.readfile('/lib/gluon/gluon-version'))
|
||||||
subst['%%GR'] = util.trim(fs.readfile('/lib/gluon/release'))
|
subst['%%GR'] = util.trim(util.readfile('/lib/gluon/release'))
|
||||||
|
|
||||||
local prefix = subst['%%d'] .. '_'
|
local prefix = subst['%%d'] .. '_'
|
||||||
|
|
||||||
|
@ -2,10 +2,9 @@
|
|||||||
|
|
||||||
local sysconfig = require 'gluon.sysconfig'
|
local sysconfig = require 'gluon.sysconfig'
|
||||||
|
|
||||||
local fs = require 'nixio.fs'
|
|
||||||
local util = require 'gluon.util'
|
local util = require 'gluon.util'
|
||||||
|
|
||||||
|
|
||||||
-- Save the Gluon version in the sysconfig so we know which version we
|
-- Save the Gluon version in the sysconfig so we know which version we
|
||||||
-- upgraded from after the next upgrade
|
-- upgraded from after the next upgrade
|
||||||
sysconfig.gluon_version = util.trim(fs.readfile('/lib/gluon/gluon-version'))
|
sysconfig.gluon_version = util.trim(util.readfile('/lib/gluon/gluon-version'))
|
||||||
|
@ -22,11 +22,11 @@ local ipairs = ipairs
|
|||||||
local pairs = pairs
|
local pairs = pairs
|
||||||
local table = table
|
local table = table
|
||||||
|
|
||||||
local nixio = require 'nixio'
|
local bit = require 'bit'
|
||||||
|
local posix_glob = require 'posix.glob'
|
||||||
local hash = require 'hash'
|
local hash = require 'hash'
|
||||||
local sysconfig = require 'gluon.sysconfig'
|
local sysconfig = require 'gluon.sysconfig'
|
||||||
local site = require 'gluon.site'
|
local site = require 'gluon.site'
|
||||||
local fs = require 'nixio.fs'
|
|
||||||
|
|
||||||
|
|
||||||
module 'gluon.util'
|
module 'gluon.util'
|
||||||
@ -77,14 +77,24 @@ function replace_prefix(file, prefix, add)
|
|||||||
os.rename(tmp, file)
|
os.rename(tmp, file)
|
||||||
end
|
end
|
||||||
|
|
||||||
function exec(command)
|
local function readall(f)
|
||||||
local pp = io.popen(command)
|
if not f then
|
||||||
local data = pp:read("*a")
|
return nil
|
||||||
pp:close()
|
end
|
||||||
|
|
||||||
|
local data = f:read('*a')
|
||||||
|
f:close()
|
||||||
return data
|
return data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function readfile(file)
|
||||||
|
return readall(io.open(file))
|
||||||
|
end
|
||||||
|
|
||||||
|
function exec(command)
|
||||||
|
return readall(io.popen(command))
|
||||||
|
end
|
||||||
|
|
||||||
function node_id()
|
function node_id()
|
||||||
return string.gsub(sysconfig.primary_mac, ':', '')
|
return string.gsub(sysconfig.primary_mac, ':', '')
|
||||||
end
|
end
|
||||||
@ -120,20 +130,25 @@ function get_mesh_devices(uconn)
|
|||||||
return devices
|
return devices
|
||||||
end
|
end
|
||||||
|
|
||||||
local function find_phy_by_path(path)
|
-- Safe glob: returns an empty table when the glob fails because of
|
||||||
for phy in fs.glob('/sys/devices/' .. path .. '/ieee80211/phy*') do
|
-- a non-existing path
|
||||||
return phy:match('([^/]+)$')
|
function glob(pattern)
|
||||||
|
return posix_glob.glob(pattern) or {}
|
||||||
end
|
end
|
||||||
|
|
||||||
for phy in fs.glob('/sys/devices/platform/' .. path .. '/ieee80211/phy*') do
|
local function find_phy_by_path(path)
|
||||||
|
local phy = glob('/sys/devices/' .. path .. '/ieee80211/phy*')[1]
|
||||||
|
or glob('/sys/devices/platform/' .. path .. '/ieee80211/phy*')[1]
|
||||||
|
|
||||||
|
if phy then
|
||||||
return phy:match('([^/]+)$')
|
return phy:match('([^/]+)$')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function find_phy_by_macaddr(macaddr)
|
local function find_phy_by_macaddr(macaddr)
|
||||||
local addr = macaddr:lower()
|
local addr = macaddr:lower()
|
||||||
for file in fs.glob('/sys/class/ieee80211/*/macaddress') do
|
for _, file in ipairs(glob('/sys/class/ieee80211/*/macaddress')) do
|
||||||
if trim(fs.readfile(file)) == addr then
|
if trim(readfile(file)) == addr then
|
||||||
return file:match('([^/]+)/macaddress$')
|
return file:match('([^/]+)/macaddress$')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -181,14 +196,14 @@ function generate_mac(i)
|
|||||||
m1 = tonumber(m1, 16)
|
m1 = tonumber(m1, 16)
|
||||||
m6 = tonumber(m6, 16)
|
m6 = tonumber(m6, 16)
|
||||||
|
|
||||||
m1 = nixio.bit.bor(m1, 0x02) -- set locally administered bit
|
m1 = bit.bor(m1, 0x02) -- set locally administered bit
|
||||||
m1 = nixio.bit.band(m1, 0xFE) -- unset the multicast bit
|
m1 = bit.band(m1, 0xFE) -- unset the multicast bit
|
||||||
|
|
||||||
-- It's necessary that the first 45 bits of the MAC address don't
|
-- It's necessary that the first 45 bits of the MAC address don't
|
||||||
-- vary on a single hardware interface, since some chips are using
|
-- vary on a single hardware interface, since some chips are using
|
||||||
-- a hardware MAC filter. (e.g 'rt305x')
|
-- a hardware MAC filter. (e.g 'rt305x')
|
||||||
|
|
||||||
m6 = nixio.bit.band(m6, 0xF8) -- zero the last three bits (space needed for counting)
|
m6 = bit.band(m6, 0xF8) -- zero the last three bits (space needed for counting)
|
||||||
m6 = m6 + i -- add virtual interface id
|
m6 = m6 + i -- add virtual interface id
|
||||||
|
|
||||||
return string.format('%02x:%s:%s:%s:%s:%02x', m1, m2, m3, m4, m5, m6)
|
return string.format('%02x:%s:%s:%s:%s:%02x', m1, m2, m3, m4, m5, m6)
|
||||||
|
Loading…
Reference in New Issue
Block a user