Make divert lookup similar for all socket types. If PF_TAG_DIVERTED
authorbluhm <bluhm@openbsd.org>
Mon, 4 Dec 2017 13:40:34 +0000 (13:40 +0000)
committerbluhm <bluhm@openbsd.org>
Mon, 4 Dec 2017 13:40:34 +0000 (13:40 +0000)
commitc7745dcb75536400e2a7cb73741b11d0410874cf
tree1e4cc44ade1b54f33f44d4d91278a66b8ca18348
parentba0fc568d9c35fb642d91e327e264398ac267760
Make divert lookup similar for all socket types.  If PF_TAG_DIVERTED
is set, pf_find_divert() cannot fail so put an assert there.
Explicitly check all possible divert types, panic in the default
case.  For raw sockets call pf_find_divert() before of the socket
loop.  Divert reply should not match on TCP or UDP listen sockets.
OK sashan@ visa@
sys/netinet/in_pcb.c
sys/netinet/ip_input.c
sys/netinet/raw_ip.c
sys/netinet/tcp_input.c
sys/netinet6/raw_ip6.c