.type = SOCK_STREAM,
.protocol = IPPROTO_TCP,
.prot = &tcp_prot,
.ops = &inet_stream_ops,
.flags = INET_PROTOSW_PERMANENT |
INET_PROTOSW_ICSK,
},
struct proto tcp_prot = {
.name = "TCP",
.owner
= THIS_MODULE,
.close
= tcp_close,
.connect
= tcp_v4_connect,
.disconnect
= tcp_disconnect,
.accept
= inet_csk_accept,
.ioctl
= tcp_ioctl,
.init = tcp_v4_init_sock,
.destroy
= tcp_v4_destroy_sock,
.shutdown
= tcp_shutdown,
.setsockopt
= tcp_setsockopt,
.getsockopt
= tcp_getsockopt,
.recvmsg
= tcp_recvmsg,
.sendmsg
= tcp_sendmsg,
.sendpage
= tcp_sendpage,
.backlog_rcv
= tcp_v4_do_rcv,
.release_cb
= tcp_release_cb,
.hash = inet_hash,
.unhash
= inet_unhash,
.get_port
= inet_csk_get_port,
.enter_memory_pressure
= tcp_enter_memory_pressure,
.stream_memory_free
= tcp_stream_memory_free,
.sockets_allocated
= &tcp_sockets_allocated,
.orphan_count
= &tcp_orphan_count,
.memory_allocated
= &tcp_memory_allocated,
.memory_pressure
= &tcp_memory_pressure,
.sysctl_mem
= sysctl_tcp_mem,
.sysctl_wmem
= sysctl_tcp_wmem,
.sysctl_rmem
= sysctl_tcp_rmem,
.max_header
= MAX_TCP_HEADER,
.obj_size
= sizeof(struct tcp_sock),
.slab_flags
= SLAB_DESTROY_BY_RCU,
.twsk_prot
= &tcp_timewait_sock_ops,
.rsk_prot
= &tcp_request_sock_ops,
.h.hashinfo
= &tcp_hashinfo,
.no_autobind
= true,
#ifdef CONFIG_COMPAT
.compat_setsockopt
= compat_tcp_setsockopt,
.compat_getsockopt
= compat_tcp_getsockopt,
#endif
.diag_destroy
= tcp_abort,
};
const struct proto_ops inet_stream_ops = {
.family
= PF_INET,
.owner
= THIS_MODULE,
.release
= inet_release,
.bind = inet_bind,
.connect
= inet_stream_connect,
.socketpair
= sock_no_socketpair,
.accept
= inet_accept,
.getname
= inet_getname,
.poll = tcp_poll,
.ioctl
= inet_ioctl,
.listen
= inet_listen,
.shutdown
= inet_shutdown,
.setsockopt
= sock_common_setsockopt,
.getsockopt
= sock_common_getsockopt,
.sendmsg
= inet_sendmsg,
.recvmsg
= inet_recvmsg,
.mmap = sock_no_mmap,
.sendpage
= inet_sendpage,
.splice_read
= tcp_splice_read,
#ifdef CONFIG_COMPAT
.compat_setsockopt = compat_sock_common_setsockopt,
.compat_getsockopt = compat_sock_common_getsockopt,
.compat_ioctl
= inet_compat_ioctl,
#endif
};