/linux-master/net/mptcp/ |
H A D | subflow.c | 313 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 321 mptcp_fastopen_subflow_synack_set_params(subflow, req); 378 static bool subflow_thmac_valid(struct mptcp_subflow_context *subflow) argument 383 subflow_generate_hmac(subflow->remote_key, subflow->local_key, 384 subflow->remote_nonce, subflow->local_nonce, 388 pr_debug("subflow=%p, token=%u, thmac=%llu, subflow->thmac=%llu\n", 389 subflow, subflo 396 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 423 struct mptcp_subflow_context *subflow; local 443 subflow_set_remote_key(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, const struct mptcp_options_received *mp_opt) argument 464 mptcp_propagate_state(struct sock *sk, struct sock *ssk, struct mptcp_subflow_context *subflow, const struct mptcp_options_received *mp_opt) argument 491 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 577 subflow_set_local_id(struct mptcp_subflow_context *subflow, int local_id) argument 585 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 627 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 658 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 754 __mptcp_subflow_fully_established(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, const struct mptcp_options_received *mp_opt) argument 926 dbg_bad_map(struct mptcp_subflow_context *subflow, u32 ssn) argument 934 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 947 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 969 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1048 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1193 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1220 subflow_can_fallback(struct mptcp_subflow_context *subflow) argument 1234 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1261 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1358 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 1385 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1413 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 1470 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 1522 struct mptcp_subflow_context *subflow; local 1654 struct mptcp_subflow_context *subflow; local 1759 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 1796 struct mptcp_subflow_context *subflow; local 1992 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local [all...] |
H A D | fastopen.c | 9 void mptcp_fastopen_subflow_synack_set_params(struct mptcp_subflow_context *subflow, argument 16 /* on early fallback the subflow context is deleted by 19 if (!subflow) 22 ssk = subflow->tcp_sock; 23 sk = subflow->conn; 26 subflow->is_mptfo = 1; 38 * space, need to offset it in the subflow sequence, see mptcp_subflow_get_map_offset() 41 subflow->ssn_offset += skb->len; 62 void __mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, argument
|
H A D | sched.c | 118 void mptcp_subflow_set_scheduled(struct mptcp_subflow_context *subflow, argument 121 WRITE_ONCE(subflow->scheduled, scheduled); 126 struct mptcp_subflow_context *subflow; local 142 mptcp_for_each_subflow(msk, subflow) { 143 if (READ_ONCE(subflow->scheduled)) 155 struct mptcp_subflow_context *subflow; local 164 mptcp_for_each_subflow(msk, subflow) { 165 if (READ_ONCE(subflow->scheduled))
|
H A D | options.c | 56 * close the subflow with a RST, as it is not behaving as negotiated. 58 * receiver MUST close the subflow with a RST, as it is considered 407 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 412 subflow->snd_isn = TCP_SKB_CB(skb)->end_seq; 413 if (subflow->request_mptcp) { 419 } else if (subflow->request_join) { 420 pr_debug("remote_token=%u, nonce=%u", subflow->remote_token, 421 subflow->local_nonce); 423 opts->join_id = subflow->local_id; 424 opts->token = subflow 448 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 528 mptcp_write_data_fin(struct mptcp_subflow_context *subflow, struct sk_buff *skb, struct mptcp_ext *ext) argument 561 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 654 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 709 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 739 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 765 const struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 784 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 807 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 829 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 925 check_fully_established(struct mptcp_sock *msk, struct sock *ssk, struct mptcp_subflow_context *subflow, struct sk_buff *skb, struct mptcp_options_received *mp_opt) argument 1116 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 1253 struct mptcp_subflow_context *subflow; local 1348 struct mptcp_subflow_context *subflow; local [all...] |
H A D | protocol.c | 69 struct mptcp_subflow_context *subflow; local 80 subflow = mptcp_subflow_ctx(ssock->sk); 81 list_add(&subflow->node, &msk->conn_list); 83 subflow->request_mptcp = 1; 84 subflow->subflow_id = msk->subflow_id++; 86 /* This is the first subflow, always with id 0 */ 87 WRITE_ONCE(subflow->local_id, 0); 94 /* If the MPC handshake is not started, returns the first subflow, 341 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 351 /* try to fetch required memory from subflow */ 481 mptcp_timeout_from_subflow(const struct mptcp_subflow_context *subflow) argument 491 struct mptcp_subflow_context *subflow; local 522 struct mptcp_subflow_context *subflow; local 554 struct mptcp_subflow_context *subflow; local 624 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 790 struct mptcp_subflow_context *subflow; local 827 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 886 struct mptcp_subflow_context *tmp, *subflow; local 933 struct mptcp_subflow_context *subflow; local 1066 struct mptcp_subflow_context *subflow; local 1374 mptcp_subflow_set_active(struct mptcp_subflow_context *subflow) argument 1383 mptcp_subflow_active(struct mptcp_subflow_context *subflow) argument 1407 struct mptcp_subflow_context *subflow; local 1573 struct mptcp_subflow_context *subflow; local 1639 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1979 struct mptcp_subflow_context *subflow; local 2306 struct mptcp_subflow_context *subflow; local 2384 __mptcp_subflow_disconnect(struct sock *ssk, struct mptcp_subflow_context *subflow, unsigned int flags) argument 2408 __mptcp_close_ssk(struct sock *sk, struct sock *ssk, struct mptcp_subflow_context *subflow, unsigned int flags) argument 2501 mptcp_close_ssk(struct sock *sk, struct sock *ssk, struct mptcp_subflow_context *subflow) argument 2510 mptcp_pm_subflow_check_next(mptcp_sk(sk), subflow); local 2522 struct mptcp_subflow_context *subflow, *tmp; local 2554 struct mptcp_subflow_context *subflow, *tmp; local 2604 struct mptcp_subflow_context *subflow; local 2720 struct mptcp_subflow_context *subflow, *tmp; local 2948 struct mptcp_subflow_context *subflow; local 3043 struct mptcp_subflow_context *subflow; local 3255 struct mptcp_subflow_context *subflow; local 3347 struct mptcp_subflow_context *subflow, *tmp; local 3489 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 3539 struct mptcp_subflow_context *subflow; local 3571 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 3695 mptcp_subflow_early_fallback(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow) argument 3704 struct mptcp_subflow_context *subflow; local 3895 struct mptcp_subflow_context *subflow; local 4055 struct mptcp_subflow_context *subflow; local [all...] |
H A D | protocol.h | 262 u64 local_key; /* protected by the first subflow socket lock 290 bool recovery; /* closing subflow write queue reinjected */ 299 u8 pending_state; /* A subflow asked to set this sk_state, 320 * ONCE annotation, the subflow outside the socket 475 /* MPTCP subflow context */ 515 is_mptfo : 1, /* subflow is doing TFO */ 524 u8 hmac[MPTCPOPT_HMAC_LEN]; /* MPJ subflow only */ 568 mptcp_subflow_tcp_sock(const struct mptcp_subflow_context *subflow) argument 570 return subflow->tcp_sock; 574 mptcp_subflow_ctx_reset(struct mptcp_subflow_context *subflow) argument 582 mptcp_subflow_get_map_offset(const struct mptcp_subflow_context *subflow) argument 590 mptcp_subflow_get_mapped_dsn(const struct mptcp_subflow_context *subflow) argument 597 mptcp_subflow_delegate(struct mptcp_subflow_context *subflow, int action) argument 717 __mptcp_subflow_active(struct mptcp_subflow_context *subflow) argument 847 struct mptcp_subflow_context *subflow; local 871 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 884 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1073 subflow_get_local_id(const struct mptcp_subflow_context *subflow) argument 1122 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 1148 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1180 is_active_ssk(struct mptcp_subflow_context *subflow) argument 1187 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local [all...] |
H A D | pm.c | 187 const struct mptcp_subflow_context *subflow) 192 update_subflows = subflow->request_join || subflow->mp_join; 209 /* Even if this subflow is not really established, tell the PM to try 221 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 222 struct mptcp_sock *msk = mptcp_sk(subflow->conn); 295 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 296 struct sock *sk = subflow->conn; 299 pr_debug("subflow->backup=%d, bkup=%d\n", subflow 186 mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct mptcp_subflow_context *subflow) argument 309 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk); local 468 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local [all...] |
H A D | token.c | 136 * mptcp_token_new_connect - create new key/idsn/token for subflow 153 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 154 struct mptcp_sock *msk = mptcp_sk(subflow->conn); 156 struct sock *sk = subflow->conn; 160 mptcp_crypto_key_gen_sha(&subflow->local_key, &subflow->token, 161 &subflow->idsn); 163 bucket = token_bucket(subflow->token); 165 if (__token_bucket_busy(bucket, subflow->token)) { 173 ssk, subflow [all...] |
H A D | sockopt.c | 72 struct mptcp_subflow_context *subflow; local 78 mptcp_for_each_subflow(msk, subflow) { 79 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); 116 subflow->setsockopt_seq = msk->setsockopt_seq; 150 struct mptcp_subflow_context *subflow; local 160 mptcp_for_each_subflow(msk, subflow) { 161 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); 212 struct mptcp_subflow_context *subflow; local 238 mptcp_for_each_subflow(msk, subflow) { 239 struct sock *ssk = mptcp_subflow_tcp_sock(subflow); 254 struct mptcp_subflow_context *subflow; local 587 struct mptcp_subflow_context *subflow; local 629 struct mptcp_subflow_context *subflow; local 649 struct mptcp_subflow_context *subflow; local 715 struct mptcp_subflow_context *subflow; local 1032 struct mptcp_subflow_context *subflow; local 1124 struct mptcp_subflow_context *subflow; local 1223 struct mptcp_subflow_context *subflow; local 1469 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local 1493 struct mptcp_subflow_context *subflow; local [all...] |
H A D | Makefile | 4 mptcp-y := protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o diag.o \
|
H A D | pm_netlink.c | 112 struct mptcp_subflow_context *subflow; local 116 list_for_each_entry(subflow, list, node) { 117 skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow); 130 struct mptcp_subflow_context *subflow; local 134 list_for_each_entry(subflow, list, node) { 135 skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow); 403 struct mptcp_subflow_context *subflow; local 412 * corresponding to the primary MPC subflow remote address 430 mptcp_for_each_subflow(msk, subflow) 431 if (READ_ONCE(subflow 461 __mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, bool prio, bool backup) argument 481 mptcp_pm_send_ack(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow, bool prio, bool backup) argument 530 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(msk->first); local 719 struct mptcp_subflow_context *subflow; local 738 struct mptcp_subflow_context *subflow; local 772 struct mptcp_subflow_context *subflow, *tmp; local 1109 struct mptcp_subflow_context *iter, *subflow = mptcp_subflow_ctx(ssk); local 2119 struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk); local [all...] |
H A D | pm_userspace.c | 84 /* If the subflow is closed from the other peer (not via a 85 * subflow destroy command then), we want to keep the entry 87 * able to send RM_ADDR after the removal of the subflow. 237 struct mptcp_subflow_context *subflow; local 243 mptcp_for_each_subflow(msk, subflow) { 244 if (READ_ONCE(subflow->local_id) == 0) { 416 struct mptcp_subflow_context *subflow; local 421 mptcp_for_each_subflow(msk, subflow) { 425 ssk = mptcp_subflow_tcp_sock(subflow); 529 struct mptcp_subflow_context *subflow local [all...] |
/linux-master/include/trace/events/ |
H A D | mptcp.h | 20 TP_PROTO(struct mptcp_subflow_context *subflow), 22 TP_ARGS(subflow), 36 __entry->active = mptcp_subflow_active(subflow); 37 __entry->backup = subflow->backup; 39 if (subflow->tcp_sock && sk_fullsock(subflow->tcp_sock)) 40 __entry->free = sk_stream_memory_free(subflow->tcp_sock); 44 ssk = mptcp_subflow_tcp_sock(subflow);
|
/linux-master/tools/testing/selftests/net/mptcp/ |
H A D | mptcp_join.sh | 789 local flags="subflow" 795 # let the mptcp subflow be established in background before 1452 # the subflow creation 1701 # in case of simult flush, the subflow removal count on each side is 1823 # number of all subflows, including the initial subflow. 1912 # subflow limited by client 1913 if reset "single subflow, limited by client"; then 1916 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 1921 # subflow limited by server 1922 if reset "single subflow, limite [all...] |
H A D | pm_netlink.sh | 79 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo 85 id 2 flags subflow dev lo 10.0.1.2 169 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags subflow 172 subflow,backup 10.0.1.1" "set flags (backup)" 175 subflow 10.0.1.1" " (nobackup)" 182 subflow,fullmesh 10.0.1.1" " (fullmesh)" 185 subflow 10.0.1.1" " (nofullmesh)" 188 subflow,backup,fullmesh 10.0.1.1" " (backup,fullmesh)"
|
H A D | simult_flows.sh | 89 ip netns exec "$ns1" ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags subflow
|