Lines Matching refs:opts
332 unsigned int *size, struct mptcp_out_options *opts) in mptcp_syn_options() argument
341 opts->suboptions = OPTION_MPTCP_MPC_SYN; in mptcp_syn_options()
347 opts->suboptions = OPTION_MPTCP_MPJ_SYN; in mptcp_syn_options()
348 opts->join_id = subflow->local_id; in mptcp_syn_options()
349 opts->token = subflow->remote_token; in mptcp_syn_options()
350 opts->nonce = subflow->local_nonce; in mptcp_syn_options()
351 opts->backup = subflow->request_bkup; in mptcp_syn_options()
393 struct mptcp_out_options *opts) in mptcp_established_options_mp() argument
421 opts->ext_copy.data_len = data_len; in mptcp_established_options_mp()
422 opts->suboptions = OPTION_MPTCP_MPC_ACK; in mptcp_established_options_mp()
423 opts->sndr_key = subflow->local_key; in mptcp_established_options_mp()
424 opts->rcvr_key = subflow->remote_key; in mptcp_established_options_mp()
442 opts->suboptions = OPTION_MPTCP_MPJ_ACK; in mptcp_established_options_mp()
443 memcpy(opts->hmac, subflow->hmac, MPTCPOPT_HMAC_LEN); in mptcp_established_options_mp()
484 struct mptcp_out_options *opts) in mptcp_established_options_dss() argument
505 opts->ext_copy = *mpext; in mptcp_established_options_dss()
508 mptcp_write_data_fin(subflow, skb, &opts->ext_copy); in mptcp_established_options_dss()
515 opts->ext_copy.use_ack = 0; in mptcp_established_options_dss()
523 opts->ext_copy.data_ack = READ_ONCE(msk->ack_seq); in mptcp_established_options_dss()
524 opts->ext_copy.ack64 = 1; in mptcp_established_options_dss()
527 opts->ext_copy.data_ack32 = (uint32_t)READ_ONCE(msk->ack_seq); in mptcp_established_options_dss()
528 opts->ext_copy.ack64 = 0; in mptcp_established_options_dss()
530 opts->ext_copy.use_ack = 1; in mptcp_established_options_dss()
579 struct mptcp_out_options *opts) in mptcp_established_options_add_addr() argument
596 opts->addr_id = saddr.id; in mptcp_established_options_add_addr()
598 opts->suboptions |= OPTION_MPTCP_ADD_ADDR; in mptcp_established_options_add_addr()
599 opts->addr = saddr.addr; in mptcp_established_options_add_addr()
601 opts->ahmac = add_addr_generate_hmac(msk->local_key, in mptcp_established_options_add_addr()
603 opts->addr_id, in mptcp_established_options_add_addr()
604 &opts->addr); in mptcp_established_options_add_addr()
609 opts->suboptions |= OPTION_MPTCP_ADD_ADDR6; in mptcp_established_options_add_addr()
610 opts->addr6 = saddr.addr6; in mptcp_established_options_add_addr()
612 opts->ahmac = add_addr6_generate_hmac(msk->local_key, in mptcp_established_options_add_addr()
614 opts->addr_id, in mptcp_established_options_add_addr()
615 &opts->addr6); in mptcp_established_options_add_addr()
619 pr_debug("addr_id=%d, ahmac=%llu, echo=%d", opts->addr_id, opts->ahmac, echo); in mptcp_established_options_add_addr()
627 struct mptcp_out_options *opts) in mptcp_established_options_rm_addr() argument
641 opts->suboptions |= OPTION_MPTCP_RM_ADDR; in mptcp_established_options_rm_addr()
642 opts->rm_id = rm_id; in mptcp_established_options_rm_addr()
644 pr_debug("rm_id=%d", opts->rm_id); in mptcp_established_options_rm_addr()
651 struct mptcp_out_options *opts) in mptcp_established_options() argument
656 opts->suboptions = 0; in mptcp_established_options()
667 if (mptcp_established_options_mp(sk, skb, &opt_size, remaining, opts)) in mptcp_established_options()
670 opts)) in mptcp_established_options()
681 if (mptcp_established_options_add_addr(sk, &opt_size, remaining, opts)) { in mptcp_established_options()
685 } else if (mptcp_established_options_rm_addr(sk, &opt_size, remaining, opts)) { in mptcp_established_options()
695 struct mptcp_out_options *opts) in mptcp_synack_options() argument
700 opts->suboptions = OPTION_MPTCP_MPC_SYNACK; in mptcp_synack_options()
701 opts->sndr_key = subflow_req->local_key; in mptcp_synack_options()
707 opts->suboptions = OPTION_MPTCP_MPJ_SYNACK; in mptcp_synack_options()
708 opts->backup = subflow_req->backup; in mptcp_synack_options()
709 opts->join_id = subflow_req->local_id; in mptcp_synack_options()
710 opts->thmac = subflow_req->thmac; in mptcp_synack_options()
711 opts->nonce = subflow_req->local_nonce; in mptcp_synack_options()
713 subflow_req, opts->backup, opts->join_id, in mptcp_synack_options()
714 opts->thmac, opts->nonce); in mptcp_synack_options()
978 void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts) in mptcp_write_options() argument
981 OPTION_MPTCP_MPC_ACK) & opts->suboptions) { in mptcp_write_options()
984 if (OPTION_MPTCP_MPC_SYN & opts->suboptions) in mptcp_write_options()
986 else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions) in mptcp_write_options()
988 else if (opts->ext_copy.data_len) in mptcp_write_options()
998 opts->suboptions)) in mptcp_write_options()
1001 put_unaligned_be64(opts->sndr_key, ptr); in mptcp_write_options()
1003 if (!((OPTION_MPTCP_MPC_ACK) & opts->suboptions)) in mptcp_write_options()
1006 put_unaligned_be64(opts->rcvr_key, ptr); in mptcp_write_options()
1008 if (!opts->ext_copy.data_len) in mptcp_write_options()
1011 put_unaligned_be32(opts->ext_copy.data_len << 16 | in mptcp_write_options()
1017 if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { in mptcp_write_options()
1018 if (opts->ahmac) in mptcp_write_options()
1021 opts->addr_id); in mptcp_write_options()
1026 opts->addr_id); in mptcp_write_options()
1027 memcpy((u8 *)ptr, (u8 *)&opts->addr.s_addr, 4); in mptcp_write_options()
1029 if (opts->ahmac) { in mptcp_write_options()
1030 put_unaligned_be64(opts->ahmac, ptr); in mptcp_write_options()
1036 if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) { in mptcp_write_options()
1037 if (opts->ahmac) in mptcp_write_options()
1040 opts->addr_id); in mptcp_write_options()
1045 opts->addr_id); in mptcp_write_options()
1046 memcpy((u8 *)ptr, opts->addr6.s6_addr, 16); in mptcp_write_options()
1048 if (opts->ahmac) { in mptcp_write_options()
1049 put_unaligned_be64(opts->ahmac, ptr); in mptcp_write_options()
1055 if (OPTION_MPTCP_RM_ADDR & opts->suboptions) { in mptcp_write_options()
1058 0, opts->rm_id); in mptcp_write_options()
1061 if (OPTION_MPTCP_MPJ_SYN & opts->suboptions) { in mptcp_write_options()
1064 opts->backup, opts->join_id); in mptcp_write_options()
1065 put_unaligned_be32(opts->token, ptr); in mptcp_write_options()
1067 put_unaligned_be32(opts->nonce, ptr); in mptcp_write_options()
1071 if (OPTION_MPTCP_MPJ_SYNACK & opts->suboptions) { in mptcp_write_options()
1074 opts->backup, opts->join_id); in mptcp_write_options()
1075 put_unaligned_be64(opts->thmac, ptr); in mptcp_write_options()
1077 put_unaligned_be32(opts->nonce, ptr); in mptcp_write_options()
1081 if (OPTION_MPTCP_MPJ_ACK & opts->suboptions) { in mptcp_write_options()
1084 memcpy(ptr, opts->hmac, MPTCPOPT_HMAC_LEN); in mptcp_write_options()
1088 if (opts->ext_copy.use_ack || opts->ext_copy.use_map) { in mptcp_write_options()
1089 struct mptcp_ext *mpext = &opts->ext_copy; in mptcp_write_options()