Skip to content
Snippets Groups Projects
Commit 112c9d5c authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

gluon-wan-dnsmasq: don't rewrite resolv.conf when its content hasn't changed

This avoids poking dnsmasq every time a DHCP lease is obtained or a router
advertisement received.
parent 9f4770fd
No related branches found
No related tags found
No related merge requests found
config 'static' config 'static'
# list 'server' '192.168.0.1' # Example # list 'server' '192.168.0.1' # Example
...@@ -9,27 +9,38 @@ local uci = require('luci.model.uci').cursor() ...@@ -9,27 +9,38 @@ local uci = require('luci.model.uci').cursor()
local fs = require 'nixio.fs' local fs = require 'nixio.fs'
local function write_servers(f, servers) local new_servers = ''
local function append_servers(servers)
for _, server in ipairs(servers) do for _, server in ipairs(servers) do
f:write('nameserver ', server, '\n') new_servers = new_servers .. 'nameserver ' .. server .. '\n'
end end
end end
local function write_interface_servers(f, iface) local function append_interface_servers(iface)
write_servers(f, ubus:call('network.interface.' .. iface, 'status', {}).inactive['dns-server']) append_servers(ubus:call('network.interface.' .. iface, 'status', {}).inactive['dns-server'])
end end
fs.mkdirr(RESOLV_CONF_DIR)
local f = io.open(RESOLV_CONF, 'w+')
local static = uci:get_first('gluon-wan-dnsmasq', 'static', 'server') local static = uci:get_first('gluon-wan-dnsmasq', 'static', 'server')
if type(static) == 'table' and #static > 0 then if type(static) == 'table' and #static > 0 then
write_servers(f, static) append_servers(static)
else else
pcall(write_interface_servers, f, 'wan6') pcall(append_interface_servers, 'wan6')
pcall(write_interface_servers, f, 'wan') pcall(append_interface_servers, 'wan')
end end
f:close()
fs.mkdirr(RESOLV_CONF_DIR)
local old_servers = fs.readfile(RESOLV_CONF)
if new_servers ~= old_servers then
local f = io.open(RESOLV_CONF .. '.tmp', 'w')
f:write(new_servers)
f:close()
fs.rename(RESOLV_CONF .. '.tmp', RESOLV_CONF)
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment