switch pflogd from using a bpf read timeout to a wait timeout.
authordlg <dlg@openbsd.org>
Tue, 9 May 2023 00:01:59 +0000 (00:01 +0000)
committerdlg <dlg@openbsd.org>
Tue, 9 May 2023 00:01:59 +0000 (00:01 +0000)
commit5c9b9cebbc5ad4018c9c03c3c9c9d49e568d4f86
tree3ed5eaa496d19c8dc1c048c9218238216f79468b
parent08f32a0ced201581875658ad180111957f56cd7b
switch pflogd from using a bpf read timeout to a wait timeout.

a bpf read timeout means every read will end after the timeout
expires. because pflogd has a half second read timeout it would sit
in a loop doing reads all the time even if there were no packets
to log.

the wait timeout means that when bpf catches a packet, it will wait
a bit for more packets to arrive before waking up the pending read.

pflogd now sits in the read syscall until packets are actually
available to log.

found by deraadt@ and ktrace
discussed with and ok sashan@
sbin/pflogd/pflogd.c