HomeFreeBSD

enc: create an interface at SI_SUB_PROTO_IF stage

Description

enc: create an interface at SI_SUB_PROTO_IF stage

Creation of enc0 before SI_SUB_PROTO_MC mangles the MLD list as well as
encounters IGMP mutex not initialized yet.

Reported & tested by: mjg

NB: the enc(4) is not a true interface indeed. In a perfect world the
module shall not create a cloner, shall not enter if_attach(), shall not
trigger ifnet_arrival_event, neither shall have any protocol attached to
it. The enc0 exists for two purposes: 1) create a bpf(9) tap; 2) to allow
injection packets in the middle of ipsec(4) processing temporarily
rewriting m_pkthdr.rcvif to point at enc0. While the problem 1 is already
solved with a recent divorce between bpf(9) and ifnet(9), the problem 2 is
harder to solve without breaking packet filter rules that use "via enc0".

Details

Provenance
glebiusAuthored on Jan 9 2026, 11:31 PM
Parents
rGc1376acb8a9d: ipfw: find_tentry method is defined for any table algorithm
Branches
Unknown
Tags
Unknown