Skip to content

Instantly share code, notes, and snippets.

@raegedoc
Forked from spali/10-wancarp
Last active December 28, 2024 13:34

Revisions

  1. raegedoc revised this gist Sep 15, 2024. 1 changed file with 14 additions and 7 deletions.
    21 changes: 14 additions & 7 deletions 10-wancarp
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,7 @@ require_once("util.inc");
    $subsystem = !empty($argv[1]) ? $argv[1] : '';
    $type = !empty($argv[2]) ? $argv[2] : '';

    if ($type != 'MASTER' && $type != 'BACKUP') {
    if ($type != 'MASTER' && $type != 'BACKUP' && $type != 'INIT') {
    log_error("Carp '$type' event unknown from source '{$subsystem}'");
    exit(1);
    }
    @@ -19,15 +19,22 @@ if (!strstr($subsystem, '@')) {
    }

    $ifkey = 'wan';
    $lan_vip = 'YOUR_CARP_LAN_VIP';

    if ($type === "MASTER") {
    log_error("enable interface '$ifkey' due CARP event '$type'");
    log_error("Enable interface '$ifkey' due CARP event '$type'");

    $config['interfaces'][$ifkey]['enable'] = '1';
    write_config("enable interface '$ifkey' due CARP event '$type'", false);
    write_config("Enable interface '$ifkey' due CARP event '$type'", false);
    interface_configure(false, $ifkey, false, false);
    } else {
    log_error("disable interface '$ifkey' due CARP event '$type'");
    } 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);
    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);
    }
    ?>
  2. @spali spali revised this gist Dec 30, 2021. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions 10-wancarp
    Original file line number Diff line number Diff line change
    @@ -24,8 +24,10 @@ 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 {
    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);
    }
  3. @spali spali revised this gist Dec 30, 2021. No changes.
  4. @spali spali created this gist Dec 30, 2021.
    31 changes: 31 additions & 0 deletions 10-wancarp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    #!/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') {
    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';

    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);
    } else {
    log_error("disable interface '$ifkey' due CARP event '$type'");
    unset($config['interfaces'][$ifkey]['enable']);
    write_config("disable interface '$ifkey' due CARP event '$type'", false);
    }