| From 589952e832472d279df281dfeff10790df10d836 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 11 Nov 2021 06:57:17 -0500 |
| Subject: selftests/net: udpgso_bench_rx: fix port argument |
| |
| From: Willem de Bruijn <willemb@google.com> |
| |
| [ Upstream commit d336509cb9d03970911878bb77f0497f64fda061 ] |
| |
| The below commit added optional support for passing a bind address. |
| It configures the sockaddr bind arguments before parsing options and |
| reconfigures on options -b and -4. |
| |
| This broke support for passing port (-p) on its own. |
| |
| Configure sockaddr after parsing all arguments. |
| |
| Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO") |
| Reported-by: Eric Dumazet <edumazet@google.com> |
| Signed-off-by: Willem de Bruijn <willemb@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/testing/selftests/net/udpgso_bench_rx.c | 11 +++++++---- |
| 1 file changed, 7 insertions(+), 4 deletions(-) |
| |
| diff --git a/tools/testing/selftests/net/udpgso_bench_rx.c b/tools/testing/selftests/net/udpgso_bench_rx.c |
| index 76a24052f4b47..6a193425c367f 100644 |
| --- a/tools/testing/selftests/net/udpgso_bench_rx.c |
| +++ b/tools/testing/selftests/net/udpgso_bench_rx.c |
| @@ -293,19 +293,17 @@ static void usage(const char *filepath) |
| |
| static void parse_opts(int argc, char **argv) |
| { |
| + const char *bind_addr = NULL; |
| int c; |
| |
| - /* bind to any by default */ |
| - setup_sockaddr(PF_INET6, "::", &cfg_bind_addr); |
| while ((c = getopt(argc, argv, "4b:C:Gl:n:p:rR:S:tv")) != -1) { |
| switch (c) { |
| case '4': |
| cfg_family = PF_INET; |
| cfg_alen = sizeof(struct sockaddr_in); |
| - setup_sockaddr(PF_INET, "0.0.0.0", &cfg_bind_addr); |
| break; |
| case 'b': |
| - setup_sockaddr(cfg_family, optarg, &cfg_bind_addr); |
| + bind_addr = optarg; |
| break; |
| case 'C': |
| cfg_connect_timeout_ms = strtoul(optarg, NULL, 0); |
| @@ -341,6 +339,11 @@ static void parse_opts(int argc, char **argv) |
| } |
| } |
| |
| + if (!bind_addr) |
| + bind_addr = cfg_family == PF_INET6 ? "::" : "0.0.0.0"; |
| + |
| + setup_sockaddr(cfg_family, bind_addr, &cfg_bind_addr); |
| + |
| if (optind != argc) |
| usage(argv[0]); |
| |
| -- |
| 2.33.0 |
| |