X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=package%2Fnetwork%2Fipv6%2F6rd%2Ffiles%2F6rd.sh;h=62a20314d9322b56a3785f9f4b5adf7523a2460d;hb=4e482309549a4ade1d4b10dc966b45e48ab67d20;hp=a3935e1422cc5821c7f1535b5bfc448944b1c73e;hpb=e49d67f1925f1582138c7fcd998c6952aa5d0909;p=openwrt%2Fopenwrt.git diff --git a/package/network/ipv6/6rd/files/6rd.sh b/package/network/ipv6/6rd/files/6rd.sh index a3935e1422..62a20314d9 100644 --- a/package/network/ipv6/6rd/files/6rd.sh +++ b/package/network/ipv6/6rd/files/6rd.sh @@ -14,8 +14,8 @@ proto_6rd_setup() { local iface="$2" local link="6rd-$cfg" - local mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink - json_get_vars mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink + local mtu df ttl tos ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink zone + json_get_vars mtu df ttl tos ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink zone [ -z "$ip6prefix" -o -z "$peeraddr" ] && { proto_notify_error "$cfg" "MISSING_ADDRESS" @@ -23,11 +23,16 @@ proto_6rd_setup() { return } - ( proto_add_host_dependency "$cfg" 0.0.0.0 ) + ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" ) [ -z "$ipaddr" ] && { - local wanif - if ! network_find_wan wanif || ! network_get_ipaddr ipaddr "$wanif"; then + local wanif="$tunlink" + if [ -z $wanif ] && ! network_find_wan wanif; then + proto_notify_error "$cfg" "NO_WAN_LINK" + return + fi + + if ! network_get_ipaddr ipaddr "$wanif"; then proto_notify_error "$cfg" "NO_WAN_LINK" return fi @@ -35,8 +40,8 @@ proto_6rd_setup() { # Determine the relay prefix. local ip4prefixlen="${ip4prefixlen:-0}" - local ip4prefix=$(ipcalc.sh "$ipaddr/$ip4prefixlen" | grep NETWORK) - ip4prefix="${ip4prefix#NETWORK=}" + local ip4prefix + eval "$(ipcalc.sh "$ipaddr/$ip4prefixlen")";ip4prefix=$NETWORK # Determine our IPv6 address. local ip6subnet=$(6rdcalc "$ip6prefix/$ip6prefixlen" "$ipaddr/$ip4prefixlen") @@ -48,18 +53,30 @@ proto_6rd_setup() { proto_init_update "$link" 1 proto_add_ipv6_address "$ip6addr" "$ip6prefixlen" proto_add_ipv6_prefix "$ip6lanprefix" - proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 + + proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 "" "$ip6addr/$ip6prefixlen" + proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 "" "$ip6lanprefix" proto_add_tunnel json_add_string mode sit json_add_int mtu "${mtu:-1280}" + json_add_boolean df "${df:-1}" json_add_int ttl "${ttl:-64}" + [ -n "$tos" ] && json_add_string tos "$tos" json_add_string local "$ipaddr" - json_add_string 6rd-prefix "$ip6prefix/$ip6prefixlen" - json_add_string 6rd-relay-prefix "$ip4prefix/$ip4prefixlen" [ -n "$tunlink" ] && json_add_string link "$tunlink" + + json_add_object 'data' + json_add_string prefix "$ip6prefix/$ip6prefixlen" + json_add_string relay-prefix "$ip4prefix/$ip4prefixlen" + json_close_object + proto_close_tunnel + proto_add_data + [ -n "$zone" ] && json_add_string zone "$zone" + proto_close_data + proto_send_update "$cfg" } @@ -72,13 +89,16 @@ proto_6rd_init_config() { available=1 proto_config_add_int "mtu" + proto_config_add_boolean "df" proto_config_add_int "ttl" + proto_config_add_string "tos" proto_config_add_string "ipaddr" proto_config_add_string "peeraddr" proto_config_add_string "ip6prefix" proto_config_add_string "ip6prefixlen" proto_config_add_string "ip4prefixlen" proto_config_add_string "tunlink" + proto_config_add_string "zone" } [ -n "$INCLUDE_ONLY" ] || {