subflow.c (c83a47e50d8fd3825a4758158e9edd5acdc74185) | subflow.c (9466a1ccebbe54ac57fb8a89c2b4b854826546a8) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* Multipath TCP 3 * 4 * Copyright (c) 2017 - 2019, Intel Corporation. 5 */ 6 7#define pr_fmt(fmt) "MPTCP: " fmt 8 --- 159 unchanged lines hidden (view full) --- 168 } else if (mp_opt.mp_join && listener->request_mptcp) { 169 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq; 170 subflow_req->mp_join = 1; 171 subflow_req->backup = mp_opt.backup; 172 subflow_req->remote_id = mp_opt.join_id; 173 subflow_req->token = mp_opt.token; 174 subflow_req->remote_nonce = mp_opt.nonce; 175 subflow_req->msk = subflow_token_join_request(req, skb); | 1// SPDX-License-Identifier: GPL-2.0 2/* Multipath TCP 3 * 4 * Copyright (c) 2017 - 2019, Intel Corporation. 5 */ 6 7#define pr_fmt(fmt) "MPTCP: " fmt 8 --- 159 unchanged lines hidden (view full) --- 168 } else if (mp_opt.mp_join && listener->request_mptcp) { 169 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq; 170 subflow_req->mp_join = 1; 171 subflow_req->backup = mp_opt.backup; 172 subflow_req->remote_id = mp_opt.join_id; 173 subflow_req->token = mp_opt.token; 174 subflow_req->remote_nonce = mp_opt.nonce; 175 subflow_req->msk = subflow_token_join_request(req, skb); |
176 177 if (unlikely(req->syncookie) && subflow_req->msk) { 178 if (mptcp_can_accept_new_subflow(subflow_req->msk)) 179 subflow_init_req_cookie_join_save(subflow_req, skb); 180 } 181 |
|
176 pr_debug("token=%u, remote_nonce=%u msk=%p", subflow_req->token, 177 subflow_req->remote_nonce, subflow_req->msk); 178 } 179} 180 181int mptcp_subflow_init_cookie_req(struct request_sock *req, 182 const struct sock *sk_listener, 183 struct sk_buff *skb) --- 18 unchanged lines hidden (view full) --- 202 203 subflow_req->local_key = mp_opt.rcvr_key; 204 err = mptcp_token_new_request(req); 205 if (err) 206 return err; 207 208 subflow_req->mp_capable = 1; 209 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1; | 182 pr_debug("token=%u, remote_nonce=%u msk=%p", subflow_req->token, 183 subflow_req->remote_nonce, subflow_req->msk); 184 } 185} 186 187int mptcp_subflow_init_cookie_req(struct request_sock *req, 188 const struct sock *sk_listener, 189 struct sk_buff *skb) --- 18 unchanged lines hidden (view full) --- 208 209 subflow_req->local_key = mp_opt.rcvr_key; 210 err = mptcp_token_new_request(req); 211 if (err) 212 return err; 213 214 subflow_req->mp_capable = 1; 215 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1; |
216 } else if (mp_opt.mp_join && listener->request_mptcp) { 217 if (!mptcp_token_join_cookie_init_state(subflow_req, skb)) 218 return -EINVAL; 219 220 if (mptcp_can_accept_new_subflow(subflow_req->msk)) 221 subflow_req->mp_join = 1; 222 223 subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq - 1; |
|
210 } 211 212 return 0; 213} 214EXPORT_SYMBOL_GPL(mptcp_subflow_init_cookie_req); 215 216static void subflow_v4_init_req(struct request_sock *req, 217 const struct sock *sk_listener, --- 1179 unchanged lines hidden --- | 224 } 225 226 return 0; 227} 228EXPORT_SYMBOL_GPL(mptcp_subflow_init_cookie_req); 229 230static void subflow_v4_init_req(struct request_sock *req, 231 const struct sock *sk_listener, --- 1179 unchanged lines hidden --- |