support divert-to when pf applies it to a packet.
authordlg <dlg@openbsd.org>
Wed, 26 May 2021 02:38:01 +0000 (02:38 +0000)
committerdlg <dlg@openbsd.org>
Wed, 26 May 2021 02:38:01 +0000 (02:38 +0000)
commit603ab61f887cd126a3be6a2440fc52006dfa218f
treea207a63a657d885b73263eaaa4b900e738feb392
parent31591a207de9a8a6a95cbaf7393100481674805f
support divert-to when pf applies it to a packet.

when a divert-to rule applies to a packet, pf doesnt take the packet
away and shove it in the socket directly. pf marks the packet, and
then ip (or ipv6) input processing looks at the mark and picks the
local socket to queue it on. because veb operates at layer 2, ip
input processing only occurred if the packet was destined to go
into a vport interface.

bridge(4) handles this by checking if the packet has the pf divert
to mark set on it and calls ip input if it's set. this copies the
semantic to veb.

this allows divert-to to steal (take?) packets going over a veb and
process them on a local socket.

reported by ajacatot@
sys/net/if_veb.c