Lines Matching refs:subflow_req
41 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
43 pr_debug("subflow_req=%p", subflow_req);
45 if (subflow_req->msk)
46 sock_put((struct sock *)subflow_req->msk);
71 static void subflow_req_create_thmac(struct mptcp_subflow_request_sock *subflow_req)
73 struct mptcp_sock *msk = subflow_req->msk;
76 get_random_bytes(&subflow_req->local_nonce, sizeof(u32));
79 subflow_req->local_nonce,
80 subflow_req->remote_nonce, hmac);
82 subflow_req->thmac = get_unaligned_be64(hmac);
87 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
91 msk = mptcp_token_get_sock(sock_net(req_to_sk(req)), subflow_req->token);
102 subflow_req->local_id = local_id;
109 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
111 subflow_req->mp_capable = 0;
112 subflow_req->mp_join = 0;
113 subflow_req->csum_reqd = mptcp_is_checksum_enabled(sock_net(sk_listener));
114 subflow_req->allow_join_id0 = mptcp_allow_join_id0(sock_net(sk_listener));
115 subflow_req->msk = NULL;
144 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
148 pr_debug("subflow_req=%p, listener=%p", subflow_req, listener);
174 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq;
177 get_random_bytes(&subflow_req->local_key, sizeof(subflow_req->local_key));
178 } while (subflow_req->local_key == 0);
181 mptcp_crypto_key_sha(subflow_req->local_key,
182 &subflow_req->token,
183 &subflow_req->idsn);
184 if (mptcp_token_exists(subflow_req->token)) {
189 subflow_req->mp_capable = 1;
196 subflow_req->mp_capable = 1;
203 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq;
204 subflow_req->mp_join = 1;
205 subflow_req->backup = mp_opt.backup;
206 subflow_req->remote_id = mp_opt.join_id;
207 subflow_req->token = mp_opt.token;
208 subflow_req->remote_nonce = mp_opt.nonce;
209 subflow_req->msk = subflow_token_join_request(req);
212 if (!subflow_req->msk) {
217 if (subflow_use_different_sport(subflow_req->msk, sk_listener)) {
220 ntohs(inet_sk((struct sock *)subflow_req->msk)->inet_sport));
221 if (!mptcp_pm_sport_in_anno_list(subflow_req->msk, sk_listener)) {
228 subflow_req_create_thmac(subflow_req);
231 if (mptcp_can_accept_new_subflow(subflow_req->msk))
232 subflow_init_req_cookie_join_save(subflow_req, skb);
237 pr_debug("token=%u, remote_nonce=%u msk=%p", subflow_req->token,
238 subflow_req->remote_nonce, subflow_req->msk);
249 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
266 subflow_req->local_key = mp_opt.rcvr_key;
271 subflow_req->mp_capable = 1;
272 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1;
274 if (!mptcp_token_join_cookie_init_state(subflow_req, skb))
277 subflow_req->mp_join = 1;
278 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1;
708 const struct mptcp_subflow_request_sock *subflow_req;
712 subflow_req = mptcp_subflow_rsk(req);
713 msk = subflow_req->msk;
718 subflow_req->remote_nonce,
719 subflow_req->local_nonce, hmac);
774 struct mptcp_subflow_request_sock *subflow_req;
788 subflow_req = mptcp_subflow_rsk(req);
789 fallback_is_fatal = tcp_rsk(req)->is_mptcp && subflow_req->mp_join;
795 if (subflow_req->mp_capable) {
809 } else if (subflow_req->mp_join) {
813 !mptcp_can_accept_new_subflow(subflow_req->msk)) {
860 owner = subflow_req->msk;
867 subflow_req->msk = NULL;
1928 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req);
1933 (!subflow_req->mp_capable && !subflow_req->mp_join)) {
1951 if (subflow_req->mp_capable) {
1956 new_ctx->local_key = subflow_req->local_key;
1957 new_ctx->token = subflow_req->token;
1958 new_ctx->ssn_offset = subflow_req->ssn_offset;
1959 new_ctx->idsn = subflow_req->idsn;
1963 } else if (subflow_req->mp_join) {
1964 new_ctx->ssn_offset = subflow_req->ssn_offset;
1968 new_ctx->backup = subflow_req->backup;
1969 WRITE_ONCE(new_ctx->remote_id, subflow_req->remote_id);
1970 new_ctx->token = subflow_req->token;
1971 new_ctx->thmac = subflow_req->thmac;
1976 subflow_set_local_id(new_ctx, subflow_req->local_id);