Compare commits

4 Commits
3 changed files with 42 additions and 30 deletions
+4 -2
View File
@@ -1,5 +1,5 @@
UNRELEAESD David Schweikert <david@schweikert.ch>
* Version 3.3-rc1
2012-08-19 David Schweikert <david@schweikert.ch>
* Version 3.3
* Do not output icmp errors with -q (#1)
* Add --enable-ipv4 and --enable-ipv6 options to configure (Niclas Zeising)
* Fix removing of unreachable hosts when doing loop (Thomas Liske, #13 #23)
@@ -9,6 +9,8 @@ UNRELEAESD David Schweikert <david@schweikert.ch>
* Set default data size to 56 bytes on all architectures (#18)
* Added contrib/fping.spec (Stephen Schaefer, #24)
* Convert man-page source to POD for easier maintenance
* Fix error message on DNS error for IPv6 hosts (#27)
* Fix -n flag in fping6 (#28)
* Man-page fix: TOS option typo (Thomas Liske, #23)
* Man-page fix: inconsistency in regards to numeric arguments (Robert Henney)
* Man-page fix: better description of option -q (#15)
+1 -1
View File
@@ -3,7 +3,7 @@ dnl Process this file with autoconf to produce a configure script.
dnl Minimum Autoconf version required.
AC_PREREQ(2.59)
AC_INIT([fping],[3.3-rc1])
AC_INIT([fping],[3.3])
dnl make ipv4 and ipv6 options
AC_ARG_ENABLE([ipv4],
+37 -27
View File
@@ -859,7 +859,6 @@ int main( int argc, char **argv )
FILE *ping_file;
char line[132];
char host[132];
char *p;
if( strcmp( filename, "-" ) == 0 )
ping_file = fdopen( 0, "r" );
@@ -878,7 +877,7 @@ int main( int argc, char **argv )
if( ( !*host ) || ( host[0] == '#' ) ) /* magic to avoid comments */
continue;
add_name(p);
add_name(host);
}/* WHILE */
fclose( ping_file );
@@ -2193,31 +2192,24 @@ void add_name( char *name )
}/* WHILE */
}/* ELSE */
#else
FPING_SOCKADDR dst;
struct addrinfo *res, hints;
int ret_ga;
char *hostname;
size_t len;
FPING_SOCKADDR dst;
struct addrinfo *res, hints;
int ret_ga;
size_t len;
char *printname;
char namebuf[256];
char addrbuf[256];
/* getaddrinfo */
bzero(&hints, sizeof(struct addrinfo));
hints.ai_flags = name_flag ? AI_CANONNAME : 0;
hints.ai_flags = 0;
hints.ai_family = AF_INET6;
hints.ai_socktype = SOCK_RAW;
hints.ai_protocol = IPPROTO_ICMPV6;
ret_ga = getaddrinfo(name, NULL, &hints, &res);
if (ret_ga) {
if(!quiet_flag)
warnx("%s", gai_strerror(ret_ga));
num_noaddress++;
return;
}
if (res->ai_canonname) hostname = res->ai_canonname;
else hostname = name;
if (!res->ai_addr) {
if(!quiet_flag)
warnx("getaddrinfo failed");
print_warning("%s: %s\n", name, gai_strerror(ret_ga));
num_noaddress++;
return;
}
@@ -2225,22 +2217,40 @@ void add_name( char *name )
if (len > sizeof(FPING_SOCKADDR)) len = sizeof(FPING_SOCKADDR);
(void)memcpy(&dst, res->ai_addr, len);
/* numerical addresses requested */
if(addr_flag) {
char addrbuf[64];
/* name_flag: addr -> name lookup requested) */
if(!name_flag) {
printname = name;
}
else {
int ret;
ret = getnameinfo(res->ai_addr, res->ai_addrlen, addrbuf,
64, NULL, 0, NI_NUMERICHOST);
ret = getnameinfo(res->ai_addr, res->ai_addrlen, namebuf,
sizeof(namebuf)/sizeof(char), NULL, 0, 0);
if (ret) {
if(!quiet_flag) {
warnx("%s", gai_strerror(ret_ga));
print_warning("%s: %s\n", name, gai_strerror(ret_ga));
}
num_noaddress++;
return;
}
printname = namebuf;
}
/* addr_flag: name -> addr lookup requested */
if(addr_flag) {
int ret;
ret = getnameinfo(res->ai_addr, res->ai_addrlen, addrbuf,
sizeof(addrbuf)/sizeof(char), NULL, 0, NI_NUMERICHOST);
if (ret) {
if(!quiet_flag) {
print_warning("%s: %s\n", name, gai_strerror(ret_ga));
}
num_noaddress++;
return;
}
if(name_flag) {
char nameaddrbuf[256];
snprintf(nameaddrbuf, 256, "%s (%s)", name, addrbuf);
char nameaddrbuf[512];
snprintf(nameaddrbuf, sizeof(nameaddrbuf)/sizeof(char), "%s (%s)", printname, addrbuf);
add_addr(name, nameaddrbuf, &dst);
}
else {
@@ -2248,7 +2258,7 @@ void add_name( char *name )
}
}
else {
add_addr(name, name, &dst);
add_addr(name, printname, &dst);
}
#endif
} /* add_name() */