git: net - Fix vlan input packet processing w/ if_bridge, if_carp, etc

Matthew Dillon dillon at
Thu Feb 2 01:52:21 PST 2023

commit d21ca33b37704234b30af0d1d43d4c0934efcbc2
Author: Matthew Dillon <dillon at>
Date:   Thu Feb 2 01:43:50 2023 -0800

    net - Fix vlan input packet processing w/ if_bridge, if_carp, etc
    * if_bridge does not understand VLAN-tagged packets, do not try to
      bridge such packets from the primary interface.  If the user wants
      to bridge such packets it can be done via the virtual vlan interface
      and the vlan tag can be regenerated (or not) with appropriate bridge
      This was causing unicast vlan packets to be discarded in the bridge code.
    * Unicast VLAN-tagged packets were not being properly bpf tapped on the
      virtual vlan interface.
    * Carp should operate on vlan interfaces, not the original interface, when
      presented with a VLAN-tagged packet.
    * Fix all of this by having ether_input_oncpu() bypass more or less directly
      to ether_demux_oncpu() when a M_VLANTAG packet is encountered.  What will
      happen is that if_vlan will issue ether_reinput_oncpu() from the
      appropriate virtual vlan interface, which ultimately re-enters
      ether_input_oncpu() without the tag.
      This is more along the lines of how we want vlans to be treated.  They
      really are supposed to be virtual LANs.

Summary of changes:
 sys/net/if_ethersubr.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

DragonFly BSD source repository

More information about the Commits mailing list