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 <dedeckeh@gmail.com>
This commit is contained in:
Hans Dedecker 2018-06-04 17:00:32 +02:00
parent 082cd951bb
commit e4577d2e68
2 changed files with 10 additions and 8 deletions

View file

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=map PKG_NAME:=map
PKG_VERSION:=4 PKG_VERSION:=4
PKG_RELEASE:=10 PKG_RELEASE:=11
PKG_LICENSE:=GPL-2.0 PKG_LICENSE:=GPL-2.0
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk

View file

@ -28,9 +28,9 @@ proto_map_setup() {
# uncomment for legacy MAP0 mode # uncomment for legacy MAP0 mode
#export LEGACY=1 #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 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 json_get_vars rule ipaddr ip4prefixlen ip6prefix ip6prefixlen peeraddr ealen psidlen psid offset
[ -z "$zone" ] && zone="wan" [ -z "$zone" ] && zone="wan"
@ -84,9 +84,9 @@ proto_map_setup() {
json_add_string local $(eval "echo \$RULE_${k}_IPV6ADDR") json_add_string local $(eval "echo \$RULE_${k}_IPV6ADDR")
json_add_string remote $(eval "echo \$RULE_${k}_BR") json_add_string remote $(eval "echo \$RULE_${k}_BR")
json_add_string link $(eval "echo \$RULE_${k}_PD6IFACE") json_add_string link $(eval "echo \$RULE_${k}_PD6IFACE")
json_add_object "data"
if [ "$type" = "map-e" ]; then json_add_string encaplimit "${encaplimit:-4}"
json_add_object "data" if [ "$type" = "map-e" ]; then
json_add_array "fmrs" json_add_array "fmrs"
for i in $(seq $RULE_COUNT); do for i in $(seq $RULE_COUNT); do
[ "$(eval "echo \$RULE_${i}_FMR")" != 1 ] && continue [ "$(eval "echo \$RULE_${i}_FMR")" != 1 ] && continue
@ -98,8 +98,9 @@ proto_map_setup() {
json_close_object json_close_object
done done
json_close_array json_close_array
json_close_object fi
fi json_close_object
proto_close_tunnel proto_close_tunnel
elif [ "$type" = "map-t" -a -f "/proc/net/nat46/control" ]; then 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 "mtu"
proto_config_add_int "ttl" proto_config_add_int "ttl"
proto_config_add_string "zone" proto_config_add_string "zone"
proto_config_add_string "encaplimit"
} }
[ -n "$INCLUDE_ONLY" ] || { [ -n "$INCLUDE_ONLY" ] || {