This enumeration abstracts the various types of sockets based on the IP protocol.
To downcast a Socket value to a concrete socket, use the AnySocket trait,
e.g. to get udp::Socket, call udp::Socket::downcast(socket).
It is usually more convenient to use SocketSet::get instead.