This is a feature request to support creating a generic tunnel interface:
https://www.freebsd.org/cgi/man.cgi?query=gifA use case example is with
https://tunnelbroker.net. The tunnel would be created as follows on a FreeBSD system
ifconfig gif0 create
ifconfig gif0 tunnel $IPv4_address_of_Firewall WAN interface $IPv4_address_of_remote_tunnel_server
ifconfig gif0 inet6 $assigned_IPV6_client_address $assigned_IPV6_endpoint_address prefixlen $given_prefixlen
route -n add -inet6 default $assigned_IPV6_endpoint_address
ifconfig gif0 up
The GUI/form to create this interface would probably be a new tab under Interfaces with a page name like
interfaces_gif.php. The form would prompt for the variables above:
$IPv4_address_of_Firewall = get_ip_of_wan_inet();
$IPv4_address_of_remote_tunnel_server= "x.x.x.x";
$assigned_IPV6_client_address = "x:x:x:x::x";
$assigned_IPV6_endpoint_address = "x:x:x:x::x";
$given_prefixlen = 128;
Afterwards a new interface should be present on the firewall, and the firewall has IPv6 connectivity. The part I'm unsure of how to do (since I haven't experimented with dual stack yet, is how to configure the firewall to use dual stack to 1) provide cleints with IPv6 addresses, and 2) route IPv6 client packets over the GRE tunnel.