IPv6 DHCPv6 hostname not applied - compatibility issue?

Hi all,

I'm running a local network with a Netgear WAX206 OpenWRT 23.05.2 gateway. My provider nicely hands out a ::/48 and a "virtual dynamic interface" shows up with the correct information. All nice and clear.

As far as I know, my setup is pretty straightforward (config files follow).

However, something seems to go wrong when Linux machines with systemd-networkd try to fetch further information from OpenWRT. The Linux client ends up with systemd-networkd saying somebridge: DHCPv6 error: No message of desired type. The host itself gets its address from RA, but OpenWRT thinks it handed out an IPv6 lease.

So I'm ending up with a host that resolves, but is only reachable through its IPv4 address.

OpenWRT $ host malt
malt.example.com has address 172.21.21.209
malt.example.com has IPv6 address 2a02:xxxx:xxxx::568
malt.example.com has IPv6 address fd8d:12e6:b79f::568

However:

valentyn@malt:~$ ip a list dev somebridge
9: somebridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 8a:e4:e4:ff:43:03 brd ff:ff:ff:ff:ff:ff
    inet 172.21.21.209/24 metric 100 brd 172.17.2.255 scope global dynamic brthuis
       valid_lft 29299sec preferred_lft 29299sec
    inet6 fd8d:12e6:b79f:0:88e4:e4ff:feff:4303/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 43005sec preferred_lft 43005sec
    inet6 2a02:xxxx:xxxx:0:88e4:e4ff:feff:4303/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 43005sec preferred_lft 43005sec
    inet6 fe80::88e4:e4ff:feff:4303/64 scope link 
       valid_lft forever preferred_lft forever

I've tried to see what Wireshark makes of it but apart from a couple of DHCP requests and replies, I couldn't find what would be wrong here.

Is this an odhcpd/dhsmasq thing? Or a systemd-networkd bug that I should report elsewhere (if so, sorry!)? Or something else?

OpenWRT configuration: /etc/config/network

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option netmask '255.255.255.0'
	option ipaddr '172.21.21.1'
	option ip6assign '64'

config interface 'wan'
	option proto 'pppoe'
	option username 'internet'
	option password 'internet'
	option ipv6 'auto'
	option device 'lan4.6'

config interface 'wan6'
	option proto 'dhcpv6'
	option auto '0'
	option reqaddress 'try'
	option reqprefix 'auto'
	option device 'wan.6'

/etc/config/dhcp:

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option expandhosts '1'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option ednspacket_max '1232'
	option local '/internal.example.com/'
	option domain 'internal.example.com'
	list rebind_domain 'external.example.com'
	option nonwildcard '0'
	list server '/external.example.com/192.168.112.1'
	option localservice '0'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option force '1'
	option dhcpv6 'server'
	option ra_useleasetime '1'
	option ra 'server'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

The systemd-networkd configuration is generated by netplan. Netplan configuration is pretty straightforward, just saying dhcp4: true and dhcp6: true. I tried accept-ra: no but that seems to stop the machine from getting an IPv6 address alltogether.