All of lore.kernel.org
 help / color / mirror / Atom feed
* [MPTCP] [PATCH 1/2] mptcp: Parse optional port field of ADD_ADDR
@ 2020-03-20 17:51 Peter Krystad
  0 siblings, 0 replies; only message in thread
From: Peter Krystad @ 2020-03-20 17:51 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 1620 bytes --]

Since we allow the option lengths that include the port
field we should correctly parse the field if present.

squashto: Add ADD_ADDR handling

Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
 include/linux/tcp.h |  1 +
 net/mptcp/options.c | 11 +++++++++++
 2 files changed, 12 insertions(+)

diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index 41e5a0e3622f..1225db308957 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -109,6 +109,7 @@ struct mptcp_options_received {
 #endif
 	};
 	u64	ahmac;
+	u16	port;
 };
 #endif
 
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 9b90bdc419ac..d9e0d82fd1b9 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -205,16 +205,27 @@ void mptcp_parse_option(const struct sk_buff *skb, const unsigned char *ptr,
 		}
 
 		mp_opt->add_addr = 1;
+		mp_opt->port = 0;
 		mp_opt->addr_id = *ptr++;
 		pr_debug("ADD_ADDR: id=%d", mp_opt->addr_id);
 		if (mp_opt->family == MPTCP_ADDR_IPVERSION_4) {
 			memcpy((u8 *)&mp_opt->addr.s_addr, (u8 *)ptr, 4);
 			ptr += 4;
+			if (opsize == TCPOLEN_MPTCP_ADD_ADDR_PORT ||
+			    opsize == TCPOLEN_MPTCP_ADD_ADDR_BASE_PORT) {
+				mp_opt->port = get_unaligned_be16(ptr);
+				ptr += 2;
+			}
 		}
 #if IS_ENABLED(CONFIG_MPTCP_IPV6)
 		else {
 			memcpy(mp_opt->addr6.s6_addr, (u8 *)ptr, 16);
 			ptr += 16;
+			if (opsize == TCPOLEN_MPTCP_ADD_ADDR6_PORT ||
+			    opsize == TCPOLEN_MPTCP_ADD_ADDR6_BASE_PORT) {
+				mp_opt->port = get_unaligned_be16(ptr);
+				ptr += 2;
+			}
 		}
 #endif
 		if (!mp_opt->echo) {
-- 
2.17.2

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-03-20 17:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-20 17:51 [MPTCP] [PATCH 1/2] mptcp: Parse optional port field of ADD_ADDR Peter Krystad

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.