mirror of
https://github.com/opnsense/core.git
synced 2026-06-08 16:34:24 -04:00
interfaces: multi-dhcp6c support #7647
This splits off rtsold and dhcp6c into separate processes. I'm not entirely sure why we settled for a single deamon of dhcp6c back in the day, but there are certianly downsides to it and I don't see something that wasn't fixed in the meantime that makes this not work.
This commit is contained in:
parent
838873a544
commit
2db56bfeef
2 changed files with 12 additions and 26 deletions
|
|
@ -868,7 +868,7 @@ function interface_reset($interface, $ifacecfg = false, $suspend = false)
|
|||
case 'slaac':
|
||||
case 'dhcp6':
|
||||
interface_dhcpv6_prepare($interface, $ifcfg, true);
|
||||
killbypid('/var/run/dhcp6c.pid', 'HUP');
|
||||
killbypid("/var/run/dhcp6c.{$device}.pid", 'HUP');
|
||||
break;
|
||||
case 'idassoc6':
|
||||
case 'track6':
|
||||
|
|
@ -2609,7 +2609,7 @@ function interface_track6_configure($interface, $lancfg, $reload = false)
|
|||
case 'dhcp6':
|
||||
if ($reload || !isset($lancfg['enable'])) {
|
||||
interface_dhcpv6_prepare($lancfg['track6-interface'], $trackcfg);
|
||||
killbypid('/var/run/dhcp6c.pid', 'HUP');
|
||||
killbypid("/var/run/dhcp6c.{$trackcfg['if']}.pid", 'HUP');
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -2893,15 +2893,16 @@ function interface_dhcpv6_configure($interface, $wancfg)
|
|||
}
|
||||
|
||||
/* always kill rtsold in case of reconfigure */
|
||||
killbypid('/var/run/rtsold.pid');
|
||||
killbypid("/var/run/rtsold.{$wancfg['if']}.pid");
|
||||
@unlink("/tmp/rtsold.{$wancfg['if']}.done");
|
||||
|
||||
$rtsold_frmt = ['/usr/sbin/rtsold -%s -aiu -p %s -A %s -R %s'];
|
||||
$rtsold_frmt = ['/usr/sbin/rtsold -%s -iu -p %s -A %s -R %s %s'];
|
||||
$rtsold_args = [
|
||||
$settings->dhcp6_debug->isEmpty() ? 'd' : 'D',
|
||||
'/var/run/rtsold.pid',
|
||||
"/var/run/rtsold.{$wancfg['if']}.pid",
|
||||
'/usr/local/opnsense/scripts/interfaces/rtsold_script.sh',
|
||||
'/usr/local/opnsense/scripts/interfaces/rtsold_resolvconf.sh',
|
||||
$wancfg['if'],
|
||||
];
|
||||
|
||||
/* fire up rtsold for IPv6 RAs first */
|
||||
|
|
@ -2978,21 +2979,6 @@ function interface_dhcpv6_prepare($interface, $wancfg, $cleanup = false)
|
|||
} else {
|
||||
@unlink("/var/etc/dhcp6c.{$device}.conf");
|
||||
}
|
||||
|
||||
$dhcp6cconf = '';
|
||||
|
||||
/* 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' && $_wancfg['ipaddrv6'] != 'slaac')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (file_exists("/var/etc/dhcp6c.{$_wancfg['if']}.conf")) {
|
||||
$dhcp6cconf .= file_get_contents("/var/etc/dhcp6c.{$_wancfg['if']}.conf");
|
||||
}
|
||||
}
|
||||
|
||||
@file_put_contents('/var/etc/dhcp6c.conf', $dhcp6cconf);
|
||||
}
|
||||
|
||||
function DHCP6_Config_File_Basic($interface, $wancfg, $wanif, $id = 0)
|
||||
|
|
|
|||
|
|
@ -33,17 +33,17 @@ if [ -z "${IFNAME}" ]; then
|
|||
fi
|
||||
|
||||
if grep -q "^interface ${IFNAME} " /var/etc/radvd.conf; then
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: rejecting dhcp6c"
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: rejecting dhcp6c on ${IFNAME}"
|
||||
echo "Rejecting own configuration."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
CONFFILE="/var/etc/dhcp6c.${IFNAME}.conf"
|
||||
PIDFILE="/var/run/dhcp6c.${IFNAME}.pid"
|
||||
DONEFILE="/tmp/rtsold.${IFNAME}.done"
|
||||
CONFFILE="/var/etc/dhcp6c.conf"
|
||||
PIDFILE="/var/run/dhcp6c.pid"
|
||||
|
||||
if [ ! -f "${CONFFILE}" ]; then
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: skipping dhcp6c"
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: skipping dhcp6c on ${IFNAME}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
|
@ -74,10 +74,10 @@ if [ -f "${PIDFILE}" ]; then
|
|||
fi
|
||||
|
||||
if [ -f "${PIDFILE}" ]; then
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: reloading dhcp6c"
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: reloading dhcp6c on ${IFNAME}"
|
||||
/bin/pkill -HUP -F "${PIDFILE}"
|
||||
else
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: starting dhcp6c"
|
||||
/usr/bin/logger -t dhcp6c "rtsold_script: starting dhcp6c on ${IFNAME}"
|
||||
/usr/local/sbin/dhcp6c $(get_var EXTRAOPTS) -c "${CONFFILE}" -p "${PIDFILE}"
|
||||
fi
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue