[arch-commits] Commit in fping/trunk (3 files)

Giovanni Scafora giovanni at archlinux.org
Mon Nov 28 14:17:25 EST 2011


    Date: Monday, November 28, 2011 @ 14:17:25
  Author: giovanni
Revision: 143740

upgpkg: fping 2.4b2-5

rebuild

Added:
  fping/trunk/fping-2.4b2_p161-min-time.patch
  fping/trunk/fping_2.4b2-to-ipv6-16.1.diff
Modified:
  fping/trunk/PKGBUILD

---------------------------------+
 PKGBUILD                        |   21 
 fping-2.4b2_p161-min-time.patch |   47 ++
 fping_2.4b2-to-ipv6-16.1.diff   |  838 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 899 insertions(+), 7 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-11-28 18:10:34 UTC (rev 143739)
+++ PKGBUILD	2011-11-28 19:17:25 UTC (rev 143740)
@@ -4,29 +4,36 @@
 
 pkgname=fping
 pkgver=2.4b2
-pkgrel=4
+pkgrel=5
 pkgdesc="A utility to ping multiple hosts at once"
 arch=('i686' 'x86_64')
-url="http://www.fping.com/"
+url="http://packages.qa.debian.org/"
 license=('custom') 
 depends=('glibc')
-source=("http://fping.sourceforge.net/download/${pkgname}.tar.gz")
-md5sums=('d5e8be59e307cef76bc479e1684df705')
+source=("http://ftp.de.debian.org/debian/pool/main/f/fping/fping_2.4b2-to-ipv6.orig.tar.gz"
+        'fping_2.4b2-to-ipv6-16.1.diff'
+        'fping-2.4b2_p161-min-time.patch')
+md5sums=('3ad516765514249a40d3c5b6caab812a'
+         '4881e981971379a0948b31719e4505f5'
+         '36753d9556eba1a6159c20c8db3e2232')
 
 build() {
-  cd $srcdir/$pkgname-$pkgver\_to
+  cd $srcdir/$pkgname-2.4b2_to-ipv6
 
+  patch -Np1 -i ${srcdir}/fping_2.4b2-to-ipv6-16.1.diff
+  patch -Np1 -i ${srcdir}/fping-2.4b2_p161-min-time.patch
+
   ./configure --prefix=/usr \
               --mandir=/usr/share/man
   make
 }
 
 package() {
-  cd $srcdir/$pkgname-$pkgver\_to
+  cd $srcdir/$pkgname-2.4b2_to-ipv6
 
   make DESTDIR="${pkgdir}" install
 
   # install license
   install -D -m644 COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
-  chmod 4755 ${pkgdir}/usr/sbin/fping
+  chmod 4555 ${pkgdir}/usr/sbin/fping
 }

Added: fping-2.4b2_p161-min-time.patch
===================================================================
--- fping-2.4b2_p161-min-time.patch	                        (rev 0)
+++ fping-2.4b2_p161-min-time.patch	2011-11-28 19:17:25 UTC (rev 143740)
@@ -0,0 +1,47 @@
+--- old/fping.c	2010-08-24 16:59:38.947000447 +0100
++++ new/fping.c	2010-08-24 16:55:52.101000443 +0100
+@@ -25,6 +25,7 @@
+  * Original author:  Roland Schemers  <schemers at stanford.edu>
+  * IPv6 Support:     Jeroen Massar    <jeroen at unfix.org / jeroen at ipng.nl>
+  * Bugfixes, byte order & senseful seq.-numbers: Stephan Fuhrmann (stephan.fuhrmann AT 1und1.de)
++ * Fixes: min_reply_i in splits and compiler warning. Alex Ghoth (alex AT ghoth.net)
+  *
+  *
+  * RCS header information no longer used.  It has been moved to the
+@@ -743,7 +744,7 @@
+ 	
+ 	if( ( ping_data_size > MAX_PING_DATA ) || ( ping_data_size < MIN_PING_DATA ) )
+ 	{
+-		fprintf( stderr, "%s: data size %u not valid, must be between %u and %u\n",
++		fprintf( stderr, "%s: data size %u not valid, must be between %lu and %u\n",
+ 			prog, ping_data_size, MIN_PING_DATA, MAX_PING_DATA );
+ 		usage();
+ 	
+@@ -1112,7 +1113,7 @@
+ 		ht = timeval_diff( &current_time, &cursor->last_send_time );
+ 
+ 		if( report_interval && ( loop_flag || count_flag ) &&
+-			( timeval_diff ( &current_time, &last_report_time )	> report_interval ) )
++			( timeval_diff ( &current_time, &last_report_time )	>= report_interval ) )
+ 		{
+ 			print_per_system_splits();
+ 			gettimeofday( &current_time, &tz );
+@@ -1487,8 +1488,8 @@
+ 		}/* IF */
+ 		
+ 		fprintf( stderr, "\n" );
+-		h->num_sent_i = h->num_recv_i = h->max_reply_i =
+-			h->min_reply_i = h->total_time_i = 0;
++		h->num_sent_i = h->num_recv_i = h->max_reply_i = h->total_time_i = 0;
++		h->min_reply_i = 10000000;
+ 	
+ 	}/* FOR */
+ 
+@@ -2377,6 +2378,7 @@
+ 	p->timeout = timeout;
+ 	p->running = 1;
+ 	p->min_reply = 10000000;
++	p->min_reply_i = 10000000;
+ 
+ 	if( strlen( p->host ) > max_hostname_len )
+ 		max_hostname_len = strlen( p->host );

Added: fping_2.4b2-to-ipv6-16.1.diff
===================================================================
--- fping_2.4b2-to-ipv6-16.1.diff	                        (rev 0)
+++ fping_2.4b2-to-ipv6-16.1.diff	2011-11-28 19:17:25 UTC (rev 143740)
@@ -0,0 +1,838 @@
+--- fping-2.4b2-to-ipv6.orig/fping.8
++++ fping-2.4b2-to-ipv6/fping.8
+@@ -1,4 +1,4 @@
+-.TH fping l
++.TH fping 8
+ .SH NAME
+ fping \- send ICMP ECHO_REQUEST packets to network hosts
+ .SH SYNOPSIS
+@@ -12,9 +12,9 @@
+ 
+       
+ .B fping 
+-is a 
+-.MS ping 8
+-like program which uses the Internet Control
++is a program like
++.B ping(8)
++which uses the Internet Control
+ Message Protocol (ICMP) echo request to determine if a target host is
+ responding. 
+ .B fping 
+@@ -37,8 +37,7 @@
+ ).
+ .PP
+ Unlike 
+-.B ping
+-,
++.B ping,
+ .B fping 
+ is meant to be used in scripts, so its output is designed to be 
+ easy to parse.
+@@ -130,12 +129,16 @@
+ a target will be made, not including the first try.
+ .IP \fB-s\fR 5
+ Print cumulative statistics upon exit.
++.IP \fB-S\fIaddr\fR 5
++Set source address.
+ .IP \fB-t\fIn\fR 5
+ Initial target timeout in milliseconds (default 500). In the default
+ mode, this is the amount of time that 
+ .B fping
+ waits for a response to its first request.  Successive timeouts are
+ multiplied by the backoff factor.
++.IP \fB-T\fIn\fR 5
++Select timeout in seconds (default 10).
+ .IP \fB-u\fR 5
+ Show targets that are unreachable.
+ .IP \fB-v\fR 5
+@@ -152,7 +155,7 @@
+ example none the less. 
+ .nf
+ 
+-#!/usr/local/bin/perl
++#!/usr/bin/perl
+ require 'open2.pl';
+ 
+ $MAILTO = "root";
+@@ -178,7 +181,7 @@
+ that are currently reachable.
+ .nf
+ 
+-#!/usr/local/bin/perl
++#!/usr/bin/perl
+ 
+ $hosts_to_backup = `cat /etc/hosts.backup | fping -a`;
+ 
+--- fping-2.4b2-to-ipv6.orig/fping.c
++++ fping-2.4b2-to-ipv6/fping.c
+@@ -24,7 +24,7 @@
+  *
+  * Original author:  Roland Schemers  <schemers at stanford.edu>
+  * IPv6 Support:     Jeroen Massar    <jeroen at unfix.org / jeroen at ipng.nl>
+- *
++ * Bugfixes, byte order & senseful seq.-numbers: Stephan Fuhrmann (stephan.fuhrmann AT 1und1.de)
+  *
+  *
+  * RCS header information no longer used.  It has been moved to the
+@@ -42,7 +42,6 @@
+  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+  */
+-#define IPV6 1						/* This should be a compiler option, or even better be done from the Makefile... ;) */
+ 
+ #ifndef _NO_PROTO
+ #if !__STDC__ && !defined( __cplusplus ) && !defined( FUNCPROTO ) \
+@@ -101,13 +100,8 @@
+ #endif
+ #include <netinet/in_systm.h>
+ 
+-/* Linux has bizarre ip.h and ip_icmp.h */
+-#if defined( __linux__ )
+-#include "linux.h"
+-#else
+ #include <netinet/ip.h>
+ #include <netinet/ip_icmp.h>
+-#endif /* defined(__linux__) */
+ 
+ #include <arpa/inet.h>
+ #include <netdb.h>
+@@ -150,7 +144,11 @@
+ #define MIN_PING_DATA	sizeof( PING_DATA )
+ #define	MAX_IP_PACKET	65536	/* (theoretical) max IP packet size */
+ #define SIZE_IP_HDR		20
++#ifndef IPV6
+ #define SIZE_ICMP_HDR	ICMP_MINLEN		/* from ip_icmp.h */
++#else
++#define SIZE_ICMP_HDR	sizeof(FPING_ICMPHDR)
++#endif
+ #define MAX_PING_DATA	( MAX_IP_PACKET - SIZE_IP_HDR - SIZE_ICMP_HDR )
+ 
+ /* sized so as to be like traditional ping */
+@@ -192,7 +190,7 @@
+ 	"",
+ 	"",
+ 	"ICMP Time Exceeded",		/* 11 */
+-	"ICMP Paramter Problem",	/* 12 */
++	"ICMP Parameter Problem",	/* 12 */
+ 	"ICMP Timestamp Request",	/* 13 */
+ 	"ICMP Timestamp Reply",		/* 14 */
+ 	"ICMP Information Request",	/* 15 */
+@@ -283,6 +281,12 @@
+ u_int count = 1;
+ u_int trials;
+ u_int report_interval = 0;
++int src_addr_present = 0;
++#ifndef IPV6
++struct in_addr src_addr;
++#else
++struct in6_addr src_addr;
++#endif
+ 
+ /* global stats */
+ long max_reply = 0;
+@@ -292,6 +296,7 @@
+ int max_hostname_len = 0;
+ int num_jobs = 0;					/* number of hosts still to do */
+ int num_hosts;						/* total number of hosts */
++int max_seq_sent = 0;				/* maximum sequence number sent so far */
+ int num_alive = 0,					/* total number alive */
+     num_unreachable = 0,			/* total number unreachable */
+     num_noaddress = 0;				/* total number of addresses not found */
+@@ -408,6 +413,11 @@
+ 	struct protoent *proto;
+ 	char *buf;
+ 	uid_t uid;
++#ifndef IPV6
++	struct sockaddr_in sa;
++#else
++	struct sockaddr_in6 sa;
++#endif
+ 	/* check if we are root */
+ 
+ 	if( geteuid() )
+@@ -439,7 +449,7 @@
+ 
+ #ifdef IPV6
+ 	/*
+-	 * let the kerel pass extension headers of incoming packets,
++	 * let the kernel pass extension headers of incoming packets,
+ 	 * for privileged socket options
+ 	 */
+ #ifdef IPV6_RECVHOPOPTS
+@@ -474,6 +484,35 @@
+ 		    sizeof(opton)))
+ 			err(1, "setsockopt(IPV6_RTHDR)");
+ #endif
++#ifndef USE_SIN6_SCOPE_ID
++#ifdef IPV6_RECVPKTINFO
++		if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &opton,
++		    sizeof(opton)))
++			err(1, "setsockopt(IPV6_RECVPKTINFO)");
++#else  /* old adv. API */
++		if (setsockopt(s, IPPROTO_IPV6, IPV6_PKTINFO, &opton,
++		    sizeof(opton)))
++			err(1, "setsockopt(IPV6_PKTINFO)");
++#endif
++#endif /* USE_SIN6_SCOPE_ID */
++#ifdef IPV6_RECVHOPLIMIT
++		if (setsockopt(s, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &opton,
++		    sizeof(opton)))
++			err(1, "setsockopt(IPV6_RECVHOPLIMIT)");
++#else  /* old adv. API */
++		if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPLIMIT, &opton,
++		    sizeof(opton)))
++			err(1, "setsockopt(IPV6_HOPLIMIT)");
++#endif
++#ifdef IPV6_CHECKSUM
++#ifndef SOL_RAW
++#define SOL_RAW IPPROTO_IPV6
++#endif
++		opton = 2;
++		if (setsockopt(s, SOL_RAW, IPV6_CHECKSUM, &opton,
++		    sizeof(opton)))
++			err(1, "setsockopt(SOL_RAW,IPV6_CHECKSUM)");
++#endif
+ #endif
+ 
+ 	if( ( uid = getuid() ) )
+@@ -491,7 +530,7 @@
+ 
+ 	/* get command line options */
+ 
+-	while( ( c = getopt( argc, argv, "gedhlmnqusaAvz:t:i:p:f:r:c:b:C:Q:B:" ) ) != EOF )
++	while( ( c = getopt( argc, argv, "gedhlmnqusaAvz:t:i:p:f:r:c:b:C:Q:B:S:I:T:" ) ) != EOF )
+ 	{
+ 		switch( c )
+ 		{
+@@ -502,7 +541,7 @@
+ 			break;
+ 		
+ 		case 'r':
+-			if( !( retry = ( u_int )atoi( optarg ) ) )
++			if( ( retry = ( u_int )atoi( optarg ) ) < 0 )
+ 				usage();
+ 
+ 			break;
+@@ -639,6 +678,33 @@
+ 			generate_flag = 1;
+ 			break;
+ 
++		case 'S':
++#ifndef IPV6
++			if( ! inet_pton( AF_INET, optarg, &src_addr ) )
++#else
++			if( ! inet_pton( AF_INET6, optarg, &src_addr ) )
++#endif
++				usage();
++			src_addr_present = 1;
++			break;
++
++		case 'I':
++#ifdef SO_BINDTODEVICE
++		        if (setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, optarg,
++		                   strlen(optarg)))
++			        err(1, "setsockopt(AF_INET, SO_BINDTODEVICE)");
++#else
++			fprintf( stderr,
++				 "Warning: SO_BINDTODEVICE not supported, argument -I %s ignored\n",
++				 optarg );
++#endif
++		        break;
++
++		case 'T':
++		        if ( ! ( select_time = ( u_int )atoi( optarg ) * 100 ) )
++				usage();
++		        break;
++
+ 		default:
+ 			usage();
+ 			break;
+@@ -821,7 +887,7 @@
+ 			errno_crash_and_burn( "fopen" );
+ 
+ 
+-		while( fgets( line, 132, ping_file ) )
++		while( fgets( line, sizeof(line), ping_file ) )
+ 		{
+ 			if( sscanf( line, "%s", host ) != 1 )
+ 				continue;
+@@ -962,6 +1028,22 @@
+ 	if( !num_hosts )
+ 		exit( 2 );
+ 
++	/* set the source address */
++
++	if( src_addr_present )
++	{
++		memset( &sa, 0, sizeof( sa ) );
++#ifndef IPV6
++		sa.sin_family = AF_INET;
++		sa.sin_addr = src_addr;
++#else
++		sa.sin6_family = AF_INET6;
++		sa.sin6_addr = src_addr;
++#endif
++		if ( bind( s, (struct sockaddr *)&sa, sizeof( sa ) ) < 0 )
++			errno_crash_and_burn( "cannot bind source address" );
++	}
++
+ 	/* allocate array to hold outstanding ping requests */
+ 
+ 	table = ( HOST_ENTRY** )malloc( sizeof( HOST_ENTRY* ) * num_hosts );
+@@ -1112,7 +1194,7 @@
+ 		/* but allow time for the last one to come in */
+ 		if( count_flag )
+ 		{
+-			if( ( cursor->num_sent >= count ) && ( ht > cursor->timeout ) )
++			if( ( cursor->num_sent >= count ) && ( cursor->num_recv >= count || ht > cursor->timeout ) )
+ 			{
+ 				remove_job( cursor );
+ 				continue;
+@@ -1153,6 +1235,7 @@
+ 	
+ 	finish();
+ 
++	return 0;
+ } /* main() */
+ 
+ 
+@@ -1382,15 +1465,15 @@
+ 		if( h->num_recv_i <= h->num_sent_i )
+ 		{
+ 			fprintf( stderr, " xmt/rcv/%%loss = %d/%d/%d%%",
+-				h->num_sent_i, h->num_recv_i,
+-				( ( h->num_sent_i - h->num_recv_i ) * 100 ) / h->num_sent_i );
++				h->num_sent_i, h->num_recv_i, h->num_sent_i > 0 ?
++				( ( h->num_sent_i - h->num_recv_i ) * 100 ) / h->num_sent_i : 0 );
+ 
+ 		}/* IF */
+ 		else
+ 		{
+ 			fprintf( stderr, " xmt/rcv/%%return = %d/%d/%d%%",
+-				h->num_sent_i, h->num_recv_i,
+-				( ( h->num_recv_i * 100 ) / h->num_sent_i ) );
++				h->num_sent_i, h->num_recv_i, h->num_sent_i > 0 ?
++				( ( h->num_recv_i * 100 ) / h->num_sent_i ) : 0 );
+ 
+ 		}/* ELSE */
+ 
+@@ -1504,12 +1587,15 @@
+ 	icp = ( FPING_ICMPHDR* )buffer;
+ 
+ 	gettimeofday( &h->last_send_time, &tz );
++	int myseq = h->num_sent * num_hosts + h->i;
++	max_seq_sent = myseq > max_seq_sent ? myseq : max_seq_sent;
++
+ #ifndef IPV6
+ 	icp->icmp_type = ICMP_ECHO;
+ 	icp->icmp_code = 0;
+ 	icp->icmp_cksum = 0;
+-	icp->icmp_seq = h->i;
+-	icp->icmp_id = ident;
++	icp->icmp_seq = htons(myseq);
++	icp->icmp_id = htons(ident);
+ 
+ 	pdp = ( PING_DATA* )( buffer + SIZE_ICMP_HDR );
+ 	pdp->ping_ts = h->last_send_time;
+@@ -1519,8 +1605,8 @@
+ #else
+ 	icp->icmp6_type = ICMP6_ECHO_REQUEST;
+ 	icp->icmp6_code = 0;
+-	icp->icmp6_seq = h->i;
+-	icp->icmp6_id = ident;
++	icp->icmp6_seq = htons(myseq);
++	icp->icmp6_id = htons(ident);
+ 
+ 	pdp = ( PING_DATA* )( buffer + SIZE_ICMP_HDR );
+ 	pdp->ping_ts = h->last_send_time;
+@@ -1667,25 +1753,25 @@
+ 	}/* IF */
+ 
+ #ifndef IPV6
+-	if( icp->icmp_id != ident )
++	if( ntohs(icp->icmp_id) != ident )
+ #else
+-	if( icp->icmp6_id != ident )
++	if( ntohs(icp->icmp6_id) != ident )
+ #endif
+ 		return 1; /* packet received, but not the one we are looking for! */
+ 
+ 	num_pingreceived++;
+ 
+ #ifndef IPV6
+-	if( icp->icmp_seq  >= ( n_short )num_hosts )
++	if( ntohs(icp->icmp_seq)  > max_seq_sent )
+ #else
+-	if( icp->icmp6_seq  >= ( n_short )num_hosts )
++	if( ntohs(icp->icmp6_seq) > max_seq_sent )
+ #endif
+ 		return( 1 ); /* packet received, don't worry about it anymore */
+ 
+ #ifndef IPV6
+-	n = icp->icmp_seq;
++	n = ntohs(icp->icmp_seq) % num_hosts;
+ #else
+-	n = icp->icmp6_seq;
++	n = ntohs(icp->icmp6_seq) % num_hosts;
+ #endif
+ 	h = table[n];
+ 
+@@ -1824,6 +1910,7 @@
+ 	
+ 	}/* IF */
+ 	
++	fflush( stdout );
+ 	return num_jobs;
+ 
+ } /* wait_for_reply() */
+@@ -1875,11 +1962,11 @@
+ 		sent_icmp = ( struct icmp* )( c + 28 );
+ 		
+ 		if( ( sent_icmp->icmp_type == ICMP_ECHO ) &&
+-			( sent_icmp->icmp_id == ident ) &&
+-			( sent_icmp->icmp_seq < ( n_short )num_hosts ) )
++			( ntohs(sent_icmp->icmp_id) == ident ) &&
++			( ntohs(sent_icmp->icmp_seq) <= ( n_short )max_seq_sent ) )
+ 		{
+ 			/* this is a response to a ping we sent */
+-			h = table[sent_icmp->icmp_seq];
++			h = table[ntohs(sent_icmp->icmp_seq) % num_hosts];
+ 			
+ 			if( p->icmp_code > ICMP_UNREACH_MAXTYPE )
+ 			{
+@@ -1888,11 +1975,11 @@
+ 
+ #else
+ 		if( ( sent_icmp->icmp6_type == ICMP_ECHO ) &&
+-			( sent_icmp->icmp6_id == ident ) &&
+-			( sent_icmp->icmp6_seq < ( n_short )num_hosts ) )
++			( ntohs(sent_icmp->icmp6_id) == ident ) &&
++			( ntohs(sent_icmp->icmp6_seq) <= ( n_short )max_seq_sent ) )
+ 		{
+ 			/* this is a response to a ping we sent */
+-			h = table[sent_icmp->icmp6_seq];
++			h = table[ntohs(sent_icmp->icmp6_seq) % num_hosts];
+ 			
+ 			if( p->icmp6_code > ICMP_UNREACH_MAXTYPE )
+ 			{
+@@ -1930,24 +2017,24 @@
+ 	case ICMP_PARAMPROB:
+ 		sent_icmp = ( FPING_ICMPHDR* )( c + 28 );
+ #ifndef IPV6
+-		if( ( sent_icmp->icmp_type = ICMP_ECHO ) && 
+-			( sent_icmp->icmp_id = ident ) &&
+-			( sent_icmp->icmp_seq < ( n_short )num_hosts ) )
++		if( ( sent_icmp->icmp_type == ICMP_ECHO ) &&
++			( ntohs(sent_icmp->icmp_id) == ident ) &&
++			( ntohs(sent_icmp->icmp_seq) <= ( n_short )max_seq_sent ) )
+ 		{
+ 			/* this is a response to a ping we sent */
+-			h = table[sent_icmp->icmp_seq];
++			h = table[ntohs(sent_icmp->icmp_seq) % num_hosts];
+ 			fprintf( stderr, "%s from %s for ICMP Echo sent to %s",
+ 				icmp_type_str[p->icmp_type], inet_ntoa( addr->sin_addr ), h->host );
+       
+ 			if( inet_addr( h->host ) == -1 )
+ 				fprintf( stderr, " (%s)", inet_ntoa( h->saddr.sin_addr ) );
+ #else
+-		if( ( sent_icmp->icmp6_type = ICMP_ECHO ) && 
+-			( sent_icmp->icmp6_id = ident ) &&
+-			( sent_icmp->icmp6_seq < ( n_short )num_hosts ) )
++		if( ( sent_icmp->icmp6_type == ICMP_ECHO ) &&
++			( ntohs(sent_icmp->icmp6_id) == ident ) &&
++			( ntohs(sent_icmp->icmp6_seq) <= ( n_short )max_seq_sent ) )
+ 		{
+ 			/* this is a response to a ping we sent */
+-			h = table[sent_icmp->icmp6_seq];
++			h = table[ntohs(sent_icmp->icmp6_seq) % num_hosts];
+ 			fprintf( stderr, "%s from %s for ICMP Echo sent to %s",
+ 				icmp_type_str[p->icmp6_type], addr_ascii, h->host );
+       
+@@ -2165,20 +2252,33 @@
+ 	struct addrinfo		*res, hints;
+ 	int						ret_ga;
+ 	char						*hostname;
++	size_t len;
+ 
+ 	/* getaddrinfo */
+ 	bzero(&hints, sizeof(struct addrinfo));
+-	hints.ai_flags = AI_CANONNAME;
++	hints.ai_flags = name_flag ? AI_CANONNAME : 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) errx(1, "%s", gai_strerror(ret_ga));
++	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) errx(1, "getaddrinfo failed");
+-	(void)memcpy(&dst, res->ai_addr, sizeof(FPING_SOCKADDR)); /*res->ai_addrlen);*/
++	if (!res->ai_addr) {
++		if(!quiet_flag)
++			warnx("getaddrinfo failed");
++		num_noaddress++;
++		return; 
++	}
++	len = res->ai_addrlen;
++	if (len > sizeof(FPING_SOCKADDR)) len = sizeof(FPING_SOCKADDR);
++	(void)memcpy(&dst, res->ai_addr, len);
+ 	add_addr(name, name, &dst);
+ #endif
+ } /* add_name() */
+@@ -2730,9 +2830,11 @@
+ 	fprintf( stderr, "                (in looping and counting modes, default %d)\n", perhost_interval / 100 );
+ 	fprintf( stderr, "   -q         quiet (don't show per-target/per-ping results)\n" );
+ 	fprintf( stderr, "   -Q n       same as -q, but show summary every n seconds\n" );
+-	fprintf( stderr, "   -r n       number of retries (default %d)\n", retry );
++	fprintf( stderr, "   -r n       number of retries (default %d)\n", DEFAULT_RETRY );
+ 	fprintf( stderr, "   -s         print final stats\n" );
++	fprintf( stderr, "   -S addr    set source address\n" );
+ 	fprintf( stderr, "   -t n       individual target initial timeout (in millisec) (default %d)\n", timeout / 100 );
++	fprintf( stderr, "   -T n       set select timeout (default %d)\n", select_time / 100 );
+ 	fprintf( stderr, "   -u         show targets that are unreachable\n" );
+ 	fprintf( stderr, "   -v         show version\n" );
+ 	fprintf( stderr, "   targets    list of targets to check (if no -f specified)\n" );
+--- fping-2.4b2-to-ipv6.orig/debian/fping.docs
++++ fping-2.4b2-to-ipv6/debian/fping.docs
+@@ -0,0 +1 @@
++README
+--- fping-2.4b2-to-ipv6.orig/debian/lintian.overrides
++++ fping-2.4b2-to-ipv6/debian/lintian.overrides
+@@ -0,0 +1 @@
++fping: setuid-binary
+--- fping-2.4b2-to-ipv6.orig/debian/fping.dirs
++++ fping-2.4b2-to-ipv6/debian/fping.dirs
+@@ -0,0 +1,4 @@
++usr/bin
++usr/sbin
++usr/share/man/man8
++usr/share/lintian/overrides
+--- fping-2.4b2-to-ipv6.orig/debian/copyright
++++ fping-2.4b2-to-ipv6/debian/copyright
+@@ -0,0 +1,33 @@
++This package was split from netstd by Herbert Xu herbert at debian.org on
++Sat, 30 Oct 1999 16:39:06 +1000.
++
++It is maintained by Anibal Monsalve Salazar <anibal at debian.org>.
++
++netstd was created by Peter Tobias tobias at et-inf.fho-emden.de on
++Wed, 20 Jul 1994 17:23:21 +0200.
++
++It was downloaded from http://www.fping.com/.
++
++Copyright:
++
++Upstream maintainer: David Papp <david at remote.net>
++Original author: Roland Schemers <schemers at stanford.edu>
++IPv6 Support: Jeroen Massar <jeroen at unfix.org / jeroen at ipng.nl>
++
++
++Copyright (c) 1992, 1994, 1997
++Board of Trustees
++Leland Stanford Jr. University
++
++Redistribution and use in source and binary forms are permitted provided
++that the above copyright notice and this paragraph are duplicated in all
++such forms and that any documentation, advertising materials, and other
++materials related to such distribution and use acknowledge that the software
++was developed by Stanford University.  The name of the University may not
++be used to endorse or promote products derived from this software without
++specific prior written permission.
++
++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
++WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
++MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++
+--- fping-2.4b2-to-ipv6.orig/debian/control
++++ fping-2.4b2-to-ipv6/debian/control
+@@ -0,0 +1,20 @@
++Source: fping
++Section: net
++Priority: optional
++Maintainer: Anibal Monsalve Salazar <anibal at debian.org>
++Standards-Version: 3.8.0
++Build-Depends: debhelper (>= 5)
++Homepage: http://fping.sourceforge.net/
++
++Package: fping
++Architecture: any
++Depends: ${shlibs:Depends}, ${misc:Depends}
++Conflicts: suidmanager (<< 0.50)
++Replaces: netstd
++Description: sends ICMP ECHO_REQUEST packets to network hosts
++ fping is a ping like program which uses the Internet Control Message Protocol
++ (ICMP) echo request to determine if a target host is responding.  fping
++ differs from ping in that you can specify any number of targets on the command
++ line, or specify a file containing the lists of targets to ping.  Instead of
++ sending to one target until it times out or replies, fping will send out a
++ ping packet and move on to the next target in a round-robin fashion.
+--- fping-2.4b2-to-ipv6.orig/debian/rules
++++ fping-2.4b2-to-ipv6/debian/rules
+@@ -0,0 +1,78 @@
++#!/usr/bin/make -f
++# GNU copyright 1997 to 1999 by Joey Hess.
++# Copyright (c) 1999 Herbert Xu <herbert at debian.org>
++# Copyright (c) 2004-2005 Anibal Monsalve Salazar <anibal at debian.org>
++
++# Uncomment this to turn on verbose mode.
++export DH_VERBOSE=1
++
++configure: configure-stamp
++configure-stamp:
++	dh_testdir
++
++	mkdir build build/ipv4 build/ipv6
++	cp -a $$(find * -maxdepth 0 ! -name build) build
++	cd build/ipv4; ../configure
++	cd build/ipv6; ../configure
++
++	touch configure-stamp
++
++build: build-stamp
++build-stamp: configure-stamp
++	dh_testdir
++
++	$(MAKE) -C build/ipv4
++	$(MAKE) -C build/ipv6 CFLAGS='-g -O2 -DIPV6=1'
++
++	touch build-stamp
++
++clean:
++	dh_testdir
++	dh_testroot
++
++	rm -rf build build-stamp configure-stamp
++
++	dh_clean
++
++install: build
++	dh_testdir
++	dh_testroot
++	dh_clean -k
++	dh_installdirs
++
++	install build/ipv4/fping debian/fping/usr/bin
++	install build/ipv6/fping debian/fping/usr/bin/fping6
++	cp fping.8 debian/fping/usr/share/man/man8
++	ln -s fping.8 debian/fping/usr/share/man/man8/fping6.8
++
++	install -g 0 -o 0 -m 644 -p debian/lintian.overrides debian/fping/usr/share/lintian/overrides/fping
++
++	touch install-stamp
++
++# Build architecture-independent files here.
++binary-indep: build install
++# We have nothing to do by default.
++
++# Build architecture-dependent files here.
++binary-arch: build install
++	dh_testdir
++	dh_testroot
++	dh_installdocs
++	dh_installexamples
++	dh_installmenu
++	dh_installcron
++	dh_installinfo
++	dh_installchangelogs ChangeLog
++	dh_link
++	dh_strip
++	dh_compress
++	dh_fixperms
++	chmod 4755 debian/fping/usr/bin/fping*
++	dh_installdeb
++	dh_shlibdeps
++	dh_gencontrol
++	dh_md5sums
++	dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean configure binary-indep binary-arch binary install
+--- fping-2.4b2-to-ipv6.orig/debian/compat
++++ fping-2.4b2-to-ipv6/debian/compat
+@@ -0,0 +1 @@
++5
+--- fping-2.4b2-to-ipv6.orig/debian/changelog
++++ fping-2.4b2-to-ipv6/debian/changelog
+@@ -0,0 +1,174 @@
++fping (2.4b2-to-ipv6-16.1) unstable; urgency=low
++
++  * NMU during Moenchengladbach BSP
++  * Fixes FTBFS on kfreebsd (Closes: #555398)
++  * Fixes typo "Paramter" in binary
++
++ -- Axel Beckert <abe at deuxchevaux.org>  Sat, 23 Jan 2010 16:22:02 +0100
++
++fping (2.4b2-to-ipv6-16) unstable; urgency=low
++
++  * Fix the following bugs
++    - Network byte order sensitivity was missing completely.
++      Added hopefully all missing calls.
++    - The sequence numbering scheme used led to packet drops.
++      Changed it to a more senseful numbering scheme.
++    - Some minor C programming mistakes ('=' instead of '==').
++    Patch by Stephan Fuhrmann; closes: #502569
++  * Add support for command line select timeout setting
++    Patch by Marton Balint; closes: #502575
++  * Remove symlinks in /usr/sbin; closes: #377732
++  * Standards-Version is 3.8.0
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Sat, 18 Oct 2008 12:04:52 +1100
++
++fping (2.4b2-to-ipv6-15) unstable; urgency=low
++
++  * Added interface binding (-I) for fping
++    Patch by Peter Naulls <peter at mushroomnetworks.com>
++    Closes: #439014
++  * Fixed a couple of typos in fping.8. Closes: #423180
++  * Added homepage control header
++  * Bumped Standards-Version to 3.7.3
++  * Fixed the following lintian issue:
++    - debian-rules-sets-DH_COMPAT
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Mon, 03 Mar 2008 17:46:17 +1100
++
++fping (2.4b2-to-ipv6-14) unstable; urgency=low
++
++  * Set Standards-Version to 3.7.2.
++  * Set DH_COMPAT to 5.
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Fri, 23 Jun 2006 20:56:39 +1000
++
++fping (2.4b2-to-ipv6-13) unstable; urgency=low
++
++  * Fixed stdout flush problem, closes: #340146.
++    Patch by Bart Martens <bart.martens at advalvas.be>.
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Fri, 30 Dec 2005 08:30:09 +1100
++
++fping (2.4b2-to-ipv6-12) unstable; urgency=low
++
++  * Fixed "problem with option -r (retry limit)", closes: #318402.
++    Patch by Qingning Huo <qingningh at lanware.co.uk>.
++  * Set Standards-Version to 3.6.2 in debian/control and DH_COMPAT
++    to 4 in debian/rules..
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Sat, 08 Oct 2005 21:26:35 +1000
++
++fping (2.4b2-to-ipv6-11) unstable; urgency=low
++
++  * Fixed "would be useful to specify 'source address' like ping for multi
++    homed machines", closes: #198486.
++    Patch by Marc Haber <mh+debian-bugs at zugschlus.de>.
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Thu, 02 Jun 2005 08:14:54 +1000
++
++fping (2.4b2-to-ipv6-10) unstable; urgency=low
++
++  * Fixed "unnecessary delay with the -c option after the last packet"
++    (Closes: #293856). Patch by Niko Tyni <ntyni at iki.fi>
++  * New maintainer's email address.
++
++ -- Anibal Monsalve Salazar <anibal at debian.org>  Sun, 06 Feb 2005 23:25:57 +1100
++
++fping (2.4b2-to-ipv6-9) unstable; urgency=low
++
++  * Fixed "fping6 always does reverse lookup" (Closes: #273647).
++    Patch by Jeroen Massar and forwarded by Bernhard Schmidt <berni at birkenwald.de>
++
++ -- Anibal Monsalve Salazar <A.Monsalve.Salazar at IEEE.org>  Mon, 10 Jan 2005 00:01:32 +1100
++
++fping (2.4b2-to-ipv6-8) unstable; urgency=low
++
++  * New maintainer.
++
++ -- Anibal Monsalve Salazar <A.Monsalve.Salazar at IEEE.org>  Thu, 20 May 2004 09:42:08 +1000
++
++fping (2.4b2-to-ipv6-7) unstable; urgency=low
++
++  * Build fping in build/ipv[46] instead of build and build-ipv6.
++  * Made DNS errors non-fatal for IPv6 (closes: #198056).
++
++ -- Herbert Xu <herbert at debian.org>  Fri, 20 Jun 2003 21:36:30 +1000
++
++fping (2.4b2-to-ipv6-6) unstable; urgency=low
++
++  * Do not use incorrect linux.h file (closes: #85468).
++
++ -- Herbert Xu <herbert at debian.org>  Sat, 17 May 2003 14:13:11 +1000
++
++fping (2.4b2-to-ipv6-5) unstable; urgency=low
++
++  * Fixed yet another divide by zero bug (closes: #148445).
++
++ -- Herbert Xu <herbert at debian.org>  Tue,  4 Jun 2002 12:18:03 +1000
++
++fping (2.4b2-to-ipv6-4) unstable; urgency=low
++
++  * Made fping6 setuid (closes: #136386).
++  * Moved fping back into bin.
++  * Partially applied IPv6 patch to fix IPv6 checksums (closes: #136479).
++
++ -- Herbert Xu <herbert at debian.org>  Sun,  7 Apr 2002 20:36:56 +1000
++
++fping (2.4b2-to-ipv6-3) unstable; urgency=low
++
++  * Added compatibility symlink for fping (closes: #135203).
++
++ -- Herbert Xu <herbert at debian.org>  Sat, 23 Feb 2002 08:34:11 +1100
++
++fping (2.4b2-to-ipv6-2) unstable; urgency=low
++
++  * Turned setuid bit on again since the code before dropping privilegs is
++    minimal.
++  * Fixed another divide by zero error (closes: #132370).
++
++ -- Herbert Xu <herbert at debian.org>  Thu,  7 Feb 2002 20:10:48 +1100
++
++fping (2.4b2-to-ipv6-1) unstable; urgency=low
++
++  * New upstream release.
++  * Install fping into sbin as done by upstream.
++  * Turned setuid bit off.
++
++ -- Herbert Xu <herbert at debian.org>  Fri,  1 Feb 2002 22:11:59 +1100
++
++fping (2.2b2-3) unstable; urgency=low
++
++  * Removed INSTALL file from package (closes: #84050).
++  * Fixed alignment bug.
++
++ -- Herbert Xu <herbert at debian.org>  Sat, 10 Feb 2001 19:25:18 +1100
++
++fping (2.2b2-2) unstable; urgency=low
++
++  * Made changes for dpkg-statoverride (closes: #83838).
++
++ -- Herbert Xu <herbert at debian.org>  Sun, 28 Jan 2001 21:53:05 +1100
++
++fping (2.2b2-1) unstable; urgency=low
++
++  * New upstream release.
++  * Fixed typo that prevented -d from working (closes: #83255).
++  * Drop root privileges after opening the socket (closes: #81589).
++  * Fixed the options [tip], they were out by a factor of 10
++    (Richard Kettlewell, closes: #83742).
++
++ -- Herbert Xu <herbert at debian.org>  Sun, 28 Jan 2001 00:09:41 +1100
++
++fping (2.2b1-2) unstable; urgency=low
++
++  * Fixed typo in control file, spotted by William Ono (closes: #49909).
++
++ -- Herbert Xu <herbert at debian.org>  Mon, 15 May 2000 12:27:03 +1000
++
++fping (2.2b1-1) unstable; urgency=low
++
++  * Initial release.
++  * Fixed divide by zero error (closes: #29902).
++
++ -- Herbert Xu <herbert at debian.org>  Sat, 30 Oct 1999 16:36:19 +1000
++



More information about the arch-commits mailing list