Commit Briefs
endian.h is not universally available
FreeBSD and NetBSD have sys/endian.h, on MacOS we need to use the functions from libkern/OSByteOrder.h see github issue #1
allow Twrite with size bigger than ~16K
Until now I've been using a single imsg to handle each messages and the imsg framework has a limit of around 16K for message. For almost all requests, this is fine. Except for Twrite and Tread. This is an attempt to make Twrite handle bigger buffers. The listener process just looks at how big a request is and split it up in multiple messages and the client process tries to remember the fid, position and missing data to continue the write. This means that a single Twrite can be split up in multiple write(2)s.
add IMSG_CTL_DEBUG to debug the opened fid
meant to be used from kamictl to dump all the opened fid by every connection.
cache listener flags in struct client
this saves us from the small chance that a client accepted before reconf uses the flags from a listener post reconf.
fix restart in listener
drop connections in the handshake phase: the listener from where they've been accepted is now being replaced and its id is no more meaningful. Clients for which we have already sent an auth request are kept.
use serial ids and drop usage of arc4random
it's not so useful here and not (directly) used anywhere else.