[PATCH mptcp-next 1/6] mptcp: add helper for setsockopt on first subflow only

Geliang Tang posted 6 patches 1 month ago
[PATCH mptcp-next 1/6] mptcp: add helper for setsockopt on first subflow only
Posted by Geliang Tang 1 month ago
From: Geliang Tang <tanggeliang@kylinos.cn>

Implement mptcp_setsockopt_first_sf_only() helper to manage setsockopt
operations applied solely to the first subflow. This centralizes handling
of TCP-level options that require synchronization only with the initial
subflow.

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

diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index 2c267aff95be..6cc073fab17c 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -776,8 +776,8 @@ static int mptcp_setsockopt_v4(struct mptcp_sock *msk, int optname,
 	return -EOPNOTSUPP;
 }
 
-static int mptcp_setsockopt_first_sf_only(struct mptcp_sock *msk, int level, int optname,
-					  sockptr_t optval, unsigned int optlen)
+static int mptcp_setsockopt_sol_tcp_first_sf_only(struct mptcp_sock *msk, int optname,
+						  sockptr_t optval, unsigned int optlen)
 {
 	struct sock *sk = (struct sock *)msk;
 	struct sock *ssk;
@@ -791,13 +791,26 @@ static int mptcp_setsockopt_first_sf_only(struct mptcp_sock *msk, int level, int
 		goto unlock;
 	}
 
-	ret = tcp_setsockopt(ssk, level, optname, optval, optlen);
+	ret = tcp_setsockopt(ssk, SOL_TCP, optname, optval, optlen);
 
 unlock:
 	release_sock(sk);
 	return ret;
 }
 
+static int mptcp_setsockopt_first_sf_only(struct mptcp_sock *msk, int level,
+					  int optname, sockptr_t optval,
+					  unsigned int optlen)
+{
+	switch (level) {
+	case SOL_TCP:
+		return mptcp_setsockopt_sol_tcp_first_sf_only(msk, optname,
+							      optval, optlen);
+	}
+
+	return -EOPNOTSUPP;
+}
+
 static int mptcp_setsockopt_all_sf(struct mptcp_sock *msk, int level,
 				   int optname, sockptr_t optval,
 				   unsigned int optlen)
-- 
2.48.1