inetsw_array的定义中有四个元素IPPROTO_TCP,IPPROTO_UDP,IPPROTO_ICMP,IPPROTO_IP

static struct inet_protosw inetsw_array[] =  
    {  
        {  
            .type =       SOCK_STREAM,  
            .protocol =   IPPROTO_TCP,  
            .prot =       &tcp_prot,  
            .ops =        &inet_stream_ops,  
            .no_check =   0,  
            .flags =      INET_PROTOSW_PERMANENT |  
                      INET_PROTOSW_ICSK,  
        },  
      
        {  
            .type =       SOCK_DGRAM,  
            .protocol =   IPPROTO_UDP,  
            .prot =       &udp_prot,  
            .ops =        &inet_dgram_ops,  
            .no_check =   UDP_CSUM_DEFAULT,  
            .flags =      INET_PROTOSW_PERMANENT,  
           },  
      
           {  
            .type =       SOCK_DGRAM,  
            .protocol =   IPPROTO_ICMP,  
            .prot =       &ping_prot,  
            .ops =        &inet_dgram_ops,  
            .no_check =   UDP_CSUM_DEFAULT,  
            .flags =      INET_PROTOSW_REUSE,  
           },  
      
           {  
               .type =       SOCK_RAW,  
               .protocol =   IPPROTO_IP,    /* wild card */  
               .prot =       &raw_prot,  
               .ops =        &inet_sockraw_ops,  
               .no_check =   UDP_CSUM_DEFAULT,  
               .flags =      INET_PROTOSW_REUSE,  
           }  
    };  
    

原文地址:https://www.cnblogs.com/mull/p/4477857.html