From 0282441f00ee632b87f451979078225dd52031ef Mon Sep 17 00:00:00 2001
From: Paul Oranje
Date: Wed, 4 Feb 2015 00:04:04 +0100
Subject: [PATCH] luci-proto-ipv6: add aiccu
initial commit
---
protocols/luci-proto-ipv6/Makefile | 2 +-
.../model/cbi/admin_network/proto_aiccu.lua | 134 ++++++++++++++++++
.../luasrc/model/network/proto_aiccu.lua | 49 +++++++
3 files changed, 184 insertions(+), 1 deletion(-)
create mode 100644 protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua
create mode 100644 protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua
diff --git a/protocols/luci-proto-ipv6/Makefile b/protocols/luci-proto-ipv6/Makefile
index f0ca605f84..e749bc9e83 100644
--- a/protocols/luci-proto-ipv6/Makefile
+++ b/protocols/luci-proto-ipv6/Makefile
@@ -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
index 0000000000..5248eddf0c
--- /dev/null
+++ b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua
@@ -0,0 +1,134 @@
+-- Copyright 2015 Paul Oranje
+-- 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 = "ip6prefix"
+ip6prefix.optional = true
+
+
+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
+
+
+heartbeat = section:taboption("general", Flag, "heartbeat",
+ translate("Make heartbeats"),
+ translate("Use when IPv4 address of local WAN may change dynamically, does not apply to static tunnels"))
+heartbeat.optional = true
+heartbeat.default = heartbeat.enabled
+
+
+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
+
+
+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"))
+mtu.datatype = "max(9200)"
+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
index 0000000000..5896a278ce
--- /dev/null
+++ b/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua
@@ -0,0 +1,49 @@
+-- Copyright 2015 Paul Oranje
+-- 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")
--
2.30.2