Run sysctl net.inet.ip.forwarding without net lock.
authorbluhm <bluhm@openbsd.org>
Fri, 12 Jul 2024 09:25:27 +0000 (09:25 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 12 Jul 2024 09:25:27 +0000 (09:25 +0000)
commit2c9f5b1f9b63d3c42782e20a33197935b7bc2209
tree1c5c612be2e8bcbd3706ccc153491a12500091d8
parent3bfda1b722724da5e2ba396e0ae79008f429385a
Run sysctl net.inet.ip.forwarding without net lock.

The places in packet processing where ip_forwarding is evaluated
have been consolidated.  The remaining pieces in pf test, ip input,
and icmp input do not need consistent information.  If the integer
value is changed by another CPU, it is harmless.
The sysctl syscall sets the value atomically, so add atomic read
in network processing and remove the net lock in sysctl IPCTL_FORWARDING.

OK claudio@ mvs@
sys/net/pf.c
sys/netinet/ip_icmp.c
sys/netinet/ip_input.c