Lines Matching defs:mp_opt

23 			       struct mptcp_options_received *mp_opt)
77 mp_opt->mp_capable = 1;
79 mp_opt->sndr_key = get_unaligned_be64(ptr);
83 mp_opt->rcvr_key = get_unaligned_be64(ptr);
92 mp_opt->dss = 1;
93 mp_opt->use_map = 1;
94 mp_opt->mpc_map = 1;
95 mp_opt->use_ack = 0;
96 mp_opt->data_len = get_unaligned_be16(ptr);
100 version, flags, opsize, mp_opt->sndr_key,
101 mp_opt->rcvr_key, mp_opt->data_len);
105 mp_opt->mp_join = 1;
107 mp_opt->backup = *ptr++ & MPTCPOPT_BACKUP;
108 mp_opt->join_id = *ptr++;
109 mp_opt->token = get_unaligned_be32(ptr);
111 mp_opt->nonce = get_unaligned_be32(ptr);
114 mp_opt->backup, mp_opt->join_id,
115 mp_opt->token, mp_opt->nonce);
117 mp_opt->backup = *ptr++ & MPTCPOPT_BACKUP;
118 mp_opt->join_id = *ptr++;
119 mp_opt->thmac = get_unaligned_be64(ptr);
121 mp_opt->nonce = get_unaligned_be32(ptr);
124 mp_opt->backup, mp_opt->join_id,
125 mp_opt->thmac, mp_opt->nonce);
128 memcpy(mp_opt->hmac, ptr, MPTCPOPT_HMAC_LEN);
131 mp_opt->mp_join = 0;
143 mp_opt->mpc_map = 0;
145 mp_opt->data_fin = (flags & MPTCP_DSS_DATA_FIN) != 0;
146 mp_opt->dsn64 = (flags & MPTCP_DSS_DSN64) != 0;
147 mp_opt->use_map = (flags & MPTCP_DSS_HAS_MAP) != 0;
148 mp_opt->ack64 = (flags & MPTCP_DSS_ACK64) != 0;
149 mp_opt->use_ack = (flags & MPTCP_DSS_HAS_ACK);
152 mp_opt->data_fin, mp_opt->dsn64,
153 mp_opt->use_map, mp_opt->ack64,
154 mp_opt->use_ack);
158 if (mp_opt->use_ack) {
159 if (mp_opt->ack64)
165 if (mp_opt->use_map) {
166 if (mp_opt->dsn64)
181 mp_opt->dss = 1;
183 if (mp_opt->use_ack) {
184 if (mp_opt->ack64) {
185 mp_opt->data_ack = get_unaligned_be64(ptr);
188 mp_opt->data_ack = get_unaligned_be32(ptr);
192 pr_debug("data_ack=%llu", mp_opt->data_ack);
195 if (mp_opt->use_map) {
196 if (mp_opt->dsn64) {
197 mp_opt->data_seq = get_unaligned_be64(ptr);
200 mp_opt->data_seq = get_unaligned_be32(ptr);
204 mp_opt->subflow_seq = get_unaligned_be32(ptr);
207 mp_opt->data_len = get_unaligned_be16(ptr);
211 mp_opt->data_seq, mp_opt->subflow_seq,
212 mp_opt->data_len);
218 mp_opt->echo = (*ptr++) & MPTCP_ADDR_ECHO;
219 if (!mp_opt->echo) {
222 mp_opt->family = MPTCP_ADDR_IPVERSION_4;
226 mp_opt->family = MPTCP_ADDR_IPVERSION_6;
233 mp_opt->family = MPTCP_ADDR_IPVERSION_4;
237 mp_opt->family = MPTCP_ADDR_IPVERSION_6;
243 mp_opt->add_addr = 1;
244 mp_opt->addr_id = *ptr++;
245 pr_debug("ADD_ADDR: id=%d, echo=%d", mp_opt->addr_id, mp_opt->echo);
246 if (mp_opt->family == MPTCP_ADDR_IPVERSION_4) {
247 memcpy((u8 *)&mp_opt->addr.s_addr, (u8 *)ptr, 4);
251 mp_opt->port = get_unaligned_be16(ptr);
257 memcpy(mp_opt->addr6.s6_addr, (u8 *)ptr, 16);
261 mp_opt->port = get_unaligned_be16(ptr);
266 if (!mp_opt->echo) {
267 mp_opt->ahmac = get_unaligned_be64(ptr);
278 mp_opt->rm_addr = 1;
279 mp_opt->rm_id = *ptr++;
280 pr_debug("RM_ADDR: id=%d", mp_opt->rm_id);
289 struct mptcp_options_received *mp_opt)
296 mp_opt->mp_capable = 0;
297 mp_opt->mp_join = 0;
298 mp_opt->add_addr = 0;
299 mp_opt->ahmac = 0;
300 mp_opt->port = 0;
301 mp_opt->rm_addr = 0;
302 mp_opt->dss = 0;
326 mptcp_parse_option(skb, ptr, opsize, mp_opt);
727 struct mptcp_options_received *mp_opt)
739 subflow->mp_join && mp_opt->mp_join &&
756 if (mp_opt->dss && mp_opt->use_ack) {
769 if (!mp_opt->mp_capable) {
780 mptcp_subflow_fully_established(subflow, mp_opt);
816 struct mptcp_options_received *mp_opt)
825 new_snd_una = expand_ack(old_snd_una, mp_opt->data_ack, mp_opt->ack64);
860 struct mptcp_options_received *mp_opt)
864 if (mp_opt->echo)
867 if (mp_opt->family == MPTCP_ADDR_IPVERSION_4)
870 mp_opt->addr_id, &mp_opt->addr);
875 mp_opt->addr_id, &mp_opt->addr6);
878 pr_debug("msk=%p, ahmac=%llu, mp_opt->ahmac=%llu\n",
880 (unsigned long long)mp_opt->ahmac);
882 return hmac == mp_opt->ahmac;
889 struct mptcp_options_received mp_opt;
895 mptcp_get_options(skb, &mp_opt);
896 if (!check_fully_established(msk, sk, subflow, skb, &mp_opt))
899 if (mp_opt.add_addr && add_addr_hmac_valid(msk, &mp_opt)) {
902 addr.port = htons(mp_opt.port);
903 addr.id = mp_opt.addr_id;
904 if (mp_opt.family == MPTCP_ADDR_IPVERSION_4) {
906 addr.addr = mp_opt.addr;
909 else if (mp_opt.family == MPTCP_ADDR_IPVERSION_6) {
911 addr.addr6 = mp_opt.addr6;
914 if (!mp_opt.echo) {
921 mp_opt.add_addr = 0;
924 if (mp_opt.rm_addr) {
925 mptcp_pm_rm_addr_received(msk, mp_opt.rm_id);
926 mp_opt.rm_addr = 0;
929 if (!mp_opt.dss)
935 if (mp_opt.use_ack)
936 update_una(msk, &mp_opt);
944 if (mp_opt.data_fin && mp_opt.data_len == 1 &&
945 mptcp_update_rcv_data_fin(msk, mp_opt.data_seq, mp_opt.dsn64) &&
958 if (mp_opt.use_map) {
959 if (mp_opt.mpc_map) {
971 mpext->data_seq = mp_opt.data_seq;
972 mpext->subflow_seq = mp_opt.subflow_seq;
973 mpext->dsn64 = mp_opt.dsn64;
974 mpext->data_fin = mp_opt.data_fin;
976 mpext->data_len = mp_opt.data_len;