m = Map("network", translate("interfaces"), translate("a_n_ifaces1"))
s = m:section(TypedSection, "interface", "")
-s.addremove = true
-s:exclude("loopback")
+function s.filter(section)
+ return section ~= "loopback" and (not arg or #arg == 0 or
+ luci.util.contains(arg, section))
+end
+
+if not arg or #arg == 0 then
+ s.addremove = true
+end
s:depends("proto", "static")
s:depends("proto", "dhcp")
br.enabled = "bridge"
br.rmempty = true
-s:option(Value, "ifname", translate("interface")).rmempty = true
+ifname = s:option(Value, "ifname", translate("interface"))
+ifname.rmempty = true
+for i,d in ipairs(luci.sys.net.devices()) do
+ if d ~= "lo" then
+ ifname:value(d)
+ end
+end
-s:option(Value, "ipaddr", translate("ipaddress"))
+ipaddr = s:option(Value, "ipaddr", translate("ipaddress"))
+ipaddr.rmempty = true
+ipaddr:depends("proto", "static")
-s:option(Value, "netmask", translate("netmask")):depends("proto", "static")
+nm = s:option(Value, "netmask", translate("netmask"))
+nm.rmempty = true
+nm:depends("proto", "static")
+nm:value("255.255.255.0")
+nm:value("255.255.0.0")
+nm:value("255.0.0.0")
gw = s:option(Value, "gateway", translate("gateway"))
gw:depends("proto", "static")
gw.rmempty = true
+ip6addr = s:option(Value, "ip6addr", translate("ip6address"), translate("cidr6"))
+ip6addr.rmempty = true
+ip6addr:depends("proto", "static")
+
+ip6gw = s:option(Value, "ip6gw", translate("gateway6"))
+ip6gw:depends("proto", "static")
+ip6gw.rmempty = true
+
dns = s:option(Value, "dns", translate("dnsserver"))
dns:depends("proto", "static")
dns.optional = true