Lines Matching refs:subflow_req
40 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); in subflow_req_destructor() local
42 pr_debug("subflow_req=%p\n", subflow_req); in subflow_req_destructor()
44 if (subflow_req->msk) in subflow_req_destructor()
45 sock_put((struct sock *)subflow_req->msk); in subflow_req_destructor()
70 static void subflow_req_create_thmac(struct mptcp_subflow_request_sock *subflow_req) in subflow_req_create_thmac() argument
72 struct mptcp_sock *msk = subflow_req->msk; in subflow_req_create_thmac()
75 get_random_bytes(&subflow_req->local_nonce, sizeof(u32)); in subflow_req_create_thmac()
79 subflow_req->local_nonce, in subflow_req_create_thmac()
80 subflow_req->remote_nonce, hmac); in subflow_req_create_thmac()
82 subflow_req->thmac = get_unaligned_be64(hmac); in subflow_req_create_thmac()
87 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); in subflow_token_join_request() local
91 msk = mptcp_token_get_sock(sock_net(req_to_sk(req)), subflow_req->token); in subflow_token_join_request()
102 subflow_req->local_id = local_id; in subflow_token_join_request()
103 subflow_req->request_bkup = mptcp_pm_is_backup(msk, (struct sock_common *)req); in subflow_token_join_request()
110 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); in subflow_init_req() local
112 subflow_req->mp_capable = 0; in subflow_init_req()
113 subflow_req->mp_join = 0; in subflow_init_req()
114 subflow_req->csum_reqd = mptcp_is_checksum_enabled(sock_net(sk_listener)); in subflow_init_req()
115 subflow_req->allow_join_id0 = mptcp_allow_join_id0(sock_net(sk_listener)); in subflow_init_req()
116 subflow_req->msk = NULL; in subflow_init_req()
152 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); in subflow_check_req() local
156 pr_debug("subflow_req=%p, listener=%p\n", subflow_req, listener); in subflow_check_req()
191 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq; in subflow_check_req()
194 get_random_bytes(&subflow_req->local_key, sizeof(subflow_req->local_key)); in subflow_check_req()
195 } while (subflow_req->local_key == 0); in subflow_check_req()
198 mptcp_crypto_key_sha(subflow_req->local_key, in subflow_check_req()
199 &subflow_req->token, in subflow_check_req()
200 &subflow_req->idsn); in subflow_check_req()
201 if (mptcp_token_exists(subflow_req->token)) { in subflow_check_req()
206 subflow_req->mp_capable = 1; in subflow_check_req()
213 subflow_req->mp_capable = 1; in subflow_check_req()
220 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq; in subflow_check_req()
221 subflow_req->mp_join = 1; in subflow_check_req()
222 subflow_req->backup = mp_opt.backup; in subflow_check_req()
223 subflow_req->remote_id = mp_opt.join_id; in subflow_check_req()
224 subflow_req->token = mp_opt.token; in subflow_check_req()
225 subflow_req->remote_nonce = mp_opt.nonce; in subflow_check_req()
226 subflow_req->msk = subflow_token_join_request(req); in subflow_check_req()
229 if (!subflow_req->msk) { in subflow_check_req()
234 if (subflow_use_different_sport(subflow_req->msk, sk_listener)) { in subflow_check_req()
237 ntohs(inet_sk((struct sock *)subflow_req->msk)->inet_sport)); in subflow_check_req()
238 if (!mptcp_pm_sport_in_anno_list(subflow_req->msk, sk_listener)) { in subflow_check_req()
246 subflow_req_create_thmac(subflow_req); in subflow_check_req()
249 if (!mptcp_can_accept_new_subflow(subflow_req->msk)) { in subflow_check_req()
254 subflow_init_req_cookie_join_save(subflow_req, skb); in subflow_check_req()
257 pr_debug("token=%u, remote_nonce=%u msk=%p\n", subflow_req->token, in subflow_check_req()
258 subflow_req->remote_nonce, subflow_req->msk); in subflow_check_req()
269 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); in mptcp_subflow_init_cookie_req() local
286 subflow_req->local_key = mp_opt.rcvr_key; in mptcp_subflow_init_cookie_req()
291 subflow_req->mp_capable = 1; in mptcp_subflow_init_cookie_req()
292 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1; in mptcp_subflow_init_cookie_req()
294 if (!mptcp_token_join_cookie_init_state(subflow_req, skb)) in mptcp_subflow_init_cookie_req()
297 subflow_req->mp_join = 1; in mptcp_subflow_init_cookie_req()
298 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1; in mptcp_subflow_init_cookie_req()
751 const struct mptcp_subflow_request_sock *subflow_req; in subflow_hmac_valid() local
755 subflow_req = mptcp_subflow_rsk(req); in subflow_hmac_valid()
756 msk = subflow_req->msk; in subflow_hmac_valid()
762 subflow_req->remote_nonce, in subflow_hmac_valid()
763 subflow_req->local_nonce, hmac); in subflow_hmac_valid()
818 struct mptcp_subflow_request_sock *subflow_req; in subflow_syn_recv_sock() local
833 subflow_req = mptcp_subflow_rsk(req); in subflow_syn_recv_sock()
834 fallback_is_fatal = tcp_rsk(req)->is_mptcp && subflow_req->mp_join; in subflow_syn_recv_sock()
840 if (subflow_req->mp_capable) { in subflow_syn_recv_sock()
854 } else if (subflow_req->mp_join) { in subflow_syn_recv_sock()
858 !mptcp_can_accept_new_subflow(subflow_req->msk)) { in subflow_syn_recv_sock()
905 owner = subflow_req->msk; in subflow_syn_recv_sock()
912 subflow_req->msk = NULL; in subflow_syn_recv_sock()
2027 struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); in subflow_ulp_clone() local
2032 (!subflow_req->mp_capable && !subflow_req->mp_join)) { in subflow_ulp_clone()
2050 if (subflow_req->mp_capable) { in subflow_ulp_clone()
2055 new_ctx->local_key = subflow_req->local_key; in subflow_ulp_clone()
2056 new_ctx->token = subflow_req->token; in subflow_ulp_clone()
2057 new_ctx->ssn_offset = subflow_req->ssn_offset; in subflow_ulp_clone()
2058 new_ctx->idsn = subflow_req->idsn; in subflow_ulp_clone()
2062 } else if (subflow_req->mp_join) { in subflow_ulp_clone()
2063 new_ctx->ssn_offset = subflow_req->ssn_offset; in subflow_ulp_clone()
2067 new_ctx->backup = subflow_req->backup; in subflow_ulp_clone()
2068 new_ctx->request_bkup = subflow_req->request_bkup; in subflow_ulp_clone()
2069 WRITE_ONCE(new_ctx->remote_id, subflow_req->remote_id); in subflow_ulp_clone()
2070 new_ctx->token = subflow_req->token; in subflow_ulp_clone()
2071 new_ctx->thmac = subflow_req->thmac; in subflow_ulp_clone()
2076 subflow_set_local_id(new_ctx, subflow_req->local_id); in subflow_ulp_clone()