Allow the callers of CreateSock()
to pass all 3 arguments to the socket(2)
syscall. This makes it possible to create sockets of any domain/type/protocol. In addition to extending arguments, some extra safety checks were put in place.
The need for this came up during the discussion in #30043 (review)