lib/addr.c, etc.: Return plain addresses from `netaddress_resolve'. Instead of a list of `struct addrinfo' structures, return a vector of `struct resolved', each of which just contains a socket address and length. This is sufficient for all of the existing callers (which have been changed to cope), and means that we don't need any awful hacks because they're easy to free.
lib/configuration.c, lib/uaudio-rtp.c: Allow tweaking MTU-discovery. Apparently under some circumstances, Linux tries to do path MTU discovery with RTP transmissions, so it (a) sets DF on outgoing packets and then (b) ignores the `fragmentation-needed' errors coming back! This option attempts to work around this foolishness. Configuration is accepted on all platforms for portability's sake, but is only effective on Linux.
lib/uaudio-rtp.c: Use dedicated per-family sockets for on-demand clients. I want to allow on-clients to be able to request unicast streams even if the primary RTP mode is something else. That means that we can't use the master socket for these on-demand streams unless we figure out its address family. This is simpler.
Warning tidy-up for FreeBSD. - if dlfunc is available use that. Allows -Werror to be re-enabled. - use modern struct member initializers - cope with FD_SETSIZE being explicitly unsigned - remove stray brackets - remove unused objects - use %ju to print sig_atomic_t, it might be bigger than int
Rewrite uaudio-schedule.c. It's now much simpler and should actually get the timing right. An hour of rtpmon is encouraging. This change pushes responsibility for pausing out towards the APIs. For ALSA we sleep a bit. For OSS we close the sound device and sleep a bit. For RTP we just pretend to send packets; the scheduler takes care of the timing. For command again the scheduler takes care of the timing, though as before we have the option of either suspending writes or sending 0s. Scantily tested!
Start rationalizing network address configuration. New 'struct netaddress' has address family, address and port. Family can be unspecified (effectively, let the OS choose), IPv4, IPv6 or UNIX domain sockets (though in practice the latter won't work well in most contexts). The RTP server configuration uses this logic.