Fix option -m to return all IPs of a hostname

pull/89/merge
David Schweikert 8 years ago
parent 98269fb83e
commit 35d52d0b30

@ -4,6 +4,7 @@ Unreleased
* (feature) New option '-6' to force IPv6 * (feature) New option '-6' to force IPv6
* (feature) Support kernel-timestamping of received packets (#46) * (feature) Support kernel-timestamping of received packets (#46)
* (feature) Simplify restrictions: only -i >= 1 and -p >= 10 are enforced now * (feature) Simplify restrictions: only -i >= 1 and -p >= 10 are enforced now
* (bugfix) Fix option -m to return all IPs of a hostname
* (bugfix) Fix option -H (ttl) for IPv6 * (bugfix) Fix option -H (ttl) for IPv6
* (bugfix) Fix option -M (don't fragment) for IPv6 * (bugfix) Fix option -M (don't fragment) for IPv6
* (bugfix) Fix option -O (ToS) for IPv6 * (bugfix) Fix option -O (ToS) for IPv6

@ -28,7 +28,7 @@ Usage: fping [options] [targets...]
-H n Set the IP TTL value (Time To Live hops) -H n Set the IP TTL value (Time To Live hops)
-i n interval between sending ping packets (in millisec) (default 25) -i n interval between sending ping packets (in millisec) (default 25)
${I_HELP} -l loop sending pings forever ${I_HELP} -l loop sending pings forever
-m ping multiple interfaces on target host -m use all IPs of provided hostnames (e.g. IPv4 and IPv6), use with -A
-M set the Don't Fragment flag -M set the Don't Fragment flag
-n show targets by name (-d is equivalent) -n show targets by name (-d is equivalent)
-N output compatible for netdata (-l -Q are required) -N output compatible for netdata (-l -Q are required)

@ -134,7 +134,8 @@ Ctrl-C; statistics about responses for each target are then displayed.
=item B<-m> =item B<-m>
Send pings to each of a target host's multiple interfaces. Send pings to each of a target host's multiple IP addresses (use of option '-A'
is recommended).
=item B<-M> =item B<-M>

@ -2260,7 +2260,7 @@ void add_name( char *name )
* We don't do it yet, however, because is is an incompatible change * We don't do it yet, however, because is is an incompatible change
* (need to implement a separate option for this) * (need to implement a separate option for this)
*/ */
for (res = res0; res; res = 0) { for (res = res0; res; res = res->ai_next) {
/* name_flag: addr -> name lookup requested) */ /* name_flag: addr -> name lookup requested) */
if(!name_flag) { if(!name_flag) {
printname = name; printname = name;
@ -2271,12 +2271,15 @@ void add_name( char *name )
sizeof(namebuf)/sizeof(char), NULL, 0, 0); sizeof(namebuf)/sizeof(char), NULL, 0, 0);
if (ret) { if (ret) {
if(!quiet_flag) { if(!quiet_flag) {
print_warning("%s: %s\n", name, gai_strerror(ret_ga)); ret = getnameinfo(res->ai_addr, res->ai_addrlen, namebuf,
sizeof(namebuf)/sizeof(char), NULL, 0, 0);
print_warning("%s: can't reverse-lookup (%s)\n", name, gai_strerror(ret_ga));
} }
num_noaddress++; printname = name;
continue; }
else {
printname = namebuf;
} }
printname = namebuf;
} }
/* addr_flag: name -> addr lookup requested */ /* addr_flag: name -> addr lookup requested */
@ -2286,9 +2289,8 @@ void add_name( char *name )
sizeof(addrbuf)/sizeof(char), NULL, 0, NI_NUMERICHOST); sizeof(addrbuf)/sizeof(char), NULL, 0, NI_NUMERICHOST);
if (ret) { if (ret) {
if(!quiet_flag) { if(!quiet_flag) {
print_warning("%s: %s\n", name, gai_strerror(ret_ga)); print_warning("%s: can't forward-lookup address (%s)\n", name, gai_strerror(ret_ga));
} }
num_noaddress++;
continue; continue;
} }
@ -2304,6 +2306,10 @@ void add_name( char *name )
else { else {
add_addr(name, printname, res->ai_addr, res->ai_addrlen); add_addr(name, printname, res->ai_addr, res->ai_addrlen);
} }
if(!multif_flag) {
break;
}
} }
freeaddrinfo(res0); freeaddrinfo(res0);
@ -2747,7 +2753,7 @@ void usage(int is_error)
fprintf(out, " -I if bind to a particular interface\n"); fprintf(out, " -I if bind to a particular interface\n");
#endif #endif
fprintf(out, " -l loop sending pings forever\n" ); fprintf(out, " -l loop sending pings forever\n" );
fprintf(out, " -m ping multiple interfaces on target host\n" ); fprintf(out, " -m use all IPs of provided hostnames (e.g. IPv4 and IPv6), use with -A\n" );
fprintf(out, " -M set the Don't Fragment flag\n" ); fprintf(out, " -M set the Don't Fragment flag\n" );
fprintf(out, " -n show targets by name (-d is equivalent)\n" ); fprintf(out, " -n show targets by name (-d is equivalent)\n" );
fprintf(out, " -N output compatible for netdata (-l -Q are required)\n" ); fprintf(out, " -N output compatible for netdata (-l -Q are required)\n" );

Loading…
Cancel
Save