isoping: Perform a handshake on new client connections.

Since isoping communicates over UDP, there's no built-in protections against an
attacker sending us spoofed packets.  Before allocating any memory, reply with a
cookie based on the client's IP address and port, and don't start sending data
until we see that cookie come back from the client.

We also have to resend handshake packets from the client, to avoid getting stuck
if one of the initial packets gets lost.

Change-Id: Icca7d341757279e49d55aa715fbd3f971b615e9f
4 files changed