The protocol selection is currently performed based on the family, control type and socket type. But this is often not enough, as both only provide DGRAM or STREAM, leaving few variants. Protocols like SCTP for example might be indistinguishable from TCP here. Same goes for TCP extensions like MPTCP. This commit introduces a new enum proto_type that is placed in each and every protocol definition, that will usually more or less match the sock_type, but being an enum, will support additional values.