Lines Matching refs:newsk
92 static int sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
4858 struct sock *newsk = NULL; in sctp_accept() local
4890 newsk = sp->pf->create_accept_sk(sk, asoc, arg->kern); in sctp_accept()
4891 if (!newsk) { in sctp_accept()
4899 error = sctp_sock_migrate(sk, newsk, asoc, SCTP_SOCKET_TCP); in sctp_accept()
4901 sk_common_release(newsk); in sctp_accept()
4902 newsk = NULL; in sctp_accept()
4908 return newsk; in sctp_accept()
9464 void sctp_copy_sock(struct sock *newsk, struct sock *sk, in sctp_copy_sock() argument
9471 newsk->sk_type = sk->sk_type; in sctp_copy_sock()
9472 newsk->sk_bound_dev_if = sk->sk_bound_dev_if; in sctp_copy_sock()
9473 newsk->sk_flags = sk->sk_flags; in sctp_copy_sock()
9474 newsk->sk_tsflags = sk->sk_tsflags; in sctp_copy_sock()
9475 newsk->sk_no_check_tx = sk->sk_no_check_tx; in sctp_copy_sock()
9476 newsk->sk_no_check_rx = sk->sk_no_check_rx; in sctp_copy_sock()
9477 newsk->sk_reuse = sk->sk_reuse; in sctp_copy_sock()
9478 sctp_sk(newsk)->reuse = sp->reuse; in sctp_copy_sock()
9480 newsk->sk_shutdown = sk->sk_shutdown; in sctp_copy_sock()
9481 newsk->sk_destruct = sk->sk_destruct; in sctp_copy_sock()
9482 newsk->sk_family = sk->sk_family; in sctp_copy_sock()
9483 newsk->sk_protocol = IPPROTO_SCTP; in sctp_copy_sock()
9484 newsk->sk_backlog_rcv = sk->sk_prot->backlog_rcv; in sctp_copy_sock()
9485 newsk->sk_sndbuf = sk->sk_sndbuf; in sctp_copy_sock()
9486 newsk->sk_rcvbuf = sk->sk_rcvbuf; in sctp_copy_sock()
9487 newsk->sk_lingertime = sk->sk_lingertime; in sctp_copy_sock()
9488 newsk->sk_rcvtimeo = sk->sk_rcvtimeo; in sctp_copy_sock()
9489 newsk->sk_sndtimeo = sk->sk_sndtimeo; in sctp_copy_sock()
9490 newsk->sk_rxhash = sk->sk_rxhash; in sctp_copy_sock()
9492 newinet = inet_sk(newsk); in sctp_copy_sock()
9505 inet_set_bit(MC_LOOP, newsk); in sctp_copy_sock()
9510 if (newsk->sk_flags & SK_FLAGS_TIMESTAMP) in sctp_copy_sock()
9516 security_sctp_sk_clone(asoc, sk, newsk); in sctp_copy_sock()
9532 static int sctp_sock_migrate(struct sock *oldsk, struct sock *newsk, in sctp_sock_migrate() argument
9537 struct sctp_sock *newsp = sctp_sk(newsk); in sctp_sock_migrate()
9548 newsk->sk_sndbuf = oldsk->sk_sndbuf; in sctp_sock_migrate()
9549 newsk->sk_rcvbuf = oldsk->sk_rcvbuf; in sctp_sock_migrate()
9551 sctp_copy_descendant(newsk, oldsk); in sctp_sock_migrate()
9564 sk_add_bind_node(newsk, &pp->owner); in sctp_sock_migrate()
9565 sctp_sk(newsk)->bind_hash = pp; in sctp_sock_migrate()
9566 inet_sk(newsk)->inet_num = inet_sk(oldsk)->inet_num; in sctp_sock_migrate()
9596 __skb_queue_tail(&newsk->sk_receive_queue, skb); in sctp_sock_migrate()
9597 sctp_skb_set_owner_r_frag(skb, newsk); in sctp_sock_migrate()
9607 atomic_set(&sctp_sk(newsk)->pd_mode, assoc->ulpq.pd_mode); in sctp_sock_migrate()
9616 queue = &newsk->sk_receive_queue; in sctp_sock_migrate()
9626 sctp_skb_set_owner_r_frag(skb, newsk); in sctp_sock_migrate()
9638 sctp_for_each_rx_skb(assoc, newsk, sctp_skb_set_owner_r_frag); in sctp_sock_migrate()
9655 lock_sock_nested(newsk, SINGLE_DEPTH_NESTING); in sctp_sock_migrate()
9657 sctp_assoc_migrate(assoc, newsk); in sctp_sock_migrate()
9663 if (sctp_state(assoc, CLOSED) && sctp_style(newsk, TCP)) { in sctp_sock_migrate()
9664 inet_sk_set_state(newsk, SCTP_SS_CLOSED); in sctp_sock_migrate()
9665 newsk->sk_shutdown |= RCV_SHUTDOWN; in sctp_sock_migrate()
9667 inet_sk_set_state(newsk, SCTP_SS_ESTABLISHED); in sctp_sock_migrate()
9670 release_sock(newsk); in sctp_sock_migrate()