#!/usr/local/bin/php @ if (!preg_match('/^[a-z0-9_]+@\S+$/i', $subsystem)) { log_error("Malformed subsystem argument: '{$subsystem}'."); exit(0); } // Only react to the primary VHID list($vhid, $iface) = explode('@', $subsystem); $primary_vhid = '1'; // if ($vhid !== $primary_vhid) { exit(0); // ignore events from other VHIDs } // Interface key to manage $ifkey = 'wan'; // Determine whether WAN interface is currently enabled $ifkey_enabled = !empty($config['interfaces'][$ifkey]['enable']) ? true : false; // MASTER event if ($type === "MASTER") { // Enable WAN only if it's currently disabled if (!$ifkey_enabled) { log_msg("CARP event: switching to '$type', enabling interface '$ifkey'.", LOG_WARNING); $config['interfaces'][$ifkey]['enable'] = '1'; write_config("enable interface '$ifkey' due CARP event '$type'", false); interface_configure(false, $ifkey, false, false); } else { log_msg("CARP event: already '$type' for interface '$ifkey', nothing to do."); } // BACKUP event } else { // Disable WAN only if it's currently enabled if ($ifkey_enabled) { log_msg("CARP event: switching to '$type', disabling interface '$ifkey'.", LOG_WARNING); unset($config['interfaces'][$ifkey]['enable']); write_config("disable interface '$ifkey' due CARP event '$type'", false); interface_configure(false, $ifkey, false, false); } else { log_msg("CARP event: already '$type' for interface '$ifkey', nothing to do."); } }