Event sockets are used by both the packet thread as well as the forwarding
threads and hence sharing those sockets could result in crashes if one of
the threads closes the socket.

Hence, add the concept of a socket pair for event sockets. When an event
socket is attached to a parent io socket, create a new usocket (which will
form the read end), and make the write end use the same file descriptor.

Also, fix vif to print the ip address properly