move dhcpv6 support into luci-proto-6x4, rename luci-proto-6x4 to luci-proto-ipv6
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 22 Jan 2013 10:44:28 +0000 (10:44 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 22 Jan 2013 10:44:28 +0000 (10:44 +0000)
15 files changed:
contrib/package/luci/Makefile
libs/core/luasrc/model/network.lua
protocols/6x4/Makefile [deleted file]
protocols/6x4/luasrc/model/cbi/admin_network/proto_6in4.lua [deleted file]
protocols/6x4/luasrc/model/cbi/admin_network/proto_6rd.lua [deleted file]
protocols/6x4/luasrc/model/cbi/admin_network/proto_6to4.lua [deleted file]
protocols/6x4/luasrc/model/network/proto_6x4.lua [deleted file]
protocols/core/luasrc/model/cbi/admin_network/proto_dhcpv6.lua [deleted file]
protocols/ipv6/Makefile [new file with mode: 0644]
protocols/ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua [new file with mode: 0644]
protocols/ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua [new file with mode: 0644]
protocols/ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua [new file with mode: 0644]
protocols/ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua [new file with mode: 0644]
protocols/ipv6/luasrc/model/network/proto_6x4.lua [new file with mode: 0644]
protocols/ipv6/luasrc/model/network/proto_dhcpv6.lua [new file with mode: 0644]

index f0029eb..6bd26fe 100644 (file)
@@ -212,7 +212,7 @@ endef
 
 $(eval $(call protocol,core,Support for static/dhcp/none))
 $(eval $(call protocol,ppp,Support for PPP/PPPoE/PPPoA/PPtP))
-$(eval $(call protocol,6x4,Support for 6in4/6to4/6rd,+PACKAGE_luci-proto-6x4:6in4 +PACKAGE_luci-proto-6x4:6to4 +PACKAGE_luci-proto-6x4:6rd))
+$(eval $(call protocol,ipv6,Support for DHCPv6/6in4/6to4/6rd,+PACKAGE_luci-proto-ipv6:6in4 +PACKAGE_luci-proto-ipv6:6to4 +PACKAGE_luci-proto-ipv6:6rd +PACKAGE_luci-proto-ipv6:ipv6-support))
 $(eval $(call protocol,3g,Support for 3G,+PACKAGE_luci-proto-3g:comgt))
 $(eval $(call protocol,relay,Support for relayd pseudo bridges,+PACKAGE_luci-proto-relay:relayd))
 
index f251411..09a58d7 100644 (file)
@@ -749,8 +749,6 @@ function protocol.get_i18n(self)
                return lng.translate("Static address")
        elseif p == "dhcp" then
                return lng.translate("DHCP client")
-       elseif p == "dhcpv6" then
-               return lng.translate("DHCPv6 client")
        else
                return lng.translate("Unknown")
        end
@@ -1548,15 +1546,8 @@ end
 -- setup base protocols
 _M:register_protocol("static")
 _M:register_protocol("dhcp")
-
-local dhcpv6 = _M:register_protocol("dhcpv6")
-function dhcpv6.is_installed(self)
-       return nfs.access("/lib/netifd/proto/dhcpv6.sh")
-end
-
 _M:register_protocol("none")
 
-
 -- load protocol extensions
 local exts = nfs.dir(utl.libpath() .. "/model/network")
 if exts then
diff --git a/protocols/6x4/Makefile b/protocols/6x4/Makefile
deleted file mode 100644 (file)
index f7fac77..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-include ../../build/config.mk
-include ../../build/module.mk
diff --git a/protocols/6x4/luasrc/model/cbi/admin_network/proto_6in4.lua b/protocols/6x4/luasrc/model/cbi/admin_network/proto_6in4.lua
deleted file mode 100644 (file)
index 0b1f31c..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
---[[
-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/6x4/luasrc/model/cbi/admin_network/proto_6rd.lua b/protocols/6x4/luasrc/model/cbi/admin_network/proto_6rd.lua
deleted file mode 100644 (file)
index a4b50ef..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
---[[
-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/6x4/luasrc/model/cbi/admin_network/proto_6to4.lua b/protocols/6x4/luasrc/model/cbi/admin_network/proto_6to4.lua
deleted file mode 100644 (file)
index d9d7b01..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
---[[
-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/6x4/luasrc/model/network/proto_6x4.lua b/protocols/6x4/luasrc/model/network/proto_6x4.lua
deleted file mode 100644 (file)
index b800b0b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
---[[
-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/core/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/protocols/core/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
deleted file mode 100644 (file)
index ad2430a..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
---[[
-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/Makefile b/protocols/ipv6/Makefile
new file mode 100644 (file)
index 0000000..f7fac77
--- /dev/null
@@ -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 (file)
index 0000000..0b1f31c
--- /dev/null
@@ -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 (file)
index 0000000..a4b50ef
--- /dev/null
@@ -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 (file)
index 0000000..d9d7b01
--- /dev/null
@@ -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 (file)
index 0000000..ad2430a
--- /dev/null
@@ -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 (file)
index 0000000..b800b0b
--- /dev/null
@@ -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 (file)
index 0000000..e5e54d5
--- /dev/null
@@ -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