Quote from: Monviech (Cedrik) on August 19, 2026, 01:08:47 PMThis is definitely freebsd bug territory now as Patrick also suggested:
https://bugs.freebsd.org/bugzilla/
If you have opened one you can also backlink it here:
https://github.com/opnsense/src/issues
Update on the upstream reporting: this was already in FreeBSD's bugzilla — PR 296106
(carp/vlan/bridge: CARP IP not responding on top of bridge),
filed in June against the native 15.x implementation (VLANFILTER bridge, untagged member).
Same signature we saw: interface address on the bridge-vlan works, CARP VIP dead, frames
visible on the bridge but never on the vlan interface.
So instead of filing a duplicate we added our findings there as a comment: the minimal
two-jail repro (entire datapath in-kernel — epairs + vnet jails, no NIC or hypervisor
vswitch touches a frame, which rules out the ESXi theory from earlier in that PR), plus the
code-level cause from reading if_bridge.c: bridge_input()'s GRAB_OUR_PACKETS only consults
the bridge's own if_carp (CARP_CHECK_WE_ARE_DST(bifp)), never the vlan child's, and vlan
demux happens only after a frame is accepted as local — so the vlan child's virtual MAC
always fails the "ours" test and gets flooded instead of delivered.
Notable from that PR: comment #9 confirms it independently and describes an epair-based
workaround (CARP on the b-side of an epair whose a-side is a bridge member, so the virtual
MAC actually gets learned). Hacky, but it exists.
"