Run raw IPv6 input in parallel.
authorbluhm <bluhm@openbsd.org>
Tue, 16 Apr 2024 12:40:40 +0000 (12:40 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 16 Apr 2024 12:40:40 +0000 (12:40 +0000)
commita3425987235165177fbddd81768e37f7cb969779
tree639183ba4c73ee1fd08a0e630b54abc6626e83d5
parent083f8ce16f81f2b8c4648d21f766ec3ed0e8e97d
Run raw IPv6 input in parallel.

Get rip6_input() in the same shape as rip_input().  Call
soisdisconnected() from rip6_disconnect().  This means that the raw
IP socket cannot be reconnected later.  Now raw IPv6 behaves like
IPv4 in this regard, KAME code is quite inconsistent here.  Also
make sure that there is no race between disconnect, input and wakeup.
The inpcb fileds inp_icmp6filt and inp_cksum6 are protected by
exclusive net lock in icmp6_ctloutput().  With all that, mark raw
IPv6 sockets to handle input in parallel.

OK mvs@
sys/netinet6/in6_proto.c
sys/netinet6/raw_ip6.c