From bde145be541e7ba1ad9ed103f9dd82666295cacb Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 17 Aug 2012 08:18:06 +0000 Subject: [PATCH] protocols/core: write override mac to wifi-iface for wifi interfaces --- .../luasrc/model/cbi/admin_network/proto_dhcp.lua | 4 +- .../model/cbi/admin_network/proto_static.lua | 6 +-- protocols/core/luasrc/tools/proto.lua | 49 ++++++++++++++++++++++ 3 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 protocols/core/luasrc/tools/proto.lua 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 + +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 -- 2.11.0