replace if_get with if_get_smr in the vlan transmit path.
this mitigates against hammering the parent interface refcnt when
transmitting packets.
this means we call if_enqueue against the parent interface from an
smr critical section rather than calling it while holding a "real"
ref, but aggr has been calling if_enqueue from an smr critical
section for years without issue.
add if_get_smr()
if_get_smr() is like if_get() in that you give it an interface index
and it gives you an ifnet pointer (or NULL), except it doesnt bump
the reference count on the interface. to compensate, you can only
use it inside an SMR critical section.
the good news is that the ifidxmap map and ifnet lookups are already
done using SMR, so this is an extremely trivial change.
the benefit of this is that you can avoid the atomic operations on
a shared variable (the ifnet refcnt) when using an interface in an
smr critical section.
import py3-lxml-html-clean-0.4.3; ok aja@
This project was initially a part of lxml. Because HTML cleaner is designed as
blocklist-based, many reports about possible security vulnerabilities were
filed for lxml and that make the project problematic for security-sensitive
environments. Therefore we decided to extract the problematic part to a
separate project.
import py3-rjsmin-1.2.5; ok aja@
rJSmin is a javascript minifier written in python. The minifier is based
on the semantics of jsmin.c by Douglas Crockford. The module is a
re-implementation aiming for speed, so it can be used at runtime
(rather than during a preprocessing step). Usually it produces the same
results as the original jsmin.c.
import py3-cbor2-5.7.1; ok aja@
This library provides encoding and decoding for the Concise Binary Object
Representation (CBOR) (RFC 8949) serialization format. The specification is
fully compatible with the original RFC 7049.
Do not crash when calling freeaddrinfo(NULL)
Supported by Linux since at least 1997, and FreeBSD since 2017. While
not defined, there's no real good reason to crash when we could just
cope. Indeed, software out there relies on the Linux behavior.
Point out in the manpage that the behavior of getaddrinfo(NULL) isn't
defined and thus isn't portable.
Edge case spotted recently by kn@ in OpenVPN.
ok millert@ djm@ deraadt@ kn@