.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,
};