aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Marchand <jmarchan@redhat.com>2023-08-11 20:06:12 +0200
committeryonghong-song <ys114321@gmail.com>2023-08-20 16:05:33 -0700
commitcbd24ffd767911acbc1a54c65e8da1f8ad4d3153 (patch)
tree2db3899fae52df79a4eb5ea2ae2f91dfcc12c9fd
parent697f1cfc8e051a57a0c1c4c6a11a52fe1052d7c3 (diff)
downloadbcc-cbd24ffd767911acbc1a54c65e8da1f8ad4d3153.tar.gz
libbpf-tools/tcprtt: use the same options to filter IPv4 and IPv6 adresses
There is no need for the extra options. We can distinguish IPv4 and IPv6 adresses by their format. Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
-rw-r--r--libbpf-tools/tcprtt.c52
1 files changed, 26 insertions, 26 deletions
diff --git a/libbpf-tools/tcprtt.c b/libbpf-tools/tcprtt.c
index dae552f8..2ca883c3 100644
--- a/libbpf-tools/tcprtt.c
+++ b/libbpf-tools/tcprtt.c
@@ -66,8 +66,6 @@ static const struct argp_option opts[] = {
{ "rport", 'P', "RPORT", 0, "filter for remote port" },
{ "laddr", 'a', "LADDR", 0, "filter for local address" },
{ "raddr", 'A', "RADDR", 0, "filter for remote address" },
- { "laddr-v6", 'c', "LADDR_V6", 0, "filter for local IPv6 address" },
- { "raddr-v6", 'C', "RADDR_V6", 0, "filter for remote IPv6 address" },
{ "byladdr", 'b', NULL, 0,
"show sockets histogram by local address" },
{ "byraddr", 'B', NULL, 0,
@@ -131,32 +129,34 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
env.rport = htons(env.rport);
break;
case 'a':
- if (inet_aton(arg, &addr) < 0) {
- fprintf(stderr, "invalid local address: %s\n", arg);
- argp_usage(state);
- }
- env.laddr = addr.s_addr;
+ if (strchr(arg, ':')) {
+ if (inet_pton(AF_INET6, arg, &addr_v6) < 1) {
+ fprintf(stderr, "invalid local IPv6 address: %s\n", arg);
+ argp_usage(state);
+ }
+ memcpy(env.laddr_v6, &addr_v6, sizeof(env.laddr_v6));
+ } else {
+ if (inet_pton(AF_INET, arg, &addr) < 0) {
+ fprintf(stderr, "invalid local address: %s\n", arg);
+ argp_usage(state);
+ }
+ env.laddr = addr.s_addr;
+ }
break;
case 'A':
- if (inet_aton(arg, &addr) < 0) {
- fprintf(stderr, "invalid remote address: %s\n", arg);
- argp_usage(state);
- }
- env.raddr = addr.s_addr;
- break;
- case 'c':
- if (inet_pton(AF_INET6, arg, &addr_v6) < 1) {
- fprintf(stderr, "invalid local IPv6 address: %s\n", arg);
- argp_usage(state);
- }
- memcpy(env.laddr_v6, &addr_v6, sizeof(env.laddr_v6));
- break;
- case 'C':
- if (inet_pton(AF_INET6, arg, &addr_v6) < 1) {
- fprintf(stderr, "invalid remote IPv6 address: %s\n", arg);
- argp_usage(state);
- }
- memcpy(env.raddr_v6, &addr_v6, sizeof(env.raddr_v6));
+ if (strchr(arg, ':')) {
+ if (inet_pton(AF_INET6, arg, &addr_v6) < 1) {
+ fprintf(stderr, "invalid remote address: %s\n", arg);
+ argp_usage(state);
+ }
+ memcpy(env.raddr_v6, &addr_v6, sizeof(env.raddr_v6));
+ } else {
+ if (inet_pton(AF_INET, arg, &addr) < 0) {
+ fprintf(stderr, "invalid remote address: %s\n", arg);
+ argp_usage(state);
+ }
+ env.raddr = addr.s_addr;
+ }
break;
case 'b':
env.laddr_hist = true;