aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2021-03-12 17:47:46 -0800
committerDavid S. Miller <davem@davemloft.net>2021-03-12 17:47:46 -0800
commit7c678829efa89e23a8556f5e4d9621c51995fb6e (patch)
tree41536ba695917e42bb3c74c12bae49f3f74db39d /include/net
parentMerge branch 'resil-nhgroups-netdevsim-selftests' (diff)
parentselftests: mptcp: add testcases for removing addrs (diff)
downloadlinux-rng-7c678829efa89e23a8556f5e4d9621c51995fb6e.tar.xz
linux-rng-7c678829efa89e23a8556f5e4d9621c51995fb6e.zip
Merge branch 'mptcp-Include-multiple-address-ids-in-RM_ADDR'
Mat Martineau says: ==================== mptcp: Include multiple address ids in RM_ADDR Here's a patch series from the MPTCP tree that extends the capabilities of the MPTCP RM_ADDR header. MPTCP peers can exchange information about their IP addresses that are available for additional MPTCP subflows. IP addresses are advertised with an ADD_ADDR header type, and those advertisements are revoked with the RM_ADDR header type. RFC 8684 allows the RM_ADDR header to include more than one address ID, so multiple advertisements can be revoked in a single header. Previous kernel versions have only used RM_ADDR with a single address ID, so multiple removals required multiple packets. Patches 1-4 plumb address id list structures around the MPTCP code, where before only a single address ID was passed. Patches 5-8 make use of the address lists at the path manager layer that tracks available addresses for both peers. Patches 9-11 update the selftests to cover the new use of RM_ADDR with multiple address IDs. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mptcp.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/net/mptcp.h b/include/net/mptcp.h
index 5694370be3d4..cea69c801595 100644
--- a/include/net/mptcp.h
+++ b/include/net/mptcp.h
@@ -34,6 +34,13 @@ struct mptcp_ext {
/* one byte hole */
};
+#define MPTCP_RM_IDS_MAX 8
+
+struct mptcp_rm_list {
+ u8 ids[MPTCP_RM_IDS_MAX];
+ u8 nr;
+};
+
struct mptcp_out_options {
#if IS_ENABLED(CONFIG_MPTCP)
u16 suboptions;
@@ -48,7 +55,7 @@ struct mptcp_out_options {
u8 addr_id;
u16 port;
u64 ahmac;
- u8 rm_id;
+ struct mptcp_rm_list rm_list;
u8 join_id;
u8 backup;
u32 nonce;