Merge branches 'mdw/knock' and 'mdw/ipv6' into bleeding
* mdw/knock:
Add notion of `ephemeral' associations and a goodbye protocol.
Add new `knock' protocol.
server/{keyexch,peer}.c: Maybe key-exchange messages come out of the blue.
server/keyexch.c (kx_message): Squish vertically.
server/keyexch.c: Abstract out the common message-handling behaviour.
server/keymgmt.c: Track and find keys by their 32-bit IDs.
server/test.c: Add a program to assist unit tests.
server/servutil.c: Add utilities for plain asymmetric encryption.
server/servutil.c: Add utilities for simple leaky-bucket rate limiting.
server/keyexch.c: Rename kx_init => kx_setup.
server/: Augment challenges to allow a payload.
server/chal.c: Capture `master->algs.bulk' in a variable.
server/chal.c: Rename bulk => bchal.
server/: Expose and enhance the bulk-key-derivation protocol.
* mdw/ipv6: (64 commits)
contrib/greet.in: Accept IPv6 addresses.
contrib/tripe-ipif.in: Fixing for IPv6.
svc/conntrack.in: Add IPv6 support.
svc/conntrack.in: Split out a base class from `InetAddress'.
svc/conntrack.in: Contemplate multiple address families.
svc/conntrack.in: Allow multiple networks in a peer pattern.
svc/conntrack.in (kickpeers): Refactor and reformat the search loop.
svc/conntrack.in (kickpeers): Rename `map' variable.
svc/conntrack.in: Process peer patterns in order.
svc/conntrack.in: Maintain config groups in a dictionary.
svc/conntrack.in: Make an `InetAddress' class to do address wrangling.
svc/conntrack.in: Factor out network parsing.
svc/conntrack.in: Gather address hacking functions into a new section.
svc/conntrack.in: Introduce a function for parsing address strings.
svc/conntrack.in (strmask): Consistently return a string object.
svc/conntrack.in: Fix netmask parsing.
svc/conntrack.in: Leave time for network configuration to settle.
svc/conntrack.in: Hoist `netupdown' above `kickpeers'.
server/, mon/: Introduce transport of TrIPE over IPv6.
server/addrmap.c (hash): Visually tighten the arithmetic.
...