Lines Matching refs:opts

334 		       unsigned int *size, struct mptcp_out_options *opts)
343 opts->suboptions = OPTION_MPTCP_MPC_SYN;
349 opts->suboptions = OPTION_MPTCP_MPJ_SYN;
350 opts->join_id = subflow->local_id;
351 opts->token = subflow->remote_token;
352 opts->nonce = subflow->local_nonce;
353 opts->backup = subflow->request_bkup;
396 struct mptcp_out_options *opts)
424 opts->ext_copy.data_len = data_len;
425 opts->suboptions = OPTION_MPTCP_MPC_ACK;
426 opts->sndr_key = subflow->local_key;
427 opts->rcvr_key = subflow->remote_key;
445 opts->suboptions = OPTION_MPTCP_MPJ_ACK;
446 memcpy(opts->hmac, subflow->hmac, MPTCPOPT_HMAC_LEN);
487 struct mptcp_out_options *opts)
508 opts->ext_copy = *mpext;
511 mptcp_write_data_fin(subflow, skb, &opts->ext_copy);
518 opts->ext_copy.use_ack = 0;
526 opts->ext_copy.data_ack = READ_ONCE(msk->ack_seq);
527 opts->ext_copy.ack64 = 1;
530 opts->ext_copy.data_ack32 = (uint32_t)READ_ONCE(msk->ack_seq);
531 opts->ext_copy.ack64 = 0;
533 opts->ext_copy.use_ack = 1;
582 struct mptcp_out_options *opts)
599 opts->addr_id = saddr.id;
601 opts->suboptions |= OPTION_MPTCP_ADD_ADDR;
602 opts->addr = saddr.addr;
604 opts->ahmac = add_addr_generate_hmac(msk->local_key,
606 opts->addr_id,
607 &opts->addr);
612 opts->suboptions |= OPTION_MPTCP_ADD_ADDR6;
613 opts->addr6 = saddr.addr6;
615 opts->ahmac = add_addr6_generate_hmac(msk->local_key,
617 opts->addr_id,
618 &opts->addr6);
622 pr_debug("addr_id=%d, ahmac=%llu, echo=%d", opts->addr_id, opts->ahmac, echo);
630 struct mptcp_out_options *opts)
644 opts->suboptions |= OPTION_MPTCP_RM_ADDR;
645 opts->rm_id = rm_id;
647 pr_debug("rm_id=%d", opts->rm_id);
654 struct mptcp_out_options *opts)
659 opts->suboptions = 0;
670 if (mptcp_established_options_mp(sk, skb, &opt_size, remaining, opts))
673 opts))
684 if (mptcp_established_options_add_addr(sk, &opt_size, remaining, opts)) {
688 } else if (mptcp_established_options_rm_addr(sk, &opt_size, remaining, opts)) {
698 struct mptcp_out_options *opts)
703 opts->suboptions = OPTION_MPTCP_MPC_SYNACK;
704 opts->sndr_key = subflow_req->local_key;
710 opts->suboptions = OPTION_MPTCP_MPJ_SYNACK;
711 opts->backup = subflow_req->backup;
712 opts->join_id = subflow_req->local_id;
713 opts->thmac = subflow_req->thmac;
714 opts->nonce = subflow_req->local_nonce;
716 subflow_req, opts->backup, opts->join_id,
717 opts->thmac, opts->nonce);
981 void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
984 OPTION_MPTCP_MPC_ACK) & opts->suboptions) {
987 if (OPTION_MPTCP_MPC_SYN & opts->suboptions)
989 else if (OPTION_MPTCP_MPC_SYNACK & opts->suboptions)
991 else if (opts->ext_copy.data_len)
1001 opts->suboptions))
1004 put_unaligned_be64(opts->sndr_key, ptr);
1006 if (!((OPTION_MPTCP_MPC_ACK) & opts->suboptions))
1009 put_unaligned_be64(opts->rcvr_key, ptr);
1011 if (!opts->ext_copy.data_len)
1014 put_unaligned_be32(opts->ext_copy.data_len << 16 |
1020 if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) {
1021 if (opts->ahmac)
1024 opts->addr_id);
1029 opts->addr_id);
1030 memcpy((u8 *)ptr, (u8 *)&opts->addr.s_addr, 4);
1032 if (opts->ahmac) {
1033 put_unaligned_be64(opts->ahmac, ptr);
1039 if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) {
1040 if (opts->ahmac)
1043 opts->addr_id);
1048 opts->addr_id);
1049 memcpy((u8 *)ptr, opts->addr6.s6_addr, 16);
1051 if (opts->ahmac) {
1052 put_unaligned_be64(opts->ahmac, ptr);
1058 if (OPTION_MPTCP_RM_ADDR & opts->suboptions) {
1061 0, opts->rm_id);
1064 if (OPTION_MPTCP_MPJ_SYN & opts->suboptions) {
1067 opts->backup, opts->join_id);
1068 put_unaligned_be32(opts->token, ptr);
1070 put_unaligned_be32(opts->nonce, ptr);
1074 if (OPTION_MPTCP_MPJ_SYNACK & opts->suboptions) {
1077 opts->backup, opts->join_id);
1078 put_unaligned_be64(opts->thmac, ptr);
1080 put_unaligned_be32(opts->nonce, ptr);
1084 if (OPTION_MPTCP_MPJ_ACK & opts->suboptions) {
1087 memcpy(ptr, opts->hmac, MPTCPOPT_HMAC_LEN);
1091 if (opts->ext_copy.use_ack || opts->ext_copy.use_map) {
1092 struct mptcp_ext *mpext = &opts->ext_copy;