Loading include/net/inet_connection_sock.h +4 −0 Original line number Diff line number Diff line Loading @@ -321,4 +321,8 @@ extern void inet_csk_listen_stop(struct sock *sk); extern void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr); extern int inet_csk_ctl_sock_create(struct socket **sock, unsigned short family, unsigned short type, unsigned char protocol); #endif /* _INET_CONNECTION_SOCK_H */ net/dccp/ipv4.c +2 −24 Original line number Diff line number Diff line Loading @@ -1099,29 +1099,6 @@ static struct inet_protosw dccp_v4_protosw = { .flags = INET_PROTOSW_ICSK, }; static char dccp_v4_ctl_socket_err_msg[] __initdata = KERN_ERR "DCCP: Failed to create the control socket.\n"; static int __init dccp_v4_ctl_sock_init(void) { int rc = sock_create_kern(PF_INET, SOCK_DCCP, IPPROTO_DCCP, &dccp_v4_ctl_socket); if (rc < 0) printk(dccp_v4_ctl_socket_err_msg); else { dccp_v4_ctl_socket->sk->sk_allocation = GFP_ATOMIC; inet_sk(dccp_v4_ctl_socket->sk)->uc_ttl = -1; /* Unhash it so that IP input processing does not even * see it, we do not wish this socket to see incoming * packets. */ dccp_v4_ctl_socket->sk->sk_prot->unhash(dccp_v4_ctl_socket->sk); } return rc; } static int __init dccp_v4_init(void) { int err = proto_register(&dccp_v4_prot, 1); Loading @@ -1135,7 +1112,8 @@ static int __init dccp_v4_init(void) inet_register_protosw(&dccp_v4_protosw); err = dccp_v4_ctl_sock_init(); err = inet_csk_ctl_sock_create(&dccp_v4_ctl_socket, PF_INET, SOCK_DCCP, IPPROTO_DCCP); if (err) goto out_unregister_protosw; out: Loading net/dccp/ipv6.c +3 −24 Original line number Diff line number Diff line Loading @@ -1229,29 +1229,6 @@ static struct inet_protosw dccp_v6_protosw = { .flags = INET_PROTOSW_ICSK, }; static char dccp_v6_ctl_socket_err_msg[] __initdata = KERN_ERR "DCCP: Failed to create the control socket.\n"; static int __init dccp_v6_ctl_sock_init(void) { int rc = sock_create_kern(PF_INET6, SOCK_DCCP, IPPROTO_DCCP, &dccp_v6_ctl_socket); if (rc < 0) printk(dccp_v6_ctl_socket_err_msg); else { dccp_v6_ctl_socket->sk->sk_allocation = GFP_ATOMIC; inet_sk(dccp_v6_ctl_socket->sk)->uc_ttl = -1; /* Unhash it so that IP input processing does not even * see it, we do not wish this socket to see incoming * packets. */ dccp_v6_ctl_socket->sk->sk_prot->unhash(dccp_v6_ctl_socket->sk); } return rc; } static int __init dccp_v6_init(void) { int err = proto_register(&dccp_v6_prot, 1); Loading @@ -1265,7 +1242,9 @@ static int __init dccp_v6_init(void) inet6_register_protosw(&dccp_v6_protosw); if (dccp_v6_ctl_sock_init() != 0) err = inet_csk_ctl_sock_create(&dccp_v6_ctl_socket, PF_INET6, SOCK_DCCP, IPPROTO_DCCP); if (err != 0) goto out_unregister_protosw; out: return err; Loading net/ipv4/inet_connection_sock.c +19 −0 Original line number Diff line number Diff line Loading @@ -648,3 +648,22 @@ void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr) } EXPORT_SYMBOL_GPL(inet_csk_addr2sockaddr); int inet_csk_ctl_sock_create(struct socket **sock, unsigned short family, unsigned short type, unsigned char protocol) { int rc = sock_create_kern(family, type, protocol, sock); if (rc == 0) { (*sock)->sk->sk_allocation = GFP_ATOMIC; inet_sk((*sock)->sk)->uc_ttl = -1; /* * Unhash it so that IP input processing does not even see it, * we do not wish this socket to see incoming packets. */ (*sock)->sk->sk_prot->unhash((*sock)->sk); } return rc; } EXPORT_SYMBOL_GPL(inet_csk_ctl_sock_create); net/ipv4/tcp_ipv4.c +1 −12 Original line number Diff line number Diff line Loading @@ -1828,21 +1828,10 @@ struct proto tcp_prot = { .rsk_prot = &tcp_request_sock_ops, }; void __init tcp_v4_init(struct net_proto_family *ops) { int err = sock_create_kern(PF_INET, SOCK_RAW, IPPROTO_TCP, &tcp_socket); if (err < 0) if (inet_csk_ctl_sock_create(&tcp_socket, PF_INET, SOCK_RAW, IPPROTO_TCP) < 0) panic("Failed to create the TCP control socket.\n"); tcp_socket->sk->sk_allocation = GFP_ATOMIC; inet_sk(tcp_socket->sk)->uc_ttl = -1; /* Unhash it so that IP input processing does not even * see it, we do not wish this socket to see incoming * packets. */ tcp_socket->sk->sk_prot->unhash(tcp_socket->sk); } EXPORT_SYMBOL(ipv4_specific); Loading Loading
include/net/inet_connection_sock.h +4 −0 Original line number Diff line number Diff line Loading @@ -321,4 +321,8 @@ extern void inet_csk_listen_stop(struct sock *sk); extern void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr); extern int inet_csk_ctl_sock_create(struct socket **sock, unsigned short family, unsigned short type, unsigned char protocol); #endif /* _INET_CONNECTION_SOCK_H */
net/dccp/ipv4.c +2 −24 Original line number Diff line number Diff line Loading @@ -1099,29 +1099,6 @@ static struct inet_protosw dccp_v4_protosw = { .flags = INET_PROTOSW_ICSK, }; static char dccp_v4_ctl_socket_err_msg[] __initdata = KERN_ERR "DCCP: Failed to create the control socket.\n"; static int __init dccp_v4_ctl_sock_init(void) { int rc = sock_create_kern(PF_INET, SOCK_DCCP, IPPROTO_DCCP, &dccp_v4_ctl_socket); if (rc < 0) printk(dccp_v4_ctl_socket_err_msg); else { dccp_v4_ctl_socket->sk->sk_allocation = GFP_ATOMIC; inet_sk(dccp_v4_ctl_socket->sk)->uc_ttl = -1; /* Unhash it so that IP input processing does not even * see it, we do not wish this socket to see incoming * packets. */ dccp_v4_ctl_socket->sk->sk_prot->unhash(dccp_v4_ctl_socket->sk); } return rc; } static int __init dccp_v4_init(void) { int err = proto_register(&dccp_v4_prot, 1); Loading @@ -1135,7 +1112,8 @@ static int __init dccp_v4_init(void) inet_register_protosw(&dccp_v4_protosw); err = dccp_v4_ctl_sock_init(); err = inet_csk_ctl_sock_create(&dccp_v4_ctl_socket, PF_INET, SOCK_DCCP, IPPROTO_DCCP); if (err) goto out_unregister_protosw; out: Loading
net/dccp/ipv6.c +3 −24 Original line number Diff line number Diff line Loading @@ -1229,29 +1229,6 @@ static struct inet_protosw dccp_v6_protosw = { .flags = INET_PROTOSW_ICSK, }; static char dccp_v6_ctl_socket_err_msg[] __initdata = KERN_ERR "DCCP: Failed to create the control socket.\n"; static int __init dccp_v6_ctl_sock_init(void) { int rc = sock_create_kern(PF_INET6, SOCK_DCCP, IPPROTO_DCCP, &dccp_v6_ctl_socket); if (rc < 0) printk(dccp_v6_ctl_socket_err_msg); else { dccp_v6_ctl_socket->sk->sk_allocation = GFP_ATOMIC; inet_sk(dccp_v6_ctl_socket->sk)->uc_ttl = -1; /* Unhash it so that IP input processing does not even * see it, we do not wish this socket to see incoming * packets. */ dccp_v6_ctl_socket->sk->sk_prot->unhash(dccp_v6_ctl_socket->sk); } return rc; } static int __init dccp_v6_init(void) { int err = proto_register(&dccp_v6_prot, 1); Loading @@ -1265,7 +1242,9 @@ static int __init dccp_v6_init(void) inet6_register_protosw(&dccp_v6_protosw); if (dccp_v6_ctl_sock_init() != 0) err = inet_csk_ctl_sock_create(&dccp_v6_ctl_socket, PF_INET6, SOCK_DCCP, IPPROTO_DCCP); if (err != 0) goto out_unregister_protosw; out: return err; Loading
net/ipv4/inet_connection_sock.c +19 −0 Original line number Diff line number Diff line Loading @@ -648,3 +648,22 @@ void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr) } EXPORT_SYMBOL_GPL(inet_csk_addr2sockaddr); int inet_csk_ctl_sock_create(struct socket **sock, unsigned short family, unsigned short type, unsigned char protocol) { int rc = sock_create_kern(family, type, protocol, sock); if (rc == 0) { (*sock)->sk->sk_allocation = GFP_ATOMIC; inet_sk((*sock)->sk)->uc_ttl = -1; /* * Unhash it so that IP input processing does not even see it, * we do not wish this socket to see incoming packets. */ (*sock)->sk->sk_prot->unhash((*sock)->sk); } return rc; } EXPORT_SYMBOL_GPL(inet_csk_ctl_sock_create);
net/ipv4/tcp_ipv4.c +1 −12 Original line number Diff line number Diff line Loading @@ -1828,21 +1828,10 @@ struct proto tcp_prot = { .rsk_prot = &tcp_request_sock_ops, }; void __init tcp_v4_init(struct net_proto_family *ops) { int err = sock_create_kern(PF_INET, SOCK_RAW, IPPROTO_TCP, &tcp_socket); if (err < 0) if (inet_csk_ctl_sock_create(&tcp_socket, PF_INET, SOCK_RAW, IPPROTO_TCP) < 0) panic("Failed to create the TCP control socket.\n"); tcp_socket->sk->sk_allocation = GFP_ATOMIC; inet_sk(tcp_socket->sk)->uc_ttl = -1; /* Unhash it so that IP input processing does not even * see it, we do not wish this socket to see incoming * packets. */ tcp_socket->sk->sk_prot->unhash(tcp_socket->sk); } EXPORT_SYMBOL(ipv4_specific); Loading