From e4577d2e68ab8943375e719204a680cbbe3bd561 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Mon, 4 Jun 2018 17:00:32 +0200 Subject: [PATCH] map: make tunnel encapsulation limit support configurable (FS#1501) Be compatible with ISPs which don't support the destination option header containing the tunnel encapsulation limit as reported in FS#1501. Setting the uci parameter encaplimit to ignore; allows to disable the insertion of the destination option header in the map-e packets. Otherwise the tunnel encapsulation limit value can be set to a value from 0 till 255 by setting the encaplimit uci parameter accordingly. If no encaplimit value is specified the default value is 4 as before. Signed-off-by: Hans Dedecker --- package/network/ipv6/map/Makefile | 2 +- package/network/ipv6/map/files/map.sh | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/package/network/ipv6/map/Makefile b/package/network/ipv6/map/Makefile index 77967042b3..cfb7c4ac35 100644 --- a/package/network/ipv6/map/Makefile +++ b/package/network/ipv6/map/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=map PKG_VERSION:=4 -PKG_RELEASE:=10 +PKG_RELEASE:=11 PKG_LICENSE:=GPL-2.0 include $(INCLUDE_DIR)/package.mk diff --git a/package/network/ipv6/map/files/map.sh b/package/network/ipv6/map/files/map.sh index 42050183ce..5f4add36eb 100755 --- a/package/network/ipv6/map/files/map.sh +++ b/package/network/ipv6/map/files/map.sh @@ -28,9 +28,9 @@ proto_map_setup() { # uncomment for legacy MAP0 mode #export LEGACY=1 - local type mtu ttl tunlink zone + local type mtu ttl tunlink zone encaplimit local rule ipaddr ip4prefixlen ip6prefix ip6prefixlen peeraddr ealen psidlen psid offset - json_get_vars type mtu ttl tunlink zone + json_get_vars type mtu ttl tunlink zone encaplimit json_get_vars rule ipaddr ip4prefixlen ip6prefix ip6prefixlen peeraddr ealen psidlen psid offset [ -z "$zone" ] && zone="wan" @@ -84,9 +84,9 @@ proto_map_setup() { json_add_string local $(eval "echo \$RULE_${k}_IPV6ADDR") json_add_string remote $(eval "echo \$RULE_${k}_BR") json_add_string link $(eval "echo \$RULE_${k}_PD6IFACE") - - if [ "$type" = "map-e" ]; then - json_add_object "data" + json_add_object "data" + json_add_string encaplimit "${encaplimit:-4}" + if [ "$type" = "map-e" ]; then json_add_array "fmrs" for i in $(seq $RULE_COUNT); do [ "$(eval "echo \$RULE_${i}_FMR")" != 1 ] && continue @@ -98,8 +98,9 @@ proto_map_setup() { json_close_object done json_close_array - json_close_object - fi + fi + json_close_object + proto_close_tunnel elif [ "$type" = "map-t" -a -f "/proc/net/nat46/control" ]; then @@ -229,6 +230,7 @@ proto_map_init_config() { proto_config_add_int "mtu" proto_config_add_int "ttl" proto_config_add_string "zone" + proto_config_add_string "encaplimit" } [ -n "$INCLUDE_ONLY" ] || {