tobhe [Thu, 25 Feb 2021 20:13:24 +0000 (20:13 +0000)]
Constify cipher API.
ok markus@
kn [Thu, 25 Feb 2021 20:04:38 +0000 (20:04 +0000)]
Typofix
tb [Thu, 25 Feb 2021 17:29:22 +0000 (17:29 +0000)]
Fix two bugs in the legacy verifier
To integrate the new X.509 verifier, X509_verify_cert() was refactored.
The code building chains in the legacy verifier was split into a
separate function. The first bug is that its return value was treated
as a Boolean although it wasn't. Second, the return alone is not enough
to decide whether to carry on the validation or not.
Slightly rearrange things to restore the behavior of the legacy verifier
prior to this refactoring.
Issue found and test case provided by Anton Borowka and jan.
ok jan jsing
jsing [Thu, 25 Feb 2021 17:07:52 +0000 (17:07 +0000)]
Update regress to match TLS versions change.
jsing [Thu, 25 Feb 2021 17:06:05 +0000 (17:06 +0000)]
Only use TLS versions internally (rather than both TLS and DTLS versions).
DTLS protocol version numbers are the 1's compliment of human readable TLS
version numbers, which means that newer versions decrease in value and
there is no direct mapping between TLS protocol version numbers and DTLS
protocol version numbers.
Rather than having to deal with this internally, only use TLS versions
internally and map between DTLS and TLS protocol versions when necessary.
Rename functions and variables to use 'tls_version' when they contain a
TLS version (and never a DTLS version).
ok tb@
jsing [Thu, 25 Feb 2021 16:58:59 +0000 (16:58 +0000)]
Rename depth to num_untrusted so it identifies what it actually represents.
ok tb@
jsing [Thu, 25 Feb 2021 16:57:10 +0000 (16:57 +0000)]
Avoid passing last and depth to x509_verify_cert_error() on ENOMEM.
In x509_verify_ctx_set_xsc_chain(), an ENOMEM case is currently passing
the last certificate and depth (which is no longer actually depth) to
x509_verify_cert_error(). Given we've hit an ENOMEM situation, neither
of these are useful so remove both.
ok tb@
otto [Thu, 25 Feb 2021 15:20:18 +0000 (15:20 +0000)]
- Make use of the fact that we know how the chunks are aligned, and
write 8 bytes at the time by using a uint64_t pointer. For an
allocation a max of 4 such uint64_t's are written spread over the
allocation. For pages sized and larger, the first page is junked in
such a way.
- Delayed free of a small chunk checks the corresponiding way.
- Pages ending up in the cache are validated upon unmapping or re-use.
In snaps for a while
espie [Thu, 25 Feb 2021 09:13:18 +0000 (09:13 +0000)]
split off the large module documentations, so that port-modules is less of
a monster.
okay sthen@
jan [Thu, 25 Feb 2021 07:30:36 +0000 (07:30 +0000)]
Prevent zero size devices from attaching
This also fixes two NULL ptr derefs in later code path.
OK patick@, krw@
djm [Thu, 25 Feb 2021 03:27:34 +0000 (03:27 +0000)]
s/PubkeyAcceptedKeyTypes/PubkeyAcceptedAlgorithms/
dlg [Thu, 25 Feb 2021 02:48:19 +0000 (02:48 +0000)]
we don't have to cast to caddr_t when calling m_copydata anymore.
the first cut of this diff was made with coccinelle using this spatch:
@rule@
type caddr_t;
expression m, off, len, cp;
@@
-m_copydata(m, off, len, (caddr_t)cp)
+m_copydata(m, off, len, cp)
i had fix it's opinionated idea of formatting by hand though, so
i'm not sure it was worth it.
ok deraadt@ bluhm@
dlg [Thu, 25 Feb 2021 02:43:31 +0000 (02:43 +0000)]
let m_copydata use a void * instead of caddr_t
i'm not a fan of having to cast to caddr_t when we have modern
inventions like void *s we can take advantage of.
ok claudio@ mvs@ bluhm@
dlg [Thu, 25 Feb 2021 01:19:35 +0000 (01:19 +0000)]
enable veb(4), it's time for wider testing.
apart from the semantic differences between bridge(4) and veb(4),
the only missing bits in veb(4) is the transparent ipsec interception
support, and spanning tree.
kn [Thu, 25 Feb 2021 00:38:59 +0000 (00:38 +0000)]
Fix SMALL build
OK deraadt
dlg [Wed, 24 Feb 2021 23:44:04 +0000 (23:44 +0000)]
add support for hashing 64 and 32 bit numbers in host byte order.
deraadt [Wed, 24 Feb 2021 23:33:44 +0000 (23:33 +0000)]
sync
dtucker [Wed, 24 Feb 2021 23:12:35 +0000 (23:12 +0000)]
Rename pubkeyacceptedkeytypes to pubkeyacceptedalgorithms in test to
match change to config-dump output.
tobhe [Wed, 24 Feb 2021 22:17:48 +0000 (22:17 +0000)]
Use ASN1_STRING_get0_data() instead of the deprecated ASN1_STRING_data().
From Moritz Schmitt
ok patrick@
deraadt [Wed, 24 Feb 2021 19:21:41 +0000 (19:21 +0000)]
build resolvd
deraadt [Wed, 24 Feb 2021 19:00:38 +0000 (19:00 +0000)]
More accurately describe the DNS proposal sources and reaction by resolvd.
with jmc
deraadt [Wed, 24 Feb 2021 19:00:08 +0000 (19:00 +0000)]
fairly significant rewrite, including:
replace poll+kevent with kevent only.
lockfile to block starting of 2nd instance.
remove state file, and recognize '# resolvd: ' lines as state
handle DNS proposal withdraws better
Still a work in progress.
tested and looked at by semarie, benno, florian, dlg
florian [Wed, 24 Feb 2021 18:34:14 +0000 (18:34 +0000)]
We need to track the pid of the connecting control connection to be
able to send answers back to the correct client in case two are
connecting at the same time. We also need to pass the pid around to
the resolver process so that it can hand it back to us.
Debugged by deraadt and dlg who noticed that answers would always
arrive on the first control connection.
deraadt@ points out that tracking the pid is not the best choice in
case one process wants to hold open two connections but at least this
brings us in line with all the other privsep daemons with control
tools. If we change this we should change it in all daemons.
florian [Wed, 24 Feb 2021 18:10:41 +0000 (18:10 +0000)]
Import resold(8), a daemon to rewrite resolv.conf.
prodding deraadt
tb [Wed, 24 Feb 2021 18:01:31 +0000 (18:01 +0000)]
Fix comment explaining last_untrusted. This should really be called
num_untrusted, but unfortunately it's public...
ok jsing tobhe
tb [Wed, 24 Feb 2021 17:59:05 +0000 (17:59 +0000)]
Make the new validator check for EXFLAG_CRITICAL
As should be obvious from the name and the comment in x509_vfy.h
int last_untrusted; /* index of last untrusted cert */
last_untrusted actually counts the number of untrusted certs at the
bottom of the chain.
Unfortunately, an earlier fix introducing x509_verify_set_xsc_chain()
assumed that last_untrusted actually meant the index of the last
untrusted cert in the chain, resulting in an off-by-one, which in turn
led to x509_vfy_check_chain_extension() skipping the check for the
EXFLAG_CRITICAL flag.
A second bug in x509_verify_set_xsc_chain() assumed that it is always
called with a trusted root, which is not necessarily the case anymore.
Address this with a temporary fix which will have to be revisited once
we will allow chains with more than one trusted cert.
Reported with a test case by tobhe.
ok jsing tobhe
krw [Wed, 24 Feb 2021 16:53:18 +0000 (16:53 +0000)]
Complete deleting ifi->active before calling write_lease_db().
No functional change but a bit more obvious and shrinks upcoming diff.
krw [Wed, 24 Feb 2021 16:36:47 +0000 (16:36 +0000)]
No need to get time() twice. Just use the already
obtained cur_time to initialize a missing lease->epoch.
krw [Wed, 24 Feb 2021 16:27:05 +0000 (16:27 +0000)]
No need to check ifi->active for NULL when looking for duplicate/obsolete
leases. It can't be NULL, and is unconditionally dereferenced a few lines
later anyway.
krw [Wed, 24 Feb 2021 16:21:33 +0000 (16:21 +0000)]
Fix annoying typo in a comment.
krw [Wed, 24 Feb 2021 16:18:59 +0000 (16:18 +0000)]
Remove incomplete/incorrect connection with autoconf, clearing ground
for future attempts at making it more IPv6-like.
ok florian@
deraadt [Wed, 24 Feb 2021 16:12:42 +0000 (16:12 +0000)]
show AF for DNS proposal messages; ok claudio bluhm
visa [Wed, 24 Feb 2021 14:59:52 +0000 (14:59 +0000)]
kqueue: Revise filterops interface
Extend kqueue's filterops interface with new callbacks so that it
becomes easier to use with fine-grained locking. The new interface
delegates the serialization of kn_event access to event sources. Now
kqueue uses filterops callbacks to read or write kn_event. This hides
event sources' locking patterns from kqueue, and allows clean
implementation of atomic read-and-clear for EV_CLEAR, for instance.
There are so many existing filterops instances that converting all of
them in one go is tricky. This patch adds a wrapper mechanism that
kqueue uses when the new callbacks are missing.
The new filterops interface has been influenced by XNU's kqueue.
OK mpi@ semarie@
lum [Wed, 24 Feb 2021 14:17:18 +0000 (14:17 +0000)]
Various fixes from emails Joachim Nilsson sent to tech@ many moons
ago. Sorry for the delay.
- Make sure we don't deref NULL ptr in skipwhite()
- Only deref vendp if not NULL
- Strings must be at least 2 chars for terminating NUL character
lum [Wed, 24 Feb 2021 13:58:46 +0000 (13:58 +0000)]
snprintf() does indeed return an int. From an email Joachim Nilsson
sent to tech@ many moons ago. Sorry for the delay.
jmc [Wed, 24 Feb 2021 13:36:19 +0000 (13:36 +0000)]
spelling fix;
bluhm [Wed, 24 Feb 2021 13:19:48 +0000 (13:19 +0000)]
In sorflush() use m_purge() instead of handrolling it.
no objections mvs@
dlg [Wed, 24 Feb 2021 12:33:50 +0000 (12:33 +0000)]
white space tweak, no functional change
dlg [Wed, 24 Feb 2021 12:33:22 +0000 (12:33 +0000)]
fix stoeplitz_n16 and stoeplitz_h16
patrick [Wed, 24 Feb 2021 10:13:08 +0000 (10:13 +0000)]
Enumerate GCI core, which seems to contain the OTP on the Apple M1.
nicm [Wed, 24 Feb 2021 09:22:15 +0000 (09:22 +0000)]
Correct client_prefix so it returns 1 if in prefix, not 0.
dlg [Wed, 24 Feb 2021 08:23:04 +0000 (08:23 +0000)]
whitespace tweaks, no functional change.
dlg [Wed, 24 Feb 2021 06:44:54 +0000 (06:44 +0000)]
fix the length check on arp packets when handling arp filter rules.
another bridge feature i'm not convinced people actually use.
ok jmatthew@ claudio@
deraadt [Wed, 24 Feb 2021 06:17:08 +0000 (06:17 +0000)]
sync
jsg [Wed, 24 Feb 2021 04:06:45 +0000 (04:06 +0000)]
remove unused usbd_get_device_string()
ok mpi@
jsg [Wed, 24 Feb 2021 03:54:05 +0000 (03:54 +0000)]
remove unused usbdi functions
ok mpi@
dlg [Wed, 24 Feb 2021 03:20:48 +0000 (03:20 +0000)]
add support for adding and deleting mac addr entries on nvgre.
the guts of this are in the etherbridge code which i added for
veb and used in bpe. there's a bit of boilerplate to make sure that
the addresses used for the endpoints will work with the tunnel
addresses that have been configured, but it's not too bad.
again, this is hard to use because ifconfig doesnt (yet) know how
to put ethernet addresses into the "add address" ioctl.
these ioctls could be used for things like evpn via bgpd though.
not sure if that's interesting to anyone though. it would probably
be more useful on vxlan interfaces.
jsg [Wed, 24 Feb 2021 03:08:47 +0000 (03:08 +0000)]
remove unused xhci_cmd_evaluate_ctx()
ok mpi@
deraadt [Wed, 24 Feb 2021 02:43:29 +0000 (02:43 +0000)]
sync
dlg [Wed, 24 Feb 2021 02:04:03 +0000 (02:04 +0000)]
add support for adding and deleting address table entries.
the guts of this are in the etherbridge code which i just added for
veb, so this code is very minimal. it's hard to use though cos
ifconfig doesnt (yet) know how to put ethernet addresses into the
"add address" ioctl.
dlg [Wed, 24 Feb 2021 01:20:03 +0000 (01:20 +0000)]
add support for adding and deleting address table entries.
dtucker [Wed, 24 Feb 2021 01:18:08 +0000 (01:18 +0000)]
Put obsolete aliases for hostbasedalgorithms and pubkeyacceptedalgorithms
after their current names so that the config-dump mode finds and uses
the current names. Spotted by Phil Pennock.
deraadt [Tue, 23 Feb 2021 23:52:40 +0000 (23:52 +0000)]
typo
dlg [Tue, 23 Feb 2021 23:42:17 +0000 (23:42 +0000)]
handle ifconfig veb0 flush with etherbridge_flush, like bpe and nvgre
djm [Tue, 23 Feb 2021 21:55:08 +0000 (21:55 +0000)]
lots more s/key types/signature algorithms/ mostly in
HostbasedAcceptedAlgorithms and HostKeyAlgorithms;
prompted by Jakub Jelen
djm [Tue, 23 Feb 2021 21:50:18 +0000 (21:50 +0000)]
Correct reference to signature algorithms as keys; from Jakub Jelen
tb [Tue, 23 Feb 2021 20:36:16 +0000 (20:36 +0000)]
Make this test module aware so it passes with Go 1.16
tb [Tue, 23 Feb 2021 20:33:46 +0000 (20:33 +0000)]
Make this test module aware so it passes with Go 1.16
tobhe [Tue, 23 Feb 2021 19:43:54 +0000 (19:43 +0000)]
Use pool to allocate tdbs.
ok patrick@ bluhm@
lum [Tue, 23 Feb 2021 18:45:33 +0000 (18:45 +0000)]
Move -u to alphabetically correct place in options. As spotted by jmc@
kettenis [Tue, 23 Feb 2021 17:02:02 +0000 (17:02 +0000)]
aplintc(4)
kettenis [Tue, 23 Feb 2021 17:01:17 +0000 (17:01 +0000)]
Add aplintc(4), a driver for the interrupt controller found on
Apple M1 SoCs.
ok patrick@
deraadt [Tue, 23 Feb 2021 15:58:19 +0000 (15:58 +0000)]
sync
cheloha [Tue, 23 Feb 2021 15:47:53 +0000 (15:47 +0000)]
sparc64/clock.c: use ANSI-style function definitions
While here, zap a few ARGUSED linter comments.
Compile-tested by deraadt@.
ok deraadt@
mvs [Tue, 23 Feb 2021 15:13:58 +0000 (15:13 +0000)]
Wrap by netlock the whole foreach loop which calls switch_port_detach() in
switch_clone_destroy(). This fixes netlock assertion within underlay
ifpromisc(). The problem was reported by hrvoje@ [1].
"why not" by deraadt@
1. https://marc.info/?l=openbsd-bugs&m=
161338077403538&w=2
mvs [Tue, 23 Feb 2021 14:57:52 +0000 (14:57 +0000)]
Fix m_copyback(9) prototype in DESCRIPTION section.
ok millert@
deraadt [Tue, 23 Feb 2021 14:27:16 +0000 (14:27 +0000)]
previous commit mismanaged the control fd
ok claudio
claudio [Tue, 23 Feb 2021 14:25:29 +0000 (14:25 +0000)]
Adjust pledge() and unveil() calls for proc_rsync() a bit. Since the
mkdir was moved to the main process there is no need for access to .
in the rsync process.
OK job@ deraadt@
deraadt [Tue, 23 Feb 2021 14:18:59 +0000 (14:18 +0000)]
sync
jsg [Tue, 23 Feb 2021 13:50:16 +0000 (13:50 +0000)]
remove unused malloc_roundup()
bluhm [Tue, 23 Feb 2021 12:14:10 +0000 (12:14 +0000)]
As ip_insertoptions() may prepend a mbuf, "goto bad" has to free
the new chain. This fixes a potential memory leak in ip_output().
Also simplify a bunch of "goto done".
OK kn@ mvs@
aoyama [Tue, 23 Feb 2021 11:48:21 +0000 (11:48 +0000)]
Make more efficient clearing interrupts on all processors at boot time.
Without this modification, because of the volatile qualifier, the
compiler does not produce four `` = 0 '' assignments, but code
equivalent to:
*(volatile uint32_t *)INT_ST_MASK3 = 0;
*(volatile uint32_t *)INT_ST_MASK2 =
*(volatile uint32_t *)INT_ST_MASK3;
*(volatile uint32_t *)INT_ST_MASK1 =
*(volatile uint32_t *)INT_ST_MASK2;
*(volatile uint32_t *)INT_ST_MASK0 =
*(volatile uint32_t *)INT_ST_MASK1;
Anders Gavare reported to Miod Vallat, and he gave me a diff.
dlg [Tue, 23 Feb 2021 11:44:53 +0000 (11:44 +0000)]
small adjustment of the deck chairs, no functional change.
dlg [Tue, 23 Feb 2021 11:43:41 +0000 (11:43 +0000)]
fix up which link flags do what.
ipsec code is written, but is disabled, so the ipsec words here are
still commented out for now.
mvs [Tue, 23 Feb 2021 11:43:40 +0000 (11:43 +0000)]
Use NULL instead of 0 in `m_nextpkt' assignment.
ok deraadt@ dlg@
dlg [Tue, 23 Feb 2021 11:40:28 +0000 (11:40 +0000)]
make a start on transparent ipsec interception, based on bridge(4).
i found the Transparent Network Security Policy Enforcement paper
by angelos and jason was useful for understanding the background
and why you'd want to do this.
the implementation is a little bit different to the bridge one
because i've tweaked the order that pf and ipsec processing happens,
depending on which direction the packet is going over the bridge.
bridge always runs ipsec processing before pf, no matter which
direction the packet is going. packets going into veb, pf runs first
and then ipsec input processing is allowed to happen. in the outgoing
direction ipsec happens first and then pf. pf runs before ipsec in
the inbound direction so pf can apply policy to ipsec encapsulated
packets before they hit pf. this allows you to apply policy to both
the encrypted and unencrypted packets in both directions.
the code is disabled for now. this is mostly because i want veb(4)
to have a good chance at operating outside the netlock, and i'm
pretty sure the ipsec stack isn't ready for that yet. the other
reason why it's disabled is getting a test setup is effort, but i
want to sleep.
jsg [Tue, 23 Feb 2021 11:22:20 +0000 (11:22 +0000)]
remove unused uvm_mapent_bias()
ok mpi@
mpi [Tue, 23 Feb 2021 10:41:59 +0000 (10:41 +0000)]
Move `pgo_fault' handler outside of uvm_fault_lower().
Reduce differences with NetBSD and prepare for `uobj' locking.
No functionnal change. ok chris@, kettenis@
jsg [Tue, 23 Feb 2021 10:20:10 +0000 (10:20 +0000)]
remove some unused includes
dlg [Tue, 23 Feb 2021 09:51:08 +0000 (09:51 +0000)]
use the ipv6 dst addr to look up an ipsec tdb in bridge_ipsec in.
using the ipv6 next protocol header probably doesnt work. it also
probably doesnt matter cos i'm not sure anyone uses this feature in
bridge. or maybe there isn't anyone who uses ipv6. both are plausible
options.
hahaha^Wok patrick@
lum [Tue, 23 Feb 2021 08:10:51 +0000 (08:10 +0000)]
Allow the user to specify a path to the mg startup file on the command line.
dlg [Tue, 23 Feb 2021 07:29:07 +0000 (07:29 +0000)]
use link0 to allow vlans to cross the bridge.
dlg [Tue, 23 Feb 2021 05:23:02 +0000 (05:23 +0000)]
implement support for the blocknonip port flag.
dlg [Tue, 23 Feb 2021 05:01:00 +0000 (05:01 +0000)]
add support for setting and getting bridge port flags.
cheloha [Tue, 23 Feb 2021 04:44:30 +0000 (04:44 +0000)]
timecounting: use C99-style initialization for all timecounter structs
The timecounter struct is large and I think it may change in the
future. Changing it later will be easier if we use C99-style
initialization for all timecounter structs. It also makes reading the
code a bit easier.
For reasons I cannot explain, switching to C99-style initialization
sometimes changes the hash of the resulting object file, even though
the resulting struct should be the same. So there is a binary change
here, but only sometimes. No behavior should change in either case.
I can't compile-test this everywhere but I have been staring at the
diff for days now and I'm relatively confident this will not break
compilation. Fingers crossed.
ok gnezdo@
dlg [Tue, 23 Feb 2021 04:40:27 +0000 (04:40 +0000)]
filter MAC Bridge component Reserved address
im considering converting ethernet addresses into uint64_ts to make
comparisons (and masking) easier. im trialling it here, and it
doesn't seem like the worst.
dlg [Tue, 23 Feb 2021 04:13:17 +0000 (04:13 +0000)]
try and use my words to explain what veb is and does.
ok jmatthew@
dlg [Tue, 23 Feb 2021 03:30:04 +0000 (03:30 +0000)]
add veb(4), a Virtual Ethernet Bridge driver.
my intention is to replace bridge(4), but the way it works is
different enough from from bridge that a name change is justified
to distinguish them. it also makes it easier to commit it to the
tree and work on it in parallel to bridge, and allows a window of
migration.
the main difference between veb(4) and bridge(4) is how they use
interfaces as ports. veb takes over interfaces completely and only
uses them to receive and transmit ethernet packets. bridge also use
each interface as a port to the ethernet segment it's connected to,
but also tries to continue supporting the use of the interface as
a way to talk to the network stack on the local system. supporting
the use of interfaces for both external and local communication is
where most of my confusion with bridge comes from, both when i'm
trying to operate it and also understand the code. changing this
semantic is where most of the simplification in veb comes from
compared to bridge.
because veb takes over interfaces, the ethernet network set up on
a veb is isolated from the host network stack. by default veb does
not interact with pf or the ip (and mpls) stacks. to enable pf for
ip frames going over veb ports link1 on the veb interface must be
set. to have the stack interact with a veb network, vport interfaces
must be created and added as ports to a veb.
the vport interface driver is provided as part of veb, and is handled
specially by veb. veb usually prevents the use of ports by the stack
for sending an receiving packets, but that's why vports exist, so
veb has special handling for them.
veb already supports a lot of the other features that bridge has,
including bridge rules and protected domains, but i got tired of
working out of the tree and stopped implementing them. the main
outstanding features is better address table management, the
blocknonip flag on ports, transparent ipsec interception, and
spanning tree. i may not bother with spanning tree unless someone
tells me that they actually use it.
the core ethernet learning bridge functionality is provided by the
etherbridge code that was factored out of nvgre and bpe. veb is
already (a lot) faster than bridge, and is better prepared to operate
in parallel on multiple CPUs concurrently.
thanks to hrvoje popovski for testing some earlier versions of this.
discussed with many
ok patrick@ jmatthew@
deraadt [Tue, 23 Feb 2021 02:42:58 +0000 (02:42 +0000)]
sync
djm [Tue, 23 Feb 2021 00:05:31 +0000 (00:05 +0000)]
warn when the user specifies a ForwardAgent path that does not exist
and exit if ExitOnForwardFailure is set; bz3264
jsg [Tue, 23 Feb 2021 00:03:01 +0000 (00:03 +0000)]
remove unused acpiec_lock() acpiec_unlock() functions
ok kettenis@ pirofti@
jsg [Mon, 22 Feb 2021 23:43:59 +0000 (23:43 +0000)]
remove unused decode_hw_header() function
ok krw@
kettenis [Mon, 22 Feb 2021 23:17:50 +0000 (23:17 +0000)]
Terminate backtrace of secondary processors in ddb.
From miod@
kettenis [Mon, 22 Feb 2021 21:58:25 +0000 (21:58 +0000)]
Mark as arm64-specific.
tobhe [Mon, 22 Feb 2021 21:58:12 +0000 (21:58 +0000)]
Don't pass 'id' as argument to make function signature match similar
functions. config_setpfkey() is always called with id PROC_IKEV2.
kettenis [Mon, 22 Feb 2021 21:51:48 +0000 (21:51 +0000)]
Enable bge(4).
kettenis [Mon, 22 Feb 2021 21:47:47 +0000 (21:47 +0000)]
Enable apldog(4).
kettenis [Mon, 22 Feb 2021 21:42:17 +0000 (21:42 +0000)]
apldog(4)
kettenis [Mon, 22 Feb 2021 21:30:54 +0000 (21:30 +0000)]
Add apldog(4), a driver for the watchdog on Apple M1 SoCs.
This allows us to reboot the machine.
ok patrick@
mvs [Mon, 22 Feb 2021 19:14:01 +0000 (19:14 +0000)]
Move UNIX socket's garbage collector to `systqmp'. It touches nothing
which requires kernel lock to be held.
ok mpi@