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) Support kernel-timestamping of received packets (#46)
* (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 -M (don't fragment) 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)
-i n interval between sending ping packets (in millisec) (default 25)
${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
-n show targets by name (-d is equivalent)
-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>
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>

@ -2260,7 +2260,7 @@ void add_name( char *name )
* We don't do it yet, however, because is is an incompatible change
* (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) */
if(!name_flag) {
printname = name;
@ -2271,13 +2271,16 @@ void add_name( char *name )
sizeof(namebuf)/sizeof(char), NULL, 0, 0);
if (ret) {
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++;
continue;
printname = name;
}
else {
printname = namebuf;
}
}
/* addr_flag: name -> addr lookup requested */
if(addr_flag) {
@ -2286,9 +2289,8 @@ void add_name( char *name )
sizeof(addrbuf)/sizeof(char), NULL, 0, NI_NUMERICHOST);
if (ret) {
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;
}
@ -2304,6 +2306,10 @@ void add_name( char *name )
else {
add_addr(name, printname, res->ai_addr, res->ai_addrlen);
}
if(!multif_flag) {
break;
}
}
freeaddrinfo(res0);
@ -2747,7 +2753,7 @@ void usage(int is_error)
fprintf(out, " -I if bind to a particular interface\n");
#endif
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, " -n show targets by name (-d is equivalent)\n" );
fprintf(out, " -N output compatible for netdata (-l -Q are required)\n" );

Loading…
Cancel
Save