X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fchunkeey.git;a=blobdiff_plain;f=package%2Fnetwork%2Fipv6%2F6rd%2Ffiles%2F6rd.sh;h=b48513640e848535cb51d82cdf4c7d040235e782;hp=b681f2bbe6b2261c7a1092c4d31e405d5c3b787e;hb=e151d056229202ad1451281f249b725c52492071;hpb=955a1e8e28a117a1cee056cab5eb7d6ea25974b9 diff --git a/package/network/ipv6/6rd/files/6rd.sh b/package/network/ipv6/6rd/files/6rd.sh index b681f2bbe6..b48513640e 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 - json_get_vars mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen + local mtu df ttl tos ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink sourcerouting zone + json_get_vars mtu df ttl tos ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink sourcerouting 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 @@ -48,17 +53,31 @@ 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" + + if [ "$sourcerouting" != "0" ]; then + proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 "" "::/128" + proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 "" "$ip6addr/$ip6prefixlen" + proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 "" "$ip6lanprefix" + else + proto_add_ipv6_route "::" 0 "::$peeraddr" 4096 + fi 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" proto_close_tunnel + proto_add_data + [ -n "$zone" ] && json_add_string zone "$zone" + proto_close_data + proto_send_update "$cfg" } @@ -71,12 +90,17 @@ 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_boolean "sourcerouting" + proto_config_add_string "zone" } [ -n "$INCLUDE_ONLY" ] || {