diff mbox series

[mptcp-next,1/4] mptcp: pm: add accept_address helper

Message ID 26c904d198ab1a642f947e65a4f9bac40771a1b9.1743481566.git.tanggeliang@kylinos.cn (mailing list archive)
State New
Headers show
Series BPF path manager, part 7 | expand

Checks

Context Check Description
matttbe/checkpatch success total: 0 errors, 0 warnings, 0 checks, 42 lines checked
matttbe/shellcheck success MPTCP selftests files have not been modified
matttbe/build success Build and static analysis OK
matttbe/KVM_Validation__normal warning Unstable: 2 failed test(s): packetdrill_mp_join packetdrill_sockopts
matttbe/KVM_Validation__debug warning Unstable: 2 failed test(s): packetdrill_mp_join packetdrill_sockopts
matttbe/KVM_Validation__btf-normal__only_bpftest_all_ success Success! ✅
matttbe/KVM_Validation__btf-debug__only_bpftest_all_ warning Unstable: 1 failed test(s): bpftest_test_progs-cpuv4_mptcp

Commit Message

Geliang Tang April 1, 2025, 4:30 a.m. UTC
From: Geliang Tang <tanggeliang@kylinos.cn>

Extract the code in mptcp_pm_add_addr_received() to test whether the
address can be accepted into a new helper mptcp_pm_accept_address()
to simplify the code.

For this, mptcp_pm_is_init_remote_addr() needs to be exported in
protocol.h.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 net/mptcp/pm.c       |  8 +++-----
 net/mptcp/protocol.h | 10 ++++++++++
 2 files changed, 13 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index d576b03a64e1..f37ddd6111de 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -104,8 +104,8 @@  void mptcp_remote_address(const struct sock_common *skc,
 #endif
 }
 
-static bool mptcp_pm_is_init_remote_addr(struct mptcp_sock *msk,
-					 const struct mptcp_addr_info *remote)
+bool mptcp_pm_is_init_remote_addr(struct mptcp_sock *msk,
+				  const struct mptcp_addr_info *remote)
 {
 	struct mptcp_addr_info mpc_remote;
 
@@ -598,9 +598,7 @@  void mptcp_pm_add_addr_received(const struct sock *ssk,
 		} else {
 			__MPTCP_INC_STATS(sock_net((struct sock *)msk), MPTCP_MIB_ADDADDRDROP);
 		}
-	/* id0 should not have a different address */
-	} else if ((addr->id == 0 && !mptcp_pm_is_init_remote_addr(msk, addr)) ||
-		   (addr->id > 0 && !READ_ONCE(pm->accept_addr))) {
+	} else if (!mptcp_pm_accept_address(msk, addr)) {
 		mptcp_pm_announce_addr(msk, addr, true);
 		mptcp_pm_add_addr_send_ack(msk);
 	} else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) {
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 134b46b53014..910d422d64fa 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -1015,6 +1015,8 @@  void mptcp_pm_subflow_established(struct mptcp_sock *msk);
 bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk);
 void mptcp_pm_subflow_check_next(struct mptcp_sock *msk,
 				 const struct mptcp_subflow_context *subflow);
+bool mptcp_pm_is_init_remote_addr(struct mptcp_sock *msk,
+				  const struct mptcp_addr_info *remote);
 void mptcp_pm_add_addr_received(const struct sock *ssk,
 				const struct mptcp_addr_info *addr);
 void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk,
@@ -1209,6 +1211,14 @@  static inline bool mptcp_pm_accept_subflow(struct mptcp_sock *msk)
 	return ret;
 }
 
+static inline bool mptcp_pm_accept_address(struct mptcp_sock *msk,
+					   const struct mptcp_addr_info *addr)
+{
+	/* id0 should not have a different address */
+	return !((addr->id == 0 && !mptcp_pm_is_init_remote_addr(msk, addr)) ||
+		 (addr->id > 0 && !READ_ONCE(msk->pm.accept_addr)));
+}
+
 void mptcp_sockopt_sync_locked(struct mptcp_sock *msk, struct sock *ssk);
 
 static inline struct mptcp_ext *mptcp_get_ext(const struct sk_buff *skb)