* [PATCH mptcp-next v9 00/21] userspace pm enhancements
@ 2023-11-14 6:34 Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 01/21] mptcp: export pm_nl_get_pernet_from_msk Geliang Tang
` (21 more replies)
0 siblings, 22 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:34 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This series includes three parts:
Part 1: dump for userspace pm (patches 1-11)
mptcp: export pm_nl_get_pernet_from_msk
mptcp: drop mptcp_pm_get_* helpers
mptcp: use pernet id_bitmap in userspace pm
mptcp: add userspace_pm_lookup_addr_by_id helper
mptcp: drop lookup_by_id parameter in lookup_addr
mptcp: dump addrs in userspace pm list
mptcp: check userspace pm subflow flag
selftests: mptcp: add userspace pm subflow flag
selftests: mptcp: add mptcp_lib_cleanup
selftests: mptcp: add mptcp_lib_check helper
selftests: mptcp: dump userspace addrs list
Part 2: flush for userspace pm (patches 12-14)
mptcp: add a prefix for free_local_addr_list
mptcp: flush userspace pm addrs list
selftests: mptcp: flush userspace addrs list
Part 3: address entry refcount for userspace pm (patches 15-21)
mptcp: add use_id parameter for addresses_equal
mptcp: add check_id for lookup_anno_list_by_saddr
mptcp: add userspace_pm_get_entry helper
mptcp: drop addr_match and id_match
mptcp: dup an entry when removing it
mptcp: add userspace pm addr entry refcount
selftests: mptcp: rm userspace addr with random order
v9:
- Fix typos reported by CI.
- Squash two patches
"selftests: mptcp: pm_netlink: print colored output"
"selftests: mptcp: add mptcp_lib_check helper"
into one:
"selftests: mptcp: add mptcp_lib_check helper"
v8:
- add mptcp_lib_check helper
v7:
- merge 'Squash to "mptcp: add use_id parameter for addresses_equal
v6"', fix packetdrill_add_addr error.
- fix memleak error in "mptcp: add netlink pm addr entry refcount".
- split "selftests: mptcp: flush and dump userspace addrs list" into
two patches.
v6:
- fix kmemleak errors reported by CI.
- drop a patch "mptcp: add netlink pm addr entry refcount".
v5:
- Put the two series "add flush and dump for userspace" and
"add refcount for address entry" together for better CI testing.
Patches 1-12: add flush and dump for userspace
v4:
- fix the deadlock issue in v3 reported by CI.
v3:
- fix warnings reported by CI.
- get id_bitmap using pm_nl_get_pernet_from_msk.
v2:
- add two patches: "mptcp: check userspace pm subflow flag"
"selftests: mptcp: add userspace pm subflow flag"
This series adds flush and dump commands support for userspace pm.
Patches 13-21: add refcount for address entry
v4:
- move two patches here from "add flush and dump for userspace pm":
mptcp: add userspace_pm_get_entry helper
mptcp: drop addr_match and id_match
v3:
- add four selftests patches:
selftests: mptcp: export event macros in mptcp_lib
selftests: mptcp: extract mptcp_lib_check_expected
selftests: mptcp: add mptcp_lib_verify_listener_events
selftests: mptcp: add mptcp_lib_init_ns
v2:
- rebased with "add flush and dump for userspace pm" series.
Add refcount for address entry.
Geliang Tang (21):
mptcp: export pm_nl_get_pernet_from_msk
mptcp: drop mptcp_pm_get_* helpers
mptcp: use pernet id_bitmap in userspace pm
mptcp: add userspace_pm_lookup_addr_by_id helper
mptcp: drop lookup_by_id parameter in lookup_addr
mptcp: dump addrs in userspace pm list
mptcp: check userspace pm subflow flag
selftests: mptcp: add userspace pm subflow flag
selftests: mptcp: add mptcp_lib_cleanup
selftests: mptcp: add mptcp_lib_check helper
selftests: mptcp: dump userspace addrs list
mptcp: add a prefix for free_local_addr_list
mptcp: flush userspace pm addrs list
selftests: mptcp: flush userspace addrs list
mptcp: add use_id parameter for addresses_equal
mptcp: add check_id for lookup_anno_list_by_saddr
mptcp: add userspace_pm_get_entry helper
mptcp: drop addr_match and id_match
mptcp: dup an entry when removing it
mptcp: add userspace pm addr entry refcount
selftests: mptcp: rm userspace addr with random order
net/mptcp/pm.c | 16 +-
net/mptcp/pm_netlink.c | 131 +++++--------
net/mptcp/pm_userspace.c | 181 +++++++++++++-----
net/mptcp/protocol.c | 2 +-
net/mptcp/protocol.h | 38 +++-
net/mptcp/sockopt.c | 9 +-
tools/testing/selftests/net/mptcp/diag.sh | 1 +
.../selftests/net/mptcp/mptcp_connect.sh | 1 +
.../testing/selftests/net/mptcp/mptcp_join.sh | 18 +-
.../testing/selftests/net/mptcp/mptcp_lib.sh | 32 ++++
.../selftests/net/mptcp/mptcp_sockopt.sh | 1 +
.../testing/selftests/net/mptcp/pm_netlink.sh | 30 +--
tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 8 +
.../selftests/net/mptcp/simult_flows.sh | 1 +
.../selftests/net/mptcp/userspace_pm.sh | 1 +
15 files changed, 295 insertions(+), 175 deletions(-)
--
2.35.3
^ permalink raw reply [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 01/21] mptcp: export pm_nl_get_pernet_from_msk
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
@ 2023-11-14 6:34 ` Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 02/21] mptcp: drop mptcp_pm_get_* helpers Geliang Tang
` (20 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:34 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch moves struct pm_nl_pernet from pm_netlink.c to protocol.h,
and export pm_nl_get_pernet_from_msk() helper.
Then every fields of struct pm_nl_pernet can be accessed everywhere,
not only being limited in pm_netlink.c.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_netlink.c | 17 ++---------------
net/mptcp/protocol.h | 17 +++++++++++++++++
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index bf4d96f6f99a..1dcf104d7a01 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -31,20 +31,6 @@ struct mptcp_pm_add_entry {
struct mptcp_sock *sock;
};
-struct pm_nl_pernet {
- /* protects pernet updates */
- spinlock_t lock;
- struct list_head local_addr_list;
- unsigned int addrs;
- unsigned int stale_loss_cnt;
- unsigned int add_addr_signal_max;
- unsigned int add_addr_accept_max;
- unsigned int local_addr_max;
- unsigned int subflows_max;
- unsigned int next_id;
- DECLARE_BITMAP(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
-};
-
#define MPTCP_PM_ADDR_MAX 8
#define ADD_ADDR_RETRANS_MAX 3
@@ -53,11 +39,12 @@ static struct pm_nl_pernet *pm_nl_get_pernet(const struct net *net)
return net_generic(net, pm_nl_pernet_id);
}
-static struct pm_nl_pernet *
+struct pm_nl_pernet *
pm_nl_get_pernet_from_msk(const struct mptcp_sock *msk)
{
return pm_nl_get_pernet(sock_net((struct sock *)msk));
}
+EXPORT_SYMBOL_GPL(pm_nl_get_pernet_from_msk);
bool mptcp_addresses_equal(const struct mptcp_addr_info *a,
const struct mptcp_addr_info *b, bool use_port)
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 8529b3ae55e9..c38a2126071b 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -1026,6 +1026,23 @@ void __init mptcp_pm_nl_init(void);
void mptcp_pm_nl_work(struct mptcp_sock *msk);
void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk,
const struct mptcp_rm_list *rm_list);
+
+struct pm_nl_pernet {
+ /* protects pernet updates */
+ spinlock_t lock;
+ struct list_head local_addr_list;
+ unsigned int addrs;
+ unsigned int stale_loss_cnt;
+ unsigned int add_addr_signal_max;
+ unsigned int add_addr_accept_max;
+ unsigned int local_addr_max;
+ unsigned int subflows_max;
+ unsigned int next_id;
+ DECLARE_BITMAP(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
+};
+
+struct pm_nl_pernet *
+pm_nl_get_pernet_from_msk(const struct mptcp_sock *msk);
unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk);
unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk);
unsigned int mptcp_pm_get_subflows_max(const struct mptcp_sock *msk);
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 02/21] mptcp: drop mptcp_pm_get_* helpers
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 01/21] mptcp: export pm_nl_get_pernet_from_msk Geliang Tang
@ 2023-11-14 6:34 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 03/21] mptcp: use pernet id_bitmap in userspace pm Geliang Tang
` (19 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:34 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Drop four mptcp_pm_get_* helpers:
mptcp_pm_get_add_addr_signal_max();
mptcp_pm_get_add_addr_accept_max();
mptcp_pm_get_subflows_max();
mptcp_pm_get_local_addr_max();
The helper pm_nl_get_pernet_from_msk() now can be used to replace each of
them.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm.c | 12 +++++-----
net/mptcp/pm_netlink.c | 50 +++++++++---------------------------------
net/mptcp/protocol.h | 8 +++----
net/mptcp/sockopt.c | 9 ++++----
4 files changed, 25 insertions(+), 54 deletions(-)
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 4ae19113b8eb..48ff7ce20890 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -85,6 +85,7 @@ void mptcp_pm_new_connection(struct mptcp_sock *msk, const struct sock *ssk, int
bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk)
{
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
struct mptcp_pm_data *pm = &msk->pm;
unsigned int subflows_max;
int ret = 0;
@@ -99,7 +100,7 @@ bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk)
return false;
}
- subflows_max = mptcp_pm_get_subflows_max(msk);
+ subflows_max = READ_ONCE(pernet->subflows_max);
pr_debug("msk=%p subflows=%d max=%d allow=%d", msk, pm->subflows,
subflows_max, READ_ONCE(pm->accept_subflow));
@@ -496,6 +497,7 @@ bool mptcp_pm_addr_families_match(const struct sock *sk,
void mptcp_pm_data_reset(struct mptcp_sock *msk)
{
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
u8 pm_type = mptcp_get_pm_type(sock_net((struct sock *)msk));
struct mptcp_pm_data *pm = &msk->pm;
@@ -508,17 +510,17 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk)
WRITE_ONCE(pm->pm_type, pm_type);
if (pm_type == MPTCP_PM_TYPE_KERNEL) {
- bool subflows_allowed = !!mptcp_pm_get_subflows_max(msk);
+ bool subflows_allowed = !!READ_ONCE(pernet->subflows_max);
/* pm->work_pending must be only be set to 'true' when
* pm->pm_type is set to MPTCP_PM_TYPE_KERNEL
*/
WRITE_ONCE(pm->work_pending,
- (!!mptcp_pm_get_local_addr_max(msk) &&
+ (!!READ_ONCE(pernet->local_addr_max) &&
subflows_allowed) ||
- !!mptcp_pm_get_add_addr_signal_max(msk));
+ !!READ_ONCE(pernet->add_addr_signal_max));
WRITE_ONCE(pm->accept_addr,
- !!mptcp_pm_get_add_addr_accept_max(msk) &&
+ !!READ_ONCE(pernet->add_addr_accept_max) &&
subflows_allowed);
WRITE_ONCE(pm->accept_subflow, subflows_allowed);
} else {
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 1dcf104d7a01..dbf040e39af4 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -183,43 +183,11 @@ select_signal_address(struct pm_nl_pernet *pernet, const struct mptcp_sock *msk)
return ret;
}
-unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk)
-{
- const struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
-
- return READ_ONCE(pernet->add_addr_signal_max);
-}
-EXPORT_SYMBOL_GPL(mptcp_pm_get_add_addr_signal_max);
-
-unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk)
-{
- struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
-
- return READ_ONCE(pernet->add_addr_accept_max);
-}
-EXPORT_SYMBOL_GPL(mptcp_pm_get_add_addr_accept_max);
-
-unsigned int mptcp_pm_get_subflows_max(const struct mptcp_sock *msk)
-{
- struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
-
- return READ_ONCE(pernet->subflows_max);
-}
-EXPORT_SYMBOL_GPL(mptcp_pm_get_subflows_max);
-
-unsigned int mptcp_pm_get_local_addr_max(const struct mptcp_sock *msk)
-{
- struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
-
- return READ_ONCE(pernet->local_addr_max);
-}
-EXPORT_SYMBOL_GPL(mptcp_pm_get_local_addr_max);
-
bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk)
{
struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
- if (msk->pm.subflows == mptcp_pm_get_subflows_max(msk) ||
+ if (msk->pm.subflows == READ_ONCE(pernet->subflows_max) ||
(find_next_and_bit(pernet->id_bitmap, msk->pm.id_avail_bitmap,
MPTCP_PM_MAX_ADDR_ID + 1, 0) == MPTCP_PM_MAX_ADDR_ID + 1)) {
WRITE_ONCE(msk->pm.work_pending, false);
@@ -404,6 +372,7 @@ static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk,
bool fullmesh,
struct mptcp_addr_info *addrs)
{
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
bool deny_id0 = READ_ONCE(msk->pm.remote_deny_join_id0);
struct sock *sk = (struct sock *)msk, *ssk;
struct mptcp_subflow_context *subflow;
@@ -411,7 +380,7 @@ static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk,
unsigned int subflows_max;
int i = 0;
- subflows_max = mptcp_pm_get_subflows_max(msk);
+ subflows_max = READ_ONCE(pernet->subflows_max);
remote_address((struct sock_common *)sk, &remote);
/* Non-fullmesh endpoint, fill in the single entry
@@ -514,9 +483,9 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk)
pernet = pm_nl_get_pernet(sock_net(sk));
- add_addr_signal_max = mptcp_pm_get_add_addr_signal_max(msk);
- local_addr_max = mptcp_pm_get_local_addr_max(msk);
- subflows_max = mptcp_pm_get_subflows_max(msk);
+ add_addr_signal_max = READ_ONCE(pernet->add_addr_signal_max);
+ local_addr_max = READ_ONCE(pernet->local_addr_max);
+ subflows_max = READ_ONCE(pernet->subflows_max);
/* do lazy endpoint usage accounting for the MPC subflows */
if (unlikely(!(msk->pm.status & BIT(MPTCP_PM_MPC_ENDPOINT_ACCOUNTED))) && msk->first) {
@@ -621,7 +590,7 @@ static unsigned int fill_local_addresses_vec(struct mptcp_sock *msk,
int i = 0;
pernet = pm_nl_get_pernet_from_msk(msk);
- subflows_max = mptcp_pm_get_subflows_max(msk);
+ subflows_max = READ_ONCE(pernet->subflows_max);
rcu_read_lock();
list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
@@ -664,6 +633,7 @@ static unsigned int fill_local_addresses_vec(struct mptcp_sock *msk,
static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk)
{
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
struct mptcp_addr_info addrs[MPTCP_PM_ADDR_MAX];
struct sock *sk = (struct sock *)msk;
unsigned int add_addr_accept_max;
@@ -671,8 +641,8 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_sock *msk)
unsigned int subflows_max;
int i, nr;
- add_addr_accept_max = mptcp_pm_get_add_addr_accept_max(msk);
- subflows_max = mptcp_pm_get_subflows_max(msk);
+ add_addr_accept_max = READ_ONCE(pernet->add_addr_accept_max);
+ subflows_max = READ_ONCE(pernet->subflows_max);
pr_debug("accepted %d:%d remote family %d",
msk->pm.add_addr_accepted, add_addr_accept_max,
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index c38a2126071b..88f5b422f941 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -1043,15 +1043,13 @@ struct pm_nl_pernet {
struct pm_nl_pernet *
pm_nl_get_pernet_from_msk(const struct mptcp_sock *msk);
-unsigned int mptcp_pm_get_add_addr_signal_max(const struct mptcp_sock *msk);
-unsigned int mptcp_pm_get_add_addr_accept_max(const struct mptcp_sock *msk);
-unsigned int mptcp_pm_get_subflows_max(const struct mptcp_sock *msk);
-unsigned int mptcp_pm_get_local_addr_max(const struct mptcp_sock *msk);
/* called under PM lock */
static inline void __mptcp_pm_close_subflow(struct mptcp_sock *msk)
{
- if (--msk->pm.subflows < mptcp_pm_get_subflows_max(msk))
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
+
+ if (--msk->pm.subflows < READ_ONCE(pernet->subflows_max))
WRITE_ONCE(msk->pm.accept_subflow, true);
}
diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c
index cabe856b2a45..8d63df5ded50 100644
--- a/net/mptcp/sockopt.c
+++ b/net/mptcp/sockopt.c
@@ -893,6 +893,7 @@ static int mptcp_getsockopt_first_sf_only(struct mptcp_sock *msk, int level, int
void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info)
{
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
struct sock *sk = (struct sock *)msk;
u32 flags = 0;
bool slow;
@@ -910,13 +911,13 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struct mptcp_info *info)
/* The following limits only make sense for the in-kernel PM */
if (mptcp_pm_is_kernel(msk)) {
info->mptcpi_subflows_max =
- mptcp_pm_get_subflows_max(msk);
+ READ_ONCE(pernet->subflows_max);
info->mptcpi_add_addr_signal_max =
- mptcp_pm_get_add_addr_signal_max(msk);
+ READ_ONCE(pernet->add_addr_signal_max);
info->mptcpi_add_addr_accepted_max =
- mptcp_pm_get_add_addr_accept_max(msk);
+ READ_ONCE(pernet->add_addr_accept_max);
info->mptcpi_local_addr_max =
- mptcp_pm_get_local_addr_max(msk);
+ READ_ONCE(pernet->local_addr_max);
}
if (__mptcp_check_fallback(msk))
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 03/21] mptcp: use pernet id_bitmap in userspace pm
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 01/21] mptcp: export pm_nl_get_pernet_from_msk Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 02/21] mptcp: drop mptcp_pm_get_* helpers Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 04/21] mptcp: add userspace_pm_lookup_addr_by_id helper Geliang Tang
` (18 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch uses pm_nl_get_pernet_from_msk() to get the pernet id_bitmap
instead of using a local bitmap when appending a new local address into
the userspace PM local address list.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index efecbe3cf415..b3a606a5e182 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -28,7 +28,7 @@ void mptcp_free_local_addr_list(struct mptcp_sock *msk)
static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
struct mptcp_pm_addr_entry *entry)
{
- DECLARE_BITMAP(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
struct mptcp_pm_addr_entry *match = NULL;
struct sock *sk = (struct sock *)msk;
struct mptcp_pm_addr_entry *e;
@@ -36,8 +36,6 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
bool id_match = false;
int ret = -EINVAL;
- bitmap_zero(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
-
spin_lock_bh(&msk->pm.lock);
list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) {
addr_match = mptcp_addresses_equal(&e->addr, &entry->addr, true);
@@ -50,7 +48,6 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
} else if (addr_match || id_match) {
break;
}
- __set_bit(e->addr.id, id_bitmap);
}
if (!match && !addr_match && !id_match) {
@@ -65,9 +62,10 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
*e = *entry;
if (!e->addr.id)
- e->addr.id = find_next_zero_bit(id_bitmap,
+ e->addr.id = find_next_zero_bit(pernet->id_bitmap,
MPTCP_PM_MAX_ADDR_ID + 1,
1);
+ __set_bit(e->addr.id, pernet->id_bitmap);
list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list);
msk->pm.local_addr_used++;
ret = e->addr.id;
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 04/21] mptcp: add userspace_pm_lookup_addr_by_id helper
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (2 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 03/21] mptcp: use pernet id_bitmap in userspace pm Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 05/21] mptcp: drop lookup_by_id parameter in lookup_addr Geliang Tang
` (17 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Corresponding __lookup_addr_by_id() helper in the in-kernel netlink PM,
this patch adds a new helper mptcp_userspace_pm_lookup_addr_by_id() to
lookup the address entry with the given id on the userspace pm local
address list.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index b3a606a5e182..6999296cd5db 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -25,6 +25,18 @@ void mptcp_free_local_addr_list(struct mptcp_sock *msk)
}
}
+static struct mptcp_pm_addr_entry *
+mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int id)
+{
+ struct mptcp_pm_addr_entry *entry;
+
+ list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
+ if (entry->addr.id == id)
+ return entry;
+ }
+ return NULL;
+}
+
static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
struct mptcp_pm_addr_entry *entry)
{
@@ -107,15 +119,10 @@ int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
unsigned int id,
u8 *flags, int *ifindex)
{
- struct mptcp_pm_addr_entry *entry, *match = NULL;
+ struct mptcp_pm_addr_entry *match;
spin_lock_bh(&msk->pm.lock);
- list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
- if (id == entry->addr.id) {
- match = entry;
- break;
- }
- }
+ match = mptcp_userspace_pm_lookup_addr_by_id(msk, id);
spin_unlock_bh(&msk->pm.lock);
if (match) {
*flags = match->flags;
@@ -247,7 +254,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct genl_info *info)
{
struct nlattr *token = info->attrs[MPTCP_PM_ATTR_TOKEN];
struct nlattr *id = info->attrs[MPTCP_PM_ATTR_LOC_ID];
- struct mptcp_pm_addr_entry *match = NULL;
+ struct mptcp_pm_addr_entry *match;
struct mptcp_pm_addr_entry *entry;
struct mptcp_sock *msk;
LIST_HEAD(free_list);
@@ -284,13 +291,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct genl_info *info)
lock_sock(sk);
- list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
- if (entry->addr.id == id_val) {
- match = entry;
- break;
- }
- }
-
+ match = mptcp_userspace_pm_lookup_addr_by_id(msk, id_val);
if (!match) {
GENL_SET_ERR_MSG(info, "address with specified id not found");
release_sock(sk);
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 05/21] mptcp: drop lookup_by_id parameter in lookup_addr
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (3 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 04/21] mptcp: add userspace_pm_lookup_addr_by_id helper Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 06/21] mptcp: dump addrs in userspace pm list Geliang Tang
` (16 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
When the lookup_by_id parameter of __lookup_addr() is true, it's the same
as __lookup_addr_by_id(), it can be replaced by __lookup_addr_by_id()
directly. So drop this parameter, let __lookup_addr() only looks up address
on the local address list by comparing addresses in it, not address ids.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_netlink.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index dbf040e39af4..4cb52df57ba5 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -458,15 +458,12 @@ __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsigned int id)
}
static struct mptcp_pm_addr_entry *
-__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info,
- bool lookup_by_id)
+__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info)
{
struct mptcp_pm_addr_entry *entry;
list_for_each_entry(entry, &pernet->local_addr_list, list) {
- if ((!lookup_by_id &&
- mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) ||
- (lookup_by_id && entry->addr.id == info->id))
+ if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port))
return entry;
}
return NULL;
@@ -496,7 +493,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(struct mptcp_sock *msk)
mptcp_local_address((struct sock_common *)msk->first, &mpc_addr);
rcu_read_lock();
- entry = __lookup_addr(pernet, &mpc_addr, false);
+ entry = __lookup_addr(pernet, &mpc_addr);
if (entry) {
__clear_bit(entry->addr.id, msk->pm.id_avail_bitmap);
msk->mpc_endpoint_id = entry->addr.id;
@@ -1832,7 +1829,8 @@ int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *addr, u8
}
spin_lock_bh(&pernet->lock);
- entry = __lookup_addr(pernet, &addr->addr, lookup_by_id);
+ entry = lookup_by_id ? __lookup_addr_by_id(pernet, addr->addr.id) :
+ __lookup_addr(pernet, &addr->addr);
if (!entry) {
spin_unlock_bh(&pernet->lock);
return -EINVAL;
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 06/21] mptcp: dump addrs in userspace pm list
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (4 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 05/21] mptcp: drop lookup_by_id parameter in lookup_addr Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 07/21] mptcp: check userspace pm subflow flag Geliang Tang
` (15 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new function __userspace_pm_lookup_addr_by_id() to lookup
the address entry by the given id in the userspace local addresses list.
Invoke it when dumping addresses from netlink commands.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_netlink.c | 9 +++++++--
net/mptcp/pm_userspace.c | 25 +++++++++++++++++++++++++
net/mptcp/protocol.h | 2 ++
3 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 4cb52df57ba5..08b4211fbcbd 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1673,8 +1673,13 @@ int mptcp_pm_nl_get_addr_dumpit(struct sk_buff *msg,
for (i = id; i < MPTCP_PM_MAX_ADDR_ID + 1; i++) {
if (test_bit(i, pernet->id_bitmap)) {
entry = __lookup_addr_by_id(pernet, i);
- if (!entry)
- break;
+ if (!entry) {
+ spin_unlock_bh(&pernet->lock);
+ entry = __userspace_pm_lookup_addr_by_id(net, i);
+ spin_lock_bh(&pernet->lock);
+ if (!entry)
+ break;
+ }
if (entry->addr.id <= id)
continue;
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 6999296cd5db..5e45e36ce1d3 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -549,3 +549,28 @@ int mptcp_userspace_pm_set_flags(struct net *net, struct nlattr *token,
sock_put(sk);
return ret;
}
+
+struct mptcp_pm_addr_entry *
+__userspace_pm_lookup_addr_by_id(struct net *net, unsigned int id)
+{
+ struct mptcp_pm_addr_entry *entry = NULL;
+ long s_slot = 0, s_num = 0;
+ struct mptcp_sock *msk;
+
+ while ((msk = mptcp_token_iter_next(net, &s_slot, &s_num)) != NULL) {
+ struct sock *sk = (struct sock *)msk;
+
+ if (mptcp_pm_is_userspace(msk)) {
+ lock_sock(sk);
+ spin_lock_bh(&msk->pm.lock);
+ entry = mptcp_userspace_pm_lookup_addr_by_id(msk, id);
+ spin_unlock_bh(&msk->pm.lock);
+ release_sock(sk);
+ }
+
+ sock_put(sk);
+ cond_resched();
+ }
+
+ return entry;
+}
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 88f5b422f941..c30e59278080 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -1021,6 +1021,8 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remaining,
int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc);
int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc);
int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc);
+struct mptcp_pm_addr_entry *
+__userspace_pm_lookup_addr_by_id(struct net *net, unsigned int id);
void __init mptcp_pm_nl_init(void);
void mptcp_pm_nl_work(struct mptcp_sock *msk);
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 07/21] mptcp: check userspace pm subflow flag
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (5 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 06/21] mptcp: dump addrs in userspace pm list Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 08/21] selftests: mptcp: add " Geliang Tang
` (14 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch uses mptcp_pm_parse_entry() instead of mptcp_pm_parse_addr()
to get the flags of the entry. Add MPTCP_PM_ADDR_FLAG_SUBFLOW flag check
in mptcp_pm_nl_subflow_create_doit().
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 5e45e36ce1d3..de10be21bf26 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -347,12 +347,19 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb, struct genl_info *info)
goto create_err;
}
- err = mptcp_pm_parse_addr(laddr, info, &addr_l);
+ err = mptcp_pm_parse_entry(laddr, info, true, &local);
if (err < 0) {
NL_SET_ERR_MSG_ATTR(info->extack, laddr, "error parsing local addr");
goto create_err;
}
+ if (!(local.flags & MPTCP_PM_ADDR_FLAG_SUBFLOW)) {
+ GENL_SET_ERR_MSG(info, "invalid addr flags");
+ err = -EINVAL;
+ goto create_err;
+ }
+ addr_l = local.addr;
+
err = mptcp_pm_parse_addr(raddr, info, &addr_r);
if (err < 0) {
NL_SET_ERR_MSG_ATTR(info->extack, raddr, "error parsing remote addr");
@@ -365,7 +372,6 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb, struct genl_info *info)
goto create_err;
}
- local.addr = addr_l;
err = mptcp_userspace_pm_append_new_local_addr(msk, &local);
if (err < 0) {
GENL_SET_ERR_MSG(info, "did not match address and id");
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 08/21] selftests: mptcp: add userspace pm subflow flag
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (6 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 07/21] mptcp: check userspace pm subflow flag Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 09/21] selftests: mptcp: add mptcp_lib_cleanup Geliang Tang
` (13 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds the address flag MPTCP_PM_ADDR_FLAG_SUBFLOW in csf() in
pm_nl_ctl.c when subflow is created by a userspace PM.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
index 49369c4a5f26..e97856323ec3 100644
--- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
+++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
@@ -453,6 +453,7 @@ int csf(int fd, int pm_family, int argc, char *argv[])
char data[NLMSG_ALIGN(sizeof(struct nlmsghdr)) +
NLMSG_ALIGN(sizeof(struct genlmsghdr)) +
1024];
+ u_int32_t flags = MPTCP_PM_ADDR_FLAG_SUBFLOW;
const char *params[5];
struct nlmsghdr *nh;
struct rtattr *addr;
@@ -558,6 +559,13 @@ int csf(int fd, int pm_family, int argc, char *argv[])
off += NLMSG_ALIGN(rta->rta_len);
}
+ /* addr flags */
+ rta = (void *)(data + off);
+ rta->rta_type = MPTCP_PM_ADDR_ATTR_FLAGS;
+ rta->rta_len = RTA_LENGTH(4);
+ memcpy(RTA_DATA(rta), &flags, 4);
+ off += NLMSG_ALIGN(rta->rta_len);
+
addr->rta_len = off - addr_start;
}
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 09/21] selftests: mptcp: add mptcp_lib_cleanup
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (7 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 08/21] selftests: mptcp: add " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 10/21] selftests: mptcp: add mptcp_lib_check helper Geliang Tang
` (12 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new helper mptcp_lib_cleanup() in mptcp_lib.sh, it's
a public cleanup interface, being invoked in every cleanup() in all
scripts.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 1 +
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 1 +
tools/testing/selftests/net/mptcp/mptcp_join.sh | 1 +
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 5 +++++
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 1 +
tools/testing/selftests/net/mptcp/pm_netlink.sh | 1 +
tools/testing/selftests/net/mptcp/simult_flows.sh | 1 +
tools/testing/selftests/net/mptcp/userspace_pm.sh | 1 +
8 files changed, 12 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index 95b498efacd1..a678ee21973b 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -31,6 +31,7 @@ cleanup()
ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGKILL &>/dev/null
ip netns del $ns
+ mptcp_lib_cleanup
}
mptcp_lib_check_mptcp
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 7898d62fce0b..98f4e82789ba 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -143,6 +143,7 @@ cleanup()
ip netns del $netns
rm -f /tmp/$netns.{nstat,out}
done
+ mptcp_lib_cleanup
}
mptcp_lib_check_mptcp
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 1606474232f6..a46515c198af 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -198,6 +198,7 @@ cleanup()
rm -f "$tmpfile"
rm -rf $evts_ns1 $evts_ns2
cleanup_partial
+ mptcp_lib_cleanup
}
print_title()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 1f8be9dd0e20..cbaa55ab89b1 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -299,3 +299,8 @@ mptcp_lib_wait_local_port_listen() {
sleep 0.1
done
}
+
+mptcp_lib_cleanup()
+{
+ echo "cleanup"
+}
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index c643872ddf47..75d8c648f9de 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -85,6 +85,7 @@ cleanup()
done
rm -f "$cin" "$cout"
rm -f "$sin" "$sout"
+ mptcp_lib_cleanup
}
mptcp_lib_check_mptcp
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 8f4ff123a7eb..fd413b4c8123 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -34,6 +34,7 @@ cleanup()
{
rm -f $err
ip netns del $ns1
+ mptcp_lib_cleanup
}
mptcp_lib_check_mptcp
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index ae8ad5d6fb9d..436500c55e12 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -34,6 +34,7 @@ cleanup()
for netns in "$ns1" "$ns2" "$ns3";do
ip netns del $netns
done
+ mptcp_lib_cleanup
}
mptcp_lib_check_mptcp
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 6167837f48e1..005251b61d7a 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -129,6 +129,7 @@ cleanup()
rm -rf $file $client_evts $server_evts
+ mptcp_lib_cleanup
_printf "Done\n"
}
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 10/21] selftests: mptcp: add mptcp_lib_check helper
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (8 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 09/21] selftests: mptcp: add mptcp_lib_cleanup Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 11/21] selftests: mptcp: dump userspace addrs list Geliang Tang
` (11 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Extract the main part of check() in pm_netlink.sh to a new function
mptcp_lib_check() in mptcp_lib.sh. And use mptcp_lib_print_ok() and
_err() in it to print test results with colors.
This helper will be used in mptcp_john.sh later.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_lib.sh | 27 +++++++++++++++++
.../testing/selftests/net/mptcp/pm_netlink.sh | 29 +++++--------------
2 files changed, 35 insertions(+), 21 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index cbaa55ab89b1..466fde97d3f4 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -300,7 +300,34 @@ mptcp_lib_wait_local_port_listen() {
done
}
+mptcp_lib_err=$(mktemp)
+
+mptcp_lib_check()
+{
+ local cmd="$1"
+ local expected="$2"
+ local msg="$3"
+ local out=`$cmd 2>$mptcp_lib_err`
+ local cmd_ret=$?
+
+ printf "%-42s" "$msg"
+ if [ $cmd_ret -ne 0 ]; then
+ mptcp_lib_print_err "[FAIL] command execution '$cmd' stderr "
+ cat $mptcp_lib_err
+ ret=1
+ return $cmd_ret
+ elif [ "$out" = "$expected" ]; then
+ mptcp_lib_print_ok "[ OK ]"
+ return 0
+ else
+ mptcp_lib_print_err "[FAIL] expected '$expected' got '$out'"
+ ret=1
+ return 1
+ fi
+}
+
mptcp_lib_cleanup()
{
echo "cleanup"
+ rm -f $mptcp_lib_err
}
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index fd413b4c8123..8d30d4a1db57 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -27,12 +27,10 @@ done
sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
-err=$(mktemp)
ret=0
cleanup()
{
- rm -f $err
ip netns del $ns1
mptcp_lib_cleanup
}
@@ -53,26 +51,15 @@ ip netns exec $ns1 sysctl -q net.mptcp.enabled=1
check()
{
- local cmd="$1"
- local expected="$2"
- local msg="$3"
- local out=`$cmd 2>$err`
- local cmd_ret=$?
-
- printf "%-50s" "$msg"
- if [ $cmd_ret -ne 0 ]; then
- echo "[FAIL] command execution '$cmd' stderr "
- cat $err
- mptcp_lib_result_fail "${msg} # error ${cmd_ret}"
- ret=1
- elif [ "$out" = "$expected" ]; then
- echo "[ OK ]"
- mptcp_lib_result_pass "${msg}"
+ # ${*} doesn't work here since there're spaces in some arguments.
+ mptcp_lib_check "${1}" "${2}" "${3}"
+ local rc=$?
+ if [ ${rc} -eq 0 ]; then
+ mptcp_lib_result_pass "${3}"
+ elif [ ${rc} -eq 1 ]; then
+ mptcp_lib_result_fail "${3} # different output"
else
- echo -n "[FAIL] "
- echo "expected '$expected' got '$out'"
- mptcp_lib_result_fail "${msg} # different output"
- ret=1
+ mptcp_lib_result_fail "${3} # error ${rc}"
fi
}
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 11/21] selftests: mptcp: dump userspace addrs list
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (9 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 10/21] selftests: mptcp: add mptcp_lib_check helper Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 12/21] mptcp: add a prefix for free_local_addr_list Geliang Tang
` (10 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch tests newly added dump command for the userspace PM. Add these
commands into userspace pm tests.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index a46515c198af..f5c51e74417d 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -3406,6 +3406,8 @@ userspace_tests()
local tests_pid=$!
wait_mpj $ns1
userspace_pm_add_addr $ns1 10.0.2.1 10
+ mptcp_lib_check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "id 10 flags signal 10.0.2.1" " dump addrs"
chk_join_nr 1 1 1
chk_add_nr 1 1
chk_mptcp_info subflows 1 subflows 1
@@ -3430,6 +3432,8 @@ userspace_tests()
local tests_pid=$!
wait_mpj $ns2
userspace_pm_add_sf $ns2 10.0.3.2 20
+ mptcp_lib_check "ip netns exec $ns2 ./pm_nl_ctl dump" \
+ "id 20 flags subflow 10.0.3.2" " dump addrs"
chk_join_nr 1 1 1
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 2 2
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 12/21] mptcp: add a prefix for free_local_addr_list
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (10 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 11/21] selftests: mptcp: dump userspace addrs list Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 13/21] mptcp: flush userspace pm addrs list Geliang Tang
` (9 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Same as other functions in pm_userspace.c, this patch renames
mptcp_free_local_addr_list() with the userspace pm prefix as
mptcp_userspace_pm_free_local_addr_list().
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 2 +-
net/mptcp/protocol.c | 2 +-
net/mptcp/protocol.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index de10be21bf26..70f6a510e3b4 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -7,7 +7,7 @@
#include "protocol.h"
#include "mib.h"
-void mptcp_free_local_addr_list(struct mptcp_sock *msk)
+void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk)
{
struct mptcp_pm_addr_entry *entry, *tmp;
struct sock *sk = (struct sock *)msk;
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 6956fde61c68..f2f0ce608219 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -3321,7 +3321,7 @@ void mptcp_destroy_common(struct mptcp_sock *msk, unsigned int flags)
WRITE_ONCE(msk->rmem_fwd_alloc, 0);
mptcp_token_destroy(msk);
mptcp_pm_free_anno_list(msk);
- mptcp_free_local_addr_list(msk);
+ mptcp_userspace_pm_free_local_addr_list(msk);
}
static void mptcp_destroy(struct sock *sk)
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index c30e59278080..76981adcac22 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -943,7 +943,7 @@ void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_list);
void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
struct list_head *rm_list);
-void mptcp_free_local_addr_list(struct mptcp_sock *msk);
+void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk);
void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk,
const struct sock *ssk, gfp_t gfp);
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 13/21] mptcp: flush userspace pm addrs list
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (11 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 12/21] mptcp: add a prefix for free_local_addr_list Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 14/21] selftests: mptcp: flush userspace " Geliang Tang
` (8 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new function mptcp_userspace_pm_flush_addrs_list()
to free the userspace local addresses list. Invoke it when flushing
addresses from netlink commands.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_netlink.c | 2 ++
net/mptcp/pm_userspace.c | 25 +++++++++++++++++++++++++
net/mptcp/protocol.h | 1 +
3 files changed, 28 insertions(+)
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 08b4211fbcbd..b7e4c8d21078 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1565,6 +1565,8 @@ int mptcp_pm_nl_flush_addrs_doit(struct sk_buff *skb, struct genl_info *info)
mptcp_nl_remove_addrs_list(sock_net(skb->sk), &free_list);
synchronize_rcu();
__flush_addrs(&free_list);
+
+ mptcp_userspace_pm_flush_addrs_list(sock_net(skb->sk));
return 0;
}
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 70f6a510e3b4..abcdc95e7bde 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -20,6 +20,8 @@ void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk)
list_splice_init(&msk->pm.userspace_pm_local_addr_list, &free_list);
spin_unlock_bh(&msk->pm.lock);
+ mptcp_pm_remove_addrs_and_subflows(msk, &free_list);
+
list_for_each_entry_safe(entry, tmp, &free_list, list) {
sock_kfree_s(sk, entry, sizeof(*entry));
}
@@ -580,3 +582,26 @@ __userspace_pm_lookup_addr_by_id(struct net *net, unsigned int id)
return entry;
}
+
+void mptcp_userspace_pm_flush_addrs_list(struct net *net)
+{
+ long s_slot = 0, s_num = 0;
+ struct mptcp_sock *msk;
+
+ while ((msk = mptcp_token_iter_next(net, &s_slot, &s_num)) != NULL) {
+ struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
+ struct sock *sk = (struct sock *)msk;
+
+ if (mptcp_pm_is_userspace(msk)) {
+ lock_sock(sk);
+ spin_lock_bh(&pernet->lock);
+ bitmap_zero(pernet->id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
+ spin_unlock_bh(&pernet->lock);
+ mptcp_userspace_pm_free_local_addr_list(msk);
+ release_sock(sk);
+ }
+
+ sock_put(sk);
+ cond_resched();
+ }
+}
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 76981adcac22..089fbebd21d3 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -944,6 +944,7 @@ void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
struct list_head *rm_list);
void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk);
+void mptcp_userspace_pm_flush_addrs_list(struct net *net);
void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk,
const struct sock *ssk, gfp_t gfp);
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 14/21] selftests: mptcp: flush userspace addrs list
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (12 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 13/21] mptcp: flush userspace pm addrs list Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 15/21] mptcp: add use_id parameter for addresses_equal Geliang Tang
` (7 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch tests newly added flush command for the userspace PM. Add this
command into userspace pm test.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index f5c51e74417d..a027cb229dbe 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -3461,6 +3461,10 @@ userspace_tests()
chk_join_nr 1 1 1
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 2 2
+ ip netns exec $ns2 ./pm_nl_ctl flush
+ mptcp_lib_check "ip netns exec $ns2 ./pm_nl_ctl dump" \
+ "" " dump addrs"
+ chk_rm_nr 0 1
kill_events_pids
wait $tests_pid
fi
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 15/21] mptcp: add use_id parameter for addresses_equal
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (13 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 14/21] selftests: mptcp: flush userspace " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 16/21] mptcp: add check_id for lookup_anno_list_by_saddr Geliang Tang
` (6 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new parameter use_id for mptcp_addresses_equal() to
test the address ids, as well as the address. This can be used to test
if the two given addresses are identically equal, they have both the
same address and the same address id.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm.c | 2 +-
net/mptcp/pm_netlink.c | 32 +++++++++++++++++++-------------
net/mptcp/pm_userspace.c | 4 ++--
net/mptcp/protocol.h | 3 ++-
4 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 48ff7ce20890..77a0e859076c 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -420,7 +420,7 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc)
*/
mptcp_local_address((struct sock_common *)msk, &msk_local);
mptcp_local_address((struct sock_common *)skc, &skc_local);
- if (mptcp_addresses_equal(&msk_local, &skc_local, false))
+ if (mptcp_addresses_equal(&msk_local, &skc_local, false, false))
return 0;
if (mptcp_pm_is_userspace(msk))
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index b7e4c8d21078..599137001148 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -47,7 +47,8 @@ pm_nl_get_pernet_from_msk(const struct mptcp_sock *msk)
EXPORT_SYMBOL_GPL(pm_nl_get_pernet_from_msk);
bool mptcp_addresses_equal(const struct mptcp_addr_info *a,
- const struct mptcp_addr_info *b, bool use_port)
+ const struct mptcp_addr_info *b,
+ bool use_port, bool use_id)
{
bool addr_equals = false;
@@ -68,10 +69,14 @@ bool mptcp_addresses_equal(const struct mptcp_addr_info *a,
if (!addr_equals)
return false;
- if (!use_port)
+ if (!use_port && !use_id)
return true;
- return a->port == b->port;
+ if (use_port && use_id)
+ return (a->port == b->port) && (a->id == b->id);
+ if (use_port)
+ return a->port == b->port;
+ return a->id == b->id;
}
void mptcp_local_address(const struct sock_common *skc, struct mptcp_addr_info *addr)
@@ -110,7 +115,7 @@ static bool lookup_subflow_by_saddr(const struct list_head *list,
skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow);
mptcp_local_address(skc, &cur);
- if (mptcp_addresses_equal(&cur, saddr, saddr->port))
+ if (mptcp_addresses_equal(&cur, saddr, saddr->port, false))
return true;
}
@@ -128,7 +133,7 @@ static bool lookup_subflow_by_daddr(const struct list_head *list,
skc = (struct sock_common *)mptcp_subflow_tcp_sock(subflow);
remote_address(skc, &cur);
- if (mptcp_addresses_equal(&cur, daddr, daddr->port))
+ if (mptcp_addresses_equal(&cur, daddr, daddr->port, false))
return true;
}
@@ -205,7 +210,7 @@ mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk,
lockdep_assert_held(&msk->pm.lock);
list_for_each_entry(entry, &msk->pm.anno_list, list) {
- if (mptcp_addresses_equal(&entry->addr, addr, true))
+ if (mptcp_addresses_equal(&entry->addr, addr, true, false))
return entry;
}
@@ -222,7 +227,7 @@ bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock *sk)
spin_lock_bh(&msk->pm.lock);
list_for_each_entry(entry, &msk->pm.anno_list, list) {
- if (mptcp_addresses_equal(&entry->addr, &saddr, true)) {
+ if (mptcp_addresses_equal(&entry->addr, &saddr, true, false)) {
ret = true;
goto out;
}
@@ -463,7 +468,7 @@ __lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *info)
struct mptcp_pm_addr_entry *entry;
list_for_each_entry(entry, &pernet->local_addr_list, list) {
- if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port))
+ if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port, false))
return entry;
}
return NULL;
@@ -704,12 +709,12 @@ int mptcp_pm_nl_mp_prio_send_ack(struct mptcp_sock *msk,
struct mptcp_addr_info local, remote;
mptcp_local_address((struct sock_common *)ssk, &local);
- if (!mptcp_addresses_equal(&local, addr, addr->port))
+ if (!mptcp_addresses_equal(&local, addr, addr->port, false))
continue;
if (rem && rem->family != AF_UNSPEC) {
remote_address((struct sock_common *)ssk, &remote);
- if (!mptcp_addresses_equal(&remote, rem, rem->port))
+ if (!mptcp_addresses_equal(&remote, rem, rem->port, false))
continue;
}
@@ -883,7 +888,8 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet,
entry->addr.port = 0;
list_for_each_entry(cur, &pernet->local_addr_list, list) {
if (mptcp_addresses_equal(&cur->addr, &entry->addr,
- cur->addr.port || entry->addr.port)) {
+ cur->addr.port || entry->addr.port,
+ false)) {
/* allow replacing the exiting endpoint only if such
* endpoint is an implicit one and the user-space
* did not provide an endpoint id
@@ -1021,7 +1027,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_info *skc
rcu_read_lock();
list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) {
- if (mptcp_addresses_equal(&entry->addr, skc, entry->addr.port)) {
+ if (mptcp_addresses_equal(&entry->addr, skc, entry->addr.port, false)) {
ret = entry->addr.id;
break;
}
@@ -1397,7 +1403,7 @@ static int mptcp_nl_remove_id_zero_address(struct net *net,
goto next;
mptcp_local_address((struct sock_common *)msk, &msk_local);
- if (!mptcp_addresses_equal(&msk_local, addr, addr->port))
+ if (!mptcp_addresses_equal(&msk_local, addr, addr->port, false))
goto next;
lock_sock(sk);
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index abcdc95e7bde..58e9ba51ad36 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -52,7 +52,7 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
spin_lock_bh(&msk->pm.lock);
list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) {
- addr_match = mptcp_addresses_equal(&e->addr, &entry->addr, true);
+ addr_match = mptcp_addresses_equal(&e->addr, &entry->addr, true, false);
if (addr_match && entry->addr.id == 0)
entry->addr.id = e->addr.id;
id_match = (e->addr.id == entry->addr.id);
@@ -103,7 +103,7 @@ static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
struct mptcp_pm_addr_entry *entry, *tmp;
list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
- if (mptcp_addresses_equal(&entry->addr, &addr->addr, false)) {
+ if (mptcp_addresses_equal(&entry->addr, &addr->addr, false, false)) {
/* TODO: a refcount is needed because the entry can
* be used multiple times (e.g. fullmesh mode).
*/
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 089fbebd21d3..e66b1fb7b522 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -645,7 +645,8 @@ void __mptcp_unaccepted_force_close(struct sock *sk);
void mptcp_set_owner_r(struct sk_buff *skb, struct sock *sk);
bool mptcp_addresses_equal(const struct mptcp_addr_info *a,
- const struct mptcp_addr_info *b, bool use_port);
+ const struct mptcp_addr_info *b,
+ bool use_port, bool use_id);
void mptcp_local_address(const struct sock_common *skc, struct mptcp_addr_info *addr);
/* called with sk socket lock held */
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 16/21] mptcp: add check_id for lookup_anno_list_by_saddr
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (14 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 15/21] mptcp: add use_id parameter for addresses_equal Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 17/21] mptcp: add userspace_pm_get_entry helper Geliang Tang
` (5 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Add a new parameter check_id for mptcp_lookup_anno_list_by_saddr(), and
pass it to mptcp_addresses_equal(). Then in mptcp_pm_del_add_timer(),
the input parameter check_id can be passed as the new parameter into
mptcp_lookup_anno_list_by_saddr(). After this, this condition:
(!check_id || entry->addr.id == addr->id)
can be dropped, only test if 'entry' is NULL is enough.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm.c | 2 +-
net/mptcp/pm_netlink.c | 13 +++++++------
net/mptcp/protocol.h | 3 ++-
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 77a0e859076c..d5ae2e775059 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -259,7 +259,7 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk,
spin_lock_bh(&pm->lock);
- if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pending))
+ if (mptcp_lookup_anno_list_by_saddr(msk, addr, false) && READ_ONCE(pm->work_pending))
mptcp_pm_schedule_work(msk, MPTCP_PM_SUBFLOW_ESTABLISHED);
spin_unlock_bh(&pm->lock);
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 599137001148..af915ba3dff5 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -203,14 +203,15 @@ bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk)
struct mptcp_pm_add_entry *
mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk,
- const struct mptcp_addr_info *addr)
+ const struct mptcp_addr_info *addr,
+ bool check_id)
{
struct mptcp_pm_add_entry *entry;
lockdep_assert_held(&msk->pm.lock);
list_for_each_entry(entry, &msk->pm.anno_list, list) {
- if (mptcp_addresses_equal(&entry->addr, addr, true, false))
+ if (mptcp_addresses_equal(&entry->addr, addr, true, check_id))
return entry;
}
@@ -290,12 +291,12 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk,
struct sock *sk = (struct sock *)msk;
spin_lock_bh(&msk->pm.lock);
- entry = mptcp_lookup_anno_list_by_saddr(msk, addr);
- if (entry && (!check_id || entry->addr.id == addr->id))
+ entry = mptcp_lookup_anno_list_by_saddr(msk, addr, check_id);
+ if (entry)
entry->retrans_times = ADD_ADDR_RETRANS_MAX;
spin_unlock_bh(&msk->pm.lock);
- if (entry && (!check_id || entry->addr.id == addr->id))
+ if (entry)
sk_stop_timer_sync(sk, &entry->add_timer);
return entry;
@@ -310,7 +311,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
lockdep_assert_held(&msk->pm.lock);
- add_entry = mptcp_lookup_anno_list_by_saddr(msk, addr);
+ add_entry = mptcp_lookup_anno_list_by_saddr(msk, addr, false);
if (add_entry) {
if (mptcp_pm_is_kernel(msk))
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index e66b1fb7b522..d0eb7b84a262 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -919,7 +919,8 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk,
const struct mptcp_addr_info *addr, bool check_id);
struct mptcp_pm_add_entry *
mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk,
- const struct mptcp_addr_info *addr);
+ const struct mptcp_addr_info *addr,
+ bool check_id);
int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
unsigned int id,
u8 *flags, int *ifindex);
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 17/21] mptcp: add userspace_pm_get_entry helper
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (15 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 16/21] mptcp: add check_id for lookup_anno_list_by_saddr Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 18/21] mptcp: drop addr_match and id_match Geliang Tang
` (4 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new helper mptcp_userspace_pm_get_entry() to find out
the address entry on the userspace_pm_local_addr_list through the given
address. Use this helper in mptcp_userspace_pm_delete_local_addr().
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 35 ++++++++++++++++++++++++-----------
1 file changed, 24 insertions(+), 11 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 58e9ba51ad36..71c47fca375c 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -39,6 +39,20 @@ mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int id)
return NULL;
}
+static struct mptcp_pm_addr_entry *mptcp_userspace_pm_get_entry(struct mptcp_sock *msk,
+ struct mptcp_addr_info *addr,
+ bool use_port, bool use_id)
+{
+ struct mptcp_pm_addr_entry *entry;
+
+ list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) {
+ if (mptcp_addresses_equal(&entry->addr, addr, use_port, use_id))
+ return entry;
+ }
+
+ return NULL;
+}
+
static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
struct mptcp_pm_addr_entry *entry)
{
@@ -100,18 +114,17 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
struct mptcp_pm_addr_entry *addr)
{
- struct mptcp_pm_addr_entry *entry, *tmp;
+ struct mptcp_pm_addr_entry *entry;
- list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
- if (mptcp_addresses_equal(&entry->addr, &addr->addr, false, false)) {
- /* TODO: a refcount is needed because the entry can
- * be used multiple times (e.g. fullmesh mode).
- */
- list_del_rcu(&entry->list);
- kfree(entry);
- msk->pm.local_addr_used--;
- return 0;
- }
+ entry = mptcp_userspace_pm_get_entry(msk, &addr->addr, false, false);
+ if (entry) {
+ /* TODO: a refcount is needed because the entry can
+ * be used multiple times (e.g. fullmesh mode).
+ */
+ list_del_rcu(&entry->list);
+ kfree(entry);
+ msk->pm.local_addr_used--;
+ return 0;
}
return -EINVAL;
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 18/21] mptcp: drop addr_match and id_match
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (16 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 17/21] mptcp: add userspace_pm_get_entry helper Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 19/21] mptcp: dup an entry when removing it Geliang Tang
` (3 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch uses the newly defined helper mptcp_userspace_pm_get_entry()
in mptcp_userspace_pm_append_new_local_addr(), and drop local variables
addr_match and id_match to simplify the code.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 26 ++++++++------------------
1 file changed, 8 insertions(+), 18 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 71c47fca375c..994f2bfd74be 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -59,26 +59,13 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
struct pm_nl_pernet *pernet = pm_nl_get_pernet_from_msk(msk);
struct mptcp_pm_addr_entry *match = NULL;
struct sock *sk = (struct sock *)msk;
- struct mptcp_pm_addr_entry *e;
- bool addr_match = false;
- bool id_match = false;
int ret = -EINVAL;
spin_lock_bh(&msk->pm.lock);
- list_for_each_entry(e, &msk->pm.userspace_pm_local_addr_list, list) {
- addr_match = mptcp_addresses_equal(&e->addr, &entry->addr, true, false);
- if (addr_match && entry->addr.id == 0)
- entry->addr.id = e->addr.id;
- id_match = (e->addr.id == entry->addr.id);
- if (addr_match && id_match) {
- match = e;
- break;
- } else if (addr_match || id_match) {
- break;
- }
- }
+ match = mptcp_userspace_pm_get_entry(msk, &entry->addr, true, entry->addr.id);
+ if (!match) {
+ struct mptcp_pm_addr_entry *e;
- if (!match && !addr_match && !id_match) {
/* Memory for the entry is allocated from the
* sock option buffer.
*/
@@ -97,10 +84,13 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list);
msk->pm.local_addr_used++;
ret = e->addr.id;
- } else if (match) {
- ret = entry->addr.id;
+ goto append_err;
}
+ if (entry->addr.id == 0)
+ entry->addr.id = match->addr.id;
+ ret = entry->addr.id;
+
append_err:
spin_unlock_bh(&msk->pm.lock);
return ret;
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 19/21] mptcp: dup an entry when removing it
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (17 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 18/21] mptcp: drop addr_match and id_match Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 20/21] mptcp: add userspace pm addr entry refcount Geliang Tang
` (2 subsequent siblings)
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
In some cases, the address entry doesn't need to be freed. This patch dups
an entry into the free_list to separate removing an address from freeing
an entry, so that the refcount of address entry can be added later.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 994f2bfd74be..e2f11e821214 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -303,10 +303,18 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct genl_info *info)
goto out;
}
- list_move(&match->list, &free_list);
+ entry = kmemdup(match, sizeof(*match), GFP_ATOMIC);
+ if (!entry) {
+ err = -ENOMEM;
+ goto out;
+ }
+ list_add(&entry->list, &free_list);
mptcp_pm_remove_addrs(msk, &free_list);
+ list_del_rcu(&match->list);
+ kfree(match);
+
release_sock(sk);
list_for_each_entry_safe(match, entry, &free_list, list) {
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 20/21] mptcp: add userspace pm addr entry refcount
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (18 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 19/21] mptcp: dup an entry when removing it Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 21/21] selftests: mptcp: rm userspace addr with random order Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
21 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds the refcount of addree entry in userspace PM. Add a new
counter 'refcnt' in struct mptcp_pm_addr_entry, initiated to 1.
Increase this counter when an address is announced or a subflow is created
in mptcp_pm_nl_announce_doit() and mptcp_pm_nl_subflow_create_doit(). And
decrease it when an address is removed or a subflow is closed in
mptcp_pm_nl_remove_doit() and mptcp_userspace_pm_delete_local_addr(). If
the counter reaches to 1, free this entry.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/403
Fixes: 24430f8bf516 ("mptcp: add address into userspace pm list")
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 33 +++++++++++++++++++++++----------
net/mptcp/protocol.h | 2 ++
2 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index e2f11e821214..65b99c9f2a57 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -83,6 +83,7 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
__set_bit(e->addr.id, pernet->id_bitmap);
list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list);
msk->pm.local_addr_used++;
+ refcount_set(&e->refcnt, 1);
ret = e->addr.id;
goto append_err;
}
@@ -108,12 +109,11 @@ static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
entry = mptcp_userspace_pm_get_entry(msk, &addr->addr, false, false);
if (entry) {
- /* TODO: a refcount is needed because the entry can
- * be used multiple times (e.g. fullmesh mode).
- */
- list_del_rcu(&entry->list);
- kfree(entry);
- msk->pm.local_addr_used--;
+ if (!refcount_dec_not_one(&entry->refcnt)) {
+ list_del_rcu(&entry->list);
+ kfree(entry);
+ msk->pm.local_addr_used--;
+ }
return 0;
}
@@ -207,6 +207,11 @@ int mptcp_pm_nl_announce_doit(struct sk_buff *skb, struct genl_info *info)
spin_lock_bh(&msk->pm.lock);
if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) {
+ struct mptcp_pm_addr_entry *entry;
+
+ entry = mptcp_userspace_pm_get_entry(msk, &addr_val.addr, false, false);
+ if (entry && !refcount_inc_not_zero(&entry->refcnt))
+ pr_debug("userspace pm uninitialized entry");
msk->pm.add_addr_signaled++;
mptcp_pm_announce_addr(msk, &addr_val.addr, false);
mptcp_pm_nl_addr_send_ack(msk);
@@ -312,8 +317,10 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct genl_info *info)
mptcp_pm_remove_addrs(msk, &free_list);
- list_del_rcu(&match->list);
- kfree(match);
+ if (!refcount_dec_not_one(&match->refcnt)) {
+ list_del_rcu(&match->list);
+ kfree(match);
+ }
release_sock(sk);
@@ -398,10 +405,16 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb, struct genl_info *info)
release_sock(sk);
spin_lock_bh(&msk->pm.lock);
- if (err)
+ if (err) {
mptcp_userspace_pm_delete_local_addr(msk, &local);
- else
+ } else {
+ struct mptcp_pm_addr_entry *entry;
+
+ entry = mptcp_userspace_pm_get_entry(msk, &addr_l, false, false);
+ if (entry && !refcount_inc_not_zero(&entry->refcnt))
+ pr_debug("userspace pm uninitialized entry");
msk->pm.subflows++;
+ }
spin_unlock_bh(&msk->pm.lock);
create_err:
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index d0eb7b84a262..3093766dd224 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -8,6 +8,7 @@
#define __MPTCP_PROTOCOL_H
#include <linux/random.h>
+#include <linux/refcount.h>
#include <net/tcp.h>
#include <net/inet_connection_sock.h>
#include <uapi/linux/mptcp.h>
@@ -244,6 +245,7 @@ struct mptcp_pm_addr_entry {
u8 flags;
int ifindex;
struct socket *lsk;
+ refcount_t refcnt;
};
struct mptcp_data_frag {
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v9 21/21] selftests: mptcp: rm userspace addr with random order
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (19 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 20/21] mptcp: add userspace pm addr entry refcount Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 7:43 ` selftests: mptcp: rm userspace addr with random order: Tests Results MPTCP CI
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
21 siblings, 1 reply; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Previously, when deleting a userspace address and subflow, it was necessary
to follow the current order of deleting the address and then deleting the
subflow. With this series of changes, addresses and subflows can be deleted
in any order. This patch uses random numbers to add this type of tests.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index a027cb229dbe..24a55f7622f3 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -3413,8 +3413,13 @@ userspace_tests()
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 2 2
chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
- userspace_pm_rm_addr $ns1 10
- userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED
+ local rm_addr="userspace_pm_rm_addr $ns1 10"
+ local rm_sf="userspace_pm_rm_sf $ns1 ::ffff:10.0.2.1 $SUB_ESTABLISHED"
+ if [ $((RANDOM%2)) -eq 0 ]; then
+ $($rm_addr); $($rm_sf)
+ else
+ $($rm_sf); $($rm_addr)
+ fi
chk_rm_nr 1 1 invert
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
` (20 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v9 21/21] selftests: mptcp: rm userspace addr with random order Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 01/32] selftests: mptcp: add mptcp_lib_evts_* helpers Geliang Tang
` (31 more replies)
21 siblings, 32 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This series includes three parts:
Part 1: add more helpers in mptcp_lib.sh (patches 1-11)
selftests: mptcp: add mptcp_lib_evts_* helpers
selftests: mptcp: capitalize test_name
selftests: mptcp: userspace: print colored output
selftests: mptcp: capitalize ok/fail/skip
selftests: mptcp: netlink: drop duplicate var ret
selftests: mptcp: export ret into mptcp_lib
selftests: mptcp: extract mptcp_lib_check_expected
selftests: mptcp: export event macros in mptcp_lib
selftests: mptcp: add mptcp_lib_verify_listener_events
selftests: mptcp: unify namespace names
selftests: mptcp: add mptcp_lib_ns_* helpers
Part 2: print colored output and test counters (patches 12-24)
selftests: mptcp: diag: print colored output
selftests: mptcp: connect: print colored output
selftests: mptcp: sockopt: print every test result
selftests: mptcp: sockopt: print colored output
selftests: mptcp: simult_flows: print colored output
selftests: mptcp: add PORT instead of TEST_COUNT
selftests: mptcp: connect: print out test counter
selftests: mptcp: rename test_cnt to TEST_COUNT
selftests: mptcp: diag: print out test counter
selftests: mptcp: simult_flows: print out test counter
selftests: mptcp: sockopt: print out test counter
selftests: mptcp: netlink: print out test counter
selftests: mptcp: userspace: print out test counter
Part 3: add more vars in mptcp_lib.sh (patches 25-32)
selftests: mptcp: export TEST_NAME/COUNT to mptcp_lib
selftests: mptcp: export cin/cout/sin/sout vars
selftests: mptcp: change capture/checksum as bool
selftests: mptcp: export capture/checksum vars
selftests: mptcp: change timeout_poll to 30 in diag
selftests: mptcp: export timeout_test to mptcp_lib
selftests: mptcp: use KSFT_SKIP instead ksft_skip
selftests: mptcp: netlink: fix positions of newline
v2:
- add more patches.
Geliang Tang (32):
selftests: mptcp: add mptcp_lib_evts_* helpers
selftests: mptcp: capitalize test_name
selftests: mptcp: userspace: print colored output
selftests: mptcp: capitalize ok/fail/skip
selftests: mptcp: netlink: drop duplicate var ret
selftests: mptcp: export ret into mptcp_lib
selftests: mptcp: extract mptcp_lib_check_expected
selftests: mptcp: export event macros in mptcp_lib
selftests: mptcp: add mptcp_lib_verify_listener_events
selftests: mptcp: unify namespace names
selftests: mptcp: add mptcp_lib_ns_* helpers
selftests: mptcp: diag: print colored output
selftests: mptcp: connect: print colored output
selftests: mptcp: sockopt: print every test result
selftests: mptcp: sockopt: print colored output
selftests: mptcp: simult_flows: print colored output
selftests: mptcp: add PORT instead of TEST_COUNT
selftests: mptcp: connect: print out test counter
selftests: mptcp: rename test_cnt to TEST_COUNT
selftests: mptcp: diag: print out test counter
selftests: mptcp: simult_flows: print out test counter
selftests: mptcp: sockopt: print out test counter
selftests: mptcp: netlink: print out test counter
selftests: mptcp: userspace: print out test counter
selftests: mptcp: export TEST_NAME/COUNT to mptcp_lib
selftests: mptcp: export cin/cout/sin/sout vars
selftests: mptcp: change capture/checksum as bool
selftests: mptcp: export capture/checksum vars
selftests: mptcp: change timeout_poll to 30 in diag
selftests: mptcp: export timeout_test to mptcp_lib
selftests: mptcp: use KSFT_SKIP instead ksft_skip
selftests: mptcp: netlink: fix positions of newline
tools/testing/selftests/net/mptcp/diag.sh | 81 ++++----
.../selftests/net/mptcp/mptcp_connect.sh | 82 +++-----
.../testing/selftests/net/mptcp/mptcp_join.sh | 172 +++++----------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 188 +++++++++++++++++
.../selftests/net/mptcp/mptcp_sockopt.sh | 64 +++---
.../testing/selftests/net/mptcp/pm_netlink.sh | 95 ++++-----
.../selftests/net/mptcp/simult_flows.sh | 41 +---
.../selftests/net/mptcp/userspace_pm.sh | 196 +++++-------------
8 files changed, 438 insertions(+), 481 deletions(-)
--
2.35.3
^ permalink raw reply [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 01/32] selftests: mptcp: add mptcp_lib_evts_* helpers
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 02/32] selftests: mptcp: capitalize test_name Geliang Tang
` (30 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
To avoid duplicated code in different MPTCP selftests, we can add and
use helpers defined in mptcp_lib.sh.
This patch unifies "pm_nl_ctl events" related code in userspace_pm.sh
and mptcp_join.sh into four helpers: mptcp_lib_evts_init(), _start(),
_kill() and _remove(). Define them in mptcp_lib.sh and use these new
helpers in both scripts.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 54 ++++++----------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 63 +++++++++++++++++++
.../selftests/net/mptcp/userspace_pm.sh | 31 ++-------
3 files changed, 88 insertions(+), 60 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 24a55f7622f3..42f3e49db74e 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -35,10 +35,6 @@ ip_mptcp=0
check_invert=0
validate_checksum=0
init=0
-evts_ns1=""
-evts_ns2=""
-evts_ns1_pid=0
-evts_ns2_pid=0
last_test_failed=0
last_test_skipped=0
last_test_ignored=1
@@ -182,8 +178,7 @@ init() {
cin=$(mktemp)
cinsent=$(mktemp)
cout=$(mktemp)
- evts_ns1=$(mktemp)
- evts_ns2=$(mktemp)
+ mptcp_lib_evts_init
trap cleanup EXIT
@@ -196,7 +191,7 @@ cleanup()
rm -f "$cin" "$cout" "$sinfail"
rm -f "$sin" "$sout" "$cinsent" "$cinfail"
rm -f "$tmpfile"
- rm -rf $evts_ns1 $evts_ns2
+ mptcp_lib_evts_remove
cleanup_partial
mptcp_lib_cleanup
}
@@ -461,12 +456,7 @@ reset_with_events()
{
reset "${1}" || return 1
- :> "$evts_ns1"
- :> "$evts_ns2"
- ip netns exec $ns1 ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
- evts_ns1_pid=$!
- ip netns exec $ns2 ./pm_nl_ctl events >> "$evts_ns2" 2>&1 &
- evts_ns2_pid=$!
+ mptcp_lib_evts_start "${ns1}" "${ns2}"
}
reset_with_tcp_filter()
@@ -636,12 +626,6 @@ wait_mpj()
done
}
-kill_events_pids()
-{
- mptcp_lib_kill_wait $evts_ns1_pid
- mptcp_lib_kill_wait $evts_ns2_pid
-}
-
kill_tests_wait()
{
#shellcheck disable=SC2046
@@ -2883,9 +2867,9 @@ add_addr_ports_tests()
chk_add_nr 1 1 1
chk_rm_nr 1 1 invert
- verify_listener_events $evts_ns1 $LISTENER_CREATED $AF_INET 10.0.2.1 10100
- verify_listener_events $evts_ns1 $LISTENER_CLOSED $AF_INET 10.0.2.1 10100
- kill_events_pids
+ verify_listener_events $server_evts $LISTENER_CREATED $AF_INET 10.0.2.1 10100
+ verify_listener_events $server_evts $LISTENER_CLOSED $AF_INET 10.0.2.1 10100
+ mptcp_lib_evts_kill
fi
# subflow and signal with port, remove
@@ -3258,10 +3242,10 @@ fail_tests()
# $1: ns ; $2: addr ; $3: id
userspace_pm_add_addr()
{
- local evts=$evts_ns1
+ local evts=$server_evts
local tk
- [ "$1" == "$ns2" ] && evts=$evts_ns2
+ [ "$1" == "$ns2" ] && evts=$client_evts
tk=$(mptcp_lib_evts_get_info token "$evts")
ip netns exec $1 ./pm_nl_ctl ann $2 token $tk id $3
@@ -3271,11 +3255,11 @@ userspace_pm_add_addr()
# $1: ns ; $2: id
userspace_pm_rm_addr()
{
- local evts=$evts_ns1
+ local evts=$server_evts
local tk
local cnt
- [ "$1" == "$ns2" ] && evts=$evts_ns2
+ [ "$1" == "$ns2" ] && evts=$client_evts
tk=$(mptcp_lib_evts_get_info token "$evts")
cnt=$(rm_addr_count ${1})
@@ -3286,10 +3270,10 @@ userspace_pm_rm_addr()
# $1: ns ; $2: addr ; $3: id
userspace_pm_add_sf()
{
- local evts=$evts_ns1
+ local evts=$server_evts
local tk da dp
- [ "$1" == "$ns2" ] && evts=$evts_ns2
+ [ "$1" == "$ns2" ] && evts=$client_evts
tk=$(mptcp_lib_evts_get_info token "$evts")
da=$(mptcp_lib_evts_get_info daddr4 "$evts")
dp=$(mptcp_lib_evts_get_info dport "$evts")
@@ -3302,13 +3286,13 @@ userspace_pm_add_sf()
# $1: ns ; $2: addr $3: event type
userspace_pm_rm_sf()
{
- local evts=$evts_ns1
+ local evts=$server_evts
local t=${3:-1}
local ip=4
local tk da dp sp
local cnt
- [ "$1" == "$ns2" ] && evts=$evts_ns2
+ [ "$1" == "$ns2" ] && evts=$client_evts
if mptcp_lib_is_v6 $2; then ip=6; fi
tk=$(mptcp_lib_evts_get_info token "$evts")
da=$(mptcp_lib_evts_get_info "daddr$ip" "$evts" $t)
@@ -3423,7 +3407,7 @@ userspace_tests()
chk_rm_nr 1 1 invert
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
- kill_events_pids
+ mptcp_lib_evts_kill
wait $tests_pid
fi
@@ -3447,7 +3431,7 @@ userspace_tests()
chk_rm_nr 1 1
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
- kill_events_pids
+ mptcp_lib_evts_kill
wait $tests_pid
fi
@@ -3470,7 +3454,7 @@ userspace_tests()
mptcp_lib_check "ip netns exec $ns2 ./pm_nl_ctl dump" \
"" " dump addrs"
chk_rm_nr 0 1
- kill_events_pids
+ mptcp_lib_evts_kill
wait $tests_pid
fi
@@ -3494,7 +3478,7 @@ userspace_tests()
chk_rst_nr 0 0 invert
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 1 1
- kill_events_pids
+ mptcp_lib_evts_kill
wait $tests_pid
fi
@@ -3520,7 +3504,7 @@ userspace_tests()
chk_rst_nr 0 0 invert
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 1 1
- kill_events_pids
+ mptcp_lib_evts_kill
wait $tests_pid
fi
}
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 466fde97d3f4..4f741725436c 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -326,6 +326,69 @@ mptcp_lib_check()
fi
}
+server_evts=""
+client_evts=""
+server_evts_pid=0
+client_evts_pid=0
+
+# server_evts(_pid) and client_evts(_pid) are needed
+# by mptcp_lib_evts_init, _start, _kill and _remove.
+mptcp_lib_evts_init() {
+ : "${server_evts?}"
+ : "${client_evts?}"
+
+ if [ -z "${server_evts}" ]; then
+ server_evts=$(mktemp)
+ fi
+ if [ -z "${client_evts}" ]; then
+ client_evts=$(mktemp)
+ fi
+}
+
+# $1 ns1, $2 ns2
+mptcp_lib_evts_start() {
+ : "${server_evts:?}"
+ : "${client_evts:?}"
+ : "${server_evts_pid:?}"
+ : "${client_evts_pid:?}"
+
+ local ns_1="${1}"
+ local ns_2="${2}"
+
+ :>"$server_evts"
+ :>"$client_evts"
+
+ if [ "${server_evts_pid}" -ne 0 ]; then
+ mptcp_lib_kill_wait "${server_evts_pid}"
+ fi
+ ip netns exec "${ns_1}" ./pm_nl_ctl events >> "${server_evts}" 2>&1 &
+ server_evts_pid=$!
+
+ if [ "${client_evts_pid}" -ne 0 ]; then
+ mptcp_lib_kill_wait "${client_evts_pid}"
+ fi
+ ip netns exec "${ns_2}" ./pm_nl_ctl events >> "${client_evts}" 2>&1 &
+ client_evts_pid=$!
+}
+
+mptcp_lib_evts_kill() {
+ : "${server_evts_pid:?}"
+ : "${client_evts_pid:?}"
+
+ mptcp_lib_kill_wait "${server_evts_pid}"
+ mptcp_lib_kill_wait "${client_evts_pid}"
+
+ server_evts_pid=0
+ client_evts_pid=0
+}
+
+mptcp_lib_evts_remove() {
+ : "${server_evts:?}"
+ : "${client_evts:?}"
+
+ rm -rf "${server_evts}" "${client_evts}"
+}
+
mptcp_lib_cleanup()
{
echo "cleanup"
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 005251b61d7a..55ed3ea0a691 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -34,10 +34,6 @@ AF_INET=2
AF_INET6=10
file=""
-server_evts=""
-client_evts=""
-server_evts_pid=0
-client_evts_pid=0
client4_pid=0
server4_pid=0
client6_pid=0
@@ -116,18 +112,19 @@ cleanup()
# Terminate the MPTCP connection and related processes
local pid
- for pid in $client4_pid $server4_pid $client6_pid $server6_pid\
- $server_evts_pid $client_evts_pid
+ for pid in $client4_pid $server4_pid $client6_pid $server6_pid
do
mptcp_lib_kill_wait $pid
done
+ mptcp_lib_evts_kill
local netns
for netns in "$ns1" "$ns2" ;do
ip netns del "$netns"
done
- rm -rf $file $client_evts $server_evts
+ rm -rf $file
+ mptcp_lib_evts_remove
mptcp_lib_cleanup
_printf "Done\n"
@@ -187,24 +184,8 @@ make_connection()
# Capture netlink events over the two network namespaces running
# the MPTCP client and server
- if [ -z "$client_evts" ]; then
- client_evts=$(mktemp)
- fi
- :>"$client_evts"
- if [ $client_evts_pid -ne 0 ]; then
- mptcp_lib_kill_wait $client_evts_pid
- fi
- ip netns exec "$ns2" ./pm_nl_ctl events >> "$client_evts" 2>&1 &
- client_evts_pid=$!
- if [ -z "$server_evts" ]; then
- server_evts=$(mktemp)
- fi
- :>"$server_evts"
- if [ $server_evts_pid -ne 0 ]; then
- mptcp_lib_kill_wait $server_evts_pid
- fi
- ip netns exec "$ns1" ./pm_nl_ctl events >> "$server_evts" 2>&1 &
- server_evts_pid=$!
+ mptcp_lib_evts_init
+ mptcp_lib_evts_start "${ns1}" "${ns2}"
sleep 0.5
# Run the server
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 02/32] selftests: mptcp: capitalize test_name
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 01/32] selftests: mptcp: add mptcp_lib_evts_* helpers Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 03/32] selftests: mptcp: userspace: print colored output Geliang Tang
` (29 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Most scripts use uppercase variable TEST_NAME, but lowercase one are
used in userspace_pm.sh. To maintain consistency with other scripts,
this patch renames variable test_name to TEST_NAME:
test_name -> TEST_NAME in userspace_pm.sh
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/userspace_pm.sh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 55ed3ea0a691..f1d5cd4ab95a 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -55,7 +55,7 @@ rndh=$(printf %x "$sec")-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
ns2="ns2-$rndh"
ret=0
-test_name=""
+TEST_NAME=""
_printf() {
stdbuf -o0 -e0 printf "${@}"
@@ -69,9 +69,9 @@ print_title()
# $1: test name
print_test()
{
- test_name="${1}"
+ TEST_NAME="${1}"
- _printf "%-63s" "${test_name}"
+ _printf "%-63s" "${TEST_NAME}"
}
print_results()
@@ -82,13 +82,13 @@ print_results()
test_pass()
{
print_results " OK "
- mptcp_lib_result_pass "${test_name}"
+ mptcp_lib_result_pass "${TEST_NAME}"
}
test_skip()
{
print_results "SKIP"
- mptcp_lib_result_skip "${test_name}"
+ mptcp_lib_result_skip "${TEST_NAME}"
}
# $1: msg
@@ -101,7 +101,7 @@ test_fail()
_printf "\t%s\n" "${1}"
fi
- mptcp_lib_result_fail "${test_name}"
+ mptcp_lib_result_fail "${TEST_NAME}"
}
# This function is used in the cleanup trap
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 03/32] selftests: mptcp: userspace: print colored output
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 01/32] selftests: mptcp: add mptcp_lib_evts_* helpers Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 02/32] selftests: mptcp: capitalize test_name Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 04/32] selftests: mptcp: capitalize ok/fail/skip Geliang Tang
` (28 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Matthieu Baerts
The helper mptcp_lib_verify_listener_events() will be added latter in
mptcp_lib.sh, and be used by mptcp_join.sh and userspace_pm.sh. The
former prints colored output while the latter is not. It makes sense
to unify them.
Use mptcp_lib_print_ok(), _warn() and _err() to instead print_results()
in test_pass(), _skip() and _fail(), and use mptcp_lib_print_info() to
instead _printf() in print_title() to print test results with colors
in userspace_pm.sh.
Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/userspace_pm.sh | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index f1d5cd4ab95a..0614611b7821 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -63,7 +63,7 @@ _printf() {
print_title()
{
- _printf "INFO: %s\n" "${1}"
+ mptcp_lib_print_info "INFO: ${1}"
}
# $1: test name
@@ -74,27 +74,22 @@ print_test()
_printf "%-63s" "${TEST_NAME}"
}
-print_results()
-{
- _printf "[%s]\n" "${1}"
-}
-
test_pass()
{
- print_results " OK "
+ mptcp_lib_print_ok "[ OK ]${1:+ ${*}}"
mptcp_lib_result_pass "${TEST_NAME}"
}
test_skip()
{
- print_results "SKIP"
+ mptcp_lib_print_warn "[SKIP]${1:+ ${*}}"
mptcp_lib_result_skip "${TEST_NAME}"
}
# $1: msg
test_fail()
{
- print_results "FAIL"
+ mptcp_lib_print_err "[FAIL]${1:+ ${*}}"
ret=1
if [ -n "${1}" ]; then
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 04/32] selftests: mptcp: capitalize ok/fail/skip
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (2 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 03/32] selftests: mptcp: userspace: print colored output Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 05/32] selftests: mptcp: netlink: drop duplicate var ret Geliang Tang
` (27 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Most scripts print uppercase [ OK ], [ FAIL ] and [ SKIP ] as test results,
but lowercase ones are used in diag.sh, mptcp_join.sh and simult_flows.sh.
To maintain consistency with other scripts, this patch capitalizes these
lowercase [ ok ], [ fail ] and [ skip ]:
[ ok ] -> [ OK ] in diag.sh, mptcp_join.sh
[ fail ] -> [ FAIL ] in diag.sh, mptcp_join.sh, simult_flows.sh
[ skip ] -> [ SKIP ] in diag.sh, mptcp_join.sh
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 12 ++++++------
tools/testing/selftests/net/mptcp/mptcp_join.sh | 6 +++---
tools/testing/selftests/net/mptcp/simult_flows.sh | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index a678ee21973b..ab62737bd501 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -65,15 +65,15 @@ __chk_nr()
printf "%-50s" "$msg"
if [ $nr != $expected ]; then
if [ $nr = "$skip" ] && ! mptcp_lib_expect_all_features; then
- echo "[ skip ] Feature probably not supported"
+ echo "[ SKIP ] Feature probably not supported"
mptcp_lib_result_skip "${msg}"
else
- echo "[ fail ] expected $expected found $nr"
+ echo "[ FAIL ] expected $expected found $nr"
mptcp_lib_result_fail "${msg}"
ret=$test_cnt
fi
else
- echo "[ ok ]"
+ echo "[ OK ]"
mptcp_lib_result_pass "${msg}"
fi
test_cnt=$((test_cnt+1))
@@ -114,15 +114,15 @@ wait_msk_nr()
printf "%-50s" "$msg"
if [ $i -ge $timeout ]; then
- echo "[ fail ] timeout while expecting $expected max $max last $nr"
+ echo "[ FAIL ] timeout while expecting $expected max $max last $nr"
mptcp_lib_result_fail "${msg} # timeout"
ret=$test_cnt
elif [ $nr != $expected ]; then
- echo "[ fail ] expected $expected found $nr"
+ echo "[ FAIL ] expected $expected found $nr"
mptcp_lib_result_fail "${msg} # unexpected result"
ret=$test_cnt
else
- echo "[ ok ]"
+ echo "[ OK ]"
mptcp_lib_result_pass "${msg}"
fi
test_cnt=$((test_cnt+1))
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 42f3e49db74e..c5cdb8b1643b 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -216,17 +216,17 @@ print_info()
print_ok()
{
- mptcp_lib_print_ok "[ ok ]${1:+ ${*}}"
+ mptcp_lib_print_ok "[ OK ]${1:+ ${*}}"
}
print_fail()
{
- mptcp_lib_print_err "[fail]${1:+ ${*}}"
+ mptcp_lib_print_err "[FAIL]${1:+ ${*}}"
}
print_skip()
{
- mptcp_lib_print_warn "[skip]${1:+ ${*}}"
+ mptcp_lib_print_warn "[SKIP]${1:+ ${*}}"
}
# [ $1: fail msg ]
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 436500c55e12..23f5bc0aeaf2 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -195,7 +195,7 @@ do_transfer()
return 0
fi
- echo " [ fail ]"
+ echo " [ FAIL ]"
echo "client exit code $retc, server $rets" 1>&2
echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 05/32] selftests: mptcp: netlink: drop duplicate var ret
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (3 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 04/32] selftests: mptcp: capitalize ok/fail/skip Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 06/32] selftests: mptcp: export ret into mptcp_lib Geliang Tang
` (26 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
The variable 'ret' are defined twice in pm_netlink.sh. This patch drops
this duplicate one.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/pm_netlink.sh | 1 -
1 file changed, 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 8d30d4a1db57..e995dfca52cc 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -27,7 +27,6 @@ done
sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
-ret=0
cleanup()
{
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 06/32] selftests: mptcp: export ret into mptcp_lib
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (4 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 05/32] selftests: mptcp: netlink: drop duplicate var ret Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 07/32] selftests: mptcp: extract mptcp_lib_check_expected Geliang Tang
` (25 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
The variable 'ret' has been defined in every script. This patch moves it
into mptcp_lib.sh as a public variable.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 1 -
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 1 -
tools/testing/selftests/net/mptcp/mptcp_join.sh | 1 -
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 2 ++
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 1 -
tools/testing/selftests/net/mptcp/pm_netlink.sh | 1 -
tools/testing/selftests/net/mptcp/simult_flows.sh | 1 -
tools/testing/selftests/net/mptcp/userspace_pm.sh | 1 -
8 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index ab62737bd501..300aec419dd6 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -10,7 +10,6 @@ ksft_skip=4
test_cnt=1
timeout_poll=100
timeout_test=$((timeout_poll * 2 + 1))
-ret=0
flush_pids()
{
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 98f4e82789ba..5e28292e1889 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -6,7 +6,6 @@
time_start=$(date +%s)
optstring="S:R:d:e:l:r:h4cm:f:tC"
-ret=0
final_ret=0
sin=""
sout=""
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index c5cdb8b1643b..1ba49a668eb1 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -12,7 +12,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-ret=0
sin=""
sinfail=""
sout=""
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 4f741725436c..88ea621e7df5 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -8,6 +8,8 @@ readonly KSFT_SKIP=4
# shellcheck disable=SC2155 # declare and assign separately
readonly KSFT_TEST=$(basename "${0}" | sed 's/\.sh$//g')
+ret=0
+
MPTCP_LIB_SUBTESTS=()
# only if supported (or forced) and not disabled, see no-color.org
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 75d8c648f9de..45e5b5810a6a 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -3,7 +3,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-ret=0
sin=""
sout=""
cin=""
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index e995dfca52cc..75c7594dbd71 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -4,7 +4,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
ksft_skip=4
-ret=0
usage() {
echo "Usage: $0 [ -h ]"
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 23f5bc0aeaf2..3536c7160ce5 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -13,7 +13,6 @@ ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
test_cnt=1
-ret=0
bail=0
slack=50
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 0614611b7821..7de2ca99edbd 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -54,7 +54,6 @@ sec=$(date +%s)
rndh=$(printf %x "$sec")-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
ns2="ns2-$rndh"
-ret=0
TEST_NAME=""
_printf() {
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 07/32] selftests: mptcp: extract mptcp_lib_check_expected
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (5 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 06/32] selftests: mptcp: export ret into mptcp_lib Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 08/32] selftests: mptcp: export event macros in mptcp_lib Geliang Tang
` (24 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Extract the main part of check_expected() in userspace_pm.sh to a new
function mptcp_lib_check_expected() in mptcp_lib.sh. It will be used
in both mptcp_john.sh and userspace_pm.sh.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_lib.sh | 42 +++++++++++++++++++
.../selftests/net/mptcp/userspace_pm.sh | 41 +++---------------
2 files changed, 47 insertions(+), 36 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 88ea621e7df5..3d23783dc307 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -391,6 +391,48 @@ mptcp_lib_evts_remove() {
rm -rf "${server_evts}" "${client_evts}"
}
+# $1: var name ; $2: prev ret
+mptcp_lib_check_expected_one()
+{
+ local var="${1}"
+ local exp="e_${var}"
+ local prev_ret="${2}"
+
+ if [ "${!var}" = "${!exp}" ]
+ then
+ return 0
+ fi
+
+ if [ "${prev_ret}" = "0" ]
+ then
+ ret=1
+ fi
+
+ printf "\tExpected value for '%s': '%s', got '%s'.\n" \
+ "${var}" "${!exp}" "${!var}"
+ return 1
+}
+
+# $@: all var names to check
+mptcp_lib_check_expected()
+{
+ local rc=0
+ local var
+
+ for var in "${@}"
+ do
+ mptcp_lib_check_expected_one "${var}" "${rc}" || rc=1
+ done
+
+ if [ ${rc} -eq 0 ]
+ then
+ mptcp_lib_print_ok "[ OK ]"
+ return 0
+ fi
+
+ return 1
+}
+
mptcp_lib_cleanup()
{
echo "cleanup"
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 7de2ca99edbd..a85eb83a61f8 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -237,46 +237,15 @@ make_connection()
fi
}
-# $1: var name ; $2: prev ret
-check_expected_one()
-{
- local var="${1}"
- local exp="e_${var}"
- local prev_ret="${2}"
-
- if [ "${!var}" = "${!exp}" ]
- then
- return 0
- fi
-
- if [ "${prev_ret}" = "0" ]
- then
- test_fail
- fi
-
- _printf "\tExpected value for '%s': '%s', got '%s'.\n" \
- "${var}" "${!exp}" "${!var}"
- return 1
-}
-
# $@: all var names to check
check_expected()
{
- local rc=0
- local var
-
- for var in "${@}"
- do
- check_expected_one "${var}" "${rc}" || rc=1
- done
-
- if [ ${rc} -eq 0 ]
- then
- test_pass
- return 0
+ mptcp_lib_check_expected ${*}
+ if [ $? -eq 0 ]; then
+ mptcp_lib_result_pass "${TEST_NAME}"
+ else
+ test_fail
fi
-
- return 1
}
verify_announce_event()
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 08/32] selftests: mptcp: export event macros in mptcp_lib
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (6 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 07/32] selftests: mptcp: extract mptcp_lib_check_expected Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 09/32] selftests: mptcp: add mptcp_lib_verify_listener_events Geliang Tang
` (23 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
SUB_ESTABLISHED, LISTENER_CREATED, LISTENER_CLOSED, AF_INET and AF_INET6
are defined in both mptcp_join.sh and userspace_pm.sh, export them into
mptcp_lib.sh. Add MPTCP_LIB_ prefix for the first three and add readonly
for the last two.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 21 +++----
.../testing/selftests/net/mptcp/mptcp_lib.sh | 7 +++
.../selftests/net/mptcp/userspace_pm.sh | 56 +++++++++----------
3 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 1ba49a668eb1..1c3df7831855 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -2777,13 +2777,6 @@ backup_tests()
fi
}
-SUB_ESTABLISHED=10 # MPTCP_EVENT_SUB_ESTABLISHED
-LISTENER_CREATED=15 #MPTCP_EVENT_LISTENER_CREATED
-LISTENER_CLOSED=16 #MPTCP_EVENT_LISTENER_CLOSED
-
-AF_INET=2
-AF_INET6=10
-
verify_listener_events()
{
local evt=$1
@@ -2797,9 +2790,9 @@ verify_listener_events()
local sport
local name
- if [ $e_type = $LISTENER_CREATED ]; then
+ if [ $e_type = $MPTCP_LIB_LISTENER_CREATED ]; then
name="LISTENER_CREATED"
- elif [ $e_type = $LISTENER_CLOSED ]; then
+ elif [ $e_type = $MPTCP_LIB_LISTENER_CLOSED ]; then
name="LISTENER_CLOSED "
else
name="$e_type"
@@ -2866,8 +2859,10 @@ add_addr_ports_tests()
chk_add_nr 1 1 1
chk_rm_nr 1 1 invert
- verify_listener_events $server_evts $LISTENER_CREATED $AF_INET 10.0.2.1 10100
- verify_listener_events $server_evts $LISTENER_CLOSED $AF_INET 10.0.2.1 10100
+ verify_listener_events $server_evts $MPTCP_LIB_LISTENER_CREATED \
+ $AF_INET 10.0.2.1 10100
+ verify_listener_events $server_evts $MPTCP_LIB_LISTENER_CLOSED \
+ $AF_INET 10.0.2.1 10100
mptcp_lib_evts_kill
fi
@@ -3397,7 +3392,7 @@ userspace_tests()
chk_subflows_total 2 2
chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
local rm_addr="userspace_pm_rm_addr $ns1 10"
- local rm_sf="userspace_pm_rm_sf $ns1 ::ffff:10.0.2.1 $SUB_ESTABLISHED"
+ local rm_sf="userspace_pm_rm_sf $ns1 ::ffff:10.0.2.1 $MPTCP_LIB_SUB_ESTABLISHED"
if [ $((RANDOM%2)) -eq 0 ]; then
$($rm_addr); $($rm_sf)
else
@@ -3426,7 +3421,7 @@ userspace_tests()
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 2 2
userspace_pm_rm_addr $ns2 20
- userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED
+ userspace_pm_rm_sf $ns2 10.0.3.2 $MPTCP_LIB_SUB_ESTABLISHED
chk_rm_nr 1 1
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 3d23783dc307..036130569652 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -10,6 +10,13 @@ readonly KSFT_TEST=$(basename "${0}" | sed 's/\.sh$//g')
ret=0
+MPTCP_LIB_SUB_ESTABLISHED=10 # MPTCP_EVENT_SUB_ESTABLISHED
+MPTCP_LIB_LISTENER_CREATED=15 #MPTCP_EVENT_LISTENER_CREATED
+MPTCP_LIB_LISTENER_CLOSED=16 #MPTCP_EVENT_LISTENER_CLOSED
+
+readonly AF_INET=2
+readonly AF_INET6=10
+
MPTCP_LIB_SUBTESTS=()
# only if supported (or forced) and not disabled, see no-color.org
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index a85eb83a61f8..6e5370275e49 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -25,13 +25,7 @@ fi
ANNOUNCED=6 # MPTCP_EVENT_ANNOUNCED
REMOVED=7 # MPTCP_EVENT_REMOVED
-SUB_ESTABLISHED=10 # MPTCP_EVENT_SUB_ESTABLISHED
SUB_CLOSED=11 # MPTCP_EVENT_SUB_CLOSED
-LISTENER_CREATED=15 #MPTCP_EVENT_LISTENER_CREATED
-LISTENER_CLOSED=16 #MPTCP_EVENT_LISTENER_CLOSED
-
-AF_INET=2
-AF_INET6=10
file=""
client4_pid=0
@@ -489,7 +483,7 @@ verify_subflow_events()
info="${e_saddr} (${e_from}) => ${e_daddr} (${e_to})"
- if [ "$e_type" = "$SUB_ESTABLISHED" ]
+ if [ "$e_type" = "$MPTCP_LIB_SUB_ESTABLISHED" ]
then
if [ "$e_family" = "$AF_INET6" ]
then
@@ -546,14 +540,15 @@ test_subflows()
ip netns exec "$ns1" ./pm_nl_ctl csf lip 10.0.2.1 lid 23 rip 10.0.2.2\
rport "$client4_port" token "$server4_token"
sleep 0.5
- verify_subflow_events $server_evts $SUB_ESTABLISHED $server4_token $AF_INET "10.0.2.1" \
- "10.0.2.2" "$client4_port" "23" "$client_addr_id" "ns1" "ns2"
+ verify_subflow_events $server_evts $MPTCP_LIB_SUB_ESTABLISHED $server4_token \
+ $AF_INET "10.0.2.1" "10.0.2.2" "$client4_port" "23" \
+ "$client_addr_id" "ns1" "ns2"
# Delete the listener from the client ns, if one was created
mptcp_lib_kill_wait $listener_pid
local sport
- sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$server_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW from server to client machine
:>"$server_evts"
@@ -584,14 +579,14 @@ test_subflows()
ip netns exec "$ns1" ./pm_nl_ctl csf lip dead:beef:2::1 lid 23 rip\
dead:beef:2::2 rport "$client6_port" token "$server6_token"
sleep 0.5
- verify_subflow_events "$server_evts" "$SUB_ESTABLISHED" "$server6_token" "$AF_INET6"\
- "dead:beef:2::1" "dead:beef:2::2" "$client6_port" "23"\
- "$client_addr_id" "ns1" "ns2"
+ verify_subflow_events "$server_evts" "$MPTCP_LIB_SUB_ESTABLISHED" "$server6_token" \
+ "$AF_INET6" "dead:beef:2::1" "dead:beef:2::2" "$client6_port" \
+ "23" "$client_addr_id" "ns1" "ns2"
# Delete the listener from the client ns, if one was created
mptcp_lib_kill_wait $listener_pid
- sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$server_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW6 from server to client machine
:>"$server_evts"
@@ -623,14 +618,14 @@ test_subflows()
ip netns exec "$ns1" ./pm_nl_ctl csf lip 10.0.2.1 lid 23 rip 10.0.2.2 rport\
$new4_port token "$server4_token"
sleep 0.5
- verify_subflow_events "$server_evts" "$SUB_ESTABLISHED" "$server4_token" "$AF_INET"\
- "10.0.2.1" "10.0.2.2" "$new4_port" "23"\
+ verify_subflow_events "$server_evts" "$MPTCP_LIB_SUB_ESTABLISHED" "$server4_token" \
+ "$AF_INET" "10.0.2.1" "10.0.2.2" "$new4_port" "23" \
"$client_addr_id" "ns1" "ns2"
# Delete the listener from the client ns, if one was created
mptcp_lib_kill_wait $listener_pid
- sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$server_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW from server to client machine
:>"$server_evts"
@@ -662,13 +657,13 @@ test_subflows()
ip netns exec "$ns2" ./pm_nl_ctl csf lip 10.0.2.2 lid 23 rip 10.0.2.1 rport\
$app4_port token "$client4_token"
sleep 0.5
- verify_subflow_events $client_evts $SUB_ESTABLISHED $client4_token $AF_INET "10.0.2.2"\
- "10.0.2.1" "$app4_port" "23" "$server_addr_id" "ns2" "ns1"
+ verify_subflow_events $client_evts $MPTCP_LIB_SUB_ESTABLISHED $client4_token $AF_INET \
+ "10.0.2.2" "10.0.2.1" "$app4_port" "23" "$server_addr_id" "ns2" "ns1"
# Delete the listener from the server ns, if one was created
mptcp_lib_kill_wait $listener_pid
- sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$client_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW from client to server machine
:>"$client_evts"
@@ -699,7 +694,7 @@ test_subflows()
ip netns exec "$ns2" ./pm_nl_ctl csf lip dead:beef:2::2 lid 23 rip\
dead:beef:2::1 rport $app6_port token "$client6_token"
sleep 0.5
- verify_subflow_events "$client_evts" "$SUB_ESTABLISHED" "$client6_token"\
+ verify_subflow_events "$client_evts" "$MPTCP_LIB_SUB_ESTABLISHED" "$client6_token"\
"$AF_INET6" "dead:beef:2::2"\
"dead:beef:2::1" "$app6_port" "23"\
"$server_addr_id" "ns2" "ns1"
@@ -707,7 +702,7 @@ test_subflows()
# Delete the listener from the server ns, if one was created
mptcp_lib_kill_wait $listener_pid
- sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$client_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW6 from client to server machine
:>"$client_evts"
@@ -738,13 +733,14 @@ test_subflows()
ip netns exec "$ns2" ./pm_nl_ctl csf lip 10.0.2.2 lid 23 rip 10.0.2.1 rport\
$new4_port token "$client4_token"
sleep 0.5
- verify_subflow_events "$client_evts" "$SUB_ESTABLISHED" "$client4_token" "$AF_INET"\
- "10.0.2.2" "10.0.2.1" "$new4_port" "23" "$server_addr_id" "ns2" "ns1"
+ verify_subflow_events "$client_evts" "$MPTCP_LIB_SUB_ESTABLISHED" "$client4_token" \
+ "$AF_INET" "10.0.2.2" "10.0.2.1" "$new4_port" "23" \
+ "$server_addr_id" "ns2" "ns1"
# Delete the listener from the server ns, if one was created
mptcp_lib_kill_wait $listener_pid
- sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$client_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW from client to server machine
:>"$client_evts"
@@ -783,14 +779,14 @@ test_subflows_v4_v6_mix()
ip netns exec "$ns2" ./pm_nl_ctl csf lip 10.0.2.2 lid 23 rip 10.0.2.1 rport\
$app6_port token "$client6_token"
sleep 0.5
- verify_subflow_events "$client_evts" "$SUB_ESTABLISHED" "$client6_token"\
+ verify_subflow_events "$client_evts" "$MPTCP_LIB_SUB_ESTABLISHED" "$client6_token"\
"$AF_INET" "10.0.2.2" "10.0.2.1" "$app6_port" "23"\
"$server_addr_id" "ns2" "ns1"
# Delete the listener from the server ns, if one was created
mptcp_lib_kill_wait $listener_pid
- sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+ sport=$(mptcp_lib_evts_get_info sport "$client_evts" $MPTCP_LIB_SUB_ESTABLISHED)
# DESTROY_SUBFLOW from client to server machine
:>"$client_evts"
@@ -889,7 +885,8 @@ test_listener()
local listener_pid=$!
sleep 0.5
- verify_listener_events $client_evts $LISTENER_CREATED $AF_INET 10.0.2.2 $client4_port
+ verify_listener_events $client_evts $MPTCP_LIB_LISTENER_CREATED \
+ $AF_INET 10.0.2.2 $client4_port
# ADD_ADDR from client to server machine reusing the subflow port
ip netns exec $ns2 ./pm_nl_ctl ann 10.0.2.2 token $client4_token id\
@@ -905,7 +902,8 @@ test_listener()
mptcp_lib_kill_wait $listener_pid
sleep 0.5
- verify_listener_events $client_evts $LISTENER_CLOSED $AF_INET 10.0.2.2 $client4_port
+ verify_listener_events $client_evts $MPTCP_LIB_LISTENER_CLOSED \
+ $AF_INET 10.0.2.2 $client4_port
}
print_title "Make connections"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 09/32] selftests: mptcp: add mptcp_lib_verify_listener_events
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (7 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 08/32] selftests: mptcp: export event macros in mptcp_lib Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 10/32] selftests: mptcp: unify namespace names Geliang Tang
` (22 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
To avoid duplicated code in different MPTCP selftests, we can add and use
helpers defined in mptcp_lib.sh.
The helper verify_listener_events() is defined both in mptcp_join.sh and
userspace_pm.sh, export it into mptcp_lib.sh and rename it with mptcp_lib_
prefix. Use this new helper in both scripts.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 24 ++-------------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 23 ++++++++++++++
.../selftests/net/mptcp/userspace_pm.sh | 30 ++++---------------
3 files changed, 31 insertions(+), 46 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 1c3df7831855..9ad8c600e58f 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -2779,15 +2779,10 @@ backup_tests()
verify_listener_events()
{
- local evt=$1
local e_type=$2
local e_family=$3
local e_saddr=$4
local e_sport=$5
- local type
- local family
- local saddr
- local sport
local name
if [ $e_type = $MPTCP_LIB_LISTENER_CREATED ]; then
@@ -2805,23 +2800,8 @@ verify_listener_events()
return
fi
- type=$(mptcp_lib_evts_get_info type "$evt" "$e_type")
- family=$(mptcp_lib_evts_get_info family "$evt" "$e_type")
- sport=$(mptcp_lib_evts_get_info sport "$evt" "$e_type")
- if [ $family ] && [ $family = $AF_INET6 ]; then
- saddr=$(mptcp_lib_evts_get_info saddr6 "$evt" "$e_type")
- else
- saddr=$(mptcp_lib_evts_get_info saddr4 "$evt" "$e_type")
- fi
-
- if [ $type ] && [ $type = $e_type ] &&
- [ $family ] && [ $family = $e_family ] &&
- [ $saddr ] && [ $saddr = $e_saddr ] &&
- [ $sport ] && [ $sport = $e_sport ]; then
- print_ok
- return 0
- fi
- fail_test "$e_type:$type $e_family:$family $e_saddr:$saddr $e_sport:$sport"
+ mptcp_lib_verify_listener_events ${*}
+ [ $? -eq 1 ] && fail_test "$e_type $e_family $e_saddr $e_sport"
}
add_addr_ports_tests()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 036130569652..09d948f45f59 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -440,6 +440,29 @@ mptcp_lib_check_expected()
return 1
}
+mptcp_lib_verify_listener_events() {
+ local evt=$1
+ local e_type=$2
+ local e_family=$3
+ local e_saddr=$4
+ local e_sport=$5
+ local type
+ local family
+ local saddr
+ local sport
+
+ type=$(mptcp_lib_evts_get_info type "$evt" "$e_type")
+ family=$(mptcp_lib_evts_get_info family "$evt" "$e_type")
+ if [ $family ] && [ $family = $AF_INET6 ]; then
+ saddr=$(mptcp_lib_evts_get_info saddr6 "$evt" "$e_type")
+ else
+ saddr=$(mptcp_lib_evts_get_info saddr4 "$evt" "$e_type")
+ fi
+ sport=$(mptcp_lib_evts_get_info sport "$evt" "$e_type")
+
+ mptcp_lib_check_expected "type" "family" "saddr" "sport"
+}
+
mptcp_lib_cleanup()
{
echo "cleanup"
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 6e5370275e49..22812292b00f 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -838,32 +838,12 @@ test_prio()
verify_listener_events()
{
- local evt=$1
- local e_type=$2
- local e_family=$3
- local e_saddr=$4
- local e_sport=$5
- local type
- local family
- local saddr
- local sport
-
- if [ $e_type = $LISTENER_CREATED ]; then
- print_test "CREATE_LISTENER $e_saddr:$e_sport"
- elif [ $e_type = $LISTENER_CLOSED ]; then
- print_test "CLOSE_LISTENER $e_saddr:$e_sport"
- fi
-
- type=$(mptcp_lib_evts_get_info type $evt $e_type)
- family=$(mptcp_lib_evts_get_info family $evt $e_type)
- sport=$(mptcp_lib_evts_get_info sport $evt $e_type)
- if [ $family ] && [ $family = $AF_INET6 ]; then
- saddr=$(mptcp_lib_evts_get_info saddr6 $evt $e_type)
+ mptcp_lib_verify_listener_events ${*}
+ if [ $? -eq 0 ]; then
+ mptcp_lib_result_pass "${TEST_NAME}"
else
- saddr=$(mptcp_lib_evts_get_info saddr4 $evt $e_type)
+ test_fail
fi
-
- check_expected "type" "family" "saddr" "sport"
}
test_listener()
@@ -879,6 +859,7 @@ test_listener()
# Capture events on the network namespace running the client
:>$client_evts
+ print_test "Listener event LISTENER_CREATED 10.0.2.2:$client4_port"
# Attempt to add a listener at 10.0.2.2:<subflow-port>
ip netns exec $ns2 ./pm_nl_ctl listen 10.0.2.2\
$client4_port &
@@ -898,6 +879,7 @@ test_listener()
rport $client4_port token $server4_token
sleep 0.5
+ print_test "Listener event LISTENER_CLOSED 10.0.2.2:$client4_port"
# Delete the listener from the client ns, if one was created
mptcp_lib_kill_wait $listener_pid
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 10/32] selftests: mptcp: unify namespace names
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (8 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 09/32] selftests: mptcp: add mptcp_lib_verify_listener_events Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 11/32] selftests: mptcp: add mptcp_lib_ns_* helpers Geliang Tang
` (21 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Most scripts use ns1, ns2, ns3 and ns4 as namespace names, but ns and
ns_sbox are used in diag.sh and mptcp_sockopt.sh. To maintain consistency
with other scripts, this patch renames these variables:
ns -> ns1 in diag.sh
ns_sbox -> ns3 in mptcp_sockopt.sh
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 46 +++++++++----------
.../selftests/net/mptcp/mptcp_sockopt.sh | 12 ++---
2 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index 300aec419dd6..bc3f24c454be 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -5,7 +5,7 @@
sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-ns="ns1-$rndh"
+ns1="ns1-$rndh"
ksft_skip=4
test_cnt=1
timeout_poll=100
@@ -17,19 +17,19 @@ flush_pids()
# give it some time
sleep 1.1
- ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGUSR1 &>/dev/null
+ ip netns pids "${ns1}" | xargs --no-run-if-empty kill -SIGUSR1 &>/dev/null
for _ in $(seq 10); do
- [ -z "$(ip netns pids "${ns}")" ] && break
+ [ -z "$(ip netns pids "${ns1}")" ] && break
sleep 0.1
done
}
cleanup()
{
- ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGKILL &>/dev/null
+ ip netns pids "${ns1}" | xargs --no-run-if-empty kill -SIGKILL &>/dev/null
- ip netns del $ns
+ ip netns del $ns1
mptcp_lib_cleanup
}
@@ -48,7 +48,7 @@ fi
get_msk_inuse()
{
- ip netns exec $ns cat /proc/net/protocols | awk '$1~/^MPTCP$/{print $3}'
+ ip netns exec $ns1 cat /proc/net/protocols | awk '$1~/^MPTCP$/{print $3}'
}
__chk_nr()
@@ -83,7 +83,7 @@ __chk_msk_nr()
local condition=$1
shift 1
- __chk_nr "ss -inmHMN $ns | $condition" "$@"
+ __chk_nr "ss -inmHMN $ns1 | $condition" "$@"
}
chk_msk_nr()
@@ -104,7 +104,7 @@ wait_msk_nr()
msg=$*
while [ $i -lt $timeout ]; do
- nr=$(ss -inmHMN $ns | $condition)
+ nr=$(ss -inmHMN $ns1 | $condition)
[ $nr == $expected ] && break;
[ $nr -gt $max ] && max=$nr
i=$((i + 1))
@@ -143,7 +143,7 @@ __chk_listen()
local expected=$2
local msg="$3"
- __chk_nr "ss -N $ns -Ml '$filter' | grep -c LISTEN" "$expected" "$msg" 0
+ __chk_nr "ss -N $ns1 -Ml '$filter' | grep -c LISTEN" "$expected" "$msg" 0
}
chk_msk_listen()
@@ -169,7 +169,7 @@ chk_msk_inuse()
local msg="$2"
local listen_nr
- listen_nr=$(ss -N "${ns}" -Ml | grep -c LISTEN)
+ listen_nr=$(ss -N "${ns1}" -Ml | grep -c LISTEN)
expected=$((expected + listen_nr))
for _ in $(seq 10); do
@@ -197,24 +197,24 @@ wait_connected()
}
trap cleanup EXIT
-ip netns add $ns
-ip -n $ns link set dev lo up
+ip netns add $ns1
+ip -n $ns1 link set dev lo up
echo "a" | \
timeout ${timeout_test} \
- ip netns exec $ns \
+ ip netns exec $ns1 \
./mptcp_connect -p 10000 -l -t ${timeout_poll} -w 20 \
0.0.0.0 >/dev/null &
-mptcp_lib_wait_local_port_listen $ns 10000
+mptcp_lib_wait_local_port_listen $ns1 10000
chk_msk_nr 0 "no msk on netns creation"
chk_msk_listen 10000
echo "b" | \
timeout ${timeout_test} \
- ip netns exec $ns \
+ ip netns exec $ns1 \
./mptcp_connect -p 10000 -r 0 -t ${timeout_poll} -w 20 \
127.0.0.1 >/dev/null &
-wait_connected $ns 10000
+wait_connected $ns1 10000
chk_msk_nr 2 "after MPC handshake "
chk_msk_remote_key_nr 2 "....chk remote_key"
chk_msk_fallback_nr 0 "....chk no fallback"
@@ -225,16 +225,16 @@ chk_msk_inuse 0 "....chk 0 msk in use after flush"
echo "a" | \
timeout ${timeout_test} \
- ip netns exec $ns \
+ ip netns exec $ns1 \
./mptcp_connect -p 10001 -l -s TCP -t ${timeout_poll} -w 20 \
0.0.0.0 >/dev/null &
-mptcp_lib_wait_local_port_listen $ns 10001
+mptcp_lib_wait_local_port_listen $ns1 10001
echo "b" | \
timeout ${timeout_test} \
- ip netns exec $ns \
+ ip netns exec $ns1 \
./mptcp_connect -p 10001 -r 0 -t ${timeout_poll} -w 20 \
127.0.0.1 >/dev/null &
-wait_connected $ns 10001
+wait_connected $ns1 10001
chk_msk_fallback_nr 1 "check fallback"
chk_msk_inuse 1 "....chk 1 msk in use"
flush_pids
@@ -245,16 +245,16 @@ NR_CLIENTS=100
for I in `seq 1 $NR_CLIENTS`; do
echo "a" | \
timeout ${timeout_test} \
- ip netns exec $ns \
+ ip netns exec $ns1 \
./mptcp_connect -p $((I+10001)) -l -w 20 \
-t ${timeout_poll} 0.0.0.0 >/dev/null &
done
-mptcp_lib_wait_local_port_listen $ns $((NR_CLIENTS + 10001))
+mptcp_lib_wait_local_port_listen $ns1 $((NR_CLIENTS + 10001))
for I in `seq 1 $NR_CLIENTS`; do
echo "b" | \
timeout ${timeout_test} \
- ip netns exec $ns \
+ ip netns exec $ns1 \
./mptcp_connect -p $((I+10001)) -w 20 \
-t ${timeout_poll} 127.0.0.1 >/dev/null &
done
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 45e5b5810a6a..b82f7b0b85bc 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -17,7 +17,7 @@ sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
ns2="ns2-$rndh"
-ns_sbox="ns_sbox-$rndh"
+ns3="ns3-$rndh"
add_mark_rules()
{
@@ -40,7 +40,7 @@ add_mark_rules()
init()
{
local netns
- for netns in "$ns1" "$ns2" "$ns_sbox";do
+ for netns in "$ns1" "$ns2" "$ns3";do
ip netns add $netns || exit $ksft_skip
ip -net $netns link set lo up
ip netns exec $netns sysctl -q net.mptcp.enabled=1
@@ -79,7 +79,7 @@ init()
cleanup()
{
local netns
- for netns in "$ns1" "$ns2" "$ns_sbox"; do
+ for netns in "$ns1" "$ns2" "$ns3"; do
ip netns del $netns
done
rm -f "$cin" "$cout"
@@ -240,7 +240,7 @@ do_mptcp_sockopt_tests()
return
fi
- ip netns exec "$ns_sbox" ./mptcp_sockopt
+ ip netns exec "$ns3" ./mptcp_sockopt
lret=$?
if [ $lret -ne 0 ]; then
@@ -251,7 +251,7 @@ do_mptcp_sockopt_tests()
fi
mptcp_lib_result_pass "sockopt v4"
- ip netns exec "$ns_sbox" ./mptcp_sockopt -6
+ ip netns exec "$ns3" ./mptcp_sockopt -6
lret=$?
if [ $lret -ne 0 ]; then
@@ -282,7 +282,7 @@ run_tests()
do_tcpinq_test()
{
- ip netns exec "$ns_sbox" ./mptcp_inq "$@"
+ ip netns exec "$ns3" ./mptcp_inq "$@"
local lret=$?
if [ $lret -ne 0 ];then
ret=$lret
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 11/32] selftests: mptcp: add mptcp_lib_ns_* helpers
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (9 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 10/32] selftests: mptcp: unify namespace names Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 12/32] selftests: mptcp: diag: print colored output Geliang Tang
` (20 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Add helpers mptcp_lib_ns_init() and mptcp_lib_ns_exit() in mptcp_lib.sh to
init all namespaces ns1, ns2, ns3 and ns4. Then every test script can
invoke these helpers and use all namespaces.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 8 ++---
.../selftests/net/mptcp/mptcp_connect.sh | 18 ++--------
.../testing/selftests/net/mptcp/mptcp_join.sh | 19 ++--------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 36 +++++++++++++++++++
.../selftests/net/mptcp/mptcp_sockopt.sh | 15 ++------
.../testing/selftests/net/mptcp/pm_netlink.sh | 8 ++---
.../selftests/net/mptcp/simult_flows.sh | 18 ++--------
.../selftests/net/mptcp/userspace_pm.sh | 13 ++-----
8 files changed, 50 insertions(+), 85 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index bc3f24c454be..3119811018fc 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -3,9 +3,7 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-sec=$(date +%s)
-rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-ns1="ns1-$rndh"
+mptcp_lib_ns_init
ksft_skip=4
test_cnt=1
timeout_poll=100
@@ -29,7 +27,7 @@ cleanup()
{
ip netns pids "${ns1}" | xargs --no-run-if-empty kill -SIGKILL &>/dev/null
- ip netns del $ns1
+ mptcp_lib_ns_exit
mptcp_lib_cleanup
}
@@ -197,8 +195,6 @@ wait_connected()
}
trap cleanup EXIT
-ip netns add $ns1
-ip -n $ns1 link set dev lo up
echo "a" | \
timeout ${timeout_test} \
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 5e28292e1889..5e0263e691a8 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -120,12 +120,7 @@ while getopts "$optstring" option;do
esac
done
-sec=$(date +%s)
-rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-ns1="ns1-$rndh"
-ns2="ns2-$rndh"
-ns3="ns3-$rndh"
-ns4="ns4-$rndh"
+mptcp_lib_ns_init
TEST_COUNT=0
TEST_GROUP=""
@@ -137,11 +132,7 @@ cleanup()
rm -f "$sin" "$sout"
rm -f "$capout"
- local netns
- for netns in "$ns1" "$ns2" "$ns3" "$ns4";do
- ip netns del $netns
- rm -f /tmp/$netns.{nstat,out}
- done
+ mptcp_lib_ns_exit
mptcp_lib_cleanup
}
@@ -163,11 +154,6 @@ cin_disconnect="$cin".disconnect
cout_disconnect="$cout".disconnect
trap cleanup EXIT
-for i in "$ns1" "$ns2" "$ns3" "$ns4";do
- ip netns add $i || exit $ksft_skip
- ip -net $i link set lo up
-done
-
# "$ns1" ns2 ns3 ns4
# ns1eth2 ns2eth1 ns2eth3 ns3eth2 ns3eth4 ns4eth3
# - drop 1% -> reorder 25%
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 9ad8c600e58f..52a4080b32d9 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -21,8 +21,6 @@ cinsent=""
tmpfile=""
cout=""
capout=""
-ns1=""
-ns2=""
ksft_skip=4
iptables="iptables"
ip6tables="ip6tables"
@@ -78,21 +76,12 @@ init_partial()
{
capout=$(mktemp)
- local sec rndh
- sec=$(date +%s)
- rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-
- ns1="ns1-$rndh"
- ns2="ns2-$rndh"
+ mptcp_lib_ns_init
local netns
for netns in "$ns1" "$ns2"; do
- ip netns add $netns || exit $ksft_skip
- ip -net $netns link set lo up
ip netns exec $netns sysctl -q net.mptcp.enabled=1
ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true
- ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
- ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=0
if [ $checksum -eq 1 ]; then
ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1
fi
@@ -137,11 +126,7 @@ cleanup_partial()
{
rm -f "$capout"
- local netns
- for netns in "$ns1" "$ns2"; do
- ip netns del $netns
- rm -f /tmp/$netns.{nstat,out}
- done
+ mptcp_lib_ns_exit
}
check_tools()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 09d948f45f59..d1bd8aa02c2e 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -463,6 +463,42 @@ mptcp_lib_verify_listener_events() {
mptcp_lib_check_expected "type" "family" "saddr" "sport"
}
+rndh=""
+ns1=""
+ns2=""
+ns3=""
+ns4=""
+
+mptcp_lib_ns_init() {
+ local sec
+
+ sec=$(date +%s)
+ rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
+
+ ns1="ns1-$rndh"
+ ns2="ns2-$rndh"
+ ns3="ns3-$rndh"
+ ns4="ns4-$rndh"
+
+ local netns
+ for netns in "$ns1" "$ns2" "$ns3" "$ns4"; do
+ ip netns add $netns || exit ${ksft_skip}
+ ip -net $netns link set lo up
+
+ ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
+ ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=0
+ done
+}
+
+mptcp_lib_ns_exit()
+{
+ local netns
+ for netns in "$ns1" "$ns2" "$ns3" "$ns4"; do
+ ip netns del $netns
+ rm -f /tmp/$netns.{nstat,out}
+ done
+}
+
mptcp_lib_cleanup()
{
echo "cleanup"
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index b82f7b0b85bc..ff49ee9b9cc2 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -13,11 +13,7 @@ timeout_test=$((timeout_poll * 2 + 1))
iptables="iptables"
ip6tables="ip6tables"
-sec=$(date +%s)
-rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-ns1="ns1-$rndh"
-ns2="ns2-$rndh"
-ns3="ns3-$rndh"
+mptcp_lib_ns_init
add_mark_rules()
{
@@ -41,11 +37,7 @@ init()
{
local netns
for netns in "$ns1" "$ns2" "$ns3";do
- ip netns add $netns || exit $ksft_skip
- ip -net $netns link set lo up
ip netns exec $netns sysctl -q net.mptcp.enabled=1
- ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
- ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=0
done
local i
@@ -78,10 +70,7 @@ init()
cleanup()
{
- local netns
- for netns in "$ns1" "$ns2" "$ns3"; do
- ip netns del $netns
- done
+ mptcp_lib_ns_exit
rm -f "$cin" "$cout"
rm -f "$sin" "$sout"
mptcp_lib_cleanup
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 75c7594dbd71..32265d4ecb41 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -23,13 +23,11 @@ while getopts "$optstring" option;do
esac
done
-sec=$(date +%s)
-rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-ns1="ns1-$rndh"
+mptcp_lib_ns_init
cleanup()
{
- ip netns del $ns1
+ mptcp_lib_ns_exit
mptcp_lib_cleanup
}
@@ -43,8 +41,6 @@ fi
trap cleanup EXIT
-ip netns add $ns1 || exit $ksft_skip
-ip -net $ns1 link set lo up
ip netns exec $ns1 sysctl -q net.mptcp.enabled=1
check()
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 3536c7160ce5..c1a21cd8c076 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -3,11 +3,7 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-sec=$(date +%s)
-rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
-ns1="ns1-$rndh"
-ns2="ns2-$rndh"
-ns3="ns3-$rndh"
+mptcp_lib_ns_init
capture=false
ksft_skip=4
timeout_poll=30
@@ -29,10 +25,7 @@ cleanup()
rm -f "$large" "$small"
rm -f "$capout"
- local netns
- for netns in "$ns1" "$ns2" "$ns3";do
- ip netns del $netns
- done
+ mptcp_lib_ns_exit
mptcp_lib_cleanup
}
@@ -64,13 +57,6 @@ setup()
trap cleanup EXIT
- for i in "$ns1" "$ns2" "$ns3";do
- ip netns add $i || exit $ksft_skip
- ip -net $i link set lo up
- ip netns exec $i sysctl -q net.ipv4.conf.all.rp_filter=0
- ip netns exec $i sysctl -q net.ipv4.conf.default.rp_filter=0
- done
-
ip link add ns1eth1 netns "$ns1" type veth peer name ns2eth1 netns "$ns2"
ip link add ns1eth2 netns "$ns1" type veth peer name ns2eth2 netns "$ns2"
ip link add ns2eth3 netns "$ns2" type veth peer name ns3eth1 netns "$ns3"
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 22812292b00f..22a436c4a77a 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -44,11 +44,7 @@ app6_port=50004
client_addr_id=${RANDOM:0:2}
server_addr_id=${RANDOM:0:2}
-sec=$(date +%s)
-rndh=$(printf %x "$sec")-$(mktemp -u XXXXXX)
-ns1="ns1-$rndh"
-ns2="ns2-$rndh"
-TEST_NAME=""
+mptcp_lib_ns_init
_printf() {
stdbuf -o0 -e0 printf "${@}"
@@ -106,10 +102,7 @@ cleanup()
done
mptcp_lib_evts_kill
- local netns
- for netns in "$ns1" "$ns2" ;do
- ip netns del "$netns"
- done
+ mptcp_lib_ns_exit
rm -rf $file
mptcp_lib_evts_remove
@@ -122,8 +115,6 @@ trap cleanup EXIT
# Create and configure network namespaces for testing
for i in "$ns1" "$ns2" ;do
- ip netns add "$i" || exit 1
- ip -net "$i" link set lo up
ip netns exec "$i" sysctl -q net.mptcp.enabled=1
ip netns exec "$i" sysctl -q net.mptcp.pm_type=1
done
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 12/32] selftests: mptcp: diag: print colored output
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (10 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 11/32] selftests: mptcp: add mptcp_lib_ns_* helpers Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 13/32] selftests: mptcp: connect: " Geliang Tang
` (19 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Use mptcp_lib_print_ok(), _warn(), and _err() helpers in script diag.sh
to print test results with colors.
Having colors helps to quickly identify issues when looking at a long
list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index 3119811018fc..7cf1f602bf48 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -62,15 +62,15 @@ __chk_nr()
printf "%-50s" "$msg"
if [ $nr != $expected ]; then
if [ $nr = "$skip" ] && ! mptcp_lib_expect_all_features; then
- echo "[ SKIP ] Feature probably not supported"
+ mptcp_lib_print_warn "[ SKIP ] Feature probably not supported"
mptcp_lib_result_skip "${msg}"
else
- echo "[ FAIL ] expected $expected found $nr"
+ mptcp_lib_print_err "[ FAIL ] expected $expected found $nr"
mptcp_lib_result_fail "${msg}"
ret=$test_cnt
fi
else
- echo "[ OK ]"
+ mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "${msg}"
fi
test_cnt=$((test_cnt+1))
@@ -111,15 +111,15 @@ wait_msk_nr()
printf "%-50s" "$msg"
if [ $i -ge $timeout ]; then
- echo "[ FAIL ] timeout while expecting $expected max $max last $nr"
+ mptcp_lib_print_err "[ FAIL ] timeout while expecting $expected max $max last $nr"
mptcp_lib_result_fail "${msg} # timeout"
ret=$test_cnt
elif [ $nr != $expected ]; then
- echo "[ FAIL ] expected $expected found $nr"
+ mptcp_lib_print_err "[ FAIL ] expected $expected found $nr"
mptcp_lib_result_fail "${msg} # unexpected result"
ret=$test_cnt
else
- echo "[ OK ]"
+ mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "${msg}"
fi
test_cnt=$((test_cnt+1))
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 13/32] selftests: mptcp: connect: print colored output
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (11 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 12/32] selftests: mptcp: diag: print colored output Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 14/32] selftests: mptcp: sockopt: print every test result Geliang Tang
` (18 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Use mptcp_lib_print_info() and _ok() helpers in script mptcp_connect.sh
to print test results with colors.
Having colors helps to quickly identify issues when looking at a long
list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../selftests/net/mptcp/mptcp_connect.sh | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 5e0263e691a8..4041414c8804 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -266,7 +266,8 @@ check_mptcp_disabled()
return 1
fi
- echo -e "New MPTCP socket can be blocked via sysctl\t\t[ OK ]"
+ echo -n -e "New MPTCP socket can be blocked via sysctl\t\t"
+ mptcp_lib_print_ok "\t [ OK ]"
mptcp_lib_result_pass "New MPTCP socket can be blocked via sysctl"
return 0
}
@@ -482,7 +483,7 @@ do_transfer()
fi
if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then
- printf "[ OK ]"
+ mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "${TEST_GROUP}: ${result_msg}"
else
mptcp_lib_result_fail "${TEST_GROUP}: ${result_msg}"
@@ -513,7 +514,6 @@ do_transfer()
"${expect_ackrx}" "${stat_ackrx_now_l}"
fi
- echo
cat "$capout"
[ $retc -eq 0 ] && [ $rets -eq 0 ]
}
@@ -689,7 +689,7 @@ EOF
return
fi
- echo "INFO: test $msg"
+ mptcp_lib_print_info "INFO: test $msg"
TEST_COUNT=10000
local extra_args="-o TRANSPARENT"
@@ -716,7 +716,7 @@ run_tests_peekmode()
local peekmode="$1"
TEST_GROUP="peek mode: ${peekmode}"
- echo "INFO: with peek mode: ${peekmode}"
+ mptcp_lib_print_info "INFO: with peek mode: ${peekmode}"
run_tests_lo "$ns1" "$ns1" 10.0.1.1 1 "-P ${peekmode}"
run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-P ${peekmode}"
}
@@ -731,7 +731,7 @@ run_tests_mptfo()
return
fi
- echo "INFO: with MPTFO start"
+ mptcp_lib_print_info "INFO: with MPTFO start"
ip netns exec "$ns1" sysctl -q net.ipv4.tcp_fastopen=2
ip netns exec "$ns2" sysctl -q net.ipv4.tcp_fastopen=1
@@ -743,7 +743,7 @@ run_tests_mptfo()
ip netns exec "$ns1" sysctl -q net.ipv4.tcp_fastopen=0
ip netns exec "$ns2" sysctl -q net.ipv4.tcp_fastopen=0
- echo "INFO: with MPTFO end"
+ mptcp_lib_print_info "INFO: with MPTFO end"
}
run_tests_disconnect()
@@ -767,7 +767,7 @@ run_tests_disconnect()
cin_disconnect="$old_cin"
connect_per_transfer=3
- echo "INFO: disconnect"
+ mptcp_lib_print_info "INFO: disconnect"
run_tests_lo "$ns1" "$ns1" 10.0.1.1 1 "-I 3 -i $old_cin"
run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-I 3 -i $old_cin"
@@ -816,7 +816,7 @@ check_mptcp_disabled
stop_if_error "The kernel configuration is not valid for MPTCP"
-echo "INFO: validating network environment with pings"
+mptcp_lib_print_info "INFO: validating network environment with pings"
for sender in "$ns1" "$ns2" "$ns3" "$ns4";do
do_ping "$ns1" $sender 10.0.1.1
do_ping "$ns1" $sender dead:beef:1::1
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 14/32] selftests: mptcp: sockopt: print every test result
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (12 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 13/32] selftests: mptcp: connect: " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 15/32] selftests: mptcp: sockopt: print colored output Geliang Tang
` (17 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Only total test results are printed out in mptcp_sockopt.sh:
PASS: all packets had packet mark set
PASS: SOL_MPTCP getsockopt has expected information
PASS: TCP_INQ cmsg/ioctl -t tcp
PASS: TCP_INQ cmsg/ioctl -6 -t tcp
PASS: TCP_INQ cmsg/ioctl -r tcp
PASS: TCP_INQ cmsg/ioctl -6 -r tcp
This patch prints more info for every test result in each test
group:
transfer ipv4 [ OK ]
mark ipv4 [ OK ]
transfer ipv6 [ OK ]
mark ipv6 [ OK ]
PASS: all packets had packet mark set
sockopt v4 [ OK ]
sockopt v6 [ OK ]
PASS: SOL_MPTCP getsockopt has expected information
TCP_INQ: -t tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -t tcp
TCP_INQ: -6 -t tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -6 -t tcp
TCP_INQ: -r tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -r tcp
TCP_INQ: -6 -r tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -6 -r tcp
TCP_INQ: -r tcp -t tcp [ OK ]
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index ff49ee9b9cc2..f445fc685b86 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -173,6 +173,7 @@ do_transfer()
wait $spid
local rets=$?
+ printf "%-25s %35s" "transfer ${ip}" " "
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
echo " client exit code $retc, server $rets" 1>&2
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
@@ -186,7 +187,9 @@ do_transfer()
ret=1
return 1
fi
+ mptcp_lib_print_ok "[ OK ]"
+ printf "%-25s %35s" "mark ${ip}" " "
if [ $local_addr = "::" ];then
check_mark $listener_ns 6 || retc=1
check_mark $connector_ns 6 || retc=1
@@ -202,6 +205,7 @@ do_transfer()
mptcp_lib_result_code "${rets}" "transfer ${ip}"
if [ $retc -eq 0 ] && [ $rets -eq 0 ];then
+ mptcp_lib_print_ok "[ OK ]"
return 0
fi
@@ -232,23 +236,27 @@ do_mptcp_sockopt_tests()
ip netns exec "$ns3" ./mptcp_sockopt
lret=$?
+ printf "%-25s %35s" "sockopt v4" " "
if [ $lret -ne 0 ]; then
echo "FAIL: SOL_MPTCP getsockopt" 1>&2
mptcp_lib_result_fail "sockopt v4"
ret=$lret
return
fi
+ mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "sockopt v4"
ip netns exec "$ns3" ./mptcp_sockopt -6
lret=$?
+ printf "%-25s %35s" "sockopt v6" " "
if [ $lret -ne 0 ]; then
echo "FAIL: SOL_MPTCP getsockopt (ipv6)" 1>&2
mptcp_lib_result_fail "sockopt v6"
ret=$lret
return
fi
+ mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "sockopt v6"
}
@@ -271,6 +279,7 @@ run_tests()
do_tcpinq_test()
{
+ printf "%-25s %35s" "TCP_INQ: $*" " "
ip netns exec "$ns3" ./mptcp_inq "$@"
local lret=$?
if [ $lret -ne 0 ];then
@@ -279,6 +288,7 @@ do_tcpinq_test()
mptcp_lib_result_fail "TCP_INQ: $*"
return $lret
fi
+ mptcp_lib_print_ok "[ OK ]"
echo "PASS: TCP_INQ cmsg/ioctl $@"
mptcp_lib_result_pass "TCP_INQ: $*"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 15/32] selftests: mptcp: sockopt: print colored output
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (13 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 14/32] selftests: mptcp: sockopt: print every test result Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 16/32] selftests: mptcp: simult_flows: " Geliang Tang
` (16 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Use mptcp_lib_print_info() helper in script mptcp_sockopt.sh to print
test results with colors.
Having colors helps to quickly identify issues when looking at a long
list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index f445fc685b86..d03f9f9daa39 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -290,7 +290,7 @@ do_tcpinq_test()
fi
mptcp_lib_print_ok "[ OK ]"
- echo "PASS: TCP_INQ cmsg/ioctl $@"
+ mptcp_lib_print_info "PASS: TCP_INQ cmsg/ioctl $@"
mptcp_lib_result_pass "TCP_INQ: $*"
return $lret
}
@@ -337,12 +337,12 @@ run_tests $ns1 $ns2 10.0.1.1
run_tests $ns1 $ns2 dead:beef:1::1
if [ $ret -eq 0 ];then
- echo "PASS: all packets had packet mark set"
+ mptcp_lib_print_info "PASS: all packets had packet mark set"
fi
do_mptcp_sockopt_tests
if [ $ret -eq 0 ];then
- echo "PASS: SOL_MPTCP getsockopt has expected information"
+ mptcp_lib_print_info "PASS: SOL_MPTCP getsockopt has expected information"
fi
do_tcpinq_tests
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 16/32] selftests: mptcp: simult_flows: print colored output
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (14 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 15/32] selftests: mptcp: sockopt: print colored output Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 17/32] selftests: mptcp: add PORT instead of TEST_COUNT Geliang Tang
` (15 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Use mptcp_lib_print_ok() and _err() helpers in script simult_flows.sh
to print test results with colors.
Having colors helps to quickly identify issues when looking at a long
list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/simult_flows.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index c1a21cd8c076..86f021bccae0 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -175,12 +175,12 @@ do_transfer()
printf "%-16s" " max $max_time "
if [ $retc -eq 0 ] && [ $rets -eq 0 ] && \
[ $cmpc -eq 0 ] && [ $cmps -eq 0 ]; then
- echo "[ OK ]"
+ mptcp_lib_print_ok "[ OK ]"
cat "$capout"
return 0
fi
- echo " [ FAIL ]"
+ mptcp_lib_print_err " [ FAIL ]"
echo "client exit code $retc, server $rets" 1>&2
echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 17/32] selftests: mptcp: add PORT instead of TEST_COUNT
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (15 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 16/32] selftests: mptcp: simult_flows: " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 18/32] selftests: mptcp: connect: print out test counter Geliang Tang
` (14 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch adds a new counter 'PORT' instead of TEST_COUNT to increase
port numbers in mptcp_connect.sh.
This can avoid outputting discontinuous test counters.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 4041414c8804..0a6d40c3aa85 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -28,6 +28,7 @@ do_tcp=0
checksum=false
filesize=0
connect_per_transfer=1
+PORT=0
if [ $tc_loss -eq 100 ];then
tc_loss=1%
@@ -308,8 +309,9 @@ do_transfer()
local extra_args="$7"
local port
- port=$((10000+$TEST_COUNT))
+ port=$((10000+$PORT))
TEST_COUNT=$((TEST_COUNT+1))
+ PORT=$((PORT+1))
if [ "$rcvbuf" -gt 0 ]; then
extra_args="$extra_args -R $rcvbuf"
@@ -691,7 +693,7 @@ EOF
mptcp_lib_print_info "INFO: test $msg"
- TEST_COUNT=10000
+ PORT=10000
local extra_args="-o TRANSPARENT"
do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP \
${connect_addr} ${local_addr} "${extra_args}"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 18/32] selftests: mptcp: connect: print out test counter
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (16 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 17/32] selftests: mptcp: add PORT instead of TEST_COUNT Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 19/32] selftests: mptcp: rename test_cnt to TEST_COUNT Geliang Tang
` (13 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch prints out TEST_COUNT for every tests in script
mptcp_connect.sh. The output looks like:
01 New MPTCP socket can be blocked via sysctl [ OK ]
INFO: validating network environment with pings
02 INFO: Using loss of 0.90% delay 30 ms on ns3eth4
03 ns1 MPTCP -> ns1 (10.0.1.1:10000 ) MPTCP (duration 116ms) [ OK ]
04 ns1 MPTCP -> ns1 (10.0.1.1:10001 ) TCP (duration 33ms) [ OK ]
05 ns1 TCP -> ns1 (10.0.1.1:10002 ) MPTCP (duration 25ms) [ OK ]
06 ns1 MPTCP -> ns1 (dead:beef:1::1:10003) MPTCP (duration 128ms) [ OK ]
07 ns1 MPTCP -> ns1 (dead:beef:1::1:10004) TCP (duration 31ms) [ OK ]
Having test counters helps to quickly identify issues when looking at a
long list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../selftests/net/mptcp/mptcp_connect.sh | 21 ++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 0a6d40c3aa85..7442bb2a8562 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -267,7 +267,8 @@ check_mptcp_disabled()
return 1
fi
- echo -n -e "New MPTCP socket can be blocked via sysctl\t\t"
+ TEST_COUNT=$((TEST_COUNT+1))
+ echo -n -e "0${TEST_COUNT} New MPTCP socket can be blocked via sysctl\t\t"
mptcp_lib_print_ok "\t [ OK ]"
mptcp_lib_result_pass "New MPTCP socket can be blocked via sysctl"
return 0
@@ -337,7 +338,8 @@ do_transfer()
local addr_port
addr_port=$(printf "%s:%d" ${connect_addr} ${port})
local result_msg
- result_msg="$(printf "%.3s %-5s -> %.3s (%-20s) %-5s" ${connector_ns} ${cl_proto} ${listener_ns} ${addr_port} ${srv_proto})"
+ result_msg="$(printf "%02u %.3s %-5s -> %.3s (%-20s) %-5s" \
+ ${TEST_COUNT} ${connector_ns} ${cl_proto} ${listener_ns} ${addr_port} ${srv_proto})"
printf "%s\t" "${result_msg}"
if $capture; then
@@ -641,7 +643,8 @@ run_test_transparent()
# following function has been exported (T). Not great but better than
# checking for a specific kernel version.
if ! mptcp_lib_kallsyms_has "T __ip_sock_set_tos$"; then
- echo "INFO: ${msg} not supported by the kernel: SKIP"
+ TEST_COUNT=$((TEST_COUNT+1))
+ echo "${TEST_COUNT} INFO: ${msg} not supported by the kernel: SKIP"
mptcp_lib_result_skip "${TEST_GROUP}"
return
fi
@@ -658,7 +661,8 @@ table inet mangle {
}
EOF
if [ $? -ne 0 ]; then
- echo "SKIP: $msg, could not load nft ruleset"
+ TEST_COUNT=$((TEST_COUNT+1))
+ echo "${TEST_COUNT} SKIP: $msg, could not load nft ruleset"
mptcp_lib_fail_if_expected_feature "nft rules"
mptcp_lib_result_skip "${TEST_GROUP}"
return
@@ -675,7 +679,8 @@ EOF
ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100
if [ $? -ne 0 ]; then
ip netns exec "$listener_ns" nft flush ruleset
- echo "SKIP: $msg, ip $r6flag rule failed"
+ TEST_COUNT=$((TEST_COUNT+1))
+ echo "${TEST_COUNT} SKIP: $msg, ip $r6flag rule failed"
mptcp_lib_fail_if_expected_feature "ip rule"
mptcp_lib_result_skip "${TEST_GROUP}"
return
@@ -685,7 +690,8 @@ EOF
if [ $? -ne 0 ]; then
ip netns exec "$listener_ns" nft flush ruleset
ip -net "$listener_ns" $r6flag rule del fwmark 1 lookup 100
- echo "SKIP: $msg, ip route add local $local_addr failed"
+ TEST_COUNT=$((TEST_COUNT+1))
+ echo "${TEST_COUNT} SKIP: $msg, ip route add local $local_addr failed"
mptcp_lib_fail_if_expected_feature "ip route"
mptcp_lib_result_skip "${TEST_GROUP}"
return
@@ -842,7 +848,8 @@ mptcp_lib_result_code "${ret}" "ping tests"
stop_if_error "Could not even run ping tests"
[ -n "$tc_loss" ] && tc -net "$ns2" qdisc add dev ns2eth3 root netem loss random $tc_loss delay ${tc_delay}ms
-echo -n "INFO: Using loss of $tc_loss "
+TEST_COUNT=$((TEST_COUNT+1))
+echo -n "0${TEST_COUNT} INFO: Using loss of $tc_loss "
test "$tc_delay" -gt 0 && echo -n "delay $tc_delay ms "
reorder_delay=$(($tc_delay / 4))
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 19/32] selftests: mptcp: rename test_cnt to TEST_COUNT
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (17 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 18/32] selftests: mptcp: connect: print out test counter Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 20/32] selftests: mptcp: diag: print out test counter Geliang Tang
` (12 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Most scripts use variable TEST_COUNT, but test_cnt are used in diag.sh
and simult_flows.sh. To maintain consistency with other scripts, this
patch renames them as TEST_COUNT:
test_cnt -> TEST_COUNT in diag.sh, simult_flows.sh
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 12 ++++++------
tools/testing/selftests/net/mptcp/simult_flows.sh | 6 +++---
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index 7cf1f602bf48..541a9d2d128c 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -5,7 +5,7 @@
mptcp_lib_ns_init
ksft_skip=4
-test_cnt=1
+TEST_COUNT=1
timeout_poll=100
timeout_test=$((timeout_poll * 2 + 1))
@@ -67,13 +67,13 @@ __chk_nr()
else
mptcp_lib_print_err "[ FAIL ] expected $expected found $nr"
mptcp_lib_result_fail "${msg}"
- ret=$test_cnt
+ ret=$TEST_COUNT
fi
else
mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "${msg}"
fi
- test_cnt=$((test_cnt+1))
+ TEST_COUNT=$((TEST_COUNT+1))
}
__chk_msk_nr()
@@ -113,16 +113,16 @@ wait_msk_nr()
if [ $i -ge $timeout ]; then
mptcp_lib_print_err "[ FAIL ] timeout while expecting $expected max $max last $nr"
mptcp_lib_result_fail "${msg} # timeout"
- ret=$test_cnt
+ ret=$TEST_COUNT
elif [ $nr != $expected ]; then
mptcp_lib_print_err "[ FAIL ] expected $expected found $nr"
mptcp_lib_result_fail "${msg} # unexpected result"
- ret=$test_cnt
+ ret=$TEST_COUNT
else
mptcp_lib_print_ok "[ OK ]"
mptcp_lib_result_pass "${msg}"
fi
- test_cnt=$((test_cnt+1))
+ TEST_COUNT=$((TEST_COUNT+1))
}
chk_msk_fallback_nr()
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 86f021bccae0..6a4568d8f596 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -8,7 +8,7 @@ capture=false
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-test_cnt=1
+TEST_COUNT=1
bail=0
slack=50
@@ -115,8 +115,8 @@ do_transfer()
local sin=$2
local max_time=$3
local port
- port=$((10000+$test_cnt))
- test_cnt=$((test_cnt+1))
+ port=$((10000+$TEST_COUNT))
+ TEST_COUNT=$((TEST_COUNT+1))
:> "$cout"
:> "$sout"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 20/32] selftests: mptcp: diag: print out test counter
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (18 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 19/32] selftests: mptcp: rename test_cnt to TEST_COUNT Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 21/32] selftests: mptcp: simult_flows: " Geliang Tang
` (11 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch prints out TEST_COUNT for every tests in script diag.sh.
The output looks like:
01 no msk on netns creation [ OK ]
02 listen match for dport 10000 [ OK ]
03 listen match for sport 10000 [ OK ]
04 listen match for saddr and sport [ OK ]
05 all listen sockets [ OK ]
Having test counters helps to quickly identify issues when looking at a
long list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index 541a9d2d128c..4279bb59939d 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -5,7 +5,7 @@
mptcp_lib_ns_init
ksft_skip=4
-TEST_COUNT=1
+TEST_COUNT=0
timeout_poll=100
timeout_test=$((timeout_poll * 2 + 1))
@@ -59,7 +59,7 @@ __chk_nr()
nr=$(eval $command)
- printf "%-50s" "$msg"
+ printf "%02u %-50s" "$((TEST_COUNT+1))" "$msg"
if [ $nr != $expected ]; then
if [ $nr = "$skip" ] && ! mptcp_lib_expect_all_features; then
mptcp_lib_print_warn "[ SKIP ] Feature probably not supported"
@@ -109,7 +109,7 @@ wait_msk_nr()
sleep 1
done
- printf "%-50s" "$msg"
+ printf "%02u %-50s" "$((TEST_COUNT+1))" "$msg"
if [ $i -ge $timeout ]; then
mptcp_lib_print_err "[ FAIL ] timeout while expecting $expected max $max last $nr"
mptcp_lib_result_fail "${msg} # timeout"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 21/32] selftests: mptcp: simult_flows: print out test counter
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (19 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 20/32] selftests: mptcp: diag: print out test counter Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 22/32] selftests: mptcp: sockopt: " Geliang Tang
` (10 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch prints out TEST_COUNT for every tests in script simult_flows.sh.
The output looks like:
01 balanced bwidth 7411 max 8456 [ OK ]
02 balanced bwidth - reverse direction 7380 max 8456 [ OK ]
03 balanced bwidth with unbalanced delay 7434 max 8456 [ OK ]
Having test counters helps to quickly identify issues when looking at a
long list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/simult_flows.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 6a4568d8f596..a9e14698c179 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -8,7 +8,7 @@ capture=false
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-TEST_COUNT=1
+TEST_COUNT=0
bail=0
slack=50
@@ -227,7 +227,7 @@ run_test()
# completion (see mptcp_connect): 200ms on each side, add some slack
time=$((time + 400 + slack))
- printf "%-60s" "$msg"
+ printf "%02u %-60s" "$((TEST_COUNT+1))" "$msg"
do_transfer $small $large $time
lret=$?
mptcp_lib_result_code "${lret}" "${msg}"
@@ -236,7 +236,7 @@ run_test()
[ $bail -eq 0 ] || exit $ret
fi
- printf "%-60s" "$msg - reverse direction"
+ printf "%02u %-60s" "$((TEST_COUNT+1))" "$msg - reverse direction"
do_transfer $large $small $time
lret=$?
mptcp_lib_result_code "${lret}" "${msg}"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 22/32] selftests: mptcp: sockopt: print out test counter
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (20 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 21/32] selftests: mptcp: simult_flows: " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 23/32] selftests: mptcp: netlink: " Geliang Tang
` (9 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch prints out TEST_COUNT for every tests in script
mptcp_sockopt.sh.
The output looks like:
01 transfer ipv4 [ OK ]
02 mark ipv4 [ OK ]
03 transfer ipv6 [ OK ]
04 mark ipv6 [ OK ]
PASS: all packets had packet mark set
05 sockopt v4 [ OK ]
06 sockopt v6 [ OK ]
PASS: SOL_MPTCP getsockopt has expected information
07 TCP_INQ: -t tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -t tcp
08 TCP_INQ: -6 -t tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -6 -t tcp
09 TCP_INQ: -r tcp [ OK ]
PASS: TCP_INQ cmsg/ioctl -r tcp
10 TCP_INQ: -6 -r tcp [ OK ]
Having test counters helps to quickly identify issues when looking at a
long list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_sockopt.sh | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index d03f9f9daa39..2aff01813058 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -173,7 +173,8 @@ do_transfer()
wait $spid
local rets=$?
- printf "%-25s %35s" "transfer ${ip}" " "
+ TEST_COUNT=$((TEST_COUNT+1))
+ printf "%02u %-25s %35s" "$TEST_COUNT" "transfer ${ip}" " "
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
echo " client exit code $retc, server $rets" 1>&2
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
@@ -189,7 +190,8 @@ do_transfer()
fi
mptcp_lib_print_ok "[ OK ]"
- printf "%-25s %35s" "mark ${ip}" " "
+ TEST_COUNT=$((TEST_COUNT+1))
+ printf "%02u %-25s %35s" "$TEST_COUNT" "mark ${ip}" " "
if [ $local_addr = "::" ];then
check_mark $listener_ns 6 || retc=1
check_mark $connector_ns 6 || retc=1
@@ -236,7 +238,8 @@ do_mptcp_sockopt_tests()
ip netns exec "$ns3" ./mptcp_sockopt
lret=$?
- printf "%-25s %35s" "sockopt v4" " "
+ TEST_COUNT=$((TEST_COUNT+1))
+ printf "%02u %-25s %35s" "$TEST_COUNT" "sockopt v4" " "
if [ $lret -ne 0 ]; then
echo "FAIL: SOL_MPTCP getsockopt" 1>&2
mptcp_lib_result_fail "sockopt v4"
@@ -249,7 +252,8 @@ do_mptcp_sockopt_tests()
ip netns exec "$ns3" ./mptcp_sockopt -6
lret=$?
- printf "%-25s %35s" "sockopt v6" " "
+ TEST_COUNT=$((TEST_COUNT+1))
+ printf "%02u %-25s %35s" "$TEST_COUNT" "sockopt v6" " "
if [ $lret -ne 0 ]; then
echo "FAIL: SOL_MPTCP getsockopt (ipv6)" 1>&2
mptcp_lib_result_fail "sockopt v6"
@@ -279,7 +283,8 @@ run_tests()
do_tcpinq_test()
{
- printf "%-25s %35s" "TCP_INQ: $*" " "
+ TEST_COUNT=$((TEST_COUNT+1))
+ printf "%02u %-25s %35s" "$TEST_COUNT" "TCP_INQ: $*" " "
ip netns exec "$ns3" ./mptcp_inq "$@"
local lret=$?
if [ $lret -ne 0 ];then
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 23/32] selftests: mptcp: netlink: print out test counter
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (21 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 22/32] selftests: mptcp: sockopt: " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 24/32] selftests: mptcp: userspace: " Geliang Tang
` (8 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch prints out TEST_COUNT for every tests in script pm_netlink.sh.
The output looks like:
1 defaults addr list [ OK ]
2 simple add/get addr [ OK ]
3 dump addrs [ OK ]
4 simple del addr [ OK ]
5 dump addrs after del [ OK ]
6 duplicate addr [ OK ]
7 id addr increment [ OK ]
8 hard addr limit [ OK ]
9 above hard addr limit [ OK ]
Having test counters helps to quickly identify issues when looking at a
long list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/pm_netlink.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 32265d4ecb41..e89b78e7d4a0 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -45,6 +45,8 @@ ip netns exec $ns1 sysctl -q net.mptcp.enabled=1
check()
{
+ TEST_COUNT=$((TEST_COUNT+1))
+ printf "%2u " "$TEST_COUNT"
# ${*} doesn't work here since there're spaces in some arguments.
mptcp_lib_check "${1}" "${2}" "${3}"
local rc=$?
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 24/32] selftests: mptcp: userspace: print out test counter
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (22 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 23/32] selftests: mptcp: netlink: " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 25/32] selftests: mptcp: export TEST_NAME/COUNT to mptcp_lib Geliang Tang
` (7 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch prints out TEST_COUNT for every tests in script userspace_pm.sh.
The output looks like:
INFO: Init
01 Created network namespaces ns1, ns2 [ OK ]
INFO: Make connections
02 Established IPv4 MPTCP Connection ns2 => ns1 [ OK ]
03 Established IPv6 MPTCP Connection ns2 => ns1 [ OK ]
INFO: Announce tests
04 ADD_ADDR 10.0.2.2 (ns2) => ns1, invalid token [ OK ]
05 ADD_ADDR id:14 10.0.2.2 (ns2) => ns1, reuse port [ OK ]
Having test counters helps to quickly identify issues when looking at a
long list of output logs and results.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/userspace_pm.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 22a436c4a77a..9399dff81dd8 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -45,6 +45,8 @@ client_addr_id=${RANDOM:0:2}
server_addr_id=${RANDOM:0:2}
mptcp_lib_ns_init
+TEST_NAME=""
+TEST_COUNT=0
_printf() {
stdbuf -o0 -e0 printf "${@}"
@@ -59,8 +61,9 @@ print_title()
print_test()
{
TEST_NAME="${1}"
+ TEST_COUNT=$((TEST_COUNT+1))
- _printf "%-63s" "${TEST_NAME}"
+ _printf "%02u %-63s" "${TEST_COUNT}" "${TEST_NAME}"
}
test_pass()
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 25/32] selftests: mptcp: export TEST_NAME/COUNT to mptcp_lib
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (23 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 24/32] selftests: mptcp: userspace: " Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 26/32] selftests: mptcp: export cin/cout/sin/sout vars Geliang Tang
` (6 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Move the variables 'TEST_NAME' and 'TEST_COUNT' into mptcp_lib.sh as
public variables.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 1 -
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 1 -
tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 --
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 3 +++
tools/testing/selftests/net/mptcp/simult_flows.sh | 1 -
tools/testing/selftests/net/mptcp/userspace_pm.sh | 2 --
6 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index 4279bb59939d..c7a7c0d2792c 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -5,7 +5,6 @@
mptcp_lib_ns_init
ksft_skip=4
-TEST_COUNT=0
timeout_poll=100
timeout_test=$((timeout_poll * 2 + 1))
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 7442bb2a8562..54ad82ed8c91 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -123,7 +123,6 @@ done
mptcp_lib_ns_init
-TEST_COUNT=0
TEST_GROUP=""
cleanup()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 52a4080b32d9..bf2f73209cdc 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -40,8 +40,6 @@ declare -A all_tests
declare -a only_tests_ids
declare -a only_tests_names
declare -A failed_tests
-TEST_COUNT=0
-TEST_NAME=""
nr_blank=6
# These var are used only in some tests, make sure they are not already set
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index d1bd8aa02c2e..d645bfad1415 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -17,6 +17,9 @@ MPTCP_LIB_LISTENER_CLOSED=16 #MPTCP_EVENT_LISTENER_CLOSED
readonly AF_INET=2
readonly AF_INET6=10
+TEST_NAME=""
+TEST_COUNT=0
+
MPTCP_LIB_SUBTESTS=()
# only if supported (or forced) and not disabled, see no-color.org
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index a9e14698c179..e1f4ddf04bc3 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -8,7 +8,6 @@ capture=false
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-TEST_COUNT=0
bail=0
slack=50
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 9399dff81dd8..5620997b4e32 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -45,8 +45,6 @@ client_addr_id=${RANDOM:0:2}
server_addr_id=${RANDOM:0:2}
mptcp_lib_ns_init
-TEST_NAME=""
-TEST_COUNT=0
_printf() {
stdbuf -o0 -e0 printf "${@}"
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 26/32] selftests: mptcp: export cin/cout/sin/sout vars
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (24 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 25/32] selftests: mptcp: export TEST_NAME/COUNT to mptcp_lib Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 27/32] selftests: mptcp: change capture/checksum as bool Geliang Tang
` (5 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Export cin, cout, sin and sout vars into mptcp_lib.sh as public vars.
Then they can be used in all test scripts unified.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 10 ----------
tools/testing/selftests/net/mptcp/mptcp_join.sh | 12 ++----------
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 6 ++++++
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 10 ----------
tools/testing/selftests/net/mptcp/simult_flows.sh | 3 ---
5 files changed, 8 insertions(+), 33 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 54ad82ed8c91..a2511a37d9ce 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -7,11 +7,7 @@ time_start=$(date +%s)
optstring="S:R:d:e:l:r:h4cm:f:tC"
final_ret=0
-sin=""
-sout=""
cin_disconnect=""
-cin=""
-cout=""
ksft_skip=4
capture=false
timeout_poll=30
@@ -128,8 +124,6 @@ TEST_GROUP=""
cleanup()
{
rm -f "$cin_disconnect" "$cout_disconnect"
- rm -f "$cin" "$cout"
- rm -f "$sin" "$sout"
rm -f "$capout"
mptcp_lib_ns_exit
@@ -145,10 +139,6 @@ if [ $? -ne 0 ];then
exit $ksft_skip
fi
-sin=$(mktemp)
-sout=$(mktemp)
-cin=$(mktemp)
-cout=$(mktemp)
capout=$(mktemp)
cin_disconnect="$cin".disconnect
cout_disconnect="$cout".disconnect
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index bf2f73209cdc..c2f78c849da8 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -12,14 +12,10 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-sin=""
sinfail=""
-sout=""
-cin=""
cinfail=""
cinsent=""
tmpfile=""
-cout=""
capout=""
ksft_skip=4
iptables="iptables"
@@ -155,11 +151,7 @@ init() {
check_tools
- sin=$(mktemp)
- sout=$(mktemp)
- cin=$(mktemp)
cinsent=$(mktemp)
- cout=$(mktemp)
mptcp_lib_evts_init
trap cleanup EXIT
@@ -170,8 +162,8 @@ init() {
cleanup()
{
- rm -f "$cin" "$cout" "$sinfail"
- rm -f "$sin" "$sout" "$cinsent" "$cinfail"
+ rm -f "$sinfail"
+ rm -f "$cinsent" "$cinfail"
rm -f "$tmpfile"
mptcp_lib_evts_remove
cleanup_partial
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index d645bfad1415..11983648fce3 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -22,6 +22,11 @@ TEST_COUNT=0
MPTCP_LIB_SUBTESTS=()
+sin=$(mktemp)
+sout=$(mktemp)
+cin=$(mktemp)
+cout=$(mktemp)
+
# only if supported (or forced) and not disabled, see no-color.org
if { [ -t 1 ] || [ "${SELFTESTS_MPTCP_LIB_COLOR_FORCE:-}" = "1" ]; } &&
[ "${NO_COLOR:-}" != "1" ]; then
@@ -506,4 +511,5 @@ mptcp_lib_cleanup()
{
echo "cleanup"
rm -f $mptcp_lib_err
+ rm -f "$sin" "$sout" "$cin" "$cout"
}
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 2aff01813058..8640dea7abca 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -3,10 +3,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-sin=""
-sout=""
-cin=""
-cout=""
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
@@ -71,8 +67,6 @@ init()
cleanup()
{
mptcp_lib_ns_exit
- rm -f "$cin" "$cout"
- rm -f "$sin" "$sout"
mptcp_lib_cleanup
}
@@ -329,10 +323,6 @@ do_tcpinq_tests()
return $?
}
-sin=$(mktemp)
-sout=$(mktemp)
-cin=$(mktemp)
-cout=$(mktemp)
init
make_file "$cin" "client" 1
make_file "$sin" "server" 1
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index e1f4ddf04bc3..2b46c95bb6af 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -20,7 +20,6 @@ usage() {
cleanup()
{
- rm -f "$cout" "$sout"
rm -f "$large" "$small"
rm -f "$capout"
@@ -46,8 +45,6 @@ setup()
{
large=$(mktemp)
small=$(mktemp)
- sout=$(mktemp)
- cout=$(mktemp)
capout=$(mktemp)
size=$((2 * 2048 * 4096))
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 27/32] selftests: mptcp: change capture/checksum as bool
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (25 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 26/32] selftests: mptcp: export cin/cout/sin/sout vars Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 28/32] selftests: mptcp: export capture/checksum vars Geliang Tang
` (4 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
To maintain consistency with other scripts, this patch changes vars
'capture' and 'checksum' as bool vars in mptcp_join.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 22 +++++++++----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index c2f78c849da8..63f89bc9b7aa 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -22,11 +22,11 @@ iptables="iptables"
ip6tables="ip6tables"
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-capture=0
-checksum=0
+capture=false
+checksum=false
ip_mptcp=0
check_invert=0
-validate_checksum=0
+validate_checksum=false
init=0
last_test_failed=0
last_test_skipped=0
@@ -76,7 +76,7 @@ init_partial()
for netns in "$ns1" "$ns2"; do
ip netns exec $netns sysctl -q net.mptcp.enabled=1
ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true
- if [ $checksum -eq 1 ]; then
+ if $checksum; then
ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1
fi
done
@@ -348,7 +348,7 @@ reset_with_checksum()
ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=$ns1_enable
ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=$ns2_enable
- validate_checksum=1
+ validate_checksum=true
}
reset_with_allow_join_id0()
@@ -381,7 +381,7 @@ reset_with_allow_join_id0()
setup_fail_rules()
{
check_invert=1
- validate_checksum=1
+ validate_checksum=true
local i="$1"
local ip="${2:-4}"
local tables
@@ -953,7 +953,7 @@ do_transfer()
:> "$sout"
:> "$capout"
- if [ $capture -eq 1 ]; then
+ if $capture; then
local capuser
if [ -z $SUDO_USER ] ; then
capuser=""
@@ -1054,7 +1054,7 @@ do_transfer()
wait $spid
local rets=$?
- if [ $capture -eq 1 ]; then
+ if $capture; then
sleep 1
kill $cappid
fi
@@ -1442,7 +1442,7 @@ chk_join_nr()
else
print_ok
fi
- if [ $validate_checksum -eq 1 ]; then
+ if $validate_checksum; then
chk_csum_nr $csum_ns1 $csum_ns2
chk_fail_nr $fail_nr $fail_nr
chk_rst_nr $rst_nr $rst_nr
@@ -3579,10 +3579,10 @@ while getopts "${all_tests_args}cCih" opt; do
tests+=("${all_tests[${opt}]}")
;;
c)
- capture=1
+ capture=true
;;
C)
- checksum=1
+ checksum=true
;;
i)
ip_mptcp=1
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 28/32] selftests: mptcp: export capture/checksum vars
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (26 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 27/32] selftests: mptcp: change capture/checksum as bool Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 29/32] selftests: mptcp: change timeout_poll to 30 in diag Geliang Tang
` (3 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Move the variables 'capture' and 'checksum' into mptcp_lib.sh as public
variables.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 2 --
tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 --
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 3 +++
tools/testing/selftests/net/mptcp/simult_flows.sh | 1 -
4 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index a2511a37d9ce..59482d5476c2 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -9,7 +9,6 @@ optstring="S:R:d:e:l:r:h4cm:f:tC"
final_ret=0
cin_disconnect=""
ksft_skip=4
-capture=false
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
ipv6=true
@@ -21,7 +20,6 @@ sndbuf=0
rcvbuf=0
options_log=true
do_tcp=0
-checksum=false
filesize=0
connect_per_transfer=1
PORT=0
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 63f89bc9b7aa..d36639e48027 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -22,8 +22,6 @@ iptables="iptables"
ip6tables="ip6tables"
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-capture=false
-checksum=false
ip_mptcp=0
check_invert=0
validate_checksum=false
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 11983648fce3..fd54074d5d42 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -20,6 +20,9 @@ readonly AF_INET6=10
TEST_NAME=""
TEST_COUNT=0
+capture=false
+checksum=false
+
MPTCP_LIB_SUBTESTS=()
sin=$(mktemp)
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 2b46c95bb6af..32981972189a 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -4,7 +4,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
mptcp_lib_ns_init
-capture=false
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 29/32] selftests: mptcp: change timeout_poll to 30 in diag
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (27 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 28/32] selftests: mptcp: export capture/checksum vars Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 30/32] selftests: mptcp: export timeout_test to mptcp_lib Geliang Tang
` (2 subsequent siblings)
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
In most scripts timeout_poll is defined to 30, but in diag.sh,
it's 100. To maintain consistency with other scripts, this patch
changes it to 30.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index c7a7c0d2792c..b5a17d2b6723 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -5,7 +5,7 @@
mptcp_lib_ns_init
ksft_skip=4
-timeout_poll=100
+timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
flush_pids()
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 30/32] selftests: mptcp: export timeout_test to mptcp_lib
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (28 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 29/32] selftests: mptcp: change timeout_poll to 30 in diag Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 31/32] selftests: mptcp: use KSFT_SKIP instead ksft_skip Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 32/32] selftests: mptcp: netlink: fix positions of newline Geliang Tang
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Move the variables 'timeout_poll' and 'timeout_test' into mptcp_lib.sh
as public variables.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 2 --
tools/testing/selftests/net/mptcp/mptcp_connect.sh | 2 --
tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 --
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 3 +++
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 2 --
tools/testing/selftests/net/mptcp/simult_flows.sh | 2 --
6 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index b5a17d2b6723..f646fede9872 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -5,8 +5,6 @@
mptcp_lib_ns_init
ksft_skip=4
-timeout_poll=30
-timeout_test=$((timeout_poll * 2 + 1))
flush_pids()
{
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 59482d5476c2..683172e626b8 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -9,8 +9,6 @@ optstring="S:R:d:e:l:r:h4cm:f:tC"
final_ret=0
cin_disconnect=""
ksft_skip=4
-timeout_poll=30
-timeout_test=$((timeout_poll * 2 + 1))
ipv6=true
ethtool_random_on=true
tc_delay="$((RANDOM%50))"
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index d36639e48027..3b92a0b78605 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -20,8 +20,6 @@ capout=""
ksft_skip=4
iptables="iptables"
ip6tables="ip6tables"
-timeout_poll=30
-timeout_test=$((timeout_poll * 2 + 1))
ip_mptcp=0
check_invert=0
validate_checksum=false
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index fd54074d5d42..f404ac8d4b14 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -23,6 +23,9 @@ TEST_COUNT=0
capture=false
checksum=false
+readonly timeout_poll=30
+timeout_test=$((timeout_poll * 2 + 1))
+
MPTCP_LIB_SUBTESTS=()
sin=$(mktemp)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 8640dea7abca..2d5b6ade7df0 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -4,8 +4,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
ksft_skip=4
-timeout_poll=30
-timeout_test=$((timeout_poll * 2 + 1))
iptables="iptables"
ip6tables="ip6tables"
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 32981972189a..0ba26a749571 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -5,8 +5,6 @@
mptcp_lib_ns_init
ksft_skip=4
-timeout_poll=30
-timeout_test=$((timeout_poll * 2 + 1))
bail=0
slack=50
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 31/32] selftests: mptcp: use KSFT_SKIP instead ksft_skip
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (29 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 30/32] selftests: mptcp: export timeout_test to mptcp_lib Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 32/32] selftests: mptcp: netlink: fix positions of newline Geliang Tang
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch uses the public var KSFT_SKIP in mptcp_lib.sh instead of
ksft_skip, and drop every 'ksft_skip=4'.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/diag.sh | 5 ++---
.../testing/selftests/net/mptcp/mptcp_connect.sh | 5 ++---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 +++++++--------
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 2 +-
.../testing/selftests/net/mptcp/mptcp_sockopt.sh | 7 +++----
tools/testing/selftests/net/mptcp/pm_netlink.sh | 4 +---
tools/testing/selftests/net/mptcp/simult_flows.sh | 3 +--
7 files changed, 17 insertions(+), 24 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh
index f646fede9872..f93f5bdc49ad 100755
--- a/tools/testing/selftests/net/mptcp/diag.sh
+++ b/tools/testing/selftests/net/mptcp/diag.sh
@@ -4,7 +4,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
mptcp_lib_ns_init
-ksft_skip=4
flush_pids()
{
@@ -33,12 +32,12 @@ mptcp_lib_check_mptcp
ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "SKIP: Could not run test without ip tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
ss -h | grep -q MPTCP
if [ $? -ne 0 ];then
echo "SKIP: ss tool does not support MPTCP"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
get_msk_inuse()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
index 683172e626b8..3d03e3b82eed 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
@@ -8,7 +8,6 @@ time_start=$(date +%s)
optstring="S:R:d:e:l:r:h4cm:f:tC"
final_ret=0
cin_disconnect=""
-ksft_skip=4
ipv6=true
ethtool_random_on=true
tc_delay="$((RANDOM%50))"
@@ -132,7 +131,7 @@ mptcp_lib_check_kallsyms
ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "SKIP: Could not run test without ip tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
capout=$(mktemp)
@@ -229,7 +228,7 @@ fi
check_mptcp_disabled()
{
local disabled_ns="ns_disabled-$rndh"
- ip netns add ${disabled_ns} || exit $ksft_skip
+ ip netns add ${disabled_ns} || exit ${KSFT_SKIP}
# net.mptcp.enabled should be enabled by default
if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 3b92a0b78605..112db64402f8 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -17,7 +17,6 @@ cinfail=""
cinsent=""
tmpfile=""
capout=""
-ksft_skip=4
iptables="iptables"
ip6tables="ip6tables"
ip_mptcp=0
@@ -126,7 +125,7 @@ check_tools()
if ! ip -Version &> /dev/null; then
echo "SKIP: Could not run test without ip tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
# Use the legacy version if available to support old kernel versions
@@ -135,10 +134,10 @@ check_tools()
ip6tables="ip6tables-legacy"
elif ! iptables -V &> /dev/null; then
echo "SKIP: Could not run all tests without iptables tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
elif ! ip6tables -V &> /dev/null; then
echo "SKIP: Could not run all tests without ip6tables tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
}
@@ -394,15 +393,15 @@ setup_fail_rules()
-p tcp \
-m length --length 150:9999 \
-m statistic --mode nth --packet 1 --every 99999 \
- -j MARK --set-mark 42 || return ${ksft_skip}
+ -j MARK --set-mark 42 || return ${KSFT_SKIP}
- tc -n $ns2 qdisc add dev ns2eth$i clsact || return ${ksft_skip}
+ tc -n $ns2 qdisc add dev ns2eth$i clsact || return ${KSFT_SKIP}
tc -n $ns2 filter add dev ns2eth$i egress \
protocol ip prio 1000 \
handle 42 fw \
action pedit munge offset 148 u8 invert \
pipe csum tcp \
- index 100 || return ${ksft_skip}
+ index 100 || return ${KSFT_SKIP}
}
reset_with_fail()
@@ -416,7 +415,7 @@ reset_with_fail()
local rc=0
setup_fail_rules "${@}" || rc=$?
- if [ ${rc} -eq ${ksft_skip} ]; then
+ if [ ${rc} -eq ${KSFT_SKIP} ]; then
mark_as_skipped "unable to set the 'fail' rules"
return 1
fi
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index f404ac8d4b14..03d155037182 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -496,7 +496,7 @@ mptcp_lib_ns_init() {
local netns
for netns in "$ns1" "$ns2" "$ns3" "$ns4"; do
- ip netns add $netns || exit ${ksft_skip}
+ ip netns add $netns || exit ${KSFT_SKIP}
ip -net $netns link set lo up
ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 2d5b6ade7df0..c8d08521c552 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -3,7 +3,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-ksft_skip=4
iptables="iptables"
ip6tables="ip6tables"
@@ -74,7 +73,7 @@ mptcp_lib_check_kallsyms
ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "SKIP: Could not run test without ip tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
# Use the legacy version if available to support old kernel versions
@@ -83,10 +82,10 @@ if iptables-legacy -V &> /dev/null; then
ip6tables="ip6tables-legacy"
elif ! iptables -V &> /dev/null; then
echo "SKIP: Could not run all tests without iptables tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
elif ! ip6tables -V &> /dev/null; then
echo "SKIP: Could not run all tests without ip6tables tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
check_mark()
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index e89b78e7d4a0..d68353c18996 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -3,8 +3,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
-ksft_skip=4
-
usage() {
echo "Usage: $0 [ -h ]"
}
@@ -36,7 +34,7 @@ mptcp_lib_check_mptcp
ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "SKIP: Could not run test without ip tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
trap cleanup EXIT
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index 0ba26a749571..cfcdf43ff660 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -4,7 +4,6 @@
. "$(dirname "${0}")/mptcp_lib.sh"
mptcp_lib_ns_init
-ksft_skip=4
bail=0
slack=50
@@ -29,7 +28,7 @@ mptcp_lib_check_mptcp
ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "SKIP: Could not run test without ip tool"
- exit $ksft_skip
+ exit ${KSFT_SKIP}
fi
# "$ns1" ns2 ns3
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* [PATCH mptcp-next v2 32/32] selftests: mptcp: netlink: fix positions of newline
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
` (30 preceding siblings ...)
2023-11-14 6:35 ` [PATCH mptcp-next v2 31/32] selftests: mptcp: use KSFT_SKIP instead ksft_skip Geliang Tang
@ 2023-11-14 6:35 ` Geliang Tang
31 siblings, 0 replies; 56+ messages in thread
From: Geliang Tang @ 2023-11-14 6:35 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Some positions of the new line are arranged a bit strangely.
For example, the output 'pm_nl_ctl limits':
"accept 0
subflows 2" "defaults limits"
This one can be refactored using $'...\n...':
$'accept 0\nsubflows 2' "defaults limits"
For longer output results, such as the output 'pm_nl_ctl dump':
"id 1 flags 10.0.1.1
id 3 flags signal,backup 10.0.1.3
id 4 flags signal 10.0.1.4
id 5 flags signal 10.0.1.5
id 6 flags signal 10.0.1.6
id 7 flags signal 10.0.1.7
id 8 flags signal 10.0.1.8" "id limit"
This one can be refactored using "$(printf '%s\n' "..." "...")":
"$(printf '%s\n' "id 1 flags 10.0.1.1" \
"id 3 flags signal,backup 10.0.1.3" \
"id 4 flags signal 10.0.1.4" "id 5 flags signal 10.0.1.5" \
"id 6 flags signal 10.0.1.6" \
"id 7 flags signal 10.0.1.7" "id 8 flags signal 10.0.1.8")" \
"id limit"
This patch uses such methods to rearrange the outputs into different lines.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/pm_netlink.sh | 79 +++++++++----------
1 file changed, 37 insertions(+), 42 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index d68353c18996..1f2e9145fd77 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -61,8 +61,8 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
default_limits="$(ip netns exec $ns1 ./pm_nl_ctl limits)"
if mptcp_lib_expect_all_features; then
- check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
-subflows 2" "defaults limits"
+ check "ip netns exec $ns1 ./pm_nl_ctl limits" \
+ $'accept 0\nsubflows 2' "defaults limits"
fi
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
@@ -71,15 +71,14 @@ ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags 10.0.1.1" "simple add/get addr"
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
-"id 1 flags 10.0.1.1
-id 2 flags subflow dev lo 10.0.1.2
-id 3 flags signal,backup 10.0.1.3" "dump addrs"
+ $'id 1 flags 10.0.1.1\nid 2 flags subflow dev lo 10.0.1.2\nid 3 flags signal,backup 10.0.1.3' \
+ "dump addrs"
ip netns exec $ns1 ./pm_nl_ctl del 2
check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr"
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
-"id 1 flags 10.0.1.1
-id 3 flags signal,backup 10.0.1.3" "dump addrs after del"
+ $'id 1 flags 10.0.1.1\nid 3 flags signal,backup 10.0.1.3' \
+ "dump addrs after del"
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 2>/dev/null
check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr"
@@ -98,13 +97,11 @@ for i in `seq 10 255`; do
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 id $i
ip netns exec $ns1 ./pm_nl_ctl del $i
done
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1
-id 3 flags signal,backup 10.0.1.3
-id 4 flags signal 10.0.1.4
-id 5 flags signal 10.0.1.5
-id 6 flags signal 10.0.1.6
-id 7 flags signal 10.0.1.7
-id 8 flags signal 10.0.1.8" "id limit"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(printf '%s\n' "id 1 flags 10.0.1.1" "id 3 flags signal,backup 10.0.1.3" \
+ "id 4 flags signal 10.0.1.4" "id 5 flags signal 10.0.1.5" "id 6 flags signal 10.0.1.6" \
+ "id 7 flags signal 10.0.1.7" "id 8 flags signal 10.0.1.8")" \
+ "id limit"
ip netns exec $ns1 ./pm_nl_ctl flush
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
@@ -116,8 +113,7 @@ ip netns exec $ns1 ./pm_nl_ctl limits 1 9 2>/dev/null
check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "subflows above hard limit"
ip netns exec $ns1 ./pm_nl_ctl limits 8 8
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
-subflows 8" "set limits"
+check "ip netns exec $ns1 ./pm_nl_ctl limits" $'accept 8\nsubflows 8' "set limits"
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
@@ -128,14 +124,11 @@ ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.5 id 254
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.6
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.7
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1
-id 2 flags 10.0.1.2
-id 3 flags 10.0.1.7
-id 4 flags 10.0.1.8
-id 100 flags 10.0.1.3
-id 101 flags 10.0.1.4
-id 254 flags 10.0.1.5
-id 255 flags 10.0.1.6" "set ids"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(printf '%s\n' "id 1 flags 10.0.1.1" "id 2 flags 10.0.1.2" "id 3 flags 10.0.1.7" \
+ "id 4 flags 10.0.1.8" "id 100 flags 10.0.1.3" "id 101 flags 10.0.1.4" \
+ "id 254 flags 10.0.1.5" "id 255 flags 10.0.1.6")" \
+ "set ids"
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.1
@@ -146,36 +139,38 @@ ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.5 id 253
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.6
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.7
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.0.1
-id 2 flags 10.0.0.4
-id 3 flags 10.0.0.6
-id 4 flags 10.0.0.7
-id 5 flags 10.0.0.8
-id 253 flags 10.0.0.5
-id 254 flags 10.0.0.2
-id 255 flags 10.0.0.3" "wrap-around ids"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(printf '%s\n' "id 1 flags 10.0.0.1" "id 2 flags 10.0.0.4" "id 3 flags 10.0.0.6" \
+ "id 4 flags 10.0.0.7" "id 5 flags 10.0.0.8" "id 253 flags 10.0.0.5" \
+ "id 254 flags 10.0.0.2" "id 255 flags 10.0.0.3")" \
+ "wrap-around ids"
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags subflow
ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags backup
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow,backup 10.0.1.1" "set flags (backup)"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "id 1 flags subflow,backup 10.0.1.1" \
+ "set flags (backup)"
ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags nobackup
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow 10.0.1.1" " (nobackup)"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "id 1 flags subflow 10.0.1.1" \
+ " (nobackup)"
# fullmesh support has been added later
ip netns exec $ns1 ./pm_nl_ctl set id 1 flags fullmesh
if ip netns exec $ns1 ./pm_nl_ctl dump | grep -q "fullmesh" ||
mptcp_lib_expect_all_features; then
- check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow,fullmesh 10.0.1.1" " (fullmesh)"
+ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "id 1 flags subflow,fullmesh 10.0.1.1" \
+ " (fullmesh)"
ip netns exec $ns1 ./pm_nl_ctl set id 1 flags nofullmesh
- check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow 10.0.1.1" " (nofullmesh)"
+ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "id 1 flags subflow 10.0.1.1" \
+ " (nofullmesh)"
ip netns exec $ns1 ./pm_nl_ctl set id 1 flags backup,fullmesh
- check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow,backup,fullmesh 10.0.1.1" " (backup,fullmesh)"
+ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "id 1 flags subflow,backup,fullmesh 10.0.1.1" \
+ " (backup,fullmesh)"
fi
mptcp_lib_result_print_all_tap
--
2.35.3
^ permalink raw reply related [flat|nested] 56+ messages in thread
* Re: selftests: mptcp: rm userspace addr with random order: Tests Results
2023-11-14 6:35 ` [PATCH mptcp-next v9 21/21] selftests: mptcp: rm userspace addr with random order Geliang Tang
@ 2023-11-14 7:43 ` MPTCP CI
0 siblings, 0 replies; 56+ messages in thread
From: MPTCP CI @ 2023-11-14 7:43 UTC (permalink / raw)
To: Geliang Tang; +Cc: mptcp
Hi Geliang,
Thank you for your modifications, that's great!
Our CI did some validations and here is its report:
- KVM Validation: normal (except selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/5648668447997952
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5648668447997952/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/4804243517865984
- Summary: https://api.cirrus-ci.com/v1/artifact/task/4804243517865984/summary/summary.txt
- KVM Validation: debug (except selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/6211618401419264
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6211618401419264/summary/summary.txt
- KVM Validation: normal (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/5085718494576640
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5085718494576640/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/f66877049fe0
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-debug
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (Tessares)
^ permalink raw reply [flat|nested] 56+ messages in thread
end of thread, other threads:[~2023-11-14 7:44 UTC | newest]
Thread overview: 56+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-14 6:34 [PATCH mptcp-next v9 00/21] userspace pm enhancements Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 01/21] mptcp: export pm_nl_get_pernet_from_msk Geliang Tang
2023-11-14 6:34 ` [PATCH mptcp-next v9 02/21] mptcp: drop mptcp_pm_get_* helpers Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 03/21] mptcp: use pernet id_bitmap in userspace pm Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 04/21] mptcp: add userspace_pm_lookup_addr_by_id helper Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 05/21] mptcp: drop lookup_by_id parameter in lookup_addr Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 06/21] mptcp: dump addrs in userspace pm list Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 07/21] mptcp: check userspace pm subflow flag Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 08/21] selftests: mptcp: add " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 09/21] selftests: mptcp: add mptcp_lib_cleanup Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 10/21] selftests: mptcp: add mptcp_lib_check helper Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 11/21] selftests: mptcp: dump userspace addrs list Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 12/21] mptcp: add a prefix for free_local_addr_list Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 13/21] mptcp: flush userspace pm addrs list Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 14/21] selftests: mptcp: flush userspace " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 15/21] mptcp: add use_id parameter for addresses_equal Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 16/21] mptcp: add check_id for lookup_anno_list_by_saddr Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 17/21] mptcp: add userspace_pm_get_entry helper Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 18/21] mptcp: drop addr_match and id_match Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 19/21] mptcp: dup an entry when removing it Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 20/21] mptcp: add userspace pm addr entry refcount Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v9 21/21] selftests: mptcp: rm userspace addr with random order Geliang Tang
2023-11-14 7:43 ` selftests: mptcp: rm userspace addr with random order: Tests Results MPTCP CI
2023-11-14 6:35 ` [PATCH mptcp-next v2 00/32] add helpers and vars in mptcp_lib.sh Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 01/32] selftests: mptcp: add mptcp_lib_evts_* helpers Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 02/32] selftests: mptcp: capitalize test_name Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 03/32] selftests: mptcp: userspace: print colored output Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 04/32] selftests: mptcp: capitalize ok/fail/skip Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 05/32] selftests: mptcp: netlink: drop duplicate var ret Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 06/32] selftests: mptcp: export ret into mptcp_lib Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 07/32] selftests: mptcp: extract mptcp_lib_check_expected Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 08/32] selftests: mptcp: export event macros in mptcp_lib Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 09/32] selftests: mptcp: add mptcp_lib_verify_listener_events Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 10/32] selftests: mptcp: unify namespace names Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 11/32] selftests: mptcp: add mptcp_lib_ns_* helpers Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 12/32] selftests: mptcp: diag: print colored output Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 13/32] selftests: mptcp: connect: " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 14/32] selftests: mptcp: sockopt: print every test result Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 15/32] selftests: mptcp: sockopt: print colored output Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 16/32] selftests: mptcp: simult_flows: " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 17/32] selftests: mptcp: add PORT instead of TEST_COUNT Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 18/32] selftests: mptcp: connect: print out test counter Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 19/32] selftests: mptcp: rename test_cnt to TEST_COUNT Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 20/32] selftests: mptcp: diag: print out test counter Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 21/32] selftests: mptcp: simult_flows: " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 22/32] selftests: mptcp: sockopt: " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 23/32] selftests: mptcp: netlink: " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 24/32] selftests: mptcp: userspace: " Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 25/32] selftests: mptcp: export TEST_NAME/COUNT to mptcp_lib Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 26/32] selftests: mptcp: export cin/cout/sin/sout vars Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 27/32] selftests: mptcp: change capture/checksum as bool Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 28/32] selftests: mptcp: export capture/checksum vars Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 29/32] selftests: mptcp: change timeout_poll to 30 in diag Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 30/32] selftests: mptcp: export timeout_test to mptcp_lib Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 31/32] selftests: mptcp: use KSFT_SKIP instead ksft_skip Geliang Tang
2023-11-14 6:35 ` [PATCH mptcp-next v2 32/32] selftests: mptcp: netlink: fix positions of newline Geliang Tang
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.