Add netselect 0.3, ultrafast implementation of ping.

PR:		ports/100338
Submitted by:	Timothy Redaelli <drizzt at gufi.org>
This commit is contained in:
Rong-En Fan 2006-07-15 17:14:45 +00:00
parent 35d4715fc9
commit b5be3c084e
5 changed files with 111 additions and 0 deletions

View file

@ -329,6 +329,7 @@
SUBDIR += netpipes
SUBDIR += netscript
SUBDIR += netsed
SUBDIR += netselect
SUBDIR += netspeed_applet
SUBDIR += netstrain
SUBDIR += nettest

38
net/netselect/Makefile Normal file
View file

@ -0,0 +1,38 @@
# New ports collection makefile for: netselect
# Date created: 15 July 2006
# Whom: Timothy Redaelli <drizzt@gufi.org>
#
# $FreeBSD$
#
PORTNAME= netselect
PORTVERSION= 0.3
CATEGORIES= net
MASTER_SITES= ${MASTER_SITE_GENTOO} \
http://www.worldvisions.ca/~apenwarr/netselect/
MASTER_SITE_SUBDIR= distfiles
MAINTAINER= drizzt@gufi.org
COMMENT= Ultrafast implementation of ping
PLIST_FILES= bin/${PORTNAME}
WRKSRC= ${WRKDIR}/${PORTNAME}
OPTIONS= SUID "Install with the sticky bit (mode 4110)" off
.include <bsd.port.pre.mk>
.if defined(WITH_SUID)
BINMODE= 4110
.else
BINMODE= 0100
.endif
do-build:
${CC} ${CFLAGS} -o ${WRKSRC}/${PORTNAME} ${WRKSRC}/${PORTNAME}.c
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${PREFIX}/bin
.include <bsd.port.post.mk>

3
net/netselect/distinfo Normal file
View file

@ -0,0 +1,3 @@
MD5 (netselect-0.3.tar.gz) = 3a3714946db2458e5db3d55373057ef2
SHA256 (netselect-0.3.tar.gz) = fe81942589d5219d030e5cecfb12787fb6d3613416cb326dea4952bf53f9c978
SIZE (netselect-0.3.tar.gz) = 22047

View file

@ -0,0 +1,55 @@
--- netselect.c.orig 2006-07-14 22:59:18.000000000 +0200
+++ netselect.c 2006-07-14 22:57:22.000000000 +0200
@@ -39,14 +39,13 @@
* hey, great! Let me know. -- apenwarr
*/
-#ifdef __EMX__
-# include <io.h>
-# include <fcntl.h>
-# include <sys/types.h>
-# include <sys/select.h>
-# include <machine/endian.h>
-#else
-# include <endian.h>
+#ifdef __linux__
+#include <endian.h>
+#elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
+#if defined(__OpenBSD__)
+#include <machine/types.h>
+#endif
+#include <machine/endian.h>
#endif
#include <sys/param.h>
@@ -152,6 +151,7 @@
extern int optind;
int hostcount, startcount, endcount = 0, sent_one, lag, min_lag = 100;
int ch, seq, ttl, max_ttl = 30, min_tries = 10, num_score = 1;
+ int on = 1;
struct timeval now;
struct timezone tz;
OPacket outpacket; /* last output (udp) packet */
@@ -234,7 +234,12 @@
if (verbose >= 1)
fprintf(stderr, "Running netselect to choose %d out of %d address%s.\n",
num_score, numhosts, numhosts==1 ? "" : "es");
-
+
+ if (setsockopt(sndsock, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) {
+ perror("IP_HDRINCL");
+ _exit(EXIT_FAILURE);
+ }
+
/* keep going until most of the hosts have been finished */
must_continue = numhosts;
while (must_continue && must_continue >= numhosts/2)
@@ -712,7 +717,7 @@
ip->ip_off = 0;
ip->ip_hl = sizeof(*ip) >> 2;
ip->ip_p = IPPROTO_UDP;
- ip->ip_len = 0; /* kernel fills this in */
+ ip->ip_len = sizeof(OPacket);
ip->ip_ttl = ttl;
ip->ip_v = IPVERSION;
ip->ip_id = htons(ident + seq);

14
net/netselect/pkg-descr Normal file
View file

@ -0,0 +1,14 @@
netselect is an ultrafast intelligent parallelizing binary-search
implementation of "ping."
netselect determines several facts about all of the hosts given on the command
line, much faster than you would if you tried to use ping and traceroute.
For example, if I type:
netselect -v ftp.fceia.unr.edu.ar \
ftp.kulnet.kuleuven.ac.be \
ftp.cdrom.com ftp.debian.org \
ftp.de.debian.org
It tells me statistics about each of the hostnames I provided,
in much less time than doing a whole bunch of traceroutes.