network/ping: update to freebsd-current

* our ip modules don't support connect()/send(). Just use sendto().
* ping6 disappears, ping supports -4 or -6 to force IPv4 or IPv6

Change-Id: I1e982e354cc75d3a314c5bbbfffa0373e8f4d9af
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7427
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
This commit is contained in:
Jérôme Duval 2024-02-24 16:51:04 +01:00 committed by waddlesplash
parent 01dc1ea4cf
commit 3bf4cdb73b
14 changed files with 2706 additions and 1546 deletions

View File

@ -19,7 +19,7 @@ SYSTEM_BIN = [ FFilterByBuildFeatures
modifiers mount mountvolume modifiers mount mountvolume
netstat notify netstat notify
open open
package package_repo passwd pc ping ping6 pkgman prio profile ps package package_repo passwd pc ping pkgman prio profile ps
query quit query quit
ramdisk rc reindex release renice resattr resizefs rmattr rmindex roster ramdisk rc reindex release renice resattr resizefs rmattr rmindex roster
route route

View File

@ -84,6 +84,8 @@ struct icmp {
#define icmp_data icmp_dun.id_data #define icmp_data icmp_dun.id_data
#define ICMP_MINLEN 8 /* absolute minimum length */ #define ICMP_MINLEN 8 /* absolute minimum length */
#define ICMP_TSLEN (8 + 3 * sizeof (uint32_t)) /* timestamp */
#define ICMP_MASKLEN 12 /* address mask */
#define ICMP_ADVLENMIN (8 + sizeof(struct ip) + 8) #define ICMP_ADVLENMIN (8 + sizeof(struct ip) + 8)
#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) #define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)

View File

@ -12,7 +12,6 @@ SubInclude HAIKU_TOP src bin network netstat ;
SubInclude HAIKU_TOP src bin network pppconfig ; SubInclude HAIKU_TOP src bin network pppconfig ;
SubInclude HAIKU_TOP src bin network ppp_up ; SubInclude HAIKU_TOP src bin network ppp_up ;
SubInclude HAIKU_TOP src bin network ping ; SubInclude HAIKU_TOP src bin network ping ;
SubInclude HAIKU_TOP src bin network ping6 ;
SubInclude HAIKU_TOP src bin network route ; SubInclude HAIKU_TOP src bin network route ;
SubInclude HAIKU_TOP src bin network telnet ; SubInclude HAIKU_TOP src bin network telnet ;
SubInclude HAIKU_TOP src bin network telnetd ; SubInclude HAIKU_TOP src bin network telnetd ;

View File

@ -1,8 +1,15 @@
SubDir HAIKU_TOP src bin network ping ; SubDir HAIKU_TOP src bin network ping ;
SubDirSysHdrs $(HAIKU_TOP) headers compatibility bsd ;
DEFINES += INET INET6 ;
BinCommand ping : BinCommand ping :
main.c
ping.c ping.c
: $(TARGET_NETWORK_LIBS) $(TARGET_SELECT_UNAME_ETC_LIB) ; ping6.c
utils.c
: $(TARGET_NETWORK_LIBS) $(TARGET_SELECT_UNAME_ETC_LIB) libbsd.so ;
# Installation -- in the test directory for the time being # Installation -- in the test directory for the time being
HaikuInstall install-networking HaikuInstall install-networking

310
src/bin/network/ping/main.c Normal file
View File

@ -0,0 +1,310 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2019 Jan Sucan <jansucan@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <err.h>
#include <math.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sysexits.h>
#include <unistd.h>
#include "main.h"
#ifdef INET
#include "ping.h"
#endif
#ifdef INET6
#include "ping6.h"
#endif
#if defined(INET) && defined(INET6)
#define OPTSTR PING6OPTS PING4OPTS
#elif defined(INET)
#define OPTSTR PING4OPTS
#elif defined(INET6)
#define OPTSTR PING6OPTS
#else
#error At least one of INET and INET6 is required
#endif
#ifdef __HAIKU__
#define optreset optind
#define feature_present(x) true
#ifndef restrict
#define restrict
#endif
#endif
/* various options */
u_int options;
char *hostname;
/* counters */
long nreceived; /* # of packets we got back */
long nrepeats; /* number of duplicates */
long ntransmitted; /* sequence # for outbound packets = #sent */
long nrcvtimeout = 0; /* # of packets we got back after waittime */
/* nonzero if we've been told to finish up */
volatile sig_atomic_t seenint;
volatile sig_atomic_t seeninfo;
/* timing */
int timing; /* flag to do timing */
double tmin = 999999999.0; /* minimum round trip time */
double tmax = 0.0; /* maximum round trip time */
double tsum = 0.0; /* sum of all times, for doing average */
double tsumsq = 0.0; /* sum of all times squared, for std. dev. */
int
main(int argc, char *argv[])
{
#if defined(INET)
struct in_addr a;
#endif
#if defined(INET6)
struct in6_addr a6;
#endif
#if defined(INET) && defined(INET6)
struct addrinfo hints, *res, *ai;
const char *target;
int error;
#endif
int opt;
#ifdef INET6
if (strcmp(getprogname(), "ping6") == 0)
return ping6(argc, argv);
#endif
while ((opt = getopt(argc, argv, ":" OPTSTR)) != -1) {
switch (opt) {
#ifdef INET
case '4':
goto ping4;
#endif
#ifdef INET6
case '6':
goto ping6;
#endif
case 'S':
/*
* If -S is given with a numeric parameter,
* force use of the corresponding version.
*/
#ifdef INET
if (inet_pton(AF_INET, optarg, &a) == 1)
goto ping4;
#endif
#ifdef INET6
if (inet_pton(AF_INET6, optarg, &a6) == 1)
goto ping6;
#endif
break;
default:
break;
}
}
/*
* For IPv4, only one positional argument, the target, is allowed.
* For IPv6, multiple positional argument are allowed; the last
* one is the target, and preceding ones are intermediate hops.
* This nuance is lost here, but the only case where it matters is
* an error.
*/
if (optind >= argc)
usage();
#if defined(INET) && defined(INET6)
target = argv[argc - 1];
memset(&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_RAW;
if (feature_present("inet") && !feature_present("inet6"))
hints.ai_family = AF_INET;
if (feature_present("inet6") && !feature_present("inet"))
hints.ai_family = AF_INET6;
else
hints.ai_family = AF_UNSPEC;
error = getaddrinfo(target, NULL, &hints, &res);
if (res == NULL)
errx(EX_NOHOST, "cannot resolve %s: %s",
target, gai_strerror(error));
for (ai = res; ai != NULL; ai = ai->ai_next) {
if (ai->ai_family == AF_INET) {
freeaddrinfo(res);
goto ping4;
}
if (ai->ai_family == AF_INET6) {
freeaddrinfo(res);
goto ping6;
}
}
freeaddrinfo(res);
errx(EX_NOHOST, "cannot resolve %s", target);
#endif
#ifdef INET
ping4:
optreset = 1;
optind = 1;
return ping(argc, argv);
#endif
#ifdef INET6
ping6:
optreset = 1;
optind = 1;
return ping6(argc, argv);
#endif
}
/*
* onsignal --
* Set the global bit that causes the main loop to quit.
*/
void
onsignal(int sig)
{
switch (sig) {
case SIGALRM:
case SIGINT:
/*
* When doing reverse DNS lookups, the seenint flag might not
* be noticed for a while. Just exit if we get a second SIGINT.
*/
if (!(options & F_HOSTNAME) && seenint != 0)
_exit(nreceived ? 0 : 2);
seenint++;
break;
#ifndef __HAIKU__
case SIGINFO:
seeninfo++;
break;
#endif
}
}
/*
* pr_summary --
* Print out summary statistics to the given output stream.
*/
void
pr_summary(FILE * restrict stream)
{
fprintf(stream, "\n--- %s ping statistics ---\n", hostname);
fprintf(stream, "%ld packets transmitted, ", ntransmitted);
fprintf(stream, "%ld packets received, ", nreceived);
if (nrepeats)
fprintf(stream, "+%ld duplicates, ", nrepeats);
if (ntransmitted) {
if (nreceived > ntransmitted)
fprintf(stream, "-- somebody's duplicating packets!");
else
fprintf(stream, "%.1f%% packet loss",
((((double)ntransmitted - nreceived) * 100.0) /
ntransmitted));
}
if (nrcvtimeout)
fprintf(stream, ", %ld packets out of wait time", nrcvtimeout);
fputc('\n', stream);
if (nreceived && timing) {
/* Only display average to microseconds */
double num = nreceived + nrepeats;
double avg = tsum / num;
double stddev = sqrt(fmax(0, tsumsq / num - avg * avg));
fprintf(stream,
"round-trip min/avg/max/stddev = %.3f/%.3f/%.3f/%.3f ms\n",
tmin, avg, tmax, stddev);
}
fflush(stream);
}
void
usage(void)
{
(void)fprintf(stderr,
"usage:\n"
#ifdef INET
"\tping [-4AaDdfHnoQqRrv] [-C pcp] [-c count] "
"[-G sweepmaxsize]\n"
"\t [-g sweepminsize] [-h sweepincrsize] [-i wait] "
"[-l preload]\n"
"\t [-M mask | time] [-m ttl] "
#ifdef IPSEC
"[-P policy] "
#endif
"[-p pattern] [-S src_addr] \n"
"\t [-s packetsize] [-t timeout] [-W waittime] [-z tos] "
"IPv4-host\n"
"\tping [-4AaDdfHLnoQqRrv] [-C pcp] [-c count] [-I iface] "
"[-i wait]\n"
"\t [-l preload] [-M mask | time] [-m ttl] "
#ifdef IPSEC
"[-P policy] "
#endif
"[-p pattern]\n"
"\t [-S src_addr] [-s packetsize] [-T ttl] [-t timeout] [-W waittime]\n"
"\t [-z tos] IPv4-mcast-group\n"
#endif /* INET */
#ifdef INET6
"\tping [-6AaDd"
#if defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC)
"E"
#endif
"fHnNoOq"
#ifdef IPV6_USE_MIN_MTU
"u"
#endif
"vyY"
#if defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC)
"Z"
#endif
"] "
"[-b bufsiz] [-C pcp] [-c count] [-e gateway]\n"
"\t [-I interface] [-i wait] [-k addrtype] [-l preload] "
"[-m hoplimit]\n"
"\t [-p pattern]"
#if defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
" [-P policy]"
#endif
" [-S sourceaddr] [-s packetsize] [-t timeout]\n"
"\t [-W waittime] [-z tclass] [IPv6-hops ...] IPv6-host\n"
#endif /* INET6 */
);
exit(1);
}

View File

@ -0,0 +1,79 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2019 Jan Sucan <jansucan@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef MAIN_H
#define MAIN_H 1
#ifdef IPSEC
#include <netipsec/ipsec.h>
#endif /*IPSEC*/
#if defined(INET) && defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
#define PING4ADDOPTS "P:"
#else
#define PING4ADDOPTS
#endif
#define PING4OPTS ".::4AaC:c:DdfG:g:Hh:I:i:Ll:M:m:nop:QqRrS:s:T:t:vW:z:" PING4ADDOPTS
#if defined(INET6) && defined(IPSEC) && defined(IPSEC_POLICY_IPSEC)
#define PING6ADDOPTS "P:"
#elif defined(INET6) && defined(IPSEC) && !defined(IPSEC_POLICY_IPSEC)
#define PING6ADDOPTS "ZE"
#else
#define PING6ADDOPTS
#endif
#define PING6OPTS ".::6Aab:C:c:Dde:fHI:i:k:l:m:nNoOp:qS:s:t:uvyYW:z:" PING6ADDOPTS
/* various options */
extern u_int options;
#define F_HOSTNAME 0x0004
extern char *hostname;
/* counters */
extern long nreceived; /* # of packets we got back */
extern long nrepeats; /* number of duplicates */
extern long ntransmitted; /* sequence # for outbound packets = #sent */
extern long nrcvtimeout; /* # of packets we got back after waittime */
/* nonzero if we've been told to finish up */
extern volatile sig_atomic_t seenint;
extern volatile sig_atomic_t seeninfo;
/* timing */
extern int timing; /* flag to do timing */
extern double tmin; /* minimum round trip time */
extern double tmax; /* maximum round trip time */
extern double tsum; /* sum of all times, for doing average */
extern double tsumsq; /* sum of all times squared, for std. dev. */
void onsignal(int);
void pr_summary(FILE * __restrict);
void usage(void) __dead2;
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2019 Jan Sucan <jansucan@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef PING_H
#define PING_H 1
int ping(int argc, char *const *argv);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2019 Jan Sucan <jansucan@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef PING6_H
#define PING6_H 1
int ping6(int argc, char *argv[]);
#endif

View File

@ -0,0 +1,84 @@
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Mike Muuss.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <string.h>
#include "utils.h"
/*
* in_cksum --
* Checksum routine for Internet Protocol family headers (C Version)
*/
u_short
in_cksum(u_char *addr, int len)
{
int nleft, sum;
u_char *w;
union {
u_short us;
u_char uc[2];
} last;
u_short answer;
nleft = len;
sum = 0;
w = addr;
/*
* Our algorithm is simple, using a 32 bit accumulator (sum), we add
* sequential 16 bit words to it, and at the end, fold back all the
* carry bits from the top 16 bits into the lower 16 bits.
*/
while (nleft > 1) {
u_short data;
memcpy(&data, w, sizeof(data));
sum += data;
w += sizeof(data);
nleft -= sizeof(data);
}
/* mop up an odd byte, if necessary */
if (nleft == 1) {
last.uc[0] = *w;
last.uc[1] = 0;
sum += last.us;
}
/* add back carry outs from top 16 bits to low 16 bits */
sum = (sum >> 16) + (sum & 0xffff); /* add hi 16 to low 16 */
sum += (sum >> 16); /* add carry */
answer = ~sum; /* truncate to 16 bits */
return(answer);
}

View File

@ -0,0 +1,36 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (C) 2019 Jan Sucan <jansucan@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef UTILS_H
#define UTILS_H 1
#include <sys/types.h>
u_short in_cksum(u_char *, int);
#endif

View File

@ -1,7 +0,0 @@
SubDir HAIKU_TOP src bin network ping6 ;
UseHeaders [ FDirName $(HAIKU_TOP) headers compatibility bsd ] : true ;
BinCommand ping6 :
ping6.c
: libbsd.so $(TARGET_NETWORK_LIBS) $(TARGET_SELECT_UNAME_ETC_LIB) ;

View File

@ -36,7 +36,6 @@ provides {
cmd:passwd cmd:passwd
cmd:pidof cmd:pidof
cmd:ping cmd:ping
cmd:ping6
cmd:prio cmd:prio
cmd:ps cmd:ps
cmd:renice cmd:renice