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 ---