options.c (30f60bae80922582a16e80b070171a865fce58cd) | options.c (fef6b7ecfbd465b7e27530e797c00b7384f78e44) |
---|---|
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 --- 638 unchanged lines hidden (view full) --- 647 648 len = mptcp_add_addr_len(opts->addr.family, echo, port); 649 if (remaining < len) 650 return false; 651 652 *size = len; 653 if (drop_other_suboptions) 654 *size -= opt_size; | 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 --- 638 unchanged lines hidden (view full) --- 647 648 len = mptcp_add_addr_len(opts->addr.family, echo, port); 649 if (remaining < len) 650 return false; 651 652 *size = len; 653 if (drop_other_suboptions) 654 *size -= opt_size; |
655 opts->suboptions |= OPTION_MPTCP_ADD_ADDR; |
|
655 if (opts->addr.family == AF_INET) { | 656 if (opts->addr.family == AF_INET) { |
656 opts->suboptions |= OPTION_MPTCP_ADD_ADDR; | |
657 if (!echo) { 658 opts->ahmac = add_addr_generate_hmac(msk->local_key, 659 msk->remote_key, 660 opts->addr.id, 661 &opts->addr.addr, 662 ntohs(opts->addr.port)); 663 } 664 } 665#if IS_ENABLED(CONFIG_MPTCP_IPV6) 666 else if (opts->addr.family == AF_INET6) { | 657 if (!echo) { 658 opts->ahmac = add_addr_generate_hmac(msk->local_key, 659 msk->remote_key, 660 opts->addr.id, 661 &opts->addr.addr, 662 ntohs(opts->addr.port)); 663 } 664 } 665#if IS_ENABLED(CONFIG_MPTCP_IPV6) 666 else if (opts->addr.family == AF_INET6) { |
667 opts->suboptions |= OPTION_MPTCP_ADD_ADDR6; | |
668 if (!echo) { 669 opts->ahmac = add_addr6_generate_hmac(msk->local_key, 670 msk->remote_key, 671 opts->addr.id, 672 &opts->addr.addr6, 673 ntohs(opts->addr.port)); 674 } 675 } --- 517 unchanged lines hidden (view full) --- 1193 goto mp_capable_done; 1194 1195 put_unaligned_be32(opts->ext_copy.data_len << 16 | 1196 TCPOPT_NOP << 8 | TCPOPT_NOP, ptr); 1197 ptr += 1; 1198 } 1199 1200mp_capable_done: | 667 if (!echo) { 668 opts->ahmac = add_addr6_generate_hmac(msk->local_key, 669 msk->remote_key, 670 opts->addr.id, 671 &opts->addr.addr6, 672 ntohs(opts->addr.port)); 673 } 674 } --- 517 unchanged lines hidden (view full) --- 1192 goto mp_capable_done; 1193 1194 put_unaligned_be32(opts->ext_copy.data_len << 16 | 1195 TCPOPT_NOP << 8 | TCPOPT_NOP, ptr); 1196 ptr += 1; 1197 } 1198 1199mp_capable_done: |
1201 if ((OPTION_MPTCP_ADD_ADDR 1202#if IS_ENABLED(CONFIG_MPTCP_IPV6) 1203 | OPTION_MPTCP_ADD_ADDR6 1204#endif 1205 ) & opts->suboptions) { | 1200 if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { |
1206 u8 len = TCPOLEN_MPTCP_ADD_ADDR_BASE; 1207 u8 echo = MPTCP_ADDR_ECHO; 1208 1209#if IS_ENABLED(CONFIG_MPTCP_IPV6) | 1201 u8 len = TCPOLEN_MPTCP_ADD_ADDR_BASE; 1202 u8 echo = MPTCP_ADDR_ECHO; 1203 1204#if IS_ENABLED(CONFIG_MPTCP_IPV6) |
1210 if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) | 1205 if (opts->addr.family == AF_INET6) |
1211 len = TCPOLEN_MPTCP_ADD_ADDR6_BASE; 1212#endif 1213 1214 if (opts->addr.port) 1215 len += TCPOLEN_MPTCP_PORT_LEN; 1216 1217 if (opts->ahmac) { 1218 len += sizeof(opts->ahmac); 1219 echo = 0; 1220 } 1221 1222 *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, 1223 len, echo, opts->addr.id); | 1206 len = TCPOLEN_MPTCP_ADD_ADDR6_BASE; 1207#endif 1208 1209 if (opts->addr.port) 1210 len += TCPOLEN_MPTCP_PORT_LEN; 1211 1212 if (opts->ahmac) { 1213 len += sizeof(opts->ahmac); 1214 echo = 0; 1215 } 1216 1217 *ptr++ = mptcp_option(MPTCPOPT_ADD_ADDR, 1218 len, echo, opts->addr.id); |
1224 if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) { | 1219 if (opts->addr.family == AF_INET) { |
1225 memcpy((u8 *)ptr, (u8 *)&opts->addr.addr.s_addr, 4); 1226 ptr += 1; 1227 } 1228#if IS_ENABLED(CONFIG_MPTCP_IPV6) | 1220 memcpy((u8 *)ptr, (u8 *)&opts->addr.addr.s_addr, 4); 1221 ptr += 1; 1222 } 1223#if IS_ENABLED(CONFIG_MPTCP_IPV6) |
1229 else if (OPTION_MPTCP_ADD_ADDR6 & opts->suboptions) { | 1224 else if (opts->addr.family == AF_INET6) { |
1230 memcpy((u8 *)ptr, opts->addr.addr6.s6_addr, 16); 1231 ptr += 4; 1232 } 1233#endif 1234 1235 if (!opts->addr.port) { 1236 if (opts->ahmac) { 1237 put_unaligned_be64(opts->ahmac, ptr); --- 158 unchanged lines hidden --- | 1225 memcpy((u8 *)ptr, opts->addr.addr6.s6_addr, 16); 1226 ptr += 4; 1227 } 1228#endif 1229 1230 if (!opts->addr.port) { 1231 if (opts->ahmac) { 1232 put_unaligned_be64(opts->ahmac, ptr); --- 158 unchanged lines hidden --- |