#!/bin/sh

EXTIF="skif"
INTIF="fon"

if [ "$1" != "" ]; then
	EXTIF=$1
fi

if [ "$2" != "" ]; then
	INTIF=$2
fi

ipv4=$(ip -4 address show dev $EXTIF scope global primary | awk '/ *inet /{ print $2 }' | cut -d/ -f1 | head -n 1)
ipv6=$(printf "2002:%02x%02x:%02x%02x::1" `echo $ipv4 | tr "." " "`)


# cleanup
ip tun del tun64 >/dev/null 2>&1

# Set up external network (tunnel)
#echo "ipv4=$ipv4 ipv6=$ipv6"

ip tunnel add tun64 mode sit remote any local $ipv4
ip link set dev tun64 up
ip -6 addr del $ipv6/16 dev tun64 > /dev/null 2>&1
ip -6 addr add $ipv6/16 dev tun64 

ip -6 route del 2000::/3 via ::192.88.99.1 dev tun64 metric 1 > /dev/null 2>&1
ip -6 route add 2000::/3 via ::192.88.99.1 dev tun64 metric 1
#ip -6 route add 2000::/3 via 2002:c058:6301::1 dev tun64 metric 1


# If the internal interface doesn't exist, then we are done.
if ip link show dev $INTIF > /dev/null 2>&1; then
	# Set up internal network
	ip -6 address del 2002:52b6:4504:10::1/64 dev $INTIF > /dev/null 2>&1
	ip -6 address add 2002:52b6:4504:10::1/64 dev $INTIF

	# enable forwarding
	sysctl -w net.ipv6.conf.default.forwarding=1 > /dev/null 2>&1

	echo "Tunnel up and internal network configured."
else
	echo "Tunnel up."
fi

exit 0
