I went round in circles for a few hrs trying to get this working. The problem was that the advice I could find was either incomplete or pertained to FreeBSD 8.x or below. It seems methods have changed a bit for ipv6 under FreeBSD 9.x
Here's what I did after creating the tunnel at HE:
edit rc.conf with the following. Substitute your nic for re0.
ipv6_network_interfaces="re0"
ifconfig_re0_ipv6="inet6 accept_rtadv"
ip6addrctl_policy="ipv6_prefer"
...then reboot, then as root run the usual commands you'd use to get gif0 up.
The man pages are most helpful. www.freebsd.org has man pages for lots of versions so you can see the differences.
All the defaults are set in /etc/defaults/rc.conf - Anything you specify in /etc/rc.conf will override these. See man 5 rc.conf (http://www.freebsd.org/cgi/man.cgi?query=rc.conf&apropos=0&sektion=5&manpath=FreeBSD+9.0-RELEASE&arch=default&format=html)
Sorry for digging this up, but here's my working rc.conf for /64:
ipv6_activate_all_interfaces="YES"
gif_interfaces="gif0"
gifconfig_gif0="X.X.X.X Y.Y.Y.Y"
ifconfig_gif0_ipv6="inet6 2001:XXX:XXXX:63::2 2001:XXX:XXXX:63::1 prefixlen 128"
ipv6_defaultrouter="2001:XXX:XXXX:63::2"
Where:
X.X.X.X => Client IPv4 Address (note: if you have NAT this should be your NAT IP i.e. 192.168.0.100)
Y.Y.Y.Y => Server IPv4 Address
2001:XXX:XXXX:63::2 => Client IPv6 Address
2001:XXX:XXXX:63::1 => Server IPv6 Address
Works like a charm even after rebooting :)
looks like the same setup as you'd use for 8