net/socket.c int sock_register(const struct net_proto_family *ops);

net/ipv4/af_inet.c

/* Upon startup we insert all the elements in inetsw_array[] into

 * the linked list inetsw.

 */

static struct inet_protosw inetsw_array[] =

{

{

.type =       SOCK_STREAM,

.protocol =   IPPROTO_TCP,

.prot =       &tcp_prot,

.ops =        &inet_stream_ops,

.capability = -1,

.no_check =   0,

.flags =      INET_PROTOSW_PERMANENT |

     INET_PROTOSW_ICSK,

},

 

{

.type =       SOCK_DGRAM,

.protocol =   IPPROTO_UDP,

.prot =       &udp_prot,

.ops =        &inet_dgram_ops,

.capability = -1,

.no_check =   UDP_CSUM_DEFAULT,

.flags =      INET_PROTOSW_PERMANENT,

       },

 

 

       {

      .type =       SOCK_RAW,

      .protocol =   IPPROTO_IP, /* wild card */

      .prot =       &raw_prot,

      .ops =        &inet_sockraw_ops,

      .capability = CAP_NET_RAW,

      .no_check =   UDP_CSUM_DEFAULT,

      .flags =      INET_PROTOSW_REUSE,

       }

};

net/ipv4/af_inet.c int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);

net/ipv4/devinet.c int devinet_ioctl(struct net *net, unsigned int cmd, void __user *arg);