Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22231
b: refs/heads/master
c: c4d9390
h: refs/heads/master
i:
  22229: ef0d07f
  22227: 90612eb
  22223: 3425f34
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo authored and David S. Miller committed Mar 21, 2006
1 parent c16ddcb commit 9cf2ad2
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 72 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 72478873571d869906f7a250b09e12fa5b65e321
refs/heads/master: c4d9390941aee136fd35bb38eb1d6de4e3b1487d
4 changes: 4 additions & 0 deletions trunk/include/net/inet_connection_sock.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
26 changes: 2 additions & 24 deletions trunk/net/dccp/ipv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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:
Expand Down
27 changes: 3 additions & 24 deletions trunk/net/dccp/ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
Expand Down
19 changes: 19 additions & 0 deletions trunk/net/ipv4/inet_connection_sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
13 changes: 1 addition & 12 deletions trunk/net/ipv4/tcp_ipv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
13 changes: 2 additions & 11 deletions trunk/net/ipv6/tcp_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -1605,21 +1605,12 @@ static struct inet_protosw tcpv6_protosw = {

void __init tcpv6_init(void)
{
int err;

/* register inet6 protocol */
if (inet6_add_protocol(&tcpv6_protocol, IPPROTO_TCP) < 0)
printk(KERN_ERR "tcpv6_init: Could not register protocol\n");
inet6_register_protosw(&tcpv6_protosw);

err = sock_create_kern(PF_INET6, SOCK_RAW, IPPROTO_TCP, &tcp6_socket);
if (err < 0)
if (inet_csk_ctl_sock_create(&tcp6_socket, PF_INET6, SOCK_RAW,
IPPROTO_TCP) < 0)
panic("Failed to create the TCPv6 control socket.\n");
tcp6_socket->sk->sk_allocation = GFP_ATOMIC;

/* Unhash it so that IP input processing does not even
* see it, we do not wish this socket to see incoming
* packets.
*/
tcp6_socket->sk->sk_prot->unhash(tcp6_socket->sk);
}

0 comments on commit 9cf2ad2

Please sign in to comment.