From 5047592f778a0a23d11a13b00a62f0f4126dad95 Mon Sep 17 00:00:00 2001 From: Oleksandr Pastushkov Date: Mon, 4 Jan 2021 00:58:56 +0200 Subject: [PATCH] luci-mod-network: issue with breakdown of dnsmasq after duplication of static IP was fixed Before this commit, assigning the same static IP address to two different hosts disabled dnsmasq. Logic of adding a new static lease was modified. If user try to assign a new MAC address to already reserved IP, old lease will be modified (list of MAC addresses will be extended by new MAC) instead of creation a new lease with the same IP. Signed-off-by: Oleksandr Pastushkov (cherry picked from commit 463e910119813aaea0755ff5c16c91ce412a8cbb) --- .../resources/view/network/dhcp.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js index c2a77f2b0c..253b37b846 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -469,6 +469,25 @@ return view.extend({ so.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); }); + so.write = function(section, value) { + var ip = this.map.lookupOption('ip', section)[0].formvalue(section); + var hosts = uci.sections('dhcp', 'host'); + var section_removed = false; + + for (var i = 0; i < hosts.length; i++) { + if (ip == hosts[i].ip) { + uci.set('dhcp', hosts[i]['.name'], 'mac', [hosts[i].mac, value].join(' ')); + uci.remove('dhcp', section); + section_removed = true; + break; + } + } + + if (!section_removed) { + uci.set('dhcp', section, 'mac', value); + } + } + so = ss.option(form.Value, 'ip', _('IPv4-Address')); so.datatype = 'or(ip4addr,"ignore")'; so.validate = function(section, value) { -- 2.30.2