IPv6 bridge routing issue on boot

From: <nrhuff+fbq_at_nrhuff.com>
Date: Mon, 18 Oct 2021 18:08:30 UTC
I am running into some weird behavior with bridge devices and IPv6 on
Boot.  I have a system with three bridge devices 2 of which get IPv6
addresses from DHCPv6 and one that is statically assigned.  The two
bridges that are configured by dhcpd function fine.  The bridge that is
statically addressed comes up, but the directly connected network route
doesn't get added.

# uname -a
FreeBSD router 13.0-RELEASE-p4 FreeBSD 13.0-RELEASE-p4 #0: Tue Aug 24 07:33:27 UTC 2021 root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC
amd64

# ifconfig -a -g bridge
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 58:9c:fc:10:ff:d5
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::17bf:5f9b:57c1:8d65%bridge0 prefixlen 64 scopeid 0x6
        inet6 xxxx:xxxx:4b7f:2100::1 prefixlen 64
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: igb3 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 4 priority 128 path cost 2000000
        member: igb2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 3 priority 128 path cost 2000000
        member: igb1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 2 priority 128 path cost 2000000
        groups: bridge
        nd6 options=1<PERFORMNUD>
jailpub: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 58:9c:fc:10:ff:b1
        inet6 fe80::b559:d5ee:5947:4033%jailpub prefixlen 64 scopeid 0x7
        inet6 xxxx:xxxx:4b7f:2101::1 prefixlen 64
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: vwpuba flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 9 priority 128 path cost 2000
        groups: bridge
        nd6 options=1<PERFORMNUD>
jailpriv: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 58:9c:fc:10:a3:14
        inet6 fd09:fce8:b9e8:7d96::1 prefixlen 64
        inet6 fe80::5a9c:fcff:fe10:a314%jailpriv prefixlen 64 scopeid 0x8
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: vwpriva flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 11 priority 128 path cost 2000
        groups: bridge
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

# netstat -6 -r -n
Routing tables

Internet6:
Destination                       Gateway                       Flags     Netif Expire
::/96                             ::1                           UGRS        lo0
default                           fe80::201:5cff:fe95:4e46%igb0 UG         igb0
::1                               link#5                        UHS         lo0
::ffff:0.0.0.0/96                 ::1                           UGRS        lo0
xxxx:xxxx:4002:300::/64           fe80::201:5cff:fe95:4e46%igb0 UG         igb0
xxxx:xxxx:4002:300:b971:8222:f615:cdbb link#1                   UHS         lo0
xxxx:xxxx:4b7f:2100::/64          link#6                        U       bridge0
xxxx:xxxx:4b7f:2100::/56          ::1                           UGR         lo0
xxxx:xxxx:4b7f:2100::1            link#6                        UHS         lo0
xxxx:xxxx:4b7f:2101::/64          link#7                        U       jailpub
xxxx:xxxx:4b7f:2101::1            link#7                        UHS         lo0
fd09:fce8:b9e8:7d96::1            link#8                        UHS         lo0
fe80::/10                         ::1                           UGRS        lo0
fe80::%igb0/64                    link#1                        U          igb0
fe80::2e0:67ff:fe23:2878%igb0     link#1                        UHS         lo0
fe80::%lo0/64                     link#5                        U           lo0
fe80::1%lo0                       link#5                        UHS         lo0
fe80::%bridge0/64                 link#6                        U       bridge0
fe80::17bf:5f9b:57c1:8d65%bridge0 link#6                        UHS         lo0
fe80::%jailpub/64                 link#7                        U       jailpub
fe80::b559:d5ee:5947:4033%jailpub link#7                        UHS         lo0
fe80::%jailpriv/64                link#8                        U      jailpriv
fe80::5a9c:fcff:fe10:a314%jailpriv link#8                       UHS         lo0
ff02::/16                         ::1                           UGRS        lo0

Both jailpub and jailpriv have /64 routes.  There is no route for
fd09:fce8:b9e8:7d96::/64.

If I do
# /etc/rc.d/netif restart jailpriv
# netstat -rn6
Routing tables

Internet6:
Destination                       Gateway                       Flags     Netif Expire
::/96                             ::1                           UGRS        lo0
default                           fe80::201:5cff:fe95:4e46%igb0 UG         igb0
::1                               link#5                        UHS         lo0
::ffff:0.0.0.0/96                 ::1                           UGRS        lo0
2600:6c67:4002:300::/64           fe80::201:5cff:fe95:4e46%igb0 UG         igb0
2600:6c67:4002:300:b971:8222:f615:cdbb link#1                   UHS         lo0
2600:6c67:4b7f:2100::/64          link#6                        U       bridge0
2600:6c67:4b7f:2100::/56          ::1                           UGR         lo0
2600:6c67:4b7f:2100::1            link#6                        UHS         lo0
2600:6c67:4b7f:2101::/64          link#7                        U       jailpub
2600:6c67:4b7f:2101::1            link#7                        UHS         lo0
fd09:fce8:b9e8:7d96::/64          link#8                        U      jailpriv
fd09:fce8:b9e8:7d96::1            link#8                        UHS         lo0
fe80::/10                         ::1                           UGRS        lo0
fe80::%igb0/64                    link#1                        U          igb0
fe80::2e0:67ff:fe23:2878%igb0     link#1                        UHS         lo0
fe80::%lo0/64                     link#5                        U           lo0
fe80::1%lo0                       link#5                        UHS         lo0
fe80::%bridge0/64                 link#6                        U       bridge0
fe80::17bf:5f9b:57c1:8d65%bridge0 link#6                        UHS         lo0
fe80::%jailpub/64                 link#7                        U       jailpub
fe80::b559:d5ee:5947:4033%jailpub link#7                        UHS         lo0
fe80::%jailpriv/64                link#8                        U      jailpriv
fe80::5a9c:fcff:fe10:a314%jailpriv link#8                       UHS         lo0
ff02::/16                         ::1                           UGRS        lo0

This route
fd09:fce8:b9e8:7d96::/64          link#8                        U jailpriv
shows up and everything works.

My /etc/rc.conf contains
dhclient_program="/usr/local/sbin/dhcpcd"
ifconfig_igb0="DHCP"
ifconfig_igb0_ipv6="up"
ifconfig_igb1="up"
ifconfig_igb2="up"
ifconfig_igb3="up"
cloned_interfaces="bridge0 bridge1 bridge2 epair0 epair1"
ifconfig_bridge0="inet 192.168.1.1 netmask 255.255.255.0 addm igb1 addm igb2 addm igb3 up"
ifconfig_bridge1="up"
ifconfig_bridge1_name="jailpub"
ifconfig_bridge2_name="jailpriv"
ifconfig_epair0a_name="vwpuba"
ifconfig_epair0b_name="vwpubb"
ifconfig_epair1a_name="vwpriva"
ifconfig_epair1b_name="vwprivb"
ifconfig_vwpriva="up"
ifconfig_vwpuba="up"
ifconfig_jailpub="addm vwpuba up"
ifconfig_jailpriv="addm vwpriva up"
ifconfig_jailpriv_ipv6="inet6 fd09:fce8:b9e8:7d96::1/64 auto_linklocal"


Has anyone seen this and am I doing something wrong or is this a bug.
Figured I should check before filing a bug report.