{ 

.type =       SOCK_DGRAM, 

.protocol =   IPPROTO_UDP, 

.prot =       &udp_prot, 

.ops =        &inet_dgram_ops, 

.flags =      INET_PROTOSW_PERMANENT, 
       },

 struct proto udp_prot = {
.name   = "UDP",
.owner    = THIS_MODULE,
.close    = udp_lib_close,
.connect    = ip4_datagram_connect,
.disconnect    = udp_disconnect,
.ioctl    = udp_ioctl,
.destroy    = udp_destroy_sock,
.setsockopt    = udp_setsockopt,
.getsockopt    = udp_getsockopt,
.sendmsg    = udp_sendmsg,
.recvmsg    = udp_recvmsg,
.sendpage    = udp_sendpage,
.backlog_rcv    = __udp_queue_rcv_skb,
.release_cb    = ip4_datagram_release_cb,
.hash   = udp_lib_hash,
.unhash    = udp_lib_unhash,
.rehash    = udp_v4_rehash,
.get_port    = udp_v4_get_port,
.memory_allocated  = &udp_memory_allocated,
.sysctl_mem    = sysctl_udp_mem,
.sysctl_wmem    = &sysctl_udp_wmem_min,
.sysctl_rmem    = &sysctl_udp_rmem_min,
.obj_size    = sizeof(struct udp_sock),
.slab_flags    = SLAB_DESTROY_BY_RCU,
.h.udp_table    = &udp_table,
 #ifdef CONFIG_COMPAT
.compat_setsockopt = compat_udp_setsockopt,
.compat_getsockopt = compat_udp_getsockopt,
 #endif
.clear_sk    = sk_prot_clear_portaddr_nulls,
 };