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:
parent
96680934b9
commit
1785520646
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=304773
1
MOVED
1
MOVED
@ -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
|
||||
|
@ -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
|
||||
|
@ -140,7 +140,6 @@
|
||||
SUBDIR += fpc-ldap
|
||||
SUBDIR += fpc-pcap
|
||||
SUBDIR += fping
|
||||
SUBDIR += fping+ipv6
|
||||
SUBDIR += freebsd-tftp
|
||||
SUBDIR += freebsd-uucp
|
||||
SUBDIR += freedbd
|
||||
|
@ -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>
|
@ -1,2 +0,0 @@
|
||||
SHA256 (fping-2.4b2_to-ipv6.tar.gz) = 77e1a90af4fff4a5ffc4b70542c6ff44130558357e7d549f99a9eff23108d172
|
||||
SIZE (fping-2.4b2_to-ipv6.tar.gz) = 63333
|
@ -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(¤t_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( ¤t_time, &tz );
|
||||
h->waiting = 0;
|
||||
h->timeout = timeout;
|
||||
h->num_recv++;
|
@ -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`;
|
||||
|
@ -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/
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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(¤t_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( ¤t_time, &tz );
|
||||
h->waiting = 0;
|
||||
h->timeout = timeout;
|
||||
h->num_recv++;
|
@ -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`;
|
||||
|
@ -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" );
|
||||
|
||||
|
||||
|
@ -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/
|
||||
|
Loading…
Reference in New Issue
Block a user