diff options
-rw-r--r-- | modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua | 117 |
1 files changed, 64 insertions, 53 deletions
diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua index 8758f7300..4a48e9f6d 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -2,7 +2,7 @@ LuCI - Lua Configuration Interface Copyright 2008 Steven Barth <steven@midlink.org> -Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> +Copyright 2008 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. @@ -23,17 +23,24 @@ local has_pptp = fs.access("/usr/sbin/pptp") local has_pppd = fs.access("/usr/sbin/pppd") local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")() local has_pppoa = fs.glob("/usr/lib/pppd/*/pppoatm.so")() +local has_ipv6 = fs.access("/proc/net/ipv6_route") m = Map("network", translate("interfaces"), translate("a_n_ifaces1")) s = m:section(NamedSection, arg[1], "interface") s.addremove = true -back = s:option(DummyValue, "_overview", translate("overview")) +s:tab("general", translate("a_n_general", "General Setup")) +if has_ipv6 then s:tab("ipv6", translate("a_n_ipv6", "IPv6 Setup")) end +s:tab("physical", translate("a_n_physical", "Physical Settings")) + +--[[ +back = s:taboption("general", DummyValue, "_overview", translate("overview")) back.value = "" back.titleref = luci.dispatcher.build_url("admin", "network", "network") +]] -p = s:option(ListValue, "proto", translate("protocol")) +p = s:taboption("general", ListValue, "proto", translate("protocol")) p.override_scheme = true p.default = "static" p:value("static", translate("static")) @@ -49,20 +56,38 @@ if not ( has_pppd and has_pppoe and has_pppoa and has_3g and has_pptp ) then p.description = translate("network_interface_prereq") end -br = s:option(Flag, "type", translate("a_n_i_bridge"), translate("a_n_i_bridge1")) +br = s:taboption("physical", Flag, "type", translate("a_n_i_bridge"), translate("a_n_i_bridge1")) br.enabled = "bridge" br.rmempty = true -stp = s:option(Flag, "stp", translate("a_n_i_stp"), +stp = s:taboption("physical", Flag, "stp", translate("a_n_i_stp"), translate("a_n_i_stp1", "Enables the Spanning Tree Protocol on this bridge")) stp:depends("type", "1") stp.rmempty = true -ifname = s:option(Value, "ifname", translate("interface")) -ifname.rmempty = true +ifname_single = s:taboption("physical", Value, "ifname_single", translate("interface")) +ifname_single.rmempty = true +ifname_single:depends("type", "") + +function ifname_single.cfgvalue(self, s) + return self.map.uci:get("network", s, "ifname") +end + +function ifname_single.write(self, s, val) + self.map.uci:set("network", s, "ifname", val) +end + + +ifname_multi = s:taboption("physical", MultiValue, "ifname_multi", translate("interface")) +ifname_multi.widget = "checkbox" +ifname_multi:depends("type", "1") +ifname_multi.cfgvalue = ifname_single.cfgvalue +ifname_multi.write = ifname_single.write + for i,d in ipairs(luci.sys.net.devices()) do if d ~= "lo" then - ifname:value(d) + ifname_single:value(d) + ifname_multi:value(d) end end @@ -71,7 +96,7 @@ if zones then if #zones == 0 then m:chain("firewall") - fwzone = s:option(Value, "_fwzone", + fwzone = s:taboption("general", Value, "_fwzone", translate("network_interface_fwzone"), translate("network_interface_fwzone_desc")) fwzone.rmempty = true @@ -104,57 +129,52 @@ if zones then end end else - fwzone = s:option(DummyValue, "_fwzone", translate("zone")) + 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") end -ipaddr = s:option(Value, "ipaddr", translate("ipaddress")) +ipaddr = s:taboption("general", Value, "ipaddr", translate("ipaddress")) ipaddr.rmempty = true ipaddr:depends("proto", "static") -nm = s:option(Value, "netmask", translate("netmask")) +nm = s:taboption("general", 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 = s:taboption("general", Value, "gateway", translate("gateway")) gw:depends("proto", "static") gw.rmempty = true -bcast = s:option(Value, "bcast", translate("broadcast")) +bcast = s:taboption("general", Value, "bcast", translate("broadcast")) bcast:depends("proto", "static") -bcast.optional = true -ip6addr = s:option(Value, "ip6addr", translate("ip6address"), translate("cidr6")) -ip6addr.optional = true +ip6addr = s:taboption("ipv6", Value, "ip6addr", translate("ip6address"), translate("cidr6")) ip6addr:depends("proto", "static") -ip6gw = s:option(Value, "ip6gw", translate("gateway6")) +ip6gw = s:taboption("ipv6", Value, "ip6gw", translate("gateway6")) ip6gw:depends("proto", "static") -ip6gw.optional = true -dns = s:option(Value, "dns", translate("dnsserver")) -dns.optional = true +dns = s:taboption("general", Value, "dns", translate("dnsserver")) +dns:depends("peerdns", "") -mtu = s:option(Value, "mtu", "MTU") -mtu.optional = true +mtu = s:taboption("physical", Value, "mtu", "MTU") mtu.isinteger = true -mac = s:option(Value, "macaddr", translate("macaddress")) -mac.optional = true +mac = s:taboption("physical", Value, "macaddr", translate("macaddress")) -srv = s:option(Value, "server", translate("network_interface_server")) +srv = s:taboption("general", Value, "server", translate("network_interface_server")) srv:depends("proto", "pptp") srv.rmempty = true if has_3g then - service = s:option(ListValue, "service", translate("network_interface_service")) + service = s:taboption("general", ListValue, "service", translate("network_interface_service")) service:value("", translate("cbi_select")) service:value("umts", "UMTS/GPRS") service:value("cdma", "CDMA") @@ -162,10 +182,10 @@ if has_3g then service:depends("proto", "3g") service.rmempty = true - apn = s:option(Value, "apn", translate("network_interface_apn")) + apn = s:taboption("general", Value, "apn", translate("network_interface_apn")) apn:depends("proto", "3g") - pincode = s:option(Value, "pincode", + pincode = s:taboption("general", Value, "pincode", translate("network_interface_pincode"), translate("network_interface_pincode_desc") ) @@ -173,7 +193,7 @@ if has_3g then end if has_pppd or has_pppoe or has_pppoa or has_3g or has_pptp then - user = s:option(Value, "username", translate("username")) + user = s:taboption("general", Value, "username", translate("username")) user.rmempty = true user:depends("proto", "pptp") user:depends("proto", "pppoe") @@ -181,7 +201,7 @@ if has_pppd or has_pppoe or has_pppoa or has_3g or has_pptp then user:depends("proto", "ppp") user:depends("proto", "3g") - pass = s:option(Value, "password", translate("password")) + pass = s:taboption("general", Value, "password", translate("password")) pass.rmempty = true pass.password = true pass:depends("proto", "pptp") @@ -190,22 +210,20 @@ if has_pppd or has_pppoe or has_pppoa or has_3g or has_pptp then pass:depends("proto", "ppp") pass:depends("proto", "3g") - ka = s:option(Value, "keepalive", + ka = s:taboption("general", Value, "keepalive", translate("network_interface_keepalive"), translate("network_interface_keepalive_desc") ) - ka.optional = true ka:depends("proto", "pptp") ka:depends("proto", "pppoe") ka:depends("proto", "pppoa") ka:depends("proto", "ppp") ka:depends("proto", "3g") - demand = s:option(Value, "demand", + demand = s:taboption("general", Value, "demand", translate("network_interface_demand"), translate("network_interface_demand_desc") ) - demand.optional = true demand:depends("proto", "pptp") demand:depends("proto", "pppoe") demand:depends("proto", "pppoa") @@ -214,31 +232,28 @@ if has_pppd or has_pppoe or has_pppoa or has_3g or has_pptp then end if has_pppoa then - encaps = s:option(ListValue, "encaps", translate("network_interface_encaps")) - encaps.optional = false + encaps = s:taboption("general", ListValue, "encaps", translate("network_interface_encaps")) encaps:depends("proto", "pppoa") encaps:value("", translate("cbi_select")) encaps:value("vc", "VC") encaps:value("llc", "LLC") - vpi = s:option(Value, "vpi", "VPI") - vpi.optional = false + vpi = s:taboption("general", Value, "vpi", "VPI") vpi:depends("proto", "pppoa") - vci = s:option(Value, "vci", "VCI") - vci.optional = false + vci = s:taboption("general", Value, "vci", "VCI") vci:depends("proto", "pppoa") end if has_pptp or has_pppd or has_pppoe or has_pppoa or has_3g then - device = s:option(Value, "device", + device = s:taboption("general", Value, "device", translate("network_interface_device"), translate("network_interface_device_desc") ) device:depends("proto", "ppp") device:depends("proto", "3g") - defaultroute = s:option(Flag, "defaultroute", + defaultroute = s:taboption("general", Flag, "defaultroute", translate("network_interface_defaultroute"), translate("network_interface_defaultroute_desc") ) @@ -252,7 +267,7 @@ if has_pptp or has_pppd or has_pppoe or has_pppoa or has_3g then return ( AbstractValue.cfgvalue(...) or '1' ) end - peerdns = s:option(Flag, "peerdns", + peerdns = s:taboption("general", Flag, "peerdns", translate("network_interface_peerdns"), translate("network_interface_peerdns_desc") ) @@ -266,51 +281,47 @@ if has_pptp or has_pppd or has_pppoe or has_pppoa or has_3g then return ( AbstractValue.cfgvalue(...) or '1' ) end - ipv6 = s:option(Flag, "ipv6", translate("network_interface_ipv6") ) + 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") - connect = s:option(Value, "connect", + connect = s:taboption("general", Value, "connect", translate("network_interface_connect"), translate("network_interface_connect_desc") ) - connect.optional = true connect:depends("proto", "ppp") connect:depends("proto", "pppoe") connect:depends("proto", "pppoa") connect:depends("proto", "pptp") connect:depends("proto", "3g") - disconnect = s:option(Value, "disconnect", + disconnect = s:taboption("general", Value, "disconnect", translate("network_interface_disconnect"), translate("network_interface_disconnect_desc") ) - disconnect.optional = true disconnect:depends("proto", "ppp") disconnect:depends("proto", "pppoe") disconnect:depends("proto", "pppoa") disconnect:depends("proto", "pptp") disconnect:depends("proto", "3g") - pppd_options = s:option(Value, "pppd_options", + pppd_options = s:taboption("general", Value, "pppd_options", translate("network_interface_pppd_options"), translate("network_interface_pppd_options_desc") ) - pppd_options.optional = true pppd_options:depends("proto", "ppp") pppd_options:depends("proto", "pppoa") pppd_options:depends("proto", "pppoe") pppd_options:depends("proto", "pptp") pppd_options:depends("proto", "3g") - maxwait = s:option(Value, "maxwait", + maxwait = s:taboption("general", Value, "maxwait", translate("network_interface_maxwait"), translate("network_interface_maxwait_desc") ) - maxwait.optional = true maxwait:depends("proto", "3g") end |