Original observation: write(2) to BPF descriptor on lo0 returned
EAFNOSUPPORT. Initial attribution: missing sa_len initialization in
if_output drivers.
After review by glebius: the reproducer violated the DLT_NULL contract
(missing 32-bit AF header). The original attribution was not sustained.
The sa_len check in the individual drivers is not required because the
BPF/ifnet interface contract is already established upstream.
Following that review, this revision is updated to add a defensive
assertion in bpf_movein() per glebius's suggestion:
MPASS(hlen <= sizeof(sockp->sa_data));
This makes the existing contract between bpf and ifnet explicit and
machine-checkable.