parent
3ffd86db5f
commit
647353796d
@ -0,0 +1 @@
|
||||
fping-2.4b2_to-ipv6.tar.gz
|
@ -0,0 +1,88 @@
|
||||
--- fping-2.4b2-to-ipv6.orig/fping.c
|
||||
+++ fping-2.4b2-to-ipv6/fping.c
|
||||
@@ -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 ) \
|
||||
@@ -150,7 +149,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 */
|
||||
@@ -474,6 +477,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() ) )
|
||||
@@ -1382,8 +1414,8 @@
|
||||
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
|
||||
@@ -2165,6 +2197,7 @@
|
||||
struct addrinfo *res, hints;
|
||||
int ret_ga;
|
||||
char *hostname;
|
||||
+ size_t len;
|
||||
|
||||
/* getaddrinfo */
|
||||
bzero(&hints, sizeof(struct addrinfo));
|
||||
@@ -2178,7 +2211,9 @@
|
||||
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);*/
|
||||
+ 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() */
|
@ -0,0 +1,57 @@
|
||||
Name: fping
|
||||
Version: 2.4b2
|
||||
Release: 3
|
||||
Summary: Scriptable, parallelized ping-like utility
|
||||
Group: Applications/Internet
|
||||
License: BSD
|
||||
URL: http://www.fping.com/
|
||||
Source0: http://www.fping.com/download/%{name}-%{version}_to-ipv6.tar.gz
|
||||
Patch0: fping-2.4b2_ipv6-fix.diff
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
%description
|
||||
fping is a ping-like program which can determine the accessibility of
|
||||
multiple hosts using ICMP echo requests. fping is designed for parallelized
|
||||
monitoring of large numbers of systems, and is developed with ease of
|
||||
use in scripting in mind.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}_to-ipv6
|
||||
%patch0 -p1 -b .ipv6
|
||||
|
||||
%build
|
||||
%configure
|
||||
make CFLAGS="-DIPV6 $RPM_OPT_FLAGS"
|
||||
mv fping fping6
|
||||
|
||||
make clean
|
||||
make CFLAGS="$RPM_OPT_FLAGS"
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make DESTDIR="$RPM_BUILD_ROOT" install
|
||||
install -p -m 4755 fping6 "$RPM_BUILD_ROOT"/%{_sbindir}
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%doc ChangeLog COPYING README
|
||||
%attr(4755,root,root) %{_sbindir}/fping
|
||||
%attr(4755,root,root) %{_sbindir}/fping6
|
||||
%{_mandir}/man8/*
|
||||
|
||||
%changelog
|
||||
* Mon May 16 2005 Chris Ricker <kaboom@oobleck.net> 2.4b2-3
|
||||
- Simplify doc packaging (Matthias Saou)
|
||||
- Simplify clean (Matthias Saou)
|
||||
- Don't strip fping6 binary (Matthias Saou)
|
||||
- Preserve timestamps
|
||||
|
||||
* Wed May 11 2005 Chris Ricker <kaboom@oobleck.net> 2.4b2-2
|
||||
- Fix URL and Source locations
|
||||
|
||||
* Wed Mar 23 2005 Chris Ricker <kaboom@oobleck.net> 2.4b2-1
|
||||
- Initial package for Fedora
|
||||
- IPv6 patches from Herbert Xu (Debian)
|
Loading…
Reference in new issue