No route for ULA ipv6 bridged bhyve VMs until ping from host

From: Khairil Yusof <khairil.yusof_at_gmail.com>
Date: Fri, 06 May 2022 11:44:07 UTC
I have a bridged interface on host with VMs connected via tap like so:

vm-public: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
1500
        ether e6:18:17:1a:62:e0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 11 priority 128 path cost 2000000
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 9 priority 128 path cost 2000000
        member: em1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 3 priority 128 path cost 20000
        groups: bridge vm-switch viid-4c918@
        nd6 options=9<PERFORMNUD,IFDISABLED>

The bridged host interface is configured like this:

em1: flags=8963<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0
mtu 1500

options=4812099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        ether 00:15:17:f0:9c:d6
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet6 fe80::215:17ff:fef0:9cd6%em1 prefixlen 64 scopeid 0x3
        inet6 fdd5:674c:9795::1 prefixlen 64
        inet6 2001:e68:545a:xxx:xxxx:xxxx:xxxx:xxxx prefixlen 64
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

Everything else works as a bridged interface should.

- VMs get IPv4 DHCP addresses, dns and works as they should including being
able
  to reach host on 192.168.0.1 from VM
- VMs get IPv6 global and local ULA addresses via SLAAC from from host, and
global addresses work as they should. VMs are able to reach ipv6 global
addresses/internet, including the ipv6 global address of em1 on host. VMs
are also able to reach link local addresses(fe:80::) including that of the
host.
- VMs are able to reach ULA fdd5:: addresses of other hosts on the network

However VMs cannot reach host ULA address on em1 of fdd5:674c:9795::1.
The VM can only reach host ULA address off dd5:674c:9795::1., after I ping
the ULA address of a VM.

There is some ipv6 routing or bridge interface setting I'm missing here (or
understanding) that makes VM not automatically have a route for the fixed
ULA ip address of the host.

Would really appreciate any pointers.