summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-compat/luasrc/model/network/proto_4x6.lua
blob: 0b329d8a92bb08dc387a4cce705e3194140abcc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
-- Copyright 2013 Steven Barth <steven@midlink.org>
-- Licensed to the public under the Apache License 2.0.

local netmod = luci.model.network

local _, p
for _, p in ipairs({"dslite", "map", "464xlat"}) do

	local proto = netmod:register_protocol(p)

	function proto.get_i18n(self)
		if p == "dslite" then
			return luci.i18n.translate("Dual-Stack Lite (RFC6333)")
		elseif p == "map" then
			return luci.i18n.translate("MAP / LW4over6")
		elseif p == "464xlat" then
			return luci.i18n.translate("464XLAT (CLAT)")
		end
	end

	function proto.ifname(self)
		return p .. "-" .. self.sid
	end

	function proto.opkg_package(self)
		if p == "dslite" then
			return "ds-lite"
		elseif p == "map" then
			return "map-t"
		elseif p == "464xlat" then
			return "464xlat"
		end
	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, ifc)
		return (netmod:ifnameof(ifc) == self:ifname())
	end
end

netmod:register_pattern_virtual("^464%-%w")
netmod:register_pattern_virtual("^ds%-%w")
netmod:register_pattern_virtual("^map%-%w")

netmod:register_error_code("AFTR_DNS_FAIL",		luci.i18n.translate("Unable to resolve AFTR host name"))
netmod:register_error_code("INVALID_MAP_RULE",	luci.i18n.translate("MAP rule is invalid"))
netmod:register_error_code("NO_MATCHING_PD",	luci.i18n.translate("No matching prefix delegation"))
netmod:register_error_code("UNSUPPORTED_TYPE",	luci.i18n.translate("Unsupported MAP type"))