For the record, I now have a working, dynamic configuration. The DHCP server is still very moody and only rarely responds to solicitations, but when it does, the following make things work. ppp0 is my PPPoE interface, and eth0 is on the LAN.
--[ /etc/wide-dhcpv6/dhcp6c.conf ]--------------------------------------------
profile default
{
request domain-name-servers;
script "/etc/wide-dhcpv6/dhcp6c-script";
};
interface ppp0 {
send ia-pd 0;
#send rapid-commit;
};
id-assoc pd 0 {
prefix-interface eth0 {
sla-id 0;
sla-len 4;
ifid 1;
};
};
--[ /etc/radvd.conf ]---------------------------------------------------------
interface eth0
{
AdvSendAdvert on;
AdvDefaultPreference high;
prefix ::/64
{
};
};
--[ cat /etc/ppp/ip-{up,down}.d/local-dhcp6c ]--------------------------------
#!/bin/sh
set -eu
case "$0" in
(*-down*) MODE=stop;;
(*) MODE=start;;
esac
env IFACE=$PPP_IFACE MODE=$MODE /etc/wide-dhcpv6/dhcp6c-ifupdown
case "$MODE" in
(start)
ip -6 route add default dev $PPP_IFACE
systemctl restart radvd.service
;;
(stop)
systemctl stop radvd.service
;;
esac