SLAAC WAN: add support for requesting DNS info via stateless DHCPv6 (#5937)

* Merge SLAAC interface dhcp6c config

Stateless DHCPv6 config for SLAAC WANs was generated, but not merged into dhcp6c.conf file.

* Add support for stateless DHCPv6 to dhcp6c script

Script had no code for processing stateless DHCPv6 replies (required for SLAAC without RDNSS / DNSSL).

* dhcp6c script, pass all search domains to ifctl

Only the first domain was used, all others were disregarded.
This commit is contained in:
Maurice Walker 2022-08-08 14:41:42 +02:00 committed by GitHub
parent e688d3b6fa
commit f2c844e170
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2786,10 +2786,28 @@ REQUEST)
ARGS="\${ARGS} -a \${NAMESERVER}"
done
/usr/local/sbin/ifctl -i ${wanif} -6nd \${ARGS}
/usr/local/sbin/ifctl -i ${wanif} -6sd \${new_domain_name:+"-a \${new_domain_name}"}
ARGS=
for DOMAIN in \${new_domain_name}; do
ARGS="\${ARGS} -a \${DOMAIN}"
done
/usr/local/sbin/ifctl -i ${wanif} -6sd \${ARGS}
/usr/local/sbin/ifctl -i ${wanif} -6pd \${PDINFO:+"-a \${PDINFO}"}
/usr/local/sbin/configctl -d interface newipv6 {$wanif}
;;
INFOREQ)
/usr/bin/logger -t dhcp6c "dhcp6c \$REASON on {$wanif} - running newipv6"
ARGS=
for NAMESERVER in \${new_domain_name_servers}; do
ARGS="\${ARGS} -a \${NAMESERVER}"
done
/usr/local/sbin/ifctl -i ${wanif} -6nd \${ARGS}
ARGS=
for DOMAIN in \${new_domain_name}; do
ARGS="\${ARGS} -a \${DOMAIN}"
done
/usr/local/sbin/ifctl -i ${wanif} -6sd \${ARGS}
/usr/local/sbin/configctl -d interface newipv6 {$wanif}
;;
EXIT|RELEASE)
/usr/bin/logger -t dhcp6c "dhcp6c \$REASON on {$wanif} - running dns reload"
/usr/local/sbin/ifctl -i ${wanif} -6nd
@ -2828,7 +2846,7 @@ EOF;
/* merge configs and prepare single instance of dhcp6c for startup */
foreach (legacy_config_get_interfaces(['enable' => true, 'virtual' => false]) as $_interface => $_wancfg) {
if (empty($_wancfg['ipaddrv6']) || $_wancfg['ipaddrv6'] != 'dhcp6') {
if (empty($_wancfg['ipaddrv6']) || ($_wancfg['ipaddrv6'] != 'dhcp6' && $_wancfg['ipaddrv6'] != 'slaac')) {
continue;
}