diff --git a/networking/traceroute.c b/networking/traceroute.c index c1eb2d92e..2f4d6bb43 100644 --- a/networking/traceroute.c +++ b/networking/traceroute.c @@ -602,12 +602,15 @@ pr_type(unsigned char t) return ttab[t]; } -static void -hexdump(const struct icmp *icp, int len) +static int +hexdump_if_verbose(const struct icmp *icp, int len) { const unsigned char *p; int i; + if (!verbose) + return 0; + printf("\n%d bytes from %s to %s: icmp type %u (%s) code %u\n", len, auto_string(xmalloc_sockaddr2dotted_noport(&G.from_lsa->u.sa)), @@ -622,9 +625,10 @@ hexdump(const struct icmp *icp, int len) printf(" %02x", p[i]); } bb_putchar('\n'); + return 0; } #else -# define hexdump(...) ((void)0) +# define hexdump_if_verbose(...) 0 #endif static int @@ -704,9 +708,8 @@ packet4_ok(int read_len, int seq) } } } - if (verbose) /* testcase: traceroute -vI 127.0.0.1 (sees its own echo requests) */ - hexdump(icp, read_len); - return 0; + /* testcase: traceroute -vI 127.0.0.1 (sees its own echo requests) */ + return hexdump_if_verbose(icp, read_len); } #if ENABLE_TRACEROUTE6 @@ -767,10 +770,8 @@ packet6_ok(int read_len, int seq) } } } - if (verbose) - /* cast is safe since the beginning of icmp4 and icmp6 layouts match */ - hexdump((const struct icmp *)icp, read_len); - return 0; + /* cast is safe since the beginning of icmp4 and icmp6 layouts match */ + return hexdump_if_verbose((const struct icmp *)icp, read_len); } static int