Skip to content

Instantly share code, notes, and snippets.

@raegedoc
Forked from spali/10-wancarp
Last active December 28, 2024 13:34
Show Gist options
  • Save raegedoc/093ba815b6b3f2bc2ff327f48c60f3a9 to your computer and use it in GitHub Desktop.
Save raegedoc/093ba815b6b3f2bc2ff327f48c60f3a9 to your computer and use it in GitHub Desktop.
Disable WAN Interface on CARP Backup
#!/usr/local/bin/php
<?php
require_once("config.inc");
require_once("interfaces.inc");
require_once("util.inc");
$subsystem = !empty($argv[1]) ? $argv[1] : '';
$type = !empty($argv[2]) ? $argv[2] : '';
if ($type != 'MASTER' && $type != 'BACKUP' && $type != 'INIT') {
log_error("Carp '$type' event unknown from source '{$subsystem}'");
exit(1);
}
if (!strstr($subsystem, '@')) {
log_error("Carp '$type' event triggered from wrong source '{$subsystem}'");
exit(1);
}
$ifkey = 'wan';
$lan_vip = 'YOUR_CARP_LAN_VIP';
if ($type === "MASTER") {
log_error("Enable interface '$ifkey' due CARP event '$type'");
$config['interfaces'][$ifkey]['enable'] = '1';
write_config("Enable interface '$ifkey' due CARP event '$type'", false);
interface_configure(false, $ifkey, false, false);
} else if ($type === "BACKUP") {
log_error("Disable interface '$ifkey' due CARP event '$type'");
unset($config['interfaces'][$ifkey]['enable']);
write_config("Disable interface '$ifkey' due CARP event '$type'", false);
interface_configure(false, $ifkey, false, false);
exec('/sbin/route del default >&1', $ifc, $ret);
exec('/sbin/route add default ' . $lan_vip . ' >&1', $ifc, $ret);
}
?>
@LorenKeagle
Copy link

I have a dual-wan setup, and my old scripts are no longer working well either. Would it suffice to simply loop through an array of WAN interfaces? It doesn't seem like I should be calling the exec() lines for each interface, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment