I just noticed the following in the lagg man page:
The following example uses an active failover interface to set up roaming
between wired and wireless networks using two network devices. Whenever
the wired master interface is unplugged, the wireless failover device
will be used:
# ifconfig em0 up
# ifconfig ath0 ether 00:11:22:33:44:55
# ifconfig create wlan0 wlandev ath0 ssid my_net up
# ifconfig lagg0 create
# ifconfig lagg0 laggproto failover laggport em0 laggport wlan0 \
192.168.1.1 netmask 255.255.255.0
(Note the mac address of the wireless device is forced to match the wired
device as a workaround.)
We had a discussion a while back about some non-working Wifi failover configurations and someone discovered that certain popular WiFi devices do not support overriding the MAC address.
Overriding the MAC of the Ethernet interface seems to work more universally.
This is what auto-wifi-failover (part of sysutils/auto-admin) now does.