diff options
-rw-r--r-- | protocols/core/luasrc/model/cbi/admin_network/proto_dhcp.lua | 4 | ||||
-rw-r--r-- | protocols/core/luasrc/model/cbi/admin_network/proto_static.lua | 6 | ||||
-rw-r--r-- | protocols/core/luasrc/tools/proto.lua | 49 |
3 files changed, 52 insertions, 7 deletions
diff --git a/protocols/core/luasrc/model/cbi/admin_network/proto_dhcp.lua b/protocols/core/luasrc/model/cbi/admin_network/proto_dhcp.lua index 5b22b8c85..8d2bcc6f6 100644 --- a/protocols/core/luasrc/model/cbi/admin_network/proto_dhcp.lua +++ b/protocols/core/luasrc/model/cbi/admin_network/proto_dhcp.lua @@ -80,9 +80,7 @@ vendorclass = section:taboption("advanced", Value, "vendorid", translate("Vendor Class to send when requesting DHCP")) -macaddr = section:taboption("advanced", Value, "macaddr", translate("Override MAC address")) -macaddr.placeholder = ifc and ifc:mac() or "00:00:00:00:00:00" -macaddr.datatype = "macaddr" +luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) diff --git a/protocols/core/luasrc/model/cbi/admin_network/proto_static.lua b/protocols/core/luasrc/model/cbi/admin_network/proto_static.lua index 7c9d8e8f3..e6bfcbbe3 100644 --- a/protocols/core/luasrc/model/cbi/admin_network/proto_static.lua +++ b/protocols/core/luasrc/model/cbi/admin_network/proto_static.lua @@ -14,7 +14,7 @@ local map, section, net = ... local ifc = net:get_interface() local ipaddr, netmask, gateway, broadcast, dns, accept_ra, send_rs, ip6addr, ip6gw -local macaddr, mtu, metric +local mtu, metric ipaddr = section:taboption("general", Value, "ipaddr", translate("IPv4 address")) @@ -68,9 +68,7 @@ if luci.model.network:has_ipv6() then end -macaddr = section:taboption("advanced", Value, "macaddr", translate("Override MAC address")) -macaddr.placeholder = ifc and ifc:mac() or "00:00:00:00:00:00" -macaddr.datatype = "macaddr" +luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) diff --git a/protocols/core/luasrc/tools/proto.lua b/protocols/core/luasrc/tools/proto.lua new file mode 100644 index 000000000..020589f8b --- /dev/null +++ b/protocols/core/luasrc/tools/proto.lua @@ -0,0 +1,49 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2012 Jo-Philipp Wich <xm@subsignal.org> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +]]-- + +module("luci.tools.proto", package.seeall) + +local uci = require "luci.model.uci".cursor() +local net = require "luci.model.network" + +function opt_macaddr(s, ifc, ...) + local v = luci.cbi.Value + local o = s:taboption("advanced", v, "macaddr", ...) + + o.placeholder = ifc and ifc:mac() + o.datatype = "macaddr" + + function o.cfgvalue(self, section) + local w = ifc and ifc:get_wifinet() + if w then + return w:get("macaddr") + else + return v.cfgvalue(self, section) + end + end + + function o.write(self, section, value) + local w = ifc and ifc:get_wifinet() + if w then + w:set("macaddr", value) + elseif value then + v.write(self, section, value) + else + v.remove(self, section) + end + end + + function o.remove(self, section) + self:write(self, section, nil) + end +end |