-
1.1.1
Stablereleased this
2026-10-22 17:22:19 -07:00 | 14 commits to main since this releaseFixed
- The lock file is opened close-on-exec. Before, the
dhclientthatinterface_configure()starts on MASTER inherited the descriptor and kept the lock held for as long as it ran. Later CARP events then blocked indefinitely (so demotion never took WAN down), and every--reconcilebacked off silently (#11).
Documentation
- Installation is one ordered list covering every step: enable the interface, download and verify, install, configure, dry-run, check the configd action, schedule the reconcile cron job, and test a failover. The pinned-release example now uses 1.1.1, since 1.0.0 has no
actions_wancarp.confand its download failed (#13). - Corrected stale README details: MASTER's "already up" check also requires an address or a running
dhclient, the reconcile drift message readsinterface/route state had drifted, and the API list includesexit_on_bootup()andsystem_routing_configure()(#13).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The lock file is opened close-on-exec. Before, the
-
1.1.0
Pre-releasereleased 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
--reconcilemode, which re-applies the node's current CARP role. OPNsense'src.linkupre-runsinterface_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 in10-wancarp.sha256(#4).$carp_vhidssetting 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 forsystem_routing_configure()whenremove_backup_routeis 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_routerepoint is now two-way and state-driven. MASTER restores the default route if it still points at$lan_vip(viasystem_routing_configure()); BACKUP decides from the live default route, so a WAN that was already down still gets repointed, and--reconcileenforces both directions. A failedroute deletenow stops theroute add(#6).
Fixed
- The END banner reports
result=partialwhen an action fails, instead ofresult=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
curlcommands use-f, so an HTTP error exits non-zero instead of writing the error page over the hook or action file (#9). - A null
$configon a live run now logs a clear message instead of raising aTypeError(#10).
Documentation
- Verified compatibility with OPNsense 26.7 / FreeBSD 15.1 and documented why the UP check must not match the new
LOWER_UPflag. - Replaced
clog(removed in 21.x) withopnsense-log, and corrected the PHP error log path. - Corrected the claim that HA config sync carries the per-interface
enableflag; it doesn't, so the prerequisite must be set on each node. - Documented that toggled interfaces must not carry CARP VIPs (#5).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-07-02 11:34:07 -07:00 | 30 commits to main since this release1.0.0
- Updated README and Installation instructions to use
chmod 0700instead ofchmod a+x - Created runner workflow to generate SHA256 hashes when a release is published so you can validate script integrity when pulling to your firewalls
- To validate download
10-wancarpand10-wancarp.sha256to the same location and then runsha256sum -c 10-wancarp.sha256
- To validate download
Downloads
-
Source code (ZIP)
6 downloads
-
Source code (TAR.GZ)
5 downloads
- Updated README and Installation instructions to use