one way: use /etc/ethers ( and related dnsmasq option )
#readethers boolean 0 -Z Read static lease entries from /etc/ethers, re-read on SIGHUP
another way: adapt something like this to populate dnsmasq A records;
( excerpt from ipv4 script )
#!/bin/sh
while read timeS maC iP namE maC2; do
echo "$iP $namE"
#ADDandorREMOVE A RECORD or SETUP STATIX-RESERVO
sleep 1
done < dhcp6.leases #(/var/hosts/odhcpd)
service reload
exit
#schedule every 5-10mins in cron or trigger in /etc/dnsmasq.conf on lease
another way - most "official"
##########################################
#in /etc/dnsmasq.conf
#dhcp-script=/bin/updateDUID.sh
##########################################
#/bin/updateDUID.sh https://ashus.ashus.net/thread-175.html
#!/bin/sh
for I in $(uci show dhcp|awk -F '(\\[|\\]|\\.|=)' '{if ($2=="@host" && $5=="name") print $6}'); do
NAME=$(echo -ne $I | sed -r "s/'//g")
DUID=$(cat /var/hosts/odhcpd |awk -F ' ' "{if (\$1 == \"#\" && \$5 == \"$NAME\") print \$3 }"|head -n 1)
ID=$(uci show dhcp|awk -F '(\\[|\\]|\\.|=)' "{if (\$2==\"@host\" && \$6==\"$I\") print \$3}")
if [ "$DUID" != "0000000000000000000000000000" ]; then
echo Found: $NAME = $DUID
uci set dhcp.@host[$ID].duid=$DUID # Set DUID
fi
done
echo Commiting changes; uci commit; killall -HUP odhcpd