1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-27 00:57:50 +00:00

Update net/fping to version 3.4 and point to the new home.

Merge IPv4 and IPv6 support into net/fping, selectable via options.
Remove the now un-needed net/fping+ipv6
Add common description for IPV4 option, analogous to the IPV6 option

PR:		ports/169949 [1], ports/169950 [2]
Submitted by:	Rodrigo OSORIO <rodrigo@bebik.net> [1]
		Jason Harris <jharris@widomaker.com> [2]
		zeising (final patch version)
Approved by:	maintainer, kwm (mentor)
This commit is contained in:
Niclas Zeising 2012-09-24 09:15:59 +00:00
parent 96680934b9
commit 1785520646
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=304773
14 changed files with 31 additions and 519 deletions

1
MOVED
View File

@ -3712,3 +3712,4 @@ print/pips-spr300_310||2012-09-22|Removed
print/pips930||2012-09-22|Removed
print/pips770||2012-09-22|Removed
www/linuxpluginwrapper||2012-09-22|Has expired: doesn't support ELF symbol versioning, yet.
net/fping+ipv6|net/fping|2012-09-24|IPv6 support has been merged

View File

@ -127,6 +127,7 @@ IMAGEMAGICK_DESC?= ImageMagick support
IMLIB_DESC?= imlib image library support
IMLIB2_DESC?= imlib2 image library support
IODBC_DESC?= ODBC backend via iODBC
IPV4_DESC?= IPv4 protocol support
IPV6_DESC?= IPv6 protocol support
JABBER_DESC?= Jabber support
JACK_DESC?= JACK audio server support

View File

@ -140,7 +140,6 @@
SUBDIR += fpc-ldap
SUBDIR += fpc-pcap
SUBDIR += fping
SUBDIR += fping+ipv6
SUBDIR += freebsd-tftp
SUBDIR += freebsd-uucp
SUBDIR += freedbd

View File

@ -1,39 +0,0 @@
# ex:ts=8
# Ports collection makefile for: fping
# Date created: Tue Mar 25, 1997
# Whom: David O'Brien (obrien@NUXI.com)
#
# $FreeBSD$
#
PORTNAME= fping
PORTVERSION= 2.4b2
CATEGORIES= net ipv6
MASTER_SITES= http://keyserver.kjsl.com/~jharris/distfiles/
#MASTER_SITES= http://www.fping.com/download/
PKGNAMESUFFIX= +ipv6
DISTNAME= ${PORTNAME}-${PORTVERSION}_to-ipv6
MAINTAINER= jharris@widomaker.com
COMMENT= Quickly ping N hosts w/o flooding the network - IPv6 version
PLIST_FILES= sbin/fping6
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --bindir="${PREFIX}/sbin"
MAN8= fping.8
USE_DOS2UNIX= fping.8
# IPv6 enabled since it is a IPv6 only version
CFLAGS+= -DIPV6
post-patch:
@${REINPLACE_CMD} -e 's/fping@/${MAINTAINER:S/@/\\@/g} or fping@/g' \
${WRKSRC}/fping.c
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/fping ${PREFIX}/sbin/fping6
@${CHMOD} 4555 ${PREFIX}/sbin/fping6
${INSTALL_MAN} ${WRKSRC}/fping.8 ${PREFIX}/man/man8
.include <bsd.port.mk>

View File

@ -1,2 +0,0 @@
SHA256 (fping-2.4b2_to-ipv6.tar.gz) = 77e1a90af4fff4a5ffc4b70542c6ff44130558357e7d549f99a9eff23108d172
SIZE (fping-2.4b2_to-ipv6.tar.gz) = 63333

View File

@ -1,146 +0,0 @@
--- fping.c.orig Mon Jan 21 02:06:30 2002
+++ fping.c Tue Jul 12 18:11:30 2005
@@ -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 ) \
@@ -67,7 +66,7 @@
/*** autoconf includes ***/
-
+#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <time.h>
@@ -88,7 +87,6 @@
#include <string.h>
#include <stddef.h>
-#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
@@ -112,6 +110,10 @@
#include <arpa/inet.h>
#include <netdb.h>
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
+
/* RS6000 has sys/select.h */
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
@@ -246,13 +248,13 @@
struct timeval last_send_time; /* time of last packet sent */
int num_sent; /* number of ping packets sent */
int num_recv; /* number of pings received */
- int max_reply; /* longest response time */
- int min_reply; /* shortest response time */
+ long max_reply; /* longest response time */
+ long min_reply; /* shortest response time */
int total_time; /* sum of response times */
int num_sent_i; /* number of ping packets sent */
int num_recv_i; /* number of pings received */
- int max_reply_i; /* longest response time */
- int min_reply_i; /* shortest response time */
+ long max_reply_i; /* longest response time */
+ long min_reply_i; /* shortest response time */
int total_time_i; /* sum of response times */
int *resp_times; /* individual response times */
#if defined( DEBUG ) || defined( _DEBUG )
@@ -482,7 +484,7 @@
}/* IF */
- prog = argv[0];
+ prog = (prog = strrchr(argv[0], '/')) ? prog + 1 : argv[0];
ident = getpid() & 0xFFFF;
verbose_flag = 1;
@@ -502,8 +504,8 @@
break;
case 'r':
- if( !( retry = ( u_int )atoi( optarg ) ) )
- usage();
+ retry = ( u_int )atoi( optarg );
+
break;
@@ -823,6 +825,7 @@
while( fgets( line, 132, ping_file ) )
{
+ line[132-1] = '\0';
if( sscanf( line, "%s", host ) != 1 )
continue;
@@ -1503,7 +1506,6 @@
memset( buffer, 0, ping_pkt_size * sizeof( char ) );
icp = ( FPING_ICMPHDR* )buffer;
- gettimeofday( &h->last_send_time, &tz );
#ifndef IPV6
icp->icmp_type = ICMP_ECHO;
icp->icmp_code = 0;
@@ -1512,6 +1514,8 @@
icp->icmp_id = ident;
pdp = ( PING_DATA* )( buffer + SIZE_ICMP_HDR );
+ /* set the time at the very last possible point */
+ gettimeofday(&h->last_send_time,&tz);
pdp->ping_ts = h->last_send_time;
pdp->ping_count = h->num_sent;
@@ -1523,6 +1527,8 @@
icp->icmp6_id = ident;
pdp = ( PING_DATA* )( buffer + SIZE_ICMP_HDR );
+ /* set the time at the very last possible point */
+ gettimeofday(&h->last_send_time,&tz);
pdp->ping_ts = h->last_send_time;
pdp->ping_count = h->num_sent;
@@ -1611,6 +1617,9 @@
result = recvfrom_wto( s, buffer, sizeof(buffer), &response_addr, select_time );
+ /* get time of receipt as close to the real time as possible */
+ gettimeofday(&current_time,&tz);
+
if( result < 0 )
return 0; /* timeout */
@@ -1625,7 +1634,7 @@
ip = ( struct ip* )buffer;
#ifndef IPV6
-#if defined( __alpha__ ) && __STDC__ && !defined( __GLIBC__ )
+#if defined( __alpha__ ) && defined(__osf1__) && __STDC__ && !defined( __GLIBC__ )
/* The alpha headers are decidedly broken.
* Using an ANSI compiler, it provides ip_vhl instead of ip_hl and
* ip_v. So, to get ip_hl, we mask off the bottom four bits.
@@ -1633,7 +1642,7 @@
hlen = ( ip->ip_vhl & 0x0F ) << 2;
#else
hlen = ip->ip_hl << 2;
-#endif /* defined(__alpha__) && __STDC__ */
+#endif /* defined(__alpha__) && defined(__osf1__) && __STDC__ */
if( result < hlen + ICMP_MINLEN )
#else
if( result < sizeof(FPING_ICMPHDR) )
@@ -1690,7 +1699,6 @@
h = table[n];
/* received ping is cool, so process it */
- gettimeofday( &current_time, &tz );
h->waiting = 0;
h->timeout = timeout;
h->num_recv++;

View File

@ -1,32 +0,0 @@
--- fping.8.orig Mon Jan 21 01:05:48 2002
+++ fping.8 Sun Jul 7 22:03:43 2002
@@ -1,4 +1,4 @@
-.TH fping l
+.TH fping 8
.SH NAME
fping \- send ICMP ECHO_REQUEST packets to network hosts
.SH SYNOPSIS
@@ -152,12 +152,12 @@
example none the less.
.nf
-#!/usr/local/bin/perl
+#!/usr/bin/perl
require 'open2.pl';
$MAILTO = "root";
-$pid = &open2("OUTPUT","INPUT","/usr/local/bin/fping -u");
+$pid = &open2("OUTPUT","INPUT","/usr/local/sbin/fping -u");
@check=("slapshot","foo","foobar");
@@ -178,7 +178,7 @@
that are currently reachable.
.nf
-#!/usr/local/bin/perl
+#!/usr/bin/perl
$hosts_to_backup = `cat /etc/hosts.backup | fping -a`;

View File

@ -1,17 +0,0 @@
A tool to quickly ping N number of hosts to determine their reachability
without flooding the network.
fping is different from ping in that you can specify any number of
hosts on the command line, or specify a file containing the lists
of hosts to ping. Instead of trying one host until it timeouts or
replies, fping will send out a ping packet and move on to the next
host in a round-robin fashion. If a host replies, it is noted and
removed from the list of hosts to check. If a host does not respond
within a certain time limit and/or retry limit it will be considered
unreachable.
Unlike ping, fping is meant to be used in scripts and its
output is easy to parse.
This is an IPv6 only version.
WWW: http://www.fping.com/

View File

@ -7,33 +7,46 @@
#
PORTNAME= fping
PORTVERSION= 2.4b2
PORTREVISION= 1
PORTVERSION= 3.4
CATEGORIES= net ipv6
MASTER_SITES= http://keyserver.kjsl.com/~jharris/distfiles/
#MASTER_SITES= http://www.fping.com/download/
DISTNAME= ${PORTNAME}-${PORTVERSION}_to-ipv6
MASTER_SITES= http://fping.org/dist/
MAINTAINER= jharris@widomaker.com
COMMENT= Quickly ping N hosts w/o flooding the network
PLIST_FILES= sbin/fping
OPTIONS_MULTI= NET
OPTIONS_MULTI_NET= IPV4 IPV6
OPTIONS_DEFAULT= IPV4
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --bindir="${PREFIX}/sbin"
MAN8= fping.8
.if defined(WITH_IPV6)
# IPv6 not enabled by default, as it does not work together with IPv4.
CFLAGS+= -DIPV6
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MIPV4}
CONFIGURE_ARGS+=--enable-ipv4
PLIST_FILES+=sbin/fping
MAN8+= fping.8
.else
CONFIGURE_ARGS+=--disable-ipv4
.endif
post-patch:
@${REINPLACE_CMD} -e 's/fping@/${MAINTAINER:S/@/\\@/g} or fping@/g' \
${WRKSRC}/fping.c
.if ${PORT_OPTIONS:MIPV6}
CONFIGURE_ARGS+=--enable-ipv6
PLIST_FILES+=sbin/fping6
MAN8+= fping6.8
.else
CONFIGURE_ARGS+=--disable-ipv6
.endif
post-install:
.if ${PORT_OPTIONS:MIPV4}
@${STRIP_CMD} ${PREFIX}/sbin/fping
@${CHMOD} 4555 ${PREFIX}/sbin/fping
.endif
.if ${PORT_OPTIONS:MIPV6}
@${STRIP_CMD} ${PREFIX}/sbin/fping6
@${CHMOD} 4555 ${PREFIX}/sbin/fping6
.endif
.include <bsd.port.mk>

View File

@ -1,2 +1,2 @@
SHA256 (fping-2.4b2_to-ipv6.tar.gz) = 77e1a90af4fff4a5ffc4b70542c6ff44130558357e7d549f99a9eff23108d172
SIZE (fping-2.4b2_to-ipv6.tar.gz) = 63333
SHA256 (fping-3.4.tar.gz) = d42528af4931f16a8e3438bd4a45cfdd72163ad8835a3c95351c336a26e56afe
SIZE (fping-3.4.tar.gz) = 142986

View File

@ -1,146 +0,0 @@
--- fping.c.orig Mon Jan 21 02:06:30 2002
+++ fping.c Tue Jul 12 18:11:30 2005
@@ -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 ) \
@@ -67,7 +66,7 @@
/*** autoconf includes ***/
-
+#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <time.h>
@@ -88,7 +87,6 @@
#include <string.h>
#include <stddef.h>
-#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
@@ -112,6 +110,10 @@
#include <arpa/inet.h>
#include <netdb.h>
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
+
/* RS6000 has sys/select.h */
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
@@ -246,13 +248,13 @@
struct timeval last_send_time; /* time of last packet sent */
int num_sent; /* number of ping packets sent */
int num_recv; /* number of pings received */
- int max_reply; /* longest response time */
- int min_reply; /* shortest response time */
+ long max_reply; /* longest response time */
+ long min_reply; /* shortest response time */
int total_time; /* sum of response times */
int num_sent_i; /* number of ping packets sent */
int num_recv_i; /* number of pings received */
- int max_reply_i; /* longest response time */
- int min_reply_i; /* shortest response time */
+ long max_reply_i; /* longest response time */
+ long min_reply_i; /* shortest response time */
int total_time_i; /* sum of response times */
int *resp_times; /* individual response times */
#if defined( DEBUG ) || defined( _DEBUG )
@@ -482,7 +484,7 @@
}/* IF */
- prog = argv[0];
+ prog = (prog = strrchr(argv[0], '/')) ? prog + 1 : argv[0];
ident = getpid() & 0xFFFF;
verbose_flag = 1;
@@ -502,8 +504,8 @@
break;
case 'r':
- if( !( retry = ( u_int )atoi( optarg ) ) )
- usage();
+ retry = ( u_int )atoi( optarg );
+
break;
@@ -823,6 +825,7 @@
while( fgets( line, 132, ping_file ) )
{
+ line[132-1] = '\0';
if( sscanf( line, "%s", host ) != 1 )
continue;
@@ -1503,7 +1506,6 @@
memset( buffer, 0, ping_pkt_size * sizeof( char ) );
icp = ( FPING_ICMPHDR* )buffer;
- gettimeofday( &h->last_send_time, &tz );
#ifndef IPV6
icp->icmp_type = ICMP_ECHO;
icp->icmp_code = 0;
@@ -1512,6 +1514,8 @@
icp->icmp_id = ident;
pdp = ( PING_DATA* )( buffer + SIZE_ICMP_HDR );
+ /* set the time at the very last possible point */
+ gettimeofday(&h->last_send_time,&tz);
pdp->ping_ts = h->last_send_time;
pdp->ping_count = h->num_sent;
@@ -1523,6 +1527,8 @@
icp->icmp6_id = ident;
pdp = ( PING_DATA* )( buffer + SIZE_ICMP_HDR );
+ /* set the time at the very last possible point */
+ gettimeofday(&h->last_send_time,&tz);
pdp->ping_ts = h->last_send_time;
pdp->ping_count = h->num_sent;
@@ -1611,6 +1617,9 @@
result = recvfrom_wto( s, buffer, sizeof(buffer), &response_addr, select_time );
+ /* get time of receipt as close to the real time as possible */
+ gettimeofday(&current_time,&tz);
+
if( result < 0 )
return 0; /* timeout */
@@ -1625,7 +1634,7 @@
ip = ( struct ip* )buffer;
#ifndef IPV6
-#if defined( __alpha__ ) && __STDC__ && !defined( __GLIBC__ )
+#if defined( __alpha__ ) && defined(__osf1__) && __STDC__ && !defined( __GLIBC__ )
/* The alpha headers are decidedly broken.
* Using an ANSI compiler, it provides ip_vhl instead of ip_hl and
* ip_v. So, to get ip_hl, we mask off the bottom four bits.
@@ -1633,7 +1642,7 @@
hlen = ( ip->ip_vhl & 0x0F ) << 2;
#else
hlen = ip->ip_hl << 2;
-#endif /* defined(__alpha__) && __STDC__ */
+#endif /* defined(__alpha__) && defined(__osf1__) && __STDC__ */
if( result < hlen + ICMP_MINLEN )
#else
if( result < sizeof(FPING_ICMPHDR) )
@@ -1690,7 +1699,6 @@
h = table[n];
/* received ping is cool, so process it */
- gettimeofday( &current_time, &tz );
h->waiting = 0;
h->timeout = timeout;
h->num_recv++;

View File

@ -1,32 +0,0 @@
--- fping.8.orig Mon Jan 21 01:05:48 2002
+++ fping.8 Sun Jul 7 22:03:43 2002
@@ -1,4 +1,4 @@
-.TH fping l
+.TH fping 8
.SH NAME
fping \- send ICMP ECHO_REQUEST packets to network hosts
.SH SYNOPSIS
@@ -152,12 +152,12 @@
example none the less.
.nf
-#!/usr/local/bin/perl
+#!/usr/bin/perl
require 'open2.pl';
$MAILTO = "root";
-$pid = &open2("OUTPUT","INPUT","/usr/local/bin/fping -u");
+$pid = &open2("OUTPUT","INPUT","/usr/local/sbin/fping -u");
@check=("slapshot","foo","foobar");
@@ -178,7 +178,7 @@
that are currently reachable.
.nf
-#!/usr/local/bin/perl
+#!/usr/bin/perl
$hosts_to_backup = `cat /etc/hosts.backup | fping -a`;

View File

@ -1,88 +0,0 @@
diff -ru ../fping-2.4b2_to-ipv6-orig/fping.c ./fping.c
--- ../fping-2.4b2_to-ipv6-orig/fping.c Sun Jan 20 19:06:30 2002
+++ ./fping.c Fri Apr 13 14:36:02 2007
@@ -283,6 +283,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;
@@ -408,6 +414,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() )
@@ -491,7 +502,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:" ) ) != EOF )
{
switch( c )
{
@@ -639,6 +650,16 @@
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;
+
default:
usage();
break;
@@ -962,6 +983,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 );
@@ -2732,6 +2769,7 @@
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, " -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, " -u show targets that are unreachable\n" );
fprintf( stderr, " -v show version\n" );

View File

@ -13,4 +13,4 @@ without flooding the network.
Unlike ping, fping is meant to be used in scripts and its
output is easy to parse.
WWW: http://www.fping.com/
WWW: http://www.fping.org/