mptcp: drop all sub-options except ADD_ADDR when the echo bit is set
authorDavide Caratti <dcaratti@redhat.com>
Wed, 7 Apr 2021 00:16:04 +0000 (17:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 7 Apr 2021 21:09:40 +0000 (14:09 -0700)
Current Linux carries echo-ed ADD_ADDR over pure TCP ACKs, so there is no
need to add a DSS element that would fit only ADD_ADDR with IPv4 address.
Drop the DSS from echo-ed ADD_ADDR, regardless of the IP version.

Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/options.c

index c7eb61d..d51c3ad 100644 (file)
@@ -624,7 +624,8 @@ static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *
        int len;
 
        if ((mptcp_pm_should_add_signal_ipv6(msk) ||
-            mptcp_pm_should_add_signal_port(msk)) &&
+            mptcp_pm_should_add_signal_port(msk) ||
+            mptcp_pm_should_add_signal_echo(msk)) &&
            skb && skb_is_tcp_pure_ack(skb)) {
                pr_debug("drop other suboptions");
                opts->suboptions = 0;