#!/sbin/runscript
interface=${RC_SVCNAME#ipv6to4.}
start_d="ipv6to4 tunnel on $interface up"
stop_d="ipv6to4 tunnel on $interface down"
[ "$interface" = "tmpl" ] && exit 0
tunnel="tun6to4"
real_ipv4=`ip addr show $interface|grep inet|awk '{print $2};'|grep -Po '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'`
calc_ipv6=`ipv6calc --ipv4_to_6to4addr $real_ipv4`
ipv6=`echo "$calc_ipv6"0101:0101:0101/128`
gateway="192.88.99.1" # AnyCast ipv6to4/ipv4to6 gateway
depend() {
need netif.$interface
}
start() {
ebegin "$start_d"
ip tunnel add $tunnel mode sit remote any local $real_ipv4 ttl 64
ip link set dev $tunnel up
ip -6 addr add $ipv6 dev $tunnel
ip -6 route add 2000::/3 via ::"$gateway" dev $tunnel metric 1
eend $?
}
stop() {
ebegin "$stop_d"
ip -6 route del 2000::/3 via ::"$gateway" dev $tunnel
ip -6 addr del $ipv6 dev $tunnel
ip link set dev $tunnel down
ip tunnel del $tunnel
eend 0
}