From f67d39e69a296fe8250ac73f80f0771ccb6dcc59 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Sun, 17 May 2015 10:38:03 +0200 Subject: [PATCH] IPv6 updates Signed-off-by: Steven Barth --- .../model/cbi/admin_network/proto_3g.lua | 9 +- .../model/cbi/admin_network/proto_464xlat.lua | 33 +++++++ .../model/cbi/admin_network/proto_map.lua | 88 +++++++++++++++++++ .../luasrc/model/network/proto_4x6.lua | 18 +++- .../model/cbi/admin_network/proto_l2tp.lua | 9 +- .../model/cbi/admin_network/proto_ppp.lua | 9 +- .../model/cbi/admin_network/proto_pppoa.lua | 9 +- .../model/cbi/admin_network/proto_pppoe.lua | 9 +- 8 files changed, 162 insertions(+), 22 deletions(-) create mode 100644 protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua create mode 100644 protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua diff --git a/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua b/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua index 59bf2f646c..1b2e23cc42 100644 --- a/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua +++ b/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua @@ -47,10 +47,11 @@ dialnumber.placeholder = "*99***1#" if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - - ipv6.default = ipv6.disabled + ipv6 = section:taboption("advanced", ListValue, "ipv6") + ipv6:value("auto", translate("Automatic")) + ipv6:value("0", translate("Disabled")) + ipv6:value("1", translate("Manual")) + ipv6.default = "auto" end diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua new file mode 100644 index 0000000000..5a37582faf --- /dev/null +++ b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua @@ -0,0 +1,33 @@ +-- Copyright 2011 Jo-Philipp Wich +-- Copyright 2013 Steven Barth +-- Licensed to the public under the Apache License 2.0. + +local map, section, net = ... +local tunlink, defaultroute, metric, mtu + +section:taboption("general", Value, "ip6prefix", + translate("NAT64 Prefix"), translate("Leave empty to autodetect")) + +tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) +tunlink.template = "cbi/network_netlist" +tunlink.nocreate = true + + +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) + + +mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) +mtu.placeholder = "1280" +mtu.datatype = "max(9200)" diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua new file mode 100644 index 0000000000..2f8108ef1c --- /dev/null +++ b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua @@ -0,0 +1,88 @@ +-- Copyright 2011 Jo-Philipp Wich +-- Copyright 2013 Steven Barth +-- Licensed to the public under the Apache License 2.0. + +local map, section, net = ... + +local peeraddr, ip6addr +local tunlink, defaultroute, metric, ttl, mtu + + +maptype = section:taboption("general", ListValue, "type", translate("Type")) +maptype:value("map-e", "MAP-E") +maptype:value("map-t", "MAP-T") +maptype:value("lw4o6", "LW4over6") + + +peeraddr = section:taboption("general", Value, "peeraddr", + translate("BR / DMR / AFTR")) + +peeraddr.rmempty = false +peeraddr.datatype = "ip6addr" + + +ipaddr = section:taboption("general", Value, "ipaddr", + translate("IPv4 prefix")) +ipaddr.datatype = "ip4addr" + + +ip4prefixlen = 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.")) + +ip4prefixlen.placeholder = "32" +ip4prefixlen.datatype = "range(0,32)" + +ip6addr = s:taboption("general", Value, "ip6prefix", + translate("IPv6 prefix"), + translate("The IPv6 prefix assigned to the provider, usually ends with ::")) + +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,64)" + + +s:taboption("general", Value, "ealen", + translate("EA-bits length")).datatype = "range(0,16)" + +s:taboption("general", Value, "psidlen", + translate("PSID-bits length")).datatype = "range(0,16)" + +s:taboption("general", Value, "offset", + translate("PSID offset")).datatype = "range(0,16)" + +tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) +tunlink.template = "cbi/network_netlist" +tunlink.nocreate = true + + +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(9200)" diff --git a/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua b/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua index daebc2f5d8..d876d69ba8 100644 --- a/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua +++ b/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua @@ -5,13 +5,17 @@ local netmod = luci.model.network local _, p -for _, p in ipairs({"dslite"}) do +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 @@ -22,6 +26,10 @@ for _, p in ipairs({"dslite"}) do 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 @@ -45,5 +53,11 @@ for _, p in ipairs({"dslite"}) do return (netmod:ifnameof(ifc) == self:ifname()) end - netmod:register_pattern_virtual("^%s-%%w" % p) + if p == "dslite" then + netmod:register_pattern_virtual("^ds-%w") + elseif p == "map" then + netmod:register_pattern_virtual("^map-%w") + elseif p == "464xlat" then + netmod:register_pattern_virtual("^464-%w") + end end diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua index 023cc029bf..523ef1bc6f 100644 --- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua +++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua @@ -19,10 +19,11 @@ password.password = true if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - - ipv6.default = ipv6.disabled + ipv6 = section:taboption("advanced", ListValue, "ipv6") + ipv6:value("auto", translate("Automatic")) + ipv6:value("0", translate("Disabled")) + ipv6:value("1", translate("Manual")) + ipv6.default = "auto" end diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua index 0fce97a6bd..b14db5966d 100644 --- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua +++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua @@ -31,10 +31,11 @@ password.password = true if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - - ipv6.default = ipv6.disabled + ipv6 = section:taboption("advanced", ListValue, "ipv6") + ipv6:value("auto", translate("Automatic")) + ipv6:value("0", translate("Disabled")) + ipv6:value("1", translate("Manual")) + ipv6.default = "auto" end diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua index 7df1004fc5..8f463e5d76 100644 --- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua +++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua @@ -37,10 +37,11 @@ password.password = true if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - - ipv6.default = ipv6.disabled + ipv6 = section:taboption("advanced", ListValue, "ipv6") + ipv6:value("auto", translate("Automatic")) + ipv6:value("0", translate("Disabled")) + ipv6:value("1", translate("Manual")) + ipv6.default = "auto" end diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua index 0e5bbaf513..5a05cd2065 100644 --- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua +++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua @@ -31,10 +31,11 @@ service.placeholder = translate("auto") if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - - ipv6.default = ipv6.disabled + ipv6 = section:taboption("advanced", ListValue, "ipv6") + ipv6:value("auto", translate("Automatic")) + ipv6:value("0", translate("Disabled")) + ipv6:value("1", translate("Manual")) + ipv6.default = "auto" end -- 2.30.2