2 LuCI - Lua Configuration Interface
4 Copyright 2009 Steven Barth <steven@midlink.org>
5 Copyright 2009 Jo-Philipp Wich <xm@subsignal.org>
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
16 local fs = require "nixio.fs"
17 local nw = require "luci.model.network"
19 local has_ipv6 = nw:has_ipv6()
20 local has_pptp = fs.access("/usr/sbin/pptp")
21 local has_pppd = fs.access("/usr/sbin/pppd")
22 local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")()
23 local has_pppoa = fs.glob("/usr/lib/pppd/*/pppoatm.so")()
26 m = Map("network", translate("m_n_internet"))
29 s = m:section(NamedSection, "wan", "interface")
32 s:tab("general", translate("niu_general", "General Settings"))
33 s:tab("expert", translate("niu_expert", "Expert Settings"))
35 p = s:taboption("general", ListValue, "proto", translate("protocol"))
36 p.override_scheme = true
38 p:value("static", translate("static"))
39 p:value("dhcp", "DHCP")
40 if has_pppoe then p:value("pppoe", "PPPoE") end
41 if has_pppoa then p:value("pppoa", "PPPoA") end
42 if has_pptp then p:value("pptp", "PPTP") end
43 p:value("none", translate("none"))
47 ipaddr = s:taboption("general", Value, "ipaddr", translate("ipaddress"))
49 ipaddr:depends("proto", "static")
51 nm = s:taboption("general", Value, "netmask", translate("netmask"))
53 nm:depends("proto", "static")
54 nm:value("255.255.255.0")
55 nm:value("255.255.0.0")
58 gw = s:taboption("general", Value, "gateway", translate("gateway"))
59 gw:depends("proto", "static")
62 bcast = s:taboption("expert", Value, "bcast", translate("broadcast"))
63 bcast:depends("proto", "static")
66 ip6addr = s:taboption("expert", Value, "ip6addr", translate("ip6address"), translate("cidr6"))
67 ip6addr:depends("proto", "static")
69 ip6gw = s:taboption("expert", Value, "ip6gw", translate("gateway6"))
70 ip6gw:depends("proto", "static")
73 dns = s:taboption("expert", Value, "dns", translate("dnsserver"))
74 dns:depends("peerdns", "")
76 mtu = s:taboption("expert", Value, "mtu", "MTU")
79 mac = s:taboption("expert", Value, "macaddr", translate("macaddress"))
82 srv = s:taboption("general", Value, "server", translate("network_interface_server"))
83 srv:depends("proto", "pptp")
86 if has_pppd or has_pppoe or has_pppoa or has_pptp then
87 user = s:taboption("general", Value, "username", translate("username"))
89 user:depends("proto", "pptp")
90 user:depends("proto", "pppoe")
91 user:depends("proto", "pppoa")
93 pass = s:taboption("general", Value, "password", translate("password"))
96 pass:depends("proto", "pptp")
97 pass:depends("proto", "pppoe")
98 pass:depends("proto", "pppoa")
100 ka = s:taboption("expert", Value, "keepalive",
101 translate("network_interface_keepalive"),
102 translate("network_interface_keepalive_desc")
105 ka:depends("proto", "pptp")
106 ka:depends("proto", "pppoe")
107 ka:depends("proto", "pppoa")
109 demand = s:taboption("expert", Value, "demand",
110 translate("network_interface_demand"),
111 translate("network_interface_demand_desc")
113 demand:depends("proto", "pptp")
114 demand:depends("proto", "pppoe")
115 demand:depends("proto", "pppoa")
119 encaps = s:taboption("expert", ListValue, "encaps", translate("network_interface_encaps"))
120 encaps:depends("proto", "pppoa")
121 encaps:value("", translate("cbi_select"))
122 encaps:value("vc", "VC")
123 encaps:value("llc", "LLC")
125 vpi = s:taboption("expert", Value, "vpi", "VPI")
126 vpi:depends("proto", "pppoa")
128 vci = s:taboption("expert", Value, "vci", "VCI")
129 vci:depends("proto", "pppoa")
132 if has_pptp or has_pppd or has_pppoe or has_pppoa or has_3g then
134 defaultroute = s:taboption("expert", Flag, "defaultroute",
135 translate("network_interface_defaultroute"),
136 translate("network_interface_defaultroute_desc")
138 defaultroute:depends("proto", "pppoa")
139 defaultroute:depends("proto", "pppoe")
140 defaultroute:depends("proto", "pptp")
141 defaultroute.rmempty = false
142 function defaultroute.cfgvalue(...)
143 return ( AbstractValue.cfgvalue(...) or '1' )
146 peerdns = s:taboption("expert", Flag, "peerdns",
147 translate("network_interface_peerdns"),
148 translate("network_interface_peerdns_desc")
150 peerdns:depends("proto", "pppoa")
151 peerdns:depends("proto", "pppoe")
152 peerdns:depends("proto", "pptp")
153 peerdns.rmempty = false
154 peerdns.default = "1"
157 ipv6 = s:taboption("expert", Flag, "ipv6", translate("network_interface_ipv6") )
158 ipv6:depends("proto", "pppoa")
159 ipv6:depends("proto", "pppoe")
160 ipv6:depends("proto", "pptp")