[ICSK]: Introduce inet_csk_clone
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
3f421baa47
commit
9f1d2604c7
@@ -399,3 +399,28 @@ void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req,
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(inet_csk_reqsk_queue_hash_add);
|
||||
|
||||
struct sock *inet_csk_clone(struct sock *sk, const struct request_sock *req,
|
||||
const unsigned int __nocast priority)
|
||||
{
|
||||
struct sock *newsk = sk_clone(sk, priority);
|
||||
|
||||
if (newsk != NULL) {
|
||||
struct inet_connection_sock *newicsk = inet_csk(newsk);
|
||||
|
||||
newsk->sk_state = TCP_SYN_RECV;
|
||||
newicsk->icsk_bind_hash = NULL;
|
||||
|
||||
inet_sk(newsk)->dport = inet_rsk(req)->rmt_port;
|
||||
newsk->sk_write_space = sk_stream_write_space;
|
||||
|
||||
newicsk->icsk_retransmits = 0;
|
||||
newicsk->icsk_backoff = 0;
|
||||
|
||||
/* Deinitialize accept_queue to trap illegal accesses. */
|
||||
memset(&newicsk->icsk_accept_queue, 0, sizeof(newicsk->icsk_accept_queue));
|
||||
}
|
||||
return newsk;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(inet_csk_clone);
|
||||
|
Reference in New Issue
Block a user