summaryrefslogtreecommitdiffstats
path: root/etc/inc/interfaces.inc
diff options
context:
space:
mode:
Diffstat (limited to 'etc/inc/interfaces.inc')
-rw-r--r--etc/inc/interfaces.inc68
1 files changed, 21 insertions, 47 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 5edb85a..d02258b 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -1625,17 +1625,11 @@ EOD;
function interfaces_carp_setup() {
global $g, $config;
- $balanacing = "";
- $pfsyncinterface = "";
- $pfsyncenabled = "";
if(isset($config['system']['developerspew'])) {
$mt = microtime();
echo "interfaces_carp_setup() being called $mt\n";
}
- // Prepare CmdCHAIN that will be used to execute commands.
- $cmdchain = new CmdCHAIN();
-
if ($g['booting']) {
echo "Configuring CARP settings...";
mute_kernel_msgs();
@@ -1658,61 +1652,41 @@ function interfaces_carp_setup() {
}
if($balanacing) {
- $cmdchain->add("Enable CARP ARP-balancing", "/sbin/sysctl net.inet.carp.arpbalance=1", true);
- $cmdchain->add("Disallow CARP preemption", "/sbin/sysctl net.inet.carp.preempt=0", true);
+ mwexec("/sbin/sysctl net.inet.carp.arpbalance=1", true);
+ mwexec("/sbin/sysctl net.inet.carp.preempt=0", true);
} else
- $cmdchain->add("Enable CARP preemption", "/sbin/sysctl net.inet.carp.preempt=1", true);
+ mwexec("/sbin/sysctl net.inet.carp.preempt=1", true);
- $cmdchain->add("Enable CARP logging", "/sbin/sysctl net.inet.carp.log=1", true);
+ mwexec("sbin/sysctl net.inet.carp.log=1", true);
if (!empty($pfsyncinterface))
$carp_sync_int = get_real_interface($pfsyncinterface);
-
- if($g['booting']) {
- /* install rules to alllow pfsync to sync up during boot
- * carp interfaces will remain down until the bootup sequence finishes
- */
- $fd = fopen("{$g['tmp_path']}/rules.boot", "w");
- if ($fd) {
- fwrite($fd, "block quick proto carp \n");
- fwrite($fd, "block quick proto pfsync \n");
- fwrite($fd, "pass out quick from any to any keep state\n");
- fclose($fd);
- mwexec("/sbin/pfctl -f {$g['tmp_path']}/rules.boot");
- } else
- log_error("Could not create rules.boot file!");
- }
+ else
+ unset($carp_sync_int);
/* setup pfsync interface */
- if($carp_sync_int and $pfsyncenabled) {
+ if ($carp_sync_int and $pfsyncenabled) {
if (is_ipaddr($pfsyncpeerip))
- $cmdchain->add("Bring up pfsync0 syncpeer", "/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} syncpeer {$pfsyncpeerip} up", false);
+ mwexec("/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} syncpeer {$pfsyncpeerip} up", false);
else
- $cmdchain->add("Bring up pfsync0 syncdev", "/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} up", false);
- } else
- $cmdchain->add("Bring up pfsync0", "/sbin/ifconfig pfsync0 syncdev lo0 up", false);
-
- sleep(1);
+ mwexec("/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} up", false);
- /* XXX: Handle an issue with pfsync(4) and carp(4). In a cluster carp will come up before pfsync(4) has updated and so will cause issuese
- * for exiting sessions.
- */
- $i = 0;
- while (intval(trim(`/sbin/ifconfig pfsync0 | /usr/bin/grep 'syncok: 0' | /usr/bin/grep -v grep | /usr/bin/wc -l`)) == 0 && $i < 30) {
- $i++;
sleep(1);
+
+ /* XXX: Handle an issue with pfsync(4) and carp(4). In a cluster carp will come up before pfsync(4) has updated and so will cause issuese
+ * for exiting sessions.
+ */
+ $i = 0;
+ while (intval(trim(`/sbin/ifconfig pfsync0 | /usr/bin/grep 'syncok: 0' | /usr/bin/grep -v grep | /usr/bin/wc -l`)) == 0 && $i < 30) {
+ $i++;
+ sleep(1);
+ }
}
- if($config['virtualip']['vip'])
- $cmdchain->add("Allow CARP.", "/sbin/sysctl net.inet.carp.allow=1", true);
+ if ($config['virtualip']['vip'])
+ mwexec("/sbin/sysctl net.inet.carp.allow=1", true);
else
- $cmdchain->add("Disallow CARP.", "/sbin/sysctl net.inet.carp.allow=0", true);
+ mwexec("/sbin/sysctl net.inet.carp.allow=0", true);
- if($g['debug'])
- $cmdchain->setdebug(); // optional for verbose logging
-
- $cmdchain->execute();
- $cmdchain->clear();
-
if ($g['booting']) {
unmute_kernel_msgs();
echo "done.\n";
OpenPOWER on IntegriCloud