packages/net/net-mtools/patches/006-msend-send-a-limited-number-of-test-packets.patch
Christian Marangi 4470062c16
net-mtools: Add new package to debug multicast setups
Add new package to debug multicast setups. This is required to use
kselftests script for network testing.

net-mtools is used instead of mtools as it does conflicts with another
package that is also called mtools.

Some additional patch from Vladimir Oltean are added to make the tool
works on kernel selftests scripts.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-07-07 13:24:30 +02:00

81 lines
2.4 KiB
Diff

From 1013b0a83aef868e6cd33b2f467b9f886b41e7bc Mon Sep 17 00:00:00 2001
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: Fri, 22 Apr 2022 12:59:56 +0300
Subject: [PATCH 6/6] msend: send a limited number of test packets
For easier integration into a selftest framework, limit the amount of
packets that the program sends via a command-line argument.
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
---
msend.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
--- a/msend.c
+++ b/msend.c
@@ -56,7 +56,7 @@ typedef struct timerhandler_s {
struct sock *to;
char *achOut;
int len;
- int n;
+ int num_pkts;
} timerhandler_t;
timerhandler_t handler_par;
void timerhandler();
@@ -82,6 +82,7 @@ Usage: msend [-g GROUP] [-p PORT] [-joi
the first router will drop the packets! Default: 1\n\
-text \"text\" Specify a string to use as payload in the packets, also\n\
displayed by the mreceive command. Default: empty\n\
+ -c Number of packets to send. Default: send indefinitely\n\
-n Encode -text argument as a number instead of a string.\n\
-v Print version information.\n\
-h Print the command usage.\n\n", VERSION);
@@ -97,6 +98,7 @@ int main(int argc, char *argv[])
struct itimerval times;
sigset_t sigset;
struct sigaction act;
+ int num_pkts = 0;
int ret, i;
if ((argc == 2) && (strcmp(argv[ii], "-v") == 0)) {
@@ -171,6 +173,12 @@ int main(int argc, char *argv[])
ii++;
NUM = 1;
ii++;
+ } else if (strcmp(argv[ii], "-c") == 0) {
+ ii++;
+ if ((ii < argc) && !(strchr(argv[ii], '-'))) {
+ num_pkts = atoi(argv[ii]);
+ ii++;
+ }
} else if (strcmp(argv[ii], "-text") == 0) {
ii++;
if ((ii < argc) && !(strchr(argv[ii], '-'))) {
@@ -255,7 +263,7 @@ int main(int argc, char *argv[])
handler_par.to = &to;
handler_par.achOut = achOut;
handler_par.len = strlen(achOut) + 1;
- handler_par.n = 0;
+ handler_par.num_pkts = num_pkts;
/* now wait for the alarms */
sigemptyset(&sigset);
@@ -264,7 +272,7 @@ int main(int argc, char *argv[])
}
return 0;
} else {
- for (i = 0; i < 10; i++) {
+ for (i = 0; num_pkts && i < num_pkts; i++) {
if (NUM) {
achOut[3] = (unsigned char)(i >> 24);
achOut[2] = (unsigned char)(i >> 16);
@@ -307,6 +315,9 @@ void timerhandler(void)
exit(1);
}
+ if (iCounter == handler_par.num_pkts)
+ exit(1);
+
iCounter++;
return;
}