Merge pull request #315 from poranje/proto-ipv6+aiccu
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 8 Feb 2015 18:18:16 +0000 (19:18 +0100)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 8 Feb 2015 18:18:16 +0000 (19:18 +0100)
luci-proto-ipv6: add aiccu

protocols/luci-proto-ipv6/Makefile
protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua [new file with mode: 0644]
protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua [new file with mode: 0644]

index f0ca605..e749bc9 100644 (file)
@@ -6,7 +6,7 @@
 
 include $(TOPDIR)/rules.mk
 
-LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite
+LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu
 LUCI_DEPENDS:=
 
 include ../../luci.mk
diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua
new file mode 100644 (file)
index 0000000..e3ae020
--- /dev/null
@@ -0,0 +1,136 @@
+-- Copyright 2015 Paul Oranje <por@xs4all.nl>
+-- Licensed to the public under the Apache License 2.0.
+
+local map, section, net = ...
+
+-- config read by /lib/netifd/proto/aiccu.sh
+local username, password, protocol, server, tunnelid, ip6prefix, requiretls, nat, heartbeat,
+       verbose, ntpsynctimeout, ip6addr, sourcerouting, defaultroute
+
+-- generic parameters
+local metric, ttl, mtu
+
+
+username = section:taboption("general", Value, "username",
+       translate("Server username"),
+       translate("SIXXS-handle[/Tunnel-ID]"))
+username.datatype = "string"
+
+password = section:taboption("general", Value, "password",
+       translate("Server password"),
+       translate("Server password, enter the specific password of the tunnel when the username contains the tunnel ID"))
+password.datatype = "string"
+password.password = true
+
+
+--[[ SIXXS supports only TIC as tunnel broker protocol, no use setting it.
+protocol = section:taboption("general", ListValue, "protocol",
+       translate("Tunnel broker protocol"),
+       translate("SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) use 6in4 instead"))
+
+protocol:value("tic", "TIC")
+protocol:value("tsp", "TSP")
+protocol:value("l2tp", "L2TP")
+protocol.default = "tic"
+protocol.optional = true
+--]]
+
+
+server = section:taboption("general", Value, "server",
+       translate("Tunnel setup server"),
+       translate("Optional, specify to override default server (tic.sixxs.net)"))
+server.datatype = "host"
+server.optional = true
+
+
+tunnelid = section:taboption("general", Value, "tunnelid",
+       translate("Tunnel ID"),
+       translate("Optional, use when the SIXXS account has more than one tunnel"))
+tunnelid.datatype = "string"
+tunnelid.optional = true
+
+
+local ip6prefix = section:taboption("general", Value, "ip6prefix",
+       translate("IPv6 prefix"),
+       translate("Routed IPv6 prefix for downstream interfaces"))
+ip6prefix.datatype = "ip6addr"
+ip6prefix.optional = true
+
+
+heartbeat = s:taboption("general", ListValue, "heartbeat",
+        translate("Tunnel type"),
+       translate("Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison\">Tunneling Comparison</a> on SIXXS"))
+heartbeat:value("0", translate("AYIYA"))
+heartbeat:value("1", translate("Heartbeat"))
+heartbeat.default = "0"
+
+
+nat = section:taboption("general", Flag, "nat",
+       translate("Behind NAT"),
+       translate("The tunnel end-point is behind NAT, defaults to disabled and only applies to AYIYA"))
+nat.optional = true
+nat.default = disabled
+
+
+requiretls = section:taboption("general", Flag, "requiretls",
+       translate("Require TLS"),
+       translate("Connection to server fails when TLS cannot be used"))
+requiretls.optional = true
+requiretls.default = requiretls.enabled
+
+
+verbose = section:taboption("advanced", Flag, "verbose",
+       translate("Verbose"),
+       translate("Verbose logging by aiccu daemon"))
+verbose.optional = true
+verbose.default = disabled
+
+
+ntpsynctimeout = section:taboption("advanced", Value, "ntpsynctimeout",
+       translate("NTP sync time-out"),
+       translate("Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"))
+ntpsynctimeout.datatype = "uinteger"
+ntpsynctimeout.placeholder = "90"
+ntpsynctimeout.optional = true
+
+
+ip6addr = section:taboption("advanced", Value, "ip6addr",
+       translate("Local IPv6 address"),
+       translate("IPv6 address delegated to the local tunnel endpoint (optional)"))
+ip6addr.datatype = "ip6addr"
+ip6addr.optional = true
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+       translate("Default route"),
+       translate("Whether to create an IPv6 default route over the tunnel"))
+defaultroute.default = defaultroute.enabled
+defaultroute.optional = true
+
+
+sourcerouting = section:taboption("advanced", Flag, "sourcerouting",
+       translate("Source routing"),
+       translate("Whether to route only packets from delegated prefixes"))
+sourcerouting.default = sourcerouting.enabled
+sourcerouting.optional = true
+
+
+metric = section:taboption("advanced", Value, "metric",
+       translate("Use gateway metric"))
+metric.datatype = "uinteger"
+metric.placeholder = "0"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+ttl = section:taboption("advanced", Value, "ttl",
+       translate("Use TTL on tunnel interface"))
+ttl.datatype = "range(1,255)"
+ttl.placeholder = "64"
+
+
+mtu = section:taboption("advanced", Value, "mtu",
+       translate("Use MTU on tunnel interface"),
+        translate("minimum 1280, maximum 1480"))
+mtu.datatype = "range(1280,1480)"
+mtu.placeholder = "1280"
+
diff --git a/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua b/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua
new file mode 100644 (file)
index 0000000..5896a27
--- /dev/null
@@ -0,0 +1,49 @@
+-- Copyright 2015 Paul Oranje <por@xs4all.nl>
+-- Licensed to the public under GPLv2
+
+local netmod = luci.model.network
+local interface = luci.model.network.interface
+
+local proto = netmod:register_protocol("aiccu")
+
+function proto.get_i18n(self)
+       return luci.i18n.translate("AICCU (SIXXS)")
+end
+
+function proto.ifname(self)
+       return "aiccu-" .. self.sid
+end
+
+function proto.get_interface(self)
+       return interface(self:ifname(), self)
+end
+
+function proto.is_installed(self)
+       return nixio.fs.access("/lib/netifd/proto/aiccu.sh")
+end
+
+function proto.opkg_package(self)
+       return "aiccu"
+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)
+       if self:is_floating() then
+               return (netmod:ifnameof(ifc) == self:ifname())
+       else
+               return netmod.protocol.contains_interface(self, ifc)
+       end
+end
+
+netmod:register_pattern_virtual("^aiccu-%%w")