( proto_add_host_dependency "$cfg" "::" "$tunlink" )
+ # fixme: handle RA/DHCPv6 address race for LW
+ [ "$type" = lw4o6 ] && sleep 5
+
if [ -z "$rule" ]; then
rule="type=$type,ipv6prefix=$ip6prefix,prefix6len=$ip6prefixlen,ipv4prefix=$ipaddr,prefix4len=$ip4prefixlen"
[ -n "$psid" ] && rule="$rule,psid=$psid"
fi
fi
+ echo "rule=$rule" > /tmp/map-$cfg.rules
RULE_DATA=$(mapcalc ${tunlink:-\*} $rule)
if [ "$?" != 0 ]; then
proto_notify_error "$cfg" "INVALID_MAP_RULE"
return
fi
+ echo "$RULE_DATA" >> /tmp/map-$cfg.rules
eval $RULE_DATA
-
+
if [ -z "$RULE_BMR" ]; then
proto_notify_error "$cfg" "NO_MATCHING_PD"
proto_block_restart "$cfg"
if [ "$type" = "lw4o6" -o "$type" = "map-e" ]; then
proto_init_update "$link" 1
proto_add_ipv4_address $(eval "echo \$RULE_${k}_IPV4ADDR") "" "" ""
-
+
proto_add_tunnel
json_add_string mode ipip6
json_add_int mtu "${mtu:-1280}"
if [ "$type" = "lw4o6" -o "$type" = "map-e" ]; then
json_init
- json_add_string name "${cfg}_local"
+ json_add_string name "${cfg}_"
json_add_string ifname "@$(eval "echo \$RULE_${k}_PD6IFACE")"
json_add_string proto "static"
json_add_array ip6addr
proto_map_teardown() {
local cfg="$1"
- ifdown "${cfg}_local"
+ ifdown "${cfg}_"
+ rm -f /tmp/map-$cfg.rules
}
proto_map_init_config() {
- no_device=1
+ no_device=1
available=1
proto_config_add_string "rule"