With output like that, IPv6 is not disabled, but it is effectively useless.
fe80::1 is the link-local address of the loopback interface (see
lo(4)), so traffic isn't going anywhere over that interface. If the existence of this link-local address still bothers you,
ifconfig(8) indicates that you can disable automatic generation of IPv6 link-local addresses by setting the sysctl MIB
net.inet6.ip6.auto_linklocal
to 0.
If you add
-n
to the netstat command, you'll likely see that "localhost" resolves to ::1, which is not routable. It's the IPv6 equivalent of the IPv4 range 127.0.0.0 - 127.255.255.255, except IPv6 only reserves this one address for the local host. I'm not sure what generates this, so I don't know how to disable it, if it can be disabled. If setting the sysctl MIB mentioned above to 0 did not work, I'd start looking at other sysctl MIBs.
It might be easier to rebuild the system from source with
WITHOUT_INET6
enabled in
src.conf(5) than to figure out how exactly to completely disable IPv6. Of course, then you would need to rebuild from source again when it's time to update, instead of relying on
freebsd-update(8).