diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2013-01-22 10:44:28 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2013-01-22 10:44:28 +0000 |
commit | 686de0fbec7d31cb6ae60531a87618b65a5dc0be (patch) | |
tree | 3edcd9db6c51c1a5197445d3f5488f752d3c125a /protocols/ipv6 | |
parent | a4f3f52d1c5932633be3b58996f9b719120d0717 (diff) |
move dhcpv6 support into luci-proto-6x4, rename luci-proto-6x4 to luci-proto-ipv6
Diffstat (limited to 'protocols/ipv6')
7 files changed, 391 insertions, 0 deletions
diff --git a/protocols/ipv6/Makefile b/protocols/ipv6/Makefile new file mode 100644 index 000000000..f7fac7740 --- /dev/null +++ b/protocols/ipv6/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk diff --git a/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua new file mode 100644 index 000000000..0b1f31ce7 --- /dev/null +++ b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua @@ -0,0 +1,102 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2011 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. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 +]]-- + +local map, section, net = ... + +local ipaddr, peeraddr, ip6addr, tunnelid, username, password +local defaultroute, metric, ttl, mtu + + +ipaddr = s:taboption("general", Value, "ipaddr", + translate("Local IPv4 address"), + translate("Leave empty to use the current WAN address")) + +ipaddr.datatype = "ip4addr" + + +peeraddr = s:taboption("general", Value, "peeraddr", + translate("Remote IPv4 address"), + translate("This is usually the address of the nearest PoP operated by the tunnel broker")) + +peeraddr.rmempty = false +peeraddr.datatype = "ip4addr" + + +ip6addr = s:taboption("general", Value, "ip6addr", + translate("Local IPv6 address"), + translate("This is the local endpoint address assigned by the tunnel broker, it usually ends with <code>:2</code>")) + +ip6addr.datatype = "ip6addr" + + +local ip6prefix = s:taboption("general", Value, "ip6prefix", + translate("IPv6 routed prefix"), + translate("This is the prefix routed to you by the tunnel broker for use by clients")) + +ip6prefix.datatype = "ip6addr" + + +local update = section:taboption("general", Flag, "_update", + translate("Dynamic tunnel"), + translate("Enable HE.net dynamic endpoint update")) + +update.enabled = "1" +update.disabled = "0" + +function update.write() end +function update.remove() end +function update.cfgvalue(self, section) + return (tonumber(m:get(section, "tunnelid")) ~= nil) + and self.enabled or self.disabled +end + + +tunnelid = section:taboption("general", Value, "tunnelid", translate("Tunnel ID")) +tunnelid.datatype = "uinteger" +tunnelid:depends("_update", update.enabled) + + +username = section:taboption("general", Value, "username", + translate("HE.net user ID"), + translate("This is the 32 byte hex encoded user ID, not the login name")) + +username:depends("_update", update.enabled) + + +password = section:taboption("general", Value, "password", translate("HE.net password")) +password.password = true +password:depends("_update", update.enabled) + + +defaultroute = section:taboption("advanced", Flag, "defaultroute", + translate("Default gateway"), + translate("If unchecked, no default route is configured")) + +defaultroute.default = defaultroute.enabled + + +metric = section:taboption("advanced", Value, "metric", + translate("Use gateway metric")) + +metric.placeholder = "0" +metric.datatype = "uinteger" +metric:depends("defaultroute", defaultroute.enabled) + + +ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) +ttl.placeholder = "64" +ttl.datatype = "range(1,255)" + + +mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) +mtu.placeholder = "1280" +mtu.datatype = "max(1500)" diff --git a/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua new file mode 100644 index 000000000..a4b50efa2 --- /dev/null +++ b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua @@ -0,0 +1,81 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2011-2012 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. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 +]]-- + +local map, section, net = ... + +local ipaddr, peeraddr, ip6addr, tunnelid, username, password +local defaultroute, metric, ttl, mtu + + +ipaddr = s:taboption("general", Value, "ipaddr", + translate("Local IPv4 address"), + translate("Leave empty to use the current WAN address")) + +ipaddr.datatype = "ip4addr" + + +peeraddr = s:taboption("general", Value, "peeraddr", + translate("Remote IPv4 address"), + translate("This IPv4 address of the relay")) + +peeraddr.rmempty = false +peeraddr.datatype = "ip4addr" + + +ip6addr = s:taboption("general", Value, "ip6prefix", + translate("IPv6 prefix"), + translate("The IPv6 prefix assigned to the provider, usually ends with <code>::</code>")) + +ip6addr.rmempty = false +ip6addr.datatype = "ip6addr" + + +ip6prefixlen = s:taboption("general", Value, "ip6prefixlen", + translate("IPv6 prefix length"), + translate("The length of the IPv6 prefix in bits")) + +ip6prefixlen.placeholder = "16" +ip6prefixlen.datatype = "range(0,128)" + + +ip6prefixlen = s:taboption("general", Value, "ip4prefixlen", + translate("IPv4 prefix length"), + translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses.")) + +ip6prefixlen.placeholder = "0" +ip6prefixlen.datatype = "range(0,32)" + + + +defaultroute = section:taboption("advanced", Flag, "defaultroute", + translate("Default gateway"), + translate("If unchecked, no default route is configured")) + +defaultroute.default = defaultroute.enabled + + +metric = section:taboption("advanced", Value, "metric", + translate("Use gateway metric")) + +metric.placeholder = "0" +metric.datatype = "uinteger" +metric:depends("defaultroute", defaultroute.enabled) + + +ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) +ttl.placeholder = "64" +ttl.datatype = "range(1,255)" + + +mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) +mtu.placeholder = "1280" +mtu.datatype = "max(1500)" diff --git a/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua new file mode 100644 index 000000000..d9d7b01a9 --- /dev/null +++ b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua @@ -0,0 +1,46 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2011 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. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 +]]-- + +local map, section, net = ... + +local ipaddr, defaultroute, metric, ttl, mtu + + +ipaddr = section:taboption("general", Value, "ipaddr", + translate("Local IPv4 address"), + translate("Leave empty to use the current WAN address")) + +ipaddr.datatype = "ip4addr" + +defaultroute = section:taboption("advanced", Flag, "defaultroute", + translate("Use default gateway"), + translate("If unchecked, no default route is configured")) + +defaultroute.default = defaultroute.enabled + + +metric = section:taboption("advanced", Value, "metric", + translate("Use gateway metric")) + +metric.placeholder = "0" +metric.datatype = "uinteger" +metric:depends("defaultroute", defaultroute.enabled) + + +ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) +ttl.placeholder = "64" +ttl.datatype = "range(1,255)" + + +mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) +mtu.placeholder = "1280" +mtu.datatype = "max(1500)" diff --git a/protocols/ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua new file mode 100644 index 000000000..ad2430a8d --- /dev/null +++ b/protocols/ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua @@ -0,0 +1,62 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2013 Steven Barth <steven@midlink.org> + +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 +]]-- + +local map, section, net = ... + + +local o = section:taboption("general", ListValue, "reqaddress", + translate("Request IPv6-address")) +o:value("try") +o:value("force") +o:value("none", "disabled") +o.default = "try" + + +o = section:taboption("general", Value, "reqprefix", + translate("Request IPv6-prefix of length")) +o:value("auto", translate("automatic")) +o:value("no", translate("disabled")) +o:value("48") +o:value("52") +o:value("56") +o:value("60") +o:value("64") +o.default = "auto" + + +o = section:taboption("advanced", Flag, "defaultroute", + translate("Use default gateway"), + translate("If unchecked, no default route is configured")) +o.default = o.enabled + + +o = section:taboption("advanced", Flag, "peerdns", + translate("Use DNS servers advertised by peer"), + translate("If unchecked, the advertised DNS server addresses are ignored")) +o.default = o.enabled + + +o = section:taboption("advanced", DynamicList, "dns", + translate("Use custom DNS servers")) +o:depends("peerdns", "") +o.datatype = "list(ip6addr)" +o.cast = "string" + + +o = section:taboption("advanced", Value, "clientid", + translate("Client ID to send when requesting DHCP")) + +luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) + +o = section:taboption("advanced", Value, "mtu", translate("Override MTU")) +o.placeholder = "1500" +o.datatype = "max(1500)" diff --git a/protocols/ipv6/luasrc/model/network/proto_6x4.lua b/protocols/ipv6/luasrc/model/network/proto_6x4.lua new file mode 100644 index 000000000..b800b0b54 --- /dev/null +++ b/protocols/ipv6/luasrc/model/network/proto_6x4.lua @@ -0,0 +1,66 @@ +--[[ +LuCI - Network model - 6to4, 6in4 & 6rd protocol extensions + +Copyright 2011 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. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +]]-- + +local netmod = luci.model.network + +local _, p +for _, p in ipairs({"6in4", "6to4", "6rd"}) do + + local proto = netmod:register_protocol(p) + + function proto.get_i18n(self) + if p == "6in4" then + return luci.i18n.translate("IPv6-in-IPv4 (RFC4213)") + elseif p == "6to4" then + return luci.i18n.translate("IPv6-over-IPv4 (6to4)") + elseif p == "6rd" then + return luci.i18n.translate("IPv6-over-IPv4 (6rd)") + end + end + + function proto.ifname(self) + return p .. "-" .. self.sid + end + + function proto.opkg_package(self) + return p + end + + function proto.is_installed(self) + return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh") + end + + function proto.is_floating(self) + return true + end + + function proto.is_virtual(self) + return true + end + + function proto.get_interfaces(self) + return nil + end + + function proto.contains_interface(self, ifname) + return (netmod:ifnameof(ifc) == self:ifname()) + end + + netmod:register_pattern_virtual("^%s-%%w" % p) +end diff --git a/protocols/ipv6/luasrc/model/network/proto_dhcpv6.lua b/protocols/ipv6/luasrc/model/network/proto_dhcpv6.lua new file mode 100644 index 000000000..e5e54d593 --- /dev/null +++ b/protocols/ipv6/luasrc/model/network/proto_dhcpv6.lua @@ -0,0 +1,32 @@ +--[[ +LuCI - Network model - dhcpv6 protocol extension + +Copyright 2013 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. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +]]-- + +local proto = luci.model.network:register_protocol("dhcpv6") + +function proto.get_i18n(self) + return luci.i18n.translate("DHCPv6 client") +end + +function proto.is_installed(self) + return nixio.fs.access("/lib/netifd/proto/dhcpv6.sh") +end + +function proto.opkg_package(self) + return "ipv6-support" +end |