[PATCH mptcp-next 5/6] mptcp: handle SOL_TCP options on all subflows

Geliang Tang posted 6 patches 1 month ago
[PATCH mptcp-next 5/6] mptcp: handle SOL_TCP options on all subflows
Posted by Geliang Tang 1 month ago
From: Geliang Tang <tanggeliang@kylinos.cn>

Implement mptcp_setsockopt_sol_tcp_all_sf() helper to apply TCP socket
options to all existing subflows. This ensures consistent configuration
across every subflow in the MPTCP connection.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 net/mptcp/sockopt.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index 964131ef82d8..81cc24125c29 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -848,9 +848,9 @@ static int mptcp_setsockopt_first_sf_only(struct mptcp_sock *msk, int level,
 	return -EOPNOTSUPP;
 }
 
-static int mptcp_setsockopt_all_sf(struct mptcp_sock *msk, int level,
-				   int optname, sockptr_t optval,
-				   unsigned int optlen)
+static int mptcp_setsockopt_sol_tcp_all_sf(struct mptcp_sock *msk,
+					   int optname, sockptr_t optval,
+					   unsigned int optlen)
 {
 	struct mptcp_subflow_context *subflow;
 	int ret = 0;
@@ -858,13 +858,26 @@ static int mptcp_setsockopt_all_sf(struct mptcp_sock *msk, int level,
 	mptcp_for_each_subflow(msk, subflow) {
 		struct sock *ssk = mptcp_subflow_tcp_sock(subflow);
 
-		ret = tcp_setsockopt(ssk, level, optname, optval, optlen);
+		ret = tcp_setsockopt(ssk, SOL_TCP, optname, optval, optlen);
 		if (ret)
 			break;
 	}
 	return ret;
 }
 
+static int mptcp_setsockopt_all_sf(struct mptcp_sock *msk, int level,
+				   int optname, sockptr_t optval,
+				   unsigned int optlen)
+{
+	switch (level) {
+	case SOL_TCP:
+		return mptcp_setsockopt_sol_tcp_all_sf(msk, optname,
+						       optval, optlen);
+	}
+
+	return -EOPNOTSUPP;
+}
+
 static int mptcp_setsockopt_sol_tcp(struct mptcp_sock *msk, int optname,
 				    sockptr_t optval, unsigned int optlen)
 {
-- 
2.48.1