Steps to reproduce: 1. Create an interface sudo ifconfig tun0 create inet6 fd3d:fa7b:d17d::1/48 2. Check routing table netstat -nrfinet6 Routing tables Internet6: Destination Gateway Flags Netif Expire ::/96 ::1 UGRS lo0 ::1 link#2 UH lo0 ::ffff:0.0.0.0/96 ::1 UGRS lo0 fd3d:fa7b:d17d::/48 link#3 U tun0 fd3d:fa7b:d17d::1 link#3 UHS lo0 fe80::/10 ::1 UGRS lo0 fe80::%em0/64 link#1 U em0 fe80::20c:29ff:fe8a:8910%em0 link#1 UHS lo0 fe80::%lo0/64 link#2 U lo0 fe80::1%lo0 link#2 UHS lo0 fe80::%tun0/64 link#3 U tun0 fe80::20c:29ff:fe8a:8910%tun0 link#3 UHS lo0 ff02::/16 ::1 UGRS lo0 3. Add route sudo route add -inet6 2001:DB8::1/32 -interface tun0 fd3d:fa7b:d17d::2 add net 2001:DB8::1/32: gateway tun0 4. Check routing table [freebsd11:~] tuexen% netstat -nrfinet6 Routing tables Internet6: Destination Gateway Flags Netif Expire ::/96 ::1 UGRS lo0 ::1 link#2 UH lo0 ::ffff:0.0.0.0/96 ::1 UGRS lo0 illegal prefixlen 2001:838::/0 tun0 US tun0 fd3d:fa7b:d17d::/48 link#3 U tun0 fd3d:fa7b:d17d::1 link#3 UHS lo0 fe80::/10 ::1 UGRS lo0 fe80::%em0/64 link#1 U em0 fe80::20c:29ff:fe8a:8910%em0 link#1 UHS lo0 fe80::%lo0/64 link#2 U lo0 fe80::1%lo0 link#2 UHS lo0 fe80::%tun0/64 link#3 U tun0 fe80::20c:29ff:fe8a:8910%tun0 link#3 UHS lo0 ff02::/16 ::1 UGRS lo0 The problem is with "illegal prefixlen" and the network being displayed 2001:838::/0. The problem does not occur when using sudo route add -inet6 2001:DB8::1/32 fd3d:fa7b:d17d::2 in step 3.
It looks like the address specified after `-interface tun0' argument is considered as netmask and since it is not contiguous, this leads to such results.
OK. Then I would expect the get an error instead of strange settings...