$Id$
]]--
-local wa = require "luci.tools.webadmin"
local fs = require "nixio.fs"
+local fw = require "luci.model.firewall"
arg[1] = arg[1] or ""
local has_ipv6 = fs.access("/proc/net/ipv6_route")
m = Map("network", translate("interfaces"), translate("a_n_ifaces1"))
+m:chain("firewall")
+
+fw.init(m.uci)
s = m:section(NamedSection, arg[1], "interface")
s.addremove = true
end
end
-local zones = wa.network_get_zones(arg[1])
-if zones then
- if #zones == 0 then
- m:chain("firewall")
-
- fwzone = s:taboption("general", Value, "_fwzone",
- translate("network_interface_fwzone"),
- translate("network_interface_fwzone_desc"))
- fwzone.rmempty = true
- fwzone:value("", "- " .. translate("none") .. " -")
- fwzone:value(arg[1])
- m.uci:load("firewall")
- m.uci:foreach("firewall", "zone",
- function (section)
- fwzone:value(section.name)
- end
- )
-
- function fwzone.write(self, section, value)
- local zone = wa.firewall_find_zone(value)
- local stat
-
- if not zone then
- stat = m.uci:section("firewall", "zone", nil, {
- name = value,
- network = section
- })
- else
- local net = m.uci:get("firewall", zone, "network")
- net = (net or value) .. " " .. section
- stat = m.uci:set("firewall", zone, "network", net)
- end
-
- if stat then
- self.render = function() end
- end
+
+fwzone = s:taboption("general", Value, "_fwzone",
+ translate("network_interface_fwzone"),
+ translate("network_interface_fwzone_desc"))
+
+fwzone.template = "cbi/firewall_zonelist"
+fwzone.rmempty = false
+
+function fwzone.cfgvalue(self, section)
+ self.iface = section
+ local z = fw:get_zones_by_network(section)[1]
+ return z and z:name()
+end
+
+function fwzone.write(self, section, value)
+ local zone = fw:get_zone(value)
+
+ if not zone and value == '-' then
+ value = m:formvalue(self:cbid(section) .. ".newzone")
+ if value and #value > 0 then
+ zone = fw:add_zone(value)
+ else
+ fw:del_network(section)
end
- else
- fwzone = s:taboption("general", DummyValue, "_fwzone", translate("zone"))
- fwzone.value = table.concat(zones, ", ")
end
- fwzone.titleref = luci.dispatcher.build_url("admin", "network", "firewall", "zones")
- m.uci:unload("firewall")
+
+ if zone then
+ fw:del_network(section)
+ zone:add_network(section)
+ end
end
ipaddr = s:taboption("general", Value, "ipaddr", translate("ipaddress"))
bcast = s:taboption("general", Value, "bcast", translate("broadcast"))
bcast:depends("proto", "static")
-ip6addr = s:taboption("ipv6", Value, "ip6addr", translate("ip6address"), translate("cidr6"))
-ip6addr:depends("proto", "static")
+if has_ipv6 then
+ ip6addr = s:taboption("ipv6", Value, "ip6addr", translate("ip6address"), translate("cidr6"))
+ ip6addr:depends("proto", "static")
-ip6gw = s:taboption("ipv6", Value, "ip6gw", translate("gateway6"))
-ip6gw:depends("proto", "static")
+ ip6gw = s:taboption("ipv6", Value, "ip6gw", translate("gateway6"))
+ ip6gw:depends("proto", "static")
+end
dns = s:taboption("general", Value, "dns", translate("dnsserver"))
dns:depends("peerdns", "")
return ( AbstractValue.cfgvalue(...) or '1' )
end
- ipv6 = s:taboption("general", Flag, "ipv6", translate("network_interface_ipv6") )
- ipv6:depends("proto", "ppp")
- ipv6:depends("proto", "pppoa")
- ipv6:depends("proto", "pppoe")
- ipv6:depends("proto", "pptp")
- ipv6:depends("proto", "3g")
+ if has_ipv6 then
+ ipv6 = s:taboption("general", Flag, "ipv6", translate("network_interface_ipv6") )
+ ipv6:depends("proto", "ppp")
+ ipv6:depends("proto", "pppoa")
+ ipv6:depends("proto", "pppoe")
+ ipv6:depends("proto", "pptp")
+ ipv6:depends("proto", "3g")
+ end
connect = s:taboption("general", Value, "connect",
translate("network_interface_connect"),