Skip to content

Commit 71b077e

Browse files
Paolo Abenidavem330
authored andcommitted
mptcp: clean-up MPJ option writing
Check for all MPJ variant at once, this reduces the number of conditionals traversed on average and will simplify the next patch. No functional change intended. Signed-off-by: Paolo Abeni <[email protected]> Signed-off-by: Mat Martineau <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent f7d6a23 commit 71b077e

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

net/mptcp/options.c

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,27 +1385,29 @@ void mptcp_write_options(__be32 *ptr, const struct tcp_sock *tp,
13851385

13861386
/* MPC is additionally mutually exclusive with MP_PRIO */
13871387
goto mp_capable_done;
1388-
} else if (OPTION_MPTCP_MPJ_SYN & opts->suboptions) {
1389-
*ptr++ = mptcp_option(MPTCPOPT_MP_JOIN,
1390-
TCPOLEN_MPTCP_MPJ_SYN,
1391-
opts->backup, opts->join_id);
1392-
put_unaligned_be32(opts->token, ptr);
1393-
ptr += 1;
1394-
put_unaligned_be32(opts->nonce, ptr);
1395-
ptr += 1;
1396-
} else if (OPTION_MPTCP_MPJ_SYNACK & opts->suboptions) {
1397-
*ptr++ = mptcp_option(MPTCPOPT_MP_JOIN,
1398-
TCPOLEN_MPTCP_MPJ_SYNACK,
1399-
opts->backup, opts->join_id);
1400-
put_unaligned_be64(opts->thmac, ptr);
1401-
ptr += 2;
1402-
put_unaligned_be32(opts->nonce, ptr);
1403-
ptr += 1;
1404-
} else if (OPTION_MPTCP_MPJ_ACK & opts->suboptions) {
1405-
*ptr++ = mptcp_option(MPTCPOPT_MP_JOIN,
1406-
TCPOLEN_MPTCP_MPJ_ACK, 0, 0);
1407-
memcpy(ptr, opts->hmac, MPTCPOPT_HMAC_LEN);
1408-
ptr += 5;
1388+
} else if (OPTIONS_MPTCP_MPJ & opts->suboptions) {
1389+
if (OPTION_MPTCP_MPJ_SYN & opts->suboptions) {
1390+
*ptr++ = mptcp_option(MPTCPOPT_MP_JOIN,
1391+
TCPOLEN_MPTCP_MPJ_SYN,
1392+
opts->backup, opts->join_id);
1393+
put_unaligned_be32(opts->token, ptr);
1394+
ptr += 1;
1395+
put_unaligned_be32(opts->nonce, ptr);
1396+
ptr += 1;
1397+
} else if (OPTION_MPTCP_MPJ_SYNACK & opts->suboptions) {
1398+
*ptr++ = mptcp_option(MPTCPOPT_MP_JOIN,
1399+
TCPOLEN_MPTCP_MPJ_SYNACK,
1400+
opts->backup, opts->join_id);
1401+
put_unaligned_be64(opts->thmac, ptr);
1402+
ptr += 2;
1403+
put_unaligned_be32(opts->nonce, ptr);
1404+
ptr += 1;
1405+
} else {
1406+
*ptr++ = mptcp_option(MPTCPOPT_MP_JOIN,
1407+
TCPOLEN_MPTCP_MPJ_ACK, 0, 0);
1408+
memcpy(ptr, opts->hmac, MPTCPOPT_HMAC_LEN);
1409+
ptr += 5;
1410+
}
14091411
} else if (OPTION_MPTCP_ADD_ADDR & opts->suboptions) {
14101412
u8 len = TCPOLEN_MPTCP_ADD_ADDR_BASE;
14111413
u8 echo = MPTCP_ADDR_ECHO;

0 commit comments

Comments
 (0)