|
|
@@ -1,6 +1,9 @@
|
|
|
#!/bin/sh
|
|
|
-# dslite.sh - IPv4-in-IPv6 tunnel backend
|
|
|
+# dslite.sh - IPv4-in-IPv6 tunnel backend for ipip6 and ds-lite
|
|
|
# Copyright (c) 2013 OpenWrt.org
|
|
|
+# Copyright (c) 2013 Steven Barth <[email protected]>
|
|
|
+# Copyright (c) 2021 Kenji Uno <[email protected]>
|
|
|
+# Copyright (c) 2024 Arayuki Mago <[email protected]>
|
|
|
|
|
|
[ -n "$INCLUDE_ONLY" ] || {
|
|
|
. /lib/functions.sh
|
|
|
@@ -9,10 +12,13 @@
|
|
|
init_proto "$@"
|
|
|
}
|
|
|
|
|
|
-proto_dslite_setup() {
|
|
|
+tnl_setup() {
|
|
|
local cfg="$1"
|
|
|
local iface="$2"
|
|
|
- local link="ds-$cfg"
|
|
|
+ local tnl_type="$3"
|
|
|
+ local ip4addr="$4"
|
|
|
+ local ip4gateway="$5"
|
|
|
+ local link="$tnl_type-$cfg"
|
|
|
local remoteip6
|
|
|
|
|
|
local mtu ttl peeraddr ip6addr tunlink zone weakif encaplimit
|
|
|
@@ -59,7 +65,7 @@ proto_dslite_setup() {
|
|
|
|
|
|
proto_init_update "$link" 1
|
|
|
proto_add_ipv4_route "0.0.0.0" 0
|
|
|
- proto_add_ipv4_address "192.0.0.2" "" "" "192.0.0.1"
|
|
|
+ proto_add_ipv4_address "$ip4addr" "" "" "$ip4gateway"
|
|
|
|
|
|
proto_add_tunnel
|
|
|
json_add_string mode ipip6
|
|
|
@@ -76,23 +82,22 @@ proto_dslite_setup() {
|
|
|
proto_add_data
|
|
|
[ -n "$zone" ] && json_add_string zone "$zone"
|
|
|
|
|
|
- json_add_array firewall
|
|
|
- json_add_object ""
|
|
|
- json_add_string type nat
|
|
|
- json_add_string target ACCEPT
|
|
|
- json_close_object
|
|
|
- json_close_array
|
|
|
+ if [ "$tnl_type" = "ds" ]; then
|
|
|
+ json_add_array firewall
|
|
|
+ json_add_object ""
|
|
|
+ json_add_string type nat
|
|
|
+ json_add_string target ACCEPT
|
|
|
+ json_close_object
|
|
|
+ json_close_array
|
|
|
+ fi
|
|
|
+
|
|
|
proto_close_data
|
|
|
|
|
|
proto_send_update "$cfg"
|
|
|
}
|
|
|
|
|
|
-proto_dslite_teardown() {
|
|
|
- local cfg="$1"
|
|
|
-}
|
|
|
-
|
|
|
-proto_dslite_init_config() {
|
|
|
- no_device=1
|
|
|
+init_config() {
|
|
|
+ no_device=1
|
|
|
available=1
|
|
|
|
|
|
proto_config_add_string "ip6addr"
|
|
|
@@ -105,6 +110,34 @@ proto_dslite_init_config() {
|
|
|
proto_config_add_string "weakif"
|
|
|
}
|
|
|
|
|
|
+proto_ipip6_init_config() {
|
|
|
+ init_config
|
|
|
+ proto_config_add_string "ip4ifaddr"
|
|
|
+}
|
|
|
+
|
|
|
+proto_ipip6_setup() {
|
|
|
+ local ip4ifaddr
|
|
|
+ json_get_vars ip4ifaddr
|
|
|
+ tnl_setup "$1" "$2" "ipip6" "$ip4ifaddr" "0.0.0.0"
|
|
|
+}
|
|
|
+
|
|
|
+proto_ipip6_teardown() {
|
|
|
+ local cfg="$1"
|
|
|
+}
|
|
|
+
|
|
|
+proto_dslite_init_config() {
|
|
|
+ init_config
|
|
|
+}
|
|
|
+
|
|
|
+proto_dslite_setup() {
|
|
|
+ tnl_setup "$1" "$2" "ds" "192.0.0.2" "192.0.0.1"
|
|
|
+}
|
|
|
+
|
|
|
+proto_dslite_teardown() {
|
|
|
+ local cfg="$1"
|
|
|
+}
|
|
|
+
|
|
|
[ -n "$INCLUDE_ONLY" ] || {
|
|
|
- add_protocol dslite
|
|
|
+ add_protocol ipip6
|
|
|
+ add_protocol dslite
|
|
|
}
|