I managed to get this working with AT&T's dumb IPv6 setup in IP passthrough mode without needing any additional scripts or wide-dhcpv6.
This is based on pieces from:
Basically, you install kmod-macvlan
and set up a macvlan type device (tied to the physical WAN interface) for each prefix you wish to pull from the AT&T gateway's /60 PD. Then you set up an additional interface for each of the macvlan devices you added. Each additional interface is a proto 'dhcpv6' type of /64 size. Finally, your internal interfaces which will receive the IPv6 PDs need to be set to hand out IPv6 addresses only from the corresponding interface you set up for the given PD. This is where the list ip6class ...
setting comes into play. See below...
Here's an example of my working /etc/config/network
file:
config interface 'loopback'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
option device 'lo'
config globals 'globals'
option packet_steering '1'
config interface 'lan'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.10.1'
option ip6ifaceid '::1'
option device 'eth1'
list ip6class 'WAN6LAN'
option ip6assign '64'
config interface 'WAN'
option proto 'dhcp'
option peerdns '0'
option device 'eth0'
option hostname '*'
config interface 'WAN6'
option proto 'dhcpv6'
option peerdns '0'
option device 'eth0'
option delegate '0'
option reqaddress 'try'
option reqprefix 'no'
config interface 'GUEST'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '64'
option ipaddr '192.168.9.1'
option ip6ifaceid '::1'
option device 'eth1.9'
list ip6class 'WAN6GUEST'
config interface 'IOT'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.99.1'
option ip6assign '64'
option ip6ifaceid '::1'
option device 'eth1.99'
list ip6class 'WAN6IOT'
config device 'vwan1'
option name 'vwan1'
option type 'macvlan'
option ifname 'eth0'
config device 'vwan2'
option name 'vwan2'
option type 'macvlan'
option ifname 'eth0'
config device 'vwan3'
option name 'vwan3'
option type 'macvlan'
option ifname 'eth0'
config interface 'WAN6LAN'
option proto 'dhcpv6'
option peerdns '0'
option device 'vwan1'
option reqprefix '64'
option reqaddress 'none'
config interface 'WAN6GUEST'
option proto 'dhcpv6'
option device 'vwan2'
option reqprefix '64'
option peerdns '0'
option reqaddress 'none'
config interface 'WAN6IOT'
option proto 'dhcpv6'
option device 'vwan3'
option reqaddress 'none'
option reqprefix '64'
option peerdns '0'
Just make sure that the RA mode on each of the internal interfaces is set to 'server' mode and RA flags are set to "other config":
e.g.
config dhcp 'lan'
option interface 'lan'
...
option ra 'server'
list ra_flags 'other-config'
@vgaetera Is it possible to get this written up for AT&T fiber users in the wiki here? https://openwrt.org/docs/guide-user/network/ipv6/start