• 1.1.0 fe5ffa3d09

    1.1.0
    All checks were successful
    Release / Verify tag and changelog (push) Successful in 3s
    Release / PHP lint (push) Successful in 1m36s
    Release / Checksum and publish release (push) Successful in 3s
    CI / PHP lint (push) Successful in 1m34s
    Pre-release

    Ghost released this 2026-10-20 10:00:25 -07:00 | 17 commits to main since this release

    ❗ ❗ ❗ Superseded by 1.1.1, which fixes the lock being held by dhclient (#11). ❗ ❗ ❗

    I do not recommend using this release.

    Added

    • --reconcile mode, which re-applies the node's current CARP role. OPNsense's rc.linkup re-runs interface_configure() on LINK_UP for any interface enabled on disk, which brings the BACKUP's WAN back up with no CARP event to undo it. Reconcile is quiet unless it changes something or errors, skips during boot, and backs off while an event run holds the lock (#3, #4).
    • actions_wancarp.conf, a configd action so reconcile can be scheduled from System → Settings → Cron. It is published as a release asset and listed in 10-wancarp.sha256 (#4).
    • $carp_vhids setting to limit which VHIDs count towards the node's role (#3).
    • Dry-run preflight flags any CARP VHID on an interface in $iface_aliases, and checks for system_routing_configure() when remove_backup_route is set (#5, #6).
    • CI lints the script on every push. Pushing a release tag now builds the release itself (notes from this file, assets and checksum attached); it no longer needs to be created in the UI first. Lint runs on PHP 8.5, the version OPNsense ships (#12).

    Changed

    • The script now acts on the node's overall CARP role rather than the type of the event that woke it: any counted VHID in BACKUP → BACKUP, all MASTER → MASTER, otherwise no change. Runs are serialized with a lock so concurrent per-VHID events can't interleave (#3).
    • The remove_backup_route repoint is now two-way and state-driven. MASTER restores the default route if it still points at $lan_vip (via system_routing_configure()); BACKUP decides from the live default route, so a WAN that was already down still gets repointed, and --reconcile enforces both directions. A failed route delete now stops the route add (#6).

    Fixed

    • The END banner reports result=partial when an action fails, instead of result=ok (#7).
    • MASTER no longer skips an interface that is UP but unconfigured. It is only treated as already up if it also has a non-link-local address or a live dhclient (#8).
    • Install curl commands use -f, so an HTTP error exits non-zero instead of writing the error page over the hook or action file (#9).
    • A null $config on a live run now logs a clear message instead of raising a TypeError (#10).

    Documentation

    • Verified compatibility with OPNsense 26.7 / FreeBSD 15.1 and documented why the UP check must not match the new LOWER_UP flag.
    • Replaced clog (removed in 21.x) with opnsense-log, and corrected the PHP error log path.
    • Corrected the claim that HA config sync carries the per-interface enable flag; it doesn't, so the prerequisite must be set on each node.
    • Documented that toggled interfaces must not carry CARP VIPs (#5).
    Downloads