summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--abs/core/iputils/PKGBUILD108
-rw-r--r--abs/core/iputils/iputils-20101006-ping-integer-overflow.patch11
-rw-r--r--abs/core/iputils/iputils-big-patches.patch595
-rw-r--r--abs/core/iputils/iputils-ss021109-try.patch239
-rw-r--r--abs/core/iputils/iputils.install11
-rw-r--r--abs/core/iputils/iputils.patch1170
-rw-r--r--abs/core/iputils/permission-fix.patch15
-rw-r--r--abs/core/iputils/protocols18
-rw-r--r--abs/core/iputils/services195
-rw-r--r--abs/core/iputils/tftp.xinetd10
10 files changed, 91 insertions, 2281 deletions
diff --git a/abs/core/iputils/PKGBUILD b/abs/core/iputils/PKGBUILD
index 1b62cda..e72795d 100644
--- a/abs/core/iputils/PKGBUILD
+++ b/abs/core/iputils/PKGBUILD
@@ -1,61 +1,71 @@
-# $Id: PKGBUILD 82625 2010-06-15 04:22:56Z allan $
-# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# $Id: PKGBUILD 163489 2012-07-13 11:24:04Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
pkgname=iputils
-pkgver=20100214
-_traceroutever=1.4a12
-pkgrel=2
+pkgver=20101006
+pkgrel=4
pkgdesc="IP Configuration Utilities (and Ping)"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
license=('GPL')
url="http://www.linuxfoundation.org/en/Net:Iputils"
groups=('base')
-depends=('glibc')
-makedepends=('opensp' 'libxslt' 'docbook-xsl')
-conflicts=('netkit-base' 'arping' 'netkit-tftpd' 'traceroute')
-replaces=('netkit-base' 'traceroute')
-source=(http://www.skbuff.net/iputils/$pkgname-s$pkgver.tar.bz2
- ftp://ftp.ee.lbl.gov/traceroute-$_traceroutever.tar.gz
- permission-fix.patch)
-options=(!makeflags)
-md5sums=('37596c8b3eed537294e77464b9804726'
- '964d599ef696efccdeebe7721cd4828d'
- '66109966cad06e425bb12a78bab85b70')
-
-build()
-{
- #build iptuils
- cd $srcdir/$pkgname-s$pkgver
- make KERNEL_INCLUDE=/usr/include || return 1 # for i686
- for i in arping clockdiff rarpd rdisc tftpd tracepath tracepath6; do
- install -D -m755 $i $pkgdir/usr/sbin/$i
- done
- for i in ping ping6 traceroute6; do
- install -D -m4755 $i $pkgdir/bin/$i
- done
+depends=('openssl' 'sysfsutils' 'libcap')
+optdepends=('xinetd: for tftpd')
+makedepends=('docbook2x' 'opensp')
+conflicts=('netkit-base' 'arping' 'netkit-tftpd')
+replaces=('netkit-base')
+backup=(etc/xinetd.d/tftp)
+install=${pkgname}.install
+source=(http://www.skbuff.net/${pkgname}/${pkgname}-s${pkgver}.tar.bz2 tftp.xinetd
+ iputils-20101006-ping-integer-overflow.patch)
+sha1sums=('a08cc5423a7bf940205f2353fe3d129cd39ff242'
+ 'fc2ae26f5609725e3f4aeaf4ab82dfa6d2e378fd'
+ 'ec78574d798b53e4f8bdd37e42514fc17ed71667')
+
+build() {
+ cd "${srcdir}/${pkgname}-s${pkgver}"
+
+ # Use our CFLAGS
+ sed -i -e "/^CCOPT=/s|-O2|${CFLAGS}|" Makefile
+
+ # FS#28897
+ patch -Np1 -i ../iputils-20101006-ping-integer-overflow.patch
+
+ make
- msg ":: building docs"
- # good god, these docs are a pain
- # special thanks to Michael(tm) Smith <mike@w3.org> - http://people.w3.org/mike/
- # from #docbook on freenode.org for figuring this out
cd doc
for file in *.sgml; do
- xf=${file/.sgml/.xml}
- osx -xlower -xno-nl-in-tag $file > $xf || true
- sed -i "s|<refname>\(.*\), \(.*\)</refname>|<refname>\1</refname>, <refname>\2</refname>|g" $xf
- xsltproc /usr/share/xml/docbook/xsl-stylesheets-1.76.0/manpages/docbook.xsl $xf
+ xf=${file/.sgml/.xml}
+ osx -xlower -xno-nl-in-tag $file > $xf || true
+ sed -i "s|<refname>\(.*\), \(.*\)</refname>|<refname>\1</refname>, <refname>\2</refname>|g" $xf
+ docbook2man $xf
done
+}
- mkdir -p $pkgdir/usr/share/man/man8
- install -m644 arping.8 clockdiff.8 ping.8 ping6.8 rarpd.8 rdisc.8 \
- tftpd.8 tracepath.8 tracepath6.8 traceroute6.8 \
- $pkgdir/usr/share/man/man8/
-
- # build traceroute
- # this is combined in this package because it's awkward as a separate package
- cd ${srcdir}/traceroute-$_traceroutever
- patch -Np1 -i ../permission-fix.patch || return 1
- ./configure --prefix=/usr --sbindir=/bin --mandir=/usr/share/man
- make CFLAGS="${CFLAGS} -Ilinux-include/" || return 1
- make DESTDIR=${pkgdir} install install-man
+package() {
+ cd "${srcdir}/${pkgname}-s${pkgver}"
+
+ install -dm755 "${pkgdir}"/usr/{bin,sbin} "${pkgdir}"/bin
+
+ install -m755 arping clockdiff rarpd rdisc tftpd tracepath tracepath6 \
+ "${pkgdir}"/usr/sbin/
+
+ install -m755 ping{,6} "${pkgdir}"/usr/bin/
+ ln -sf /usr/bin/ping{,6} "${pkgdir}"/bin/
+
+ install -dm755 "${pkgdir}"/usr/share/man/man8
+ install -m644 doc/{arping,clockdiff,ping,rarpd,rdisc,tftpd,tracepath}.8 \
+ "${pkgdir}"/usr/share/man/man8/
+
+ cd "${pkgdir}"/usr/share/man/man8
+ ln -sf ping.8.gz ping6.8.gz
+ ln -sf tracepath.8.gz tracepath6.8.gz
+
+ # FS#24768
+ install -dm755 "${pkgdir}"/etc/xinetd.d/
+ install -m644 "${srcdir}"/tftp.xinetd "${pkgdir}"/etc/xinetd.d/tftp
}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/core/iputils/iputils-20101006-ping-integer-overflow.patch b/abs/core/iputils/iputils-20101006-ping-integer-overflow.patch
new file mode 100644
index 0000000..720e5e8
--- /dev/null
+++ b/abs/core/iputils/iputils-20101006-ping-integer-overflow.patch
@@ -0,0 +1,11 @@
+--- iputils-s20101006/ping_common.c 2010-10-06 13:59:20.000000000 +0200
++++ iputils-s20101006-patched/ping_common.c 2012-03-09 16:42:46.878151032 +0100
+@@ -590,7 +590,7 @@
+
+ /* If we are here, recvmsg() is unable to wait for
+ * required timeout. */
+- if (1000*next <= 1000000/(int)HZ) {
++ if (((uint64_t)1000*next) <= (uint64_t)1000000/(int)HZ) {
+ /* Very short timeout... So, if we wait for
+ * something, we sleep for MININTERVAL.
+ * Otherwise, spin! */
diff --git a/abs/core/iputils/iputils-big-patches.patch b/abs/core/iputils/iputils-big-patches.patch
deleted file mode 100644
index 29bc310..0000000
--- a/abs/core/iputils/iputils-big-patches.patch
+++ /dev/null
@@ -1,595 +0,0 @@
-diff -Naur iputils.orig/Makefile iputils/Makefile
---- iputils.orig/Makefile 2002-11-09 03:01:11.000000000 +0000
-+++ iputils/Makefile 2005-06-09 16:15:32.000000000 +0000
-@@ -17,11 +17,6 @@
- GLIBCFIX=-Iinclude-glibc -include include-glibc/glibc-bugs.h
- endif
-
--ifeq ($(KERNEL_INCLUDE)/linux/pfkeyv2.h,$(wildcard $(KERNEL_INCLUDE)/linux/pfkeyv2.h))
-- SUBDIRS=libipsec setkey
-- LDLIBS+=-Llibipsec -lipsec
-- IPSECDEF=-DDO_IPSEC -Ilibipsec
--endif
-
-
- #options if you compile with libc5, and without a bind>=4.9.4 libresolv
-@@ -31,7 +26,7 @@
- # What a pity, all new gccs are buggy and -Werror does not work. Sigh.
- #CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -Werror
- CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
--CFLAGS=$(CCOPT) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(IPSECDEF) $(DEFINES)
-+CFLAGS=$(CCOPT) -I../include $(IPSECDEF) $(DEFINES)
-
- IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
- IPV6_TARGETS=tracepath6 traceroute6 ping6
-@@ -42,7 +37,11 @@
-
- tftpd: tftpd.o tftpsubs.o
- ping: ping.o ping_common.o
-+ $(LINK.o) $^ $(LDLIBS) -o $@ -Wl,-z,now -Wl,-z,relro
- ping6: ping6.o ping_common.o
-+ $(LINK.o) $^ $(LDLIBS) -o $@ -Wl,-z,now -Wl,-z,relro
-+traceroute6: traceroute6.o
-+ $(LINK.o) $^ $(LDLIBS) -o $@ -Wl,-z,now -Wl,-z,relro
- ping.o ping6.o ping_common.o: ping_common.h
- tftpd.o tftpsubs.o: tftp.h
-
-diff -Naur iputils.orig/arping.c iputils/arping.c
---- iputils.orig/arping.c 2001-10-05 22:42:47.000000000 +0000
-+++ iputils/arping.c 2005-06-09 16:15:24.000000000 +0000
-@@ -9,6 +9,7 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdlib.h>
- #include <sys/param.h>
- #include <sys/socket.h>
-@@ -19,6 +20,8 @@
- #include <sys/ioctl.h>
- #include <linux/if.h>
- #include <linux/if_arp.h>
-+#include <linux/if_ether.h>
-+#include <linux/if_packet.h>
- #include <sys/uio.h>
-
- #include <netdb.h>
-diff -Naur iputils.orig/clockdiff.c iputils/clockdiff.c
---- iputils.orig/clockdiff.c 2002-02-23 00:10:59.000000000 +0000
-+++ iputils/clockdiff.c 2005-06-09 16:15:24.000000000 +0000
-@@ -1,7 +1,9 @@
-+#include <asm/byteorder.h>
- #include <time.h>
- #include <sys/types.h>
- #include <sys/param.h>
- #include <stdio.h>
-+#include <linux/types.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <math.h>
-diff -Naur iputils.orig/include-glibc/netinet/in.h iputils/include-glibc/netinet/in.h
---- iputils.orig/include-glibc/netinet/in.h 2002-11-09 00:22:25.000000000 +0000
-+++ iputils/include-glibc/netinet/in.h 2005-06-09 16:15:00.000000000 +0000
-@@ -65,4 +65,45 @@
- && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
-
-
--#endif /* netinet/in.h */
-+/* Functions to convert between host and network byte order.
-+
-+ Please note that these functions normally take `unsigned long int' or
-+ `unsigned short int' values as arguments and also return them. But
-+ this was a short-sighted decision since on different systems the types
-+ may have different representations but the values are always the same. */
-+
-+extern u_int32_t ntohl (u_int32_t __netlong) __THROW __attribute__ ((__const__));
-+extern u_int16_t ntohs (u_int16_t __netshort)
-+ __THROW __attribute__ ((__const__));
-+extern u_int32_t htonl (u_int32_t __hostlong)
-+ __THROW __attribute__ ((__const__));
-+extern u_int16_t htons (u_int16_t __hostshort)
-+ __THROW __attribute__ ((__const__));
-+
-+#include <endian.h>
-+
-+/* Get machine dependent optimized versions of byte swapping functions. */
-+#include <bits/byteswap.h>
-+
-+#ifdef __OPTIMIZE__
-+/* We can optimize calls to the conversion functions. Either nothing has
-+ to be done or we are using directly the byte-swapping functions which
-+ often can be inlined. */
-+# if __BYTE_ORDER == __BIG_ENDIAN
-+/* The host byte order is the same as network byte order,
-+ so these functions are all just identity. */
-+# define ntohl(x) (x)
-+# define ntohs(x) (x)
-+# define htonl(x) (x)
-+# define htons(x) (x)
-+# else
-+# if __BYTE_ORDER == __LITTLE_ENDIAN
-+# define ntohl(x) __bswap_32 (x)
-+# define ntohs(x) __bswap_16 (x)
-+# define htonl(x) __bswap_32 (x)
-+# define htons(x) __bswap_16 (x)
-+# endif
-+# endif
-+#endif
-+
-+#endif /* netinet/in.h */
-diff -Naur iputils.orig/ipg iputils/ipg
---- iputils.orig/ipg 2001-08-02 22:37:32.000000000 +0000
-+++ iputils/ipg 2005-06-09 16:14:49.000000000 +0000
-@@ -1,21 +1,31 @@
--#! /bin/bash
-+#!/bin/bash
-
--modprobe pg3
-+modprobe pg3 >& /dev/null
-+modprobe pktgen >& /dev/null
-+
-+PGDEV=/proc/net/pg
-+if [[ ! -e ${PGDEV} ]] ; then
-+ PGDEV=/proc/net/pktgen/pg0
-+ if [[ ! -e ${PGDEV} ]] ; then
-+ echo "Couldn't not locate pg in /proc/net :("
-+ exit 1
-+ fi
-+fi
-
- function pgset() {
- local result
-
-- echo $1 > /proc/net/pg
-+ echo $1 > ${PGDEV}
-
-- result=`cat /proc/net/pg | fgrep "Result: OK:"`
-+ result=`cat ${PGDEV} | fgrep "Result: OK:"`
- if [ "$result" = "" ]; then
-- cat /proc/net/pg | fgrep Result:
-+ cat ${PGDEV} | fgrep Result:
- fi
- }
-
- function pg() {
-- echo inject > /proc/net/pg
-- cat /proc/net/pg
-+ echo inject > ${PGDEV}
-+ cat ${PGDEV}
- }
-
- pgset "odev eth0"
-diff -Naur iputils.orig/ping.c iputils/ping.c
---- iputils.orig/ping.c 2002-11-07 22:53:21.000000000 +0000
-+++ iputils/ping.c 2005-06-09 16:15:00.000000000 +0000
-@@ -60,8 +60,8 @@
-
- #include "ping_common.h"
-
-+#include <linux/icmp.h>
- #include <netinet/ip.h>
--#include <netinet/ip_icmp.h>
- #ifdef DO_IPSEC
- #include <libipsec.h>
- #endif
-@@ -1213,7 +1213,7 @@
- once = 1;
-
- /* Patch bpflet for current identifier. */
-- insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
-+ insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
-
- if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
- perror("WARNING: failed to install socket filter\n");
-diff -Naur iputils.orig/ping6.c iputils/ping6.c
---- iputils.orig/ping6.c 2002-09-20 15:08:11.000000000 +0000
-+++ iputils/ping6.c 2005-06-09 16:15:00.000000000 +0000
-@@ -68,8 +68,44 @@
- */
- #include "ping_common.h"
-
--#include <linux/in6.h>
--#include <linux/ipv6.h>
-+struct ipv6_rt_hdr {
-+ __u8 nexthdr;
-+ __u8 hdrlen;
-+ __u8 type;
-+ __u8 segments_left;
-+
-+ /*
-+ * type specific data
-+ * variable length field
-+ */
-+};
-+
-+struct rt0_hdr {
-+ struct ipv6_rt_hdr rt_hdr;
-+ __u32 bitmap; /* strict/loose bit map */
-+ struct in6_addr addr[0];
-+
-+#define rt0_type rt_hdr.type;
-+};
-+#define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */
-+struct ipv6hdr {
-+#if defined(__LITTLE_ENDIAN)
-+ __u8 priority:4,
-+ version:4;
-+#elif defined(__BIG_ENDIAN)
-+ __u8 version:4,
-+ priority:4;
-+#endif
-+ __u8 flow_lbl[3];
-+
-+ __u16 payload_len;
-+ __u8 nexthdr;
-+ __u8 hop_limit;
-+
-+ struct in6_addr saddr;
-+ struct in6_addr daddr;
-+};
-+
- #include <linux/icmpv6.h>
-
- #define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0)
-@@ -879,7 +915,7 @@
- once = 1;
-
- /* Patch bpflet for current identifier. */
-- insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
-+ insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
-
- if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
- perror("WARNING: failed to install socket filter\n");
-diff -Naur iputils.orig/ping_common.h iputils/ping_common.h
---- iputils.orig/ping_common.h 2002-09-20 15:08:11.000000000 +0000
-+++ iputils/ping_common.h 2005-06-09 16:15:24.000000000 +0000
-@@ -1,3 +1,4 @@
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-@@ -19,6 +20,7 @@
-
- #include <netinet/in.h>
- #include <arpa/inet.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
-
- #include "SNAPSHOT.h"
-diff -Naur iputils.orig/rarpd.c iputils/rarpd.c
---- iputils.orig/rarpd.c 2001-12-02 18:45:06.000000000 +0000
-+++ iputils/rarpd.c 2005-06-09 16:15:24.000000000 +0000
-@@ -9,6 +9,7 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <syslog.h>
- #include <dirent.h>
-@@ -26,6 +27,7 @@
- #include <sys/signal.h>
- #include <linux/if.h>
- #include <linux/if_arp.h>
-+#include <linux/if_ether.h>
- #include <netinet/in.h>
- #include <linux/if_packet.h>
- #include <linux/filter.h>
-@@ -42,7 +44,9 @@
- char *ifname;
- char *tftp_dir = "/etc/tftpboot";
-
-+#ifndef __UCLIBC__
- extern int ether_ntohost(char *name, unsigned char *ea);
-+#endif
- void usage(void) __attribute__((noreturn));
-
- struct iflink
-@@ -52,12 +56,12 @@
- int hatype;
- unsigned char lladdr[16];
- unsigned char name[IFNAMSIZ];
-- struct ifaddr *ifa_list;
-+ struct l_ifaddr *ifa_list;
- } *ifl_list;
-
--struct ifaddr
-+struct l_ifaddr
- {
-- struct ifaddr *next;
-+ struct l_ifaddr *next;
- __u32 prefix;
- __u32 mask;
- __u32 local;
-@@ -89,7 +93,7 @@
- int fd;
- struct ifreq *ifrp, *ifend;
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
- struct ifconf ifc;
- struct ifreq ibuf[256];
-
-@@ -180,7 +184,7 @@
- if (ifa == NULL) {
- if (mask == 0 || prefix == 0)
- continue;
-- ifa = (struct ifaddr*)malloc(sizeof(*ifa));
-+ ifa = (struct l_ifaddr*)malloc(sizeof(*ifa));
- memset(ifa, 0, sizeof(*ifa));
- ifa->local = addr;
- ifa->prefix = prefix;
-@@ -236,10 +240,10 @@
- return dent != NULL;
- }
-
--struct ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
-+struct l_ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
- {
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
- int retry = 0;
- int i;
-
-@@ -295,7 +299,7 @@
-
- if (r == NULL) {
- if (hatype == ARPHRD_ETHER && halen == 6) {
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
- struct hostent *hp;
- char ename[256];
- static struct rarp_map emap = {
-@@ -305,7 +309,11 @@
- 6,
- };
-
-+#ifndef __UCLIBC__
- if (ether_ntohost(ename, lladdr) != 0 ||
-+#else
-+ if (
-+#endif
- (hp = gethostbyname(ename)) == NULL) {
- if (verbose)
- syslog(LOG_INFO, "not found in /etc/ethers");
-@@ -364,7 +372,7 @@
- {
- __u32 laddr = 0;
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
-
- for (ifl=ifl_list; ifl; ifl = ifl->next)
- if (ifl->index == ifindex)
-diff -Naur iputils.orig/rdisc.c iputils/rdisc.c
---- iputils.orig/rdisc.c 2001-08-24 17:39:00.000000000 +0000
-+++ iputils/rdisc.c 2005-06-09 16:15:24.000000000 +0000
-@@ -25,6 +25,7 @@
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <errno.h>
- #include <signal.h>
-@@ -1504,5 +1505,5 @@
- if (logging)
- syslog(LOG_ERR, "%s: %m", str);
- else
-- (void) fprintf(stderr, "%s: %s\n", str, sys_errlist[errno]);
-+ (void) fprintf(stderr, "%s: %s\n", str, strerror(errno));
- }
-diff -Naur iputils.orig/tftpd.c iputils/tftpd.c
---- iputils.orig/tftpd.c 2002-01-24 00:31:41.000000000 +0000
-+++ iputils/tftpd.c 2005-06-09 16:15:24.000000000 +0000
-@@ -48,6 +48,7 @@
- * This version includes many modifications by Jim Guyton <guyton@rand-unix>
- */
-
-+#include <asm/byteorder.h>
- #include <sys/types.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
-@@ -57,7 +58,6 @@
-
- #include <sys/socket.h>
- #include <netinet/in.h>
--#include <linux/in6.h>
- #include <netdb.h>
-
- #include <setjmp.h>
-diff -Naur iputils.orig/tracepath.c iputils/tracepath.c
---- iputils.orig/tracepath.c 2002-11-09 04:54:46.000000000 +0000
-+++ iputils/tracepath.c 2005-06-09 16:15:24.000000000 +0000
-@@ -9,10 +9,12 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include <errno.h>
- #include <string.h>
-@@ -76,7 +78,7 @@
- int progress = -1;
- int broken_router;
-
--restart:
-+ while (1) {
- memset(&rcvbuf, -1, sizeof(rcvbuf));
- iov.iov_base = &rcvbuf;
- iov.iov_len = sizeof(rcvbuf);
-@@ -93,7 +95,7 @@
- if (res < 0) {
- if (errno == EAGAIN)
- return progress;
-- goto restart;
-+ continue;
- }
-
- progress = mtu;
-@@ -216,7 +218,7 @@
- perror("NET ERROR");
- return 0;
- }
-- goto restart;
-+ }
- }
-
- int probe_ttl(int fd, int ttl)
-@@ -227,7 +229,6 @@
-
- memset(sndbuf,0,mtu);
-
--restart:
- for (i=0; i<10; i++) {
- int res;
-
-@@ -243,7 +244,8 @@
- if (res==0)
- return 0;
- if (res > 0)
-- goto restart;
-+ i = 0;
-+ continue;
- }
- hisptr = (hisptr + 1)&63;
-
-diff -Naur iputils.orig/tracepath6.c iputils/tracepath6.c
---- iputils.orig/tracepath6.c 2001-09-02 02:03:46.000000000 +0000
-+++ iputils/tracepath6.c 2005-06-09 16:15:24.000000000 +0000
-@@ -9,13 +9,13 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
--
--#include <linux/in6.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include <errno.h>
- #include <string.h>
-@@ -66,7 +66,7 @@
- int progress = -1;
- int broken_router;
-
--restart:
-+ while (1) {
- memset(&rcvbuf, -1, sizeof(rcvbuf));
- iov.iov_base = &rcvbuf;
- iov.iov_len = sizeof(rcvbuf);
-@@ -83,7 +83,7 @@
- if (res < 0) {
- if (errno == EAGAIN)
- return progress;
-- goto restart;
-+ continue;
- }
-
- progress = 2;
-@@ -222,34 +222,29 @@
- perror("NET ERROR");
- return 0;
- }
-- goto restart;
-+ }
- }
-
- int probe_ttl(int fd, int ttl)
- {
-- int i;
-+ int i=0, res;
- char sndbuf[mtu];
- struct probehdr *hdr = (struct probehdr*)sndbuf;
-
--restart:
--
-- for (i=0; i<10; i++) {
-- int res;
--
-- hdr->ttl = ttl;
-- gettimeofday(&hdr->tv, NULL);
-- if (send(fd, sndbuf, mtu-overhead, 0) > 0)
-- break;
-- res = recverr(fd, ttl);
-- if (res==0)
-- return 0;
-- if (res > 0)
-- goto restart;
-- }
--
-- if (i<10) {
-- int res;
--
-+ while (i<10) {
-+ for (i=0; i<10; i++) {
-+ hdr->ttl = ttl;
-+ gettimeofday(&hdr->tv, NULL);
-+ if (send(fd, sndbuf, mtu-overhead, 0) > 0)
-+ break;
-+ res = recverr(fd, ttl);
-+ if (res==0)
-+ return 0;
-+ if (res > 0) {
-+ i = 0;
-+ continue;
-+ }
-+ }
- data_wait(fd);
- if (recv(fd, sndbuf, sizeof(sndbuf), MSG_DONTWAIT) > 0) {
- printf("%2d?: reply received 8)\n", ttl);
-@@ -257,7 +252,7 @@
- }
- res = recverr(fd, ttl);
- if (res == 1)
-- goto restart;
-+ continue;
- return res;
- }
-
-diff -Naur iputils.orig/traceroute6.c iputils/traceroute6.c
---- iputils.orig/traceroute6.c 2002-10-03 03:29:23.000000000 +0000
-+++ iputils/traceroute6.c 2005-06-09 16:14:49.000000000 +0000
-@@ -244,11 +244,30 @@
- #include <netinet/in.h>
- #include <netinet/ip.h>
- #include <netinet/ip_icmp.h>
-+#if __linux__
-+#include <linux/udp.h>
-+#else
- #include <netinet/udp.h>
-+#endif
-+
-+#include <linux/types.h>
-+struct ipv6hdr {
-+#if defined(__LITTLE_ENDIAN)
-+ __u8 priority:4,
-+ version:4;
-+#elif defined(__BIG_ENDIAN)
-+ __u8 version:4,
-+ priority:4;
-+#endif
-+ __u8 flow_lbl[3];
-
--#include <linux/ipv6.h>
--#include <linux/in6.h>
-+ __u16 payload_len;
-+ __u8 nexthdr;
-+ __u8 hop_limit;
-
-+ struct in6_addr saddr;
-+ struct in6_addr daddr;
-+};
- #include <linux/icmpv6.h>
-
- #include <arpa/inet.h>
diff --git a/abs/core/iputils/iputils-ss021109-try.patch b/abs/core/iputils/iputils-ss021109-try.patch
deleted file mode 100644
index 4d9a705..0000000
--- a/abs/core/iputils/iputils-ss021109-try.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-diff -urN iputils.orig/Makefile iputils/Makefile
---- iputils.orig/Makefile 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/Makefile 2004-05-02 20:30:48.000000000 +0000
-@@ -1,5 +1,4 @@
- # Path to parent kernel include files directory
--KERNEL_INCLUDE=/usr/src/linux/include
- LIBC_INCLUDE=/usr/include
-
- DEFINES=
-@@ -8,21 +7,6 @@
- LDLIBS=-lresolv
- ADDLIB=
-
--ifeq ($(LIBC_INCLUDE)/socketbits.h,$(wildcard $(LIBC_INCLUDE)/socketbits.h))
-- ifeq ($(LIBC_INCLUDE)/net/if_packet.h,$(wildcard $(LIBC_INCLUDE)/net/if_packet.h))
-- GLIBCFIX=-Iinclude-glibc -include include-glibc/glibc-bugs.h
-- endif
--endif
--ifeq ($(LIBC_INCLUDE)/bits/socket.h,$(wildcard $(LIBC_INCLUDE)/bits/socket.h))
-- GLIBCFIX=-Iinclude-glibc -include include-glibc/glibc-bugs.h
--endif
--
--ifeq ($(KERNEL_INCLUDE)/linux/pfkeyv2.h,$(wildcard $(KERNEL_INCLUDE)/linux/pfkeyv2.h))
-- SUBDIRS=libipsec setkey
-- LDLIBS+=-Llibipsec -lipsec
-- IPSECDEF=-DDO_IPSEC -Ilibipsec
--endif
--
-
- #options if you compile with libc5, and without a bind>=4.9.4 libresolv
- # NOT AVAILABLE. Please, use libresolv.
-@@ -31,13 +15,13 @@
- # What a pity, all new gccs are buggy and -Werror does not work. Sigh.
- #CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -Werror
- CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
--CFLAGS=$(CCOPT) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(IPSECDEF) $(DEFINES)
-+CFLAGS=$(CCOPT) -I../include $(IPSECDEF) $(DEFINES)
-
- IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
- IPV6_TARGETS=tracepath6 traceroute6 ping6
- TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS)
-
--all: check-kernel subdirs $(TARGETS)
-+all: subdirs $(TARGETS)
-
-
- tftpd: tftpd.o tftpsubs.o
-@@ -51,15 +35,6 @@
- rdisc_srv.o: rdisc.c
- $(CC) $(CFLAGS) -DRDISC_SERVER -o rdisc_srv.o rdisc.c
-
--check-kernel:
--ifeq ($(KERNEL_INCLUDE),)
-- @echo "Please, set correct KERNEL_INCLUDE"; false
--else
-- @set -e; \
-- if [ ! -r $(KERNEL_INCLUDE)/linux/autoconf.h ]; then \
-- echo "Please, set correct KERNEL_INCLUDE"; false; fi
--endif
--
- subdirs:
- ifneq ($(SUBDIRS),)
- @set -e; \
-diff -urN iputils.orig/arping.c iputils/arping.c
---- iputils.orig/arping.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/arping.c 2004-05-02 20:32:38.000000000 +0000
-@@ -9,6 +9,7 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdlib.h>
- #include <sys/param.h>
- #include <sys/socket.h>
-@@ -19,6 +20,8 @@
- #include <sys/ioctl.h>
- #include <linux/if.h>
- #include <linux/if_arp.h>
-+#include <linux/if_ether.h>
-+#include <linux/if_packet.h>
- #include <sys/uio.h>
-
- #include <netdb.h>
-diff -urN iputils.orig/clockdiff.c iputils/clockdiff.c
---- iputils.orig/clockdiff.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/clockdiff.c 2004-05-02 20:30:48.000000000 +0000
-@@ -1,3 +1,4 @@
-+#include <asm/byteorder.h>
- #include <time.h>
- #include <sys/types.h>
- #include <sys/param.h>
-diff -urN iputils.orig/ping.c iputils/ping.c
---- iputils.orig/ping.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/ping.c 2004-05-02 20:31:03.000000000 +0000
-@@ -61,7 +61,7 @@
- #include "ping_common.h"
-
- #include <netinet/ip.h>
--#include <netinet/ip_icmp.h>
-+#include <linux/icmp.h>
- #ifdef DO_IPSEC
- #include <libipsec.h>
- #endif
-diff -urN iputils.orig/ping_common.h iputils/ping_common.h
---- iputils.orig/ping_common.h 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/ping_common.h 2004-05-02 20:30:48.000000000 +0000
-@@ -1,3 +1,4 @@
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-diff -urN iputils.orig/rarpd.c iputils/rarpd.c
---- iputils.orig/rarpd.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/rarpd.c 2004-05-02 20:33:07.000000000 +0000
-@@ -9,6 +9,7 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <syslog.h>
- #include <dirent.h>
-@@ -26,6 +27,7 @@
- #include <sys/signal.h>
- #include <linux/if.h>
- #include <linux/if_arp.h>
-+#include <linux/if_ether.h>
- #include <netinet/in.h>
- #include <linux/if_packet.h>
- #include <linux/filter.h>
-@@ -52,12 +54,12 @@
- int hatype;
- unsigned char lladdr[16];
- unsigned char name[IFNAMSIZ];
-- struct ifaddr *ifa_list;
-+ struct l_ifaddr *ifa_list;
- } *ifl_list;
-
--struct ifaddr
-+struct l_ifaddr
- {
-- struct ifaddr *next;
-+ struct l_ifaddr *next;
- __u32 prefix;
- __u32 mask;
- __u32 local;
-@@ -89,7 +91,7 @@
- int fd;
- struct ifreq *ifrp, *ifend;
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
- struct ifconf ifc;
- struct ifreq ibuf[256];
-
-@@ -180,7 +182,7 @@
- if (ifa == NULL) {
- if (mask == 0 || prefix == 0)
- continue;
-- ifa = (struct ifaddr*)malloc(sizeof(*ifa));
-+ ifa = (struct l_ifaddr*)malloc(sizeof(*ifa));
- memset(ifa, 0, sizeof(*ifa));
- ifa->local = addr;
- ifa->prefix = prefix;
-@@ -236,10 +238,10 @@
- return dent != NULL;
- }
-
--struct ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
-+struct l_ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
- {
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
- int retry = 0;
- int i;
-
-@@ -295,7 +297,7 @@
-
- if (r == NULL) {
- if (hatype == ARPHRD_ETHER && halen == 6) {
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
- struct hostent *hp;
- char ename[256];
- static struct rarp_map emap = {
-@@ -364,7 +366,7 @@
- {
- __u32 laddr = 0;
- struct iflink *ifl;
-- struct ifaddr *ifa;
-+ struct l_ifaddr *ifa;
-
- for (ifl=ifl_list; ifl; ifl = ifl->next)
- if (ifl->index == ifindex)
-diff -urN iputils.orig/rdisc.c iputils/rdisc.c
---- iputils.orig/rdisc.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/rdisc.c 2004-05-02 20:30:48.000000000 +0000
-@@ -25,6 +25,7 @@
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <errno.h>
- #include <signal.h>
-diff -urN iputils.orig/tftpd.c iputils/tftpd.c
---- iputils.orig/tftpd.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/tftpd.c 2004-05-02 20:30:48.000000000 +0000
-@@ -48,6 +48,7 @@
- * This version includes many modifications by Jim Guyton <guyton@rand-unix>
- */
-
-+#include <asm/byteorder.h>
- #include <sys/types.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
-diff -urN iputils.orig/tracepath.c iputils/tracepath.c
---- iputils.orig/tracepath.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/tracepath.c 2004-05-02 20:30:48.000000000 +0000
-@@ -9,6 +9,7 @@
- * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
- */
-
-+#include <asm/byteorder.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-diff -urN iputils.orig/traceroute6.c iputils/traceroute6.c
---- iputils.orig/traceroute6.c 2004-05-02 20:30:43.000000000 +0000
-+++ iputils/traceroute6.c 2004-05-02 20:30:48.000000000 +0000
-@@ -230,6 +230,7 @@
- * Tue Dec 20 03:50:13 PST 1988
- */
-
-+#include <asm/byteorder.h>
- #include <sys/param.h>
- #include <sys/time.h>
- #include <sys/socket.h>
diff --git a/abs/core/iputils/iputils.install b/abs/core/iputils/iputils.install
new file mode 100644
index 0000000..2481fb3
--- /dev/null
+++ b/abs/core/iputils/iputils.install
@@ -0,0 +1,11 @@
+post_install() {
+ setcap cap_net_raw=ep usr/bin/ping
+ setcap cap_net_raw=ep usr/bin/ping6
+ echo " >> Traceroute is now provided by core/traceroute"
+}
+
+post_upgrade() {
+ post_install "$1"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/core/iputils/iputils.patch b/abs/core/iputils/iputils.patch
deleted file mode 100644
index 4e99b75..0000000
--- a/abs/core/iputils/iputils.patch
+++ /dev/null
@@ -1,1170 +0,0 @@
---- iputils/ping_common.c.old Thu Mar 14 16:58:47 2002
-+++ iputils/ping_common.c Thu Mar 14 17:10:54 2002
-@@ -775,10 +775,10 @@
- tmdev = llsqrt(tsum2 - tsum * tsum);
-
- printf("rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld/%ld.%03ld/%ld.%03ld ms",
-- tmin/1000, tmin%1000,
-+ (long)tmin/1000, (long)tmin%1000,
- (unsigned long)(tsum/1000), (long)(tsum%1000),
-- tmax/1000, tmax%1000,
-- tmdev/1000, tmdev%1000
-+ (long)tmax/1000, (long)tmax%1000,
-+ (long)tmdev/1000, (long)tmdev%1000
- );
- }
- if (pipesize > 1)
-@@ -809,10 +809,10 @@
- tavg = tsum / (nreceived + nrepeats);
-
- fprintf(stderr, ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld/%d.%03d/%ld.%03ld ms",
-- tmin/1000, tmin%1000,
-+ (long)tmin/1000, (long)tmin%1000,
- tavg/1000, tavg%1000,
- rtt/8000, (rtt/8)%1000,
-- tmax/1000, tmax%1000
-+ (long)tmax/1000, (long)tmax%1000
- );
- }
- fprintf(stderr, "\n");
---- iputils/rdisc.c-org Wed May 1 00:27:34 2002
-+++ iputils/rdisc.c Wed May 1 00:32:40 2002
-@@ -63,6 +63,8 @@
-
- #include "SNAPSHOT.h"
-
-+#define RDISC_SERVER
-+
- struct interface
- {
- struct in_addr address; /* Used to identify the interface */
-@@ -163,11 +165,8 @@
- int debugfile;
-
- char usage[] =
--"Usage: rdisc [-b] [-d] [-s] [-v] [-f] [-a] [-V] [send_address] [receive_address]\n"
--#ifdef RDISC_SERVER
--" rdisc -r [-b] [-d] [-s] [-v] [-f] [-a] [-V] [-p <preference>] [-T <secs>] \n"
--" [send_address] [receive_address]\n"
--#endif
-+"Usage: rdisc -r [-b] [-d] [-s] [-v] [-f] [-a] [-V] [-p <preference>] [-T <secs>] \n"
-+" [send_address] [receive_address]\n"
- ;
-
-
-@@ -875,7 +874,9 @@
- ((max_adv_int - min_adv_int)
- * (random() % 1000)/1000);
- } else {
-- if (!is_directly_connected(ip->saddr)) {
-+ struct in_addr tmp;
-+ tmp.s_addr = ip->saddr;
-+ if (!is_directly_connected(tmp)) {
- if (verbose)
- logtrace("ICMP %s from %s: source not directly connected\n",
- pr_type((int)icp->type),
-@@ -945,7 +946,6 @@
- {
- #ifdef RDISC_SERVER
- if (responder) {
-- int i;
-
- /* Send out a packet with a preference so that all
- * hosts will know that we are dead.
---- iputils/ping_common.c.countermeasures Tue May 21 10:06:05 2002
-+++ iputils/ping_common.c Tue May 21 10:12:42 2002
-@@ -628,7 +628,8 @@
- tvsub(tv, &tmp_tv);
- triptime = tv->tv_sec * 1000000 + tv->tv_usec;
- if (triptime < 0) {
-- fprintf(stderr, "Warning: time of day goes back (%ldus), taking countermeasures.\n", triptime);
-+ if (options & F_VERBOSE)
-+ fprintf(stderr, "Warning: time of day goes back (%ldus), taking countermeasures.\n", triptime);
- triptime = 0;
- if (!(options & F_LATENCY)) {
- gettimeofday(tv, NULL);
---- iputils/ping.c.addrcache 2002-09-20 17:08:11.000000000 +0200
-+++ iputils/ping.c 2003-05-15 16:41:19.000000000 +0200
-@@ -1124,6 +1124,12 @@
- {
- struct hostent *hp;
- static char buf[4096];
-+ static __u32 addr_cache = 0;
-+
-+ if ( addr == addr_cache )
-+ return buf;
-+
-+ addr_cache = addr;
-
- if ((options & F_NUMERIC) ||
- !(hp = gethostbyaddr((char *)&addr, 4, AF_INET)))
---- iputils/ping6.c.addrcache 2002-09-20 17:08:11.000000000 +0200
-+++ iputils/ping6.c 2003-05-15 16:41:19.000000000 +0200
-@@ -893,7 +893,14 @@
- */
- char * pr_addr(struct in6_addr *addr)
- {
-- struct hostent *hp = NULL;
-+ static struct hostent *hp = NULL;
-+ static struct in6_addr addr_cache = {{{0,0,0,0}}};
-+
-+ if ( addr->s6_addr32[0] == addr_cache.s6_addr32[0] &&
-+ addr->s6_addr32[1] == addr_cache.s6_addr32[1] &&
-+ addr->s6_addr32[2] == addr_cache.s6_addr32[2] &&
-+ addr->s6_addr32[3] == addr_cache.s6_addr32[3] )
-+ return hp ? hp->h_name : pr_addr_n(addr);
-
- if (!(options&F_NUMERIC))
- hp = gethostbyaddr((__u8*)addr, sizeof(struct in6_addr), AF_INET6);
---- iputils-ss021109-vanilla/ping.c Thu Nov 7 23:53:21 2002
-+++ iputils/ping.c Sun Jan 12 03:39:24 2003
-@@ -285,6 +285,9 @@
- perror("ping: IP_MULTICAST_IF");
- exit(2);
- }
-+ } else if (icmp_sock >= 0) {
-+ /* We possible tried to SO_BINDTODEVICE() a subinterface like 'eth0:1' */
-+ perror("Warning: cannot bind to specified iface, falling back");
- }
- }
- }
---- iputils/ping.c.icmp_seq 2003-09-03 16:45:07.000000000 +0200
-+++ iputils/ping.c 2003-09-03 16:45:41.000000000 +0200
-@@ -610,7 +610,7 @@
- icp->type = ICMP_ECHO;
- icp->code = 0;
- icp->checksum = 0;
-- icp->un.echo.sequence = htons(ntransmitted+1);
-+ icp->un.echo.sequence = htons(ntransmitted);
- icp->un.echo.id = ident; /* ID */
-
- CLR((ntransmitted+1) % mx_dup_ck);
---- iputils/ping6.c.icmp_seq 2003-09-03 16:45:20.000000000 +0200
-+++ iputils/ping6.c 2003-09-03 16:45:34.000000000 +0200
-@@ -647,7 +647,7 @@
- icmph->icmp6_type = ICMPV6_ECHO_REQUEST;
- icmph->icmp6_code = 0;
- icmph->icmp6_cksum = 0;
-- icmph->icmp6_sequence = htons(ntransmitted+1);
-+ icmph->icmp6_sequence = htons(ntransmitted);
- icmph->icmp6_identifier = ident;
-
- CLR((ntransmitted+1) % mx_dup_ck);
-diff -ru iputils/include-glibc/netinet/in.h iputils-clean/include-glibc/netinet/in.h
---- iputils/include-glibc/netinet/in.h 2000-06-18 14:57:25.000000000 -0400
-+++ iputils-clean/include-glibc/netinet/in.h 2003-09-03 11:21:55.000000000 -0400
-@@ -8,4 +8,45 @@
-
- #define SOL_IP 0
-
--#endif /* netinet/in.h */
-+/* Functions to convert between host and network byte order.
-+
-+ Please note that these functions normally take `unsigned long int' or
-+ `unsigned short int' values as arguments and also return them. But
-+ this was a short-sighted decision since on different systems the types
-+ may have different representations but the values are always the same. */
-+
-+extern u_int32_t ntohl (u_int32_t __netlong) __THROW __attribute__ ((__const__));
-+extern u_int16_t ntohs (u_int16_t __netshort)
-+ __THROW __attribute__ ((__const__));
-+extern u_int32_t htonl (u_int32_t __hostlong)
-+ __THROW __attribute__ ((__const__));
-+extern u_int16_t htons (u_int16_t __hostshort)
-+ __THROW __attribute__ ((__const__));
-+
-+#include <endian.h>
-+
-+/* Get machine dependent optimized versions of byte swapping functions. */
-+#include <bits/byteswap.h>
-+
-+#ifdef __OPTIMIZE__
-+/* We can optimize calls to the conversion functions. Either nothing has
-+ to be done or we are using directly the byte-swapping functions which
-+ often can be inlined. */
-+# if __BYTE_ORDER == __BIG_ENDIAN
-+/* The host byte order is the same as network byte order,
-+ so these functions are all just identity. */
-+# define ntohl(x) (x)
-+# define ntohs(x) (x)
-+# define htonl(x) (x)
-+# define htons(x) (x)
-+# else
-+# if __BYTE_ORDER == __LITTLE_ENDIAN
-+# define ntohl(x) __bswap_32 (x)
-+# define ntohs(x) __bswap_16 (x)
-+# define htonl(x) __bswap_32 (x)
-+# define htons(x) __bswap_16 (x)
-+# endif
-+# endif
-+#endif
-+
-+#endif /* netinet/in.h */
-diff -ru iputils/ping6.c iputils-clean/ping6.c
---- iputils/ping6.c 2003-09-03 11:22:46.000000000 -0400
-+++ iputils-clean/ping6.c 2003-09-03 11:15:42.000000000 -0400
-@@ -879,7 +879,7 @@
- once = 1;
-
- /* Patch bpflet for current identifier. */
-- insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
-+ insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
-
- if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
- perror("WARNING: failed to install socket filter\n");
-diff -ru iputils/ping.c iputils-clean/ping.c
---- iputils/ping.c 2003-09-03 11:22:46.000000000 -0400
-+++ iputils-clean/ping.c 2003-09-03 11:15:26.000000000 -0400
-@@ -1196,7 +1196,7 @@
- once = 1;
-
- /* Patch bpflet for current identifier. */
-- insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
-+ insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
-
- if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
- perror("WARNING: failed to install socket filter\n");
-diff -urN iputils/clockdiff.c iputils.new/clockdiff.c
---- iputils/clockdiff.c 2002-02-22 19:10:59.000000000 -0500
-+++ iputils.new/clockdiff.c 2003-09-10 09:20:28.000000000 -0400
-@@ -2,6 +2,7 @@
- #include <sys/types.h>
- #include <sys/param.h>
- #include <stdio.h>
-+#include <linux/types.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <math.h>
-diff -urN iputils/ping6.c iputils.new/ping6.c
---- iputils/ping6.c 2003-09-10 17:27:48.000000000 -0400
-+++ iputils.new/ping6.c 2003-09-10 17:22:43.000000000 -0400
-@@ -68,8 +68,44 @@
- */
- #include "ping_common.h"
-
--#include <linux/in6.h>
--#include <linux/ipv6.h>
-+struct ipv6_rt_hdr {
-+ __u8 nexthdr;
-+ __u8 hdrlen;
-+ __u8 type;
-+ __u8 segments_left;
-+
-+ /*
-+ * type specific data
-+ * variable length field
-+ */
-+};
-+
-+struct rt0_hdr {
-+ struct ipv6_rt_hdr rt_hdr;
-+ __u32 bitmap; /* strict/loose bit map */
-+ struct in6_addr addr[0];
-+
-+#define rt0_type rt_hdr.type;
-+};
-+#define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */
-+struct ipv6hdr {
-+#if defined(__LITTLE_ENDIAN)
-+ __u8 priority:4,
-+ version:4;
-+#elif defined(__BIG_ENDIAN)
-+ __u8 version:4,
-+ priority:4;
-+#endif
-+ __u8 flow_lbl[3];
-+
-+ __u16 payload_len;
-+ __u8 nexthdr;
-+ __u8 hop_limit;
-+
-+ struct in6_addr saddr;
-+ struct in6_addr daddr;
-+};
-+
- #include <linux/icmpv6.h>
-
- #define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0)
-diff -urN iputils/ping_common.h iputils.new/ping_common.h
---- iputils/ping_common.h 2002-09-20 11:08:11.000000000 -0400
-+++ iputils.new/ping_common.h 2003-09-10 17:16:16.000000000 -0400
-@@ -19,6 +19,7 @@
-
- #include <netinet/in.h>
- #include <arpa/inet.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
-
- #include "SNAPSHOT.h"
-diff -urN iputils/tftpd.c iputils.new/tftpd.c
---- iputils/tftpd.c 2002-01-23 19:31:41.000000000 -0500
-+++ iputils.new/tftpd.c 2003-09-10 09:39:45.000000000 -0400
-@@ -57,7 +57,6 @@
-
- #include <sys/socket.h>
- #include <netinet/in.h>
--#include <linux/in6.h>
- #include <netdb.h>
-
- #include <setjmp.h>
-diff -urN iputils/tracepath6.c iputils.new/tracepath6.c
---- iputils/tracepath6.c 2001-09-01 22:03:46.000000000 -0400
-+++ iputils.new/tracepath6.c 2003-09-10 09:40:18.000000000 -0400
-@@ -14,8 +14,7 @@
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
--
--#include <linux/in6.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include <errno.h>
- #include <string.h>
-diff -urN iputils/tracepath.c iputils.new/tracepath.c
---- iputils/tracepath.c 2002-02-22 19:10:59.000000000 -0500
-+++ iputils.new/tracepath.c 2003-09-10 06:14:35.000000000 -0400
-@@ -13,6 +13,7 @@
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
-+#include <linux/types.h>
- #include <linux/errqueue.h>
- #include <errno.h>
- #include <string.h>
-diff -urN iputils/traceroute6.c iputils.new/traceroute6.c
---- iputils/traceroute6.c 2002-09-20 11:44:22.000000000 -0400
-+++ iputils.new/traceroute6.c 2003-09-10 10:12:47.000000000 -0400
-@@ -246,9 +246,24 @@
- #include <netinet/ip_icmp.h>
- #include <netinet/udp.h>
-
--#include <linux/ipv6.h>
--#include <linux/in6.h>
-+#include <linux/types.h>
-+struct ipv6hdr {
-+#if defined(__LITTLE_ENDIAN)
-+ __u8 priority:4,
-+ version:4;
-+#elif defined(__BIG_ENDIAN)
-+ __u8 version:4,
-+ priority:4;
-+#endif
-+ __u8 flow_lbl[3];
-+
-+ __u16 payload_len;
-+ __u8 nexthdr;
-+ __u8 hop_limit;
-
-+ struct in6_addr saddr;
-+ struct in6_addr daddr;
-+};
- #include <linux/icmpv6.h>
-
- #include <arpa/inet.h>
---- iputils/arping.c.unaligned 2001-10-06 00:42:47.000000000 +0200
-+++ iputils/arping.c 2003-10-02 15:14:42.000000000 +0200
-@@ -332,7 +332,7 @@
- timeout = atoi(optarg);
- break;
- case 'I':
-- device = optarg;
-+ device = strdup(optarg);
- break;
- case 'f':
- quit_on_reply=1;
---- iputils/traceroute6.c.inet_pton 2004-04-22 15:06:28.268797480 +0200
-+++ iputils/traceroute6.c 2004-04-22 15:06:35.727877941 +0200
-@@ -538,7 +538,7 @@
- } else {
- (void) bzero((char *)&saddr, sizeof(saddr));
- saddr.sin6_family = AF_INET6;
-- if (inet_pton(AF_INET6, source, &saddr.sin6_addr) < 0)
-+ if (inet_pton(AF_INET6, source, &saddr.sin6_addr) <= 0)
- {
- Printf("traceroute: unknown addr %s\n", source);
- exit(1);
---- iputils/traceroute6.c.old 2004-12-07 11:08:57.000000000 +0100
-+++ iputils/traceroute6.c 2004-12-07 11:14:09.397575536 +0100
-@@ -352,8 +352,11 @@
- icmp_sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
- socket_errno = errno;
-
-- setuid(getuid());
--
-+ if(setuid(getuid()) != 0)
-+ {
-+ perror("traceroute: setuid()");
-+ exit(-1);
-+ }
- on = 1;
- seq = tos = 0;
- to = (struct sockaddr_in6 *)&whereto;
---- iputils/ping6.c.old 2004-12-07 11:08:57.000000000 +0100
-+++ iputils/ping6.c 2004-12-07 11:13:40.707937024 +0100
-@@ -223,7 +223,11 @@
- socket_errno = errno;
-
- uid = getuid();
-- setuid(uid);
-+ if(setuid(uid) != 0)
-+ {
-+ perror("ping: setuid()");
-+ exit(-1);
-+ }
-
- source.sin6_family = AF_INET6;
- memset(&firsthop, 0, sizeof(firsthop));
---- iputils/ping.c.old 2004-12-07 11:08:57.000000000 +0100
-+++ iputils/ping.c 2004-12-07 11:13:27.523941296 +0100
-@@ -119,7 +119,11 @@
- socket_errno = errno;
-
- uid = getuid();
-- setuid(uid);
-+ if(setuid(uid) != 0)
-+ {
-+ perror("ping: setuid()");
-+ exit(-1);
-+ }
-
- source.sin_family = AF_INET;
-
---- iputils/doc/ping.8.old 2002-09-27 19:12:47.000000000 +0200
-+++ iputils/doc/ping.8 2004-12-07 11:09:42.434160144 +0100
-@@ -112,7 +112,7 @@
- when finished.
- .TP
- \fB-R\fR
--Record route.
-+Record route. (IPv4 only)
- Includes the RECORD_ROUTE option in the ECHO_REQUEST
- packet and displays the route buffer on returned packets.
- Note that the IP header is only large enough for nine such routes.
---- iputils/doc/ping.sgml.old 2002-09-20 14:55:50.000000000 +0200
-+++ iputils/doc/ping.sgml 2004-12-07 11:09:42.435159992 +0100
-@@ -190,7 +190,7 @@
- <varlistentry>
- <term><option/-R/</term>
- <listitem><para>
--Record route.
-+Record route. (IPv4 only)
- Includes the RECORD_ROUTE option in the ECHO_REQUEST
- packet and displays the route buffer on returned packets.
- Note that the IP header is only large enough for nine such routes.
---- iputils/ping.c 2005-05-18 01:37:05.621810488 -0400
-+++ iputils/ping.c.new 2005-05-18 01:41:27.113018222 -0400
-@@ -101,7 +101,7 @@ static struct {
- int cmsg_len;
-
- struct sockaddr_in source;
--char *device;
-+char *device=NULL;
- int pmtudisc = -1;
-
-
-@@ -177,7 +177,7 @@ main(int argc, char **argv)
- ptr[3] = i4;
- options |= F_STRICTSOURCE;
- } else {
-- device = optarg;
-+ device = strdup(optarg);
- }
- break;
- }
---- iputils/ping6.c 2005-05-18 01:37:05.620833925 -0400
-+++ iputils/ping6.c.new 2005-05-18 01:41:23.599346390 -0400
-@@ -155,7 +155,7 @@ static int pr_icmph(__u8 type, __u8 code
- static void usage(void) __attribute((noreturn));
-
- struct sockaddr_in6 source;
--char *device;
-+char *device=NULL;
- int pmtudisc=-1;
-
- static int icmp_sock;
-@@ -248,7 +248,7 @@ int main(int argc, char *argv[])
- }
- options |= F_STRICTSOURCE;
- } else {
-- device = optarg;
-+ device = strdup(optarg);
- }
- break;
- case 'M':
-diff -ur iputils/arping.c iputils.tom/arping.c
---- iputils/arping.c 2005-07-15 13:51:15.533632784 -0700
-+++ iputils.tom/arping.c 2005-07-15 13:50:47.967823000 -0700
-@@ -59,6 +59,8 @@
- #define MS_TDIFF(tv1,tv2) ( ((tv1).tv_sec-(tv2).tv_sec)*1000 + \
- ((tv1).tv_usec-(tv2).tv_usec)/1000 )
-
-+#define min(x,y) ((x)<(y) ? (x) : (y))
-+
- void usage(void)
- {
- fprintf(stderr,
-@@ -476,7 +478,7 @@
- }
-
- he = me;
-- memset(he.sll_addr, -1, he.sll_halen);
-+ memset(he.sll_addr, -1, min(he.sll_halen, sizeof he.sll_addr));
-
- if (!quiet) {
- printf("ARPING %s ", inet_ntoa(dst));
---- iputils/arping.c.orig 2001-10-05 18:42:47.000000000 -0400
-+++ iputils/arping.c 2005-07-13 13:07:45.406217716 -0400
-@@ -166,10 +166,12 @@ void catcher(void)
- if (start.tv_sec==0)
- start = tv;
-
-- if (count-- == 0 || (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500))
-+ if ((timeout && MS_TDIFF(tv,start) > timeout*1000 + 500) ||
-+ ((count == 0) && (!timeout)))
- finish();
-
- if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) {
-+ count--;
- send_pack(s, src, dst, &me, &he);
- if (count == 0 && unsolicited)
- finish();
-@@ -510,6 +512,8 @@ main(int argc, char **argv)
- sigaddset(&sset, SIGINT);
- sigprocmask(SIG_BLOCK, &sset, &osset);
- recv_pack(packet, cc, &from);
-+ if(received == count)
-+ exit(0);
- sigprocmask(SIG_SETMASK, &osset, NULL);
- }
- }
---- iputils/tracepath6.c.getaddrinfo 2005-09-08 10:31:47.000000000 +0200
-+++ iputils/tracepath6.c 2005-09-08 10:31:47.000000000 +0200
-@@ -280,7 +280,7 @@
- struct sockaddr_in6 sin;
- int ttl;
- char *p;
-- struct hostent *he;
-+ struct addrinfo hints, *res;
- int ch;
-
- while ((ch = getopt(argc, argv, "nbh?")) != EOF) {
-@@ -308,20 +308,26 @@
- perror("socket");
- exit(1);
- }
-- sin.sin6_family = AF_INET6;
-
- p = strchr(argv[0], '/');
- if (p) {
- *p = 0;
-+ }
-+
-+ memset(&hints, '\0', sizeof(hints));
-+ hints.ai_family = AF_INET6;
-+ if (getaddrinfo(argv[0], NULL, &hints, &res)) {
-+ herror("getaddrinfo");
-+ exit(1);
-+ }
-+
-+ memcpy(&sin, res->ai_addr, sizeof(struct sockaddr_in6));
-+ freeaddrinfo(res);
-+
-+ if (p) {
- sin.sin6_port = htons(atoi(p+1));
- } else
- sin.sin6_port = htons(0x8000 | getpid());
-- he = gethostbyname2(argv[0], AF_INET6);
-- if (he == NULL) {
-- herror("gethostbyname2");
-- exit(1);
-- }
-- memcpy(&sin.sin6_addr, he->h_addr, 16);
-
- if (connect(fd, (struct sockaddr*)&sin, sizeof(sin)) < 0) {
- perror("connect");
---- iputils/tracepath.c.getaddrinfo 2005-09-08 10:31:47.000000000 +0200
-+++ iputils/tracepath.c 2005-09-08 11:03:39.000000000 +0200
-@@ -272,12 +272,12 @@
- int
- main(int argc, char **argv)
- {
-- struct hostent *he;
- int fd;
- int on;
- int ttl;
- char *p;
- int ch;
-+ struct addrinfo hints, *res;
-
- while ((ch = getopt(argc, argv, "nh?")) != EOF) {
- switch(ch) {
-@@ -300,20 +300,26 @@
- perror("socket");
- exit(1);
- }
-- target.sin_family = AF_INET;
-
- p = strchr(argv[0], '/');
- if (p) {
- *p = 0;
-+ }
-+
-+ memset(&hints, '\0', sizeof(hints));
-+ hints.ai_family = AF_INET;
-+ if (getaddrinfo(argv[0], NULL, &hints, &res)) {
-+ herror("getaddrinfo");
-+ exit(1);
-+ }
-+
-+ memcpy(&target, res->ai_addr, sizeof(struct sockaddr_in));
-+ freeaddrinfo(res);
-+
-+ if (p)
- base_port = atoi(p+1);
-- } else
-+ else
- base_port = 44444;
-- he = gethostbyname(argv[0]);
-- if (he == NULL) {
-- herror("gethostbyname");
-- exit(1);
-- }
-- memcpy(&target.sin_addr, he->h_addr, 4);
-
- on = IP_PMTUDISC_DO;
- if (setsockopt(fd, SOL_IP, IP_MTU_DISCOVER, &on, sizeof(on))) {
---- iputils/ping.c.flood 2005-09-26 09:26:49.000000000 +0200
-+++ iputils/ping.c 2005-09-26 13:07:39.000000000 +0200
-@@ -614,7 +608,7 @@
- icp->type = ICMP_ECHO;
- icp->code = 0;
- icp->checksum = 0;
-- icp->un.echo.sequence = htons(ntransmitted);
-+ icp->un.echo.sequence = htons(ntransmitted+1);
- icp->un.echo.id = ident; /* ID */
-
- CLR((ntransmitted+1) % mx_dup_ck);
-diff -ru iputils/ping_common.c iputils-foo/ping_common.c
---- iputils/ping_common.c 2005-09-22 15:22:57.000000000 -0400
-+++ iputils-foo/ping_common.c 2005-09-22 15:24:42.000000000 -0400
-@@ -584,6 +584,7 @@
- * destined to other running pings. */
-
- iov.iov_len = packlen;
-+ memset(&msg,'\0',sizeof(msg));
- msg.msg_name = addrbuf;
- msg.msg_namelen = sizeof(addrbuf);
- msg.msg_iov = &iov;
---- iputils/tracepath6.c.hoplimit 2005-12-13 13:32:56.000000000 +0100
-+++ iputils/tracepath6.c 2005-12-13 13:35:01.000000000 +0100
-@@ -359,8 +359,8 @@
- perror("IP_RECVERR");
- exit(1);
- }
-- if (setsockopt(fd, SOL_IPV6, IPV6_HOPLIMIT, &on, sizeof(on))) {
-- perror("IPV6_HOPLIMIT");
-+ if (setsockopt(fd, SOL_IPV6, IPV6_RECVHOPLIMIT, &on, sizeof(on))) {
-+ perror("IPV6_RECVHOPLIMIT");
- exit(1);
- }
- if (mapped && setsockopt(fd, SOL_IP, IP_RECVTTL, &on, sizeof(on))) {
---- iputils/ping6.c.hoplimit 2005-12-13 13:32:56.000000000 +0100
-+++ iputils/ping6.c 2005-12-13 13:34:04.000000000 +0100
-@@ -521,13 +521,10 @@
- }
- }
-
-- if (1) {
-- int on = 1;
-- if (setsockopt(icmp_sock, IPPROTO_IPV6, IPV6_HOPLIMIT,
-- &on, sizeof(on)) == -1) {
-- perror ("can't receive hop limit");
-- exit(2);
-- }
-+ int on = 1;
-+ if (setsockopt(icmp_sock, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &on, sizeof(on))) {
-+ perror("setsockopt(IPV6_RECVHOPLIMIT)");
-+ exit(2);
- }
-
- if (options&F_FLOWINFO) {
---- iputils/ping6.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/ping6.c 2006-01-25 16:21:47.000000000 +0100
-@@ -383,7 +383,7 @@
- exit(2);
- }
- alen = sizeof(source);
-- if (getsockname(probe_fd, (struct sockaddr*)&source, &alen) == -1) {
-+ if (getsockname(probe_fd, (struct sockaddr*)&source, (socklen_t*)&alen) == -1) {
- perror("getsockname");
- exit(2);
- }
-@@ -599,6 +599,7 @@
- int net_errors = 0;
- int local_errors = 0;
- int saved_errno = errno;
-+ ssize_t wr_ret;
-
- iov.iov_base = &icmph;
- iov.iov_len = sizeof(icmph);
-@@ -629,7 +630,7 @@
- if (options & F_QUIET)
- goto out;
- if (options & F_FLOOD)
-- write(STDOUT_FILENO, "E", 1);
-+ wr_ret = write(STDOUT_FILENO, "E", 1);
- else if (e->ee_errno != EMSGSIZE)
- fprintf(stderr, "ping: local error: %s\n", strerror(e->ee_errno));
- else
-@@ -652,7 +653,7 @@
- if (options & F_QUIET)
- goto out;
- if (options & F_FLOOD) {
-- write(STDOUT_FILENO, "\bE", 2);
-+ wr_ret = write(STDOUT_FILENO, "\bE", 2);
- } else {
- printf("From %s icmp_seq=%u ", pr_addr(&sin6->sin6_addr), ntohs(icmph.icmp6_sequence));
- pr_icmph(e->ee_type, e->ee_code, e->ee_info);
-@@ -795,7 +796,8 @@
- return 0;
- nerrors++;
- if (options & F_FLOOD) {
-- write(STDOUT_FILENO, "\bE", 2);
-+ ssize_t wr_ret;
-+ wr_ret = write(STDOUT_FILENO, "\bE", 2);
- return 0;
- }
- printf("From %s: icmp_seq=%u ", pr_addr(&from->sin6_addr), ntohs(icmph1->icmp6_sequence));
---- iputils/arping.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/arping.c 2006-01-25 16:21:47.000000000 +0100
-@@ -449,7 +449,7 @@
- perror("connect");
- exit(2);
- }
-- if (getsockname(probe_fd, (struct sockaddr*)&saddr, &alen) == -1) {
-+ if (getsockname(probe_fd, (struct sockaddr*)&saddr, (socklen_t*)&alen) == -1) {
- perror("getsockname");
- exit(2);
- }
-@@ -468,7 +468,7 @@
-
- if (1) {
- int alen = sizeof(me);
-- if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) {
-+ if (getsockname(s, (struct sockaddr*)&me, (socklen_t*)&alen) == -1) {
- perror("getsockname");
- exit(2);
- }
-@@ -499,13 +499,13 @@
-
- while(1) {
- sigset_t sset, osset;
-- char packet[4096];
-+ unsigned char packet[4096];
- struct sockaddr_ll from;
- int alen = sizeof(from);
- int cc;
-
- if ((cc = recvfrom(s, packet, sizeof(packet), 0,
-- (struct sockaddr *)&from, &alen)) < 0) {
-+ (struct sockaddr *)&from, (socklen_t*)&alen)) < 0) {
- perror("arping: recvfrom");
- continue;
- }
---- iputils/traceroute6.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/traceroute6.c 2006-01-25 16:21:47.000000000 +0100
-@@ -529,7 +529,7 @@
- exit(1);
- }
- alen = sizeof(saddr);
-- if (getsockname(probe_fd, (struct sockaddr*)&saddr, &alen) == -1) {
-+ if (getsockname(probe_fd, (struct sockaddr*)&saddr, (socklen_t*)&alen) == -1) {
- perror("getsockname");
- exit(1);
- }
-@@ -656,7 +656,7 @@
-
- if (select(sock+1, &fds, (fd_set *)0, (fd_set *)0, &wait) > 0) {
- cc=recvfrom(icmp_sock, (char *)packet, sizeof(packet), 0,
-- (struct sockaddr *)from, &fromlen);
-+ (struct sockaddr *)from, (socklen_t*)&fromlen);
- }
-
- return(cc);
---- iputils/tftpd.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/tftpd.c 2006-01-25 16:21:47.000000000 +0100
-@@ -126,7 +126,7 @@
- }
- fromlen = sizeof (from);
- n = recvfrom(0, buf, sizeof (buf), 0,
-- (struct sockaddr *)&from, &fromlen);
-+ (struct sockaddr *)&from, (socklen_t*)&fromlen);
- if (n < 0) {
- if (errno != EAGAIN)
- syslog(LOG_ERR, "recvfrom: %m\n");
-@@ -164,9 +164,9 @@
- * than one tftpd being started up to service
- * a single request from a single client.
- */
-- j = sizeof from;
-+ j = sizeof (from);
- i = recvfrom(0, buf, sizeof (buf), 0,
-- (struct sockaddr *)&from, &j);
-+ (struct sockaddr *)&from, (socklen_t*)&j);
- if (i > 0) {
- n = i;
- fromlen = j;
---- iputils/clockdiff.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/clockdiff.c 2006-01-25 16:21:47.000000000 +0100
-@@ -148,7 +148,7 @@
- if (select(FD_SETSIZE, &ready, (fd_set *)0, (fd_set *)0, &tout)) {
- length = sizeof(struct sockaddr_in);
- cc = recvfrom(sock_raw, (char *)packet, PACKET_IN, 0,
-- (struct sockaddr *)NULL, &length);
-+ (struct sockaddr *)NULL, (socklen_t*)&length);
- if (cc < 0)
- return -1;
- goto empty;
-@@ -214,7 +214,7 @@
-
- (void)gettimeofday(&tv1, (struct timezone *)0);
- cc = recvfrom(sock_raw, (char *)packet, PACKET_IN, 0,
-- (struct sockaddr *)NULL, &length);
-+ (struct sockaddr *)NULL, (socklen_t*)&length);
-
- if (cc < 0)
- return(-1);
-@@ -326,7 +326,7 @@
- if (select(FD_SETSIZE, &ready, (fd_set *)0, (fd_set *)0, &tout)) {
- length = sizeof(struct sockaddr_in);
- cc = recvfrom(sock_raw, (char *)packet, PACKET_IN, 0,
-- (struct sockaddr *)NULL, &length);
-+ (struct sockaddr *)NULL, (socklen_t*)&length);
- if (cc < 0)
- return -1;
- goto empty;
-@@ -396,7 +396,7 @@
-
- (void)gettimeofday(&tv1, (struct timezone *)0);
- cc = recvfrom(sock_raw, (char *)packet, PACKET_IN, 0,
-- (struct sockaddr *)NULL, &length);
-+ (struct sockaddr *)NULL, (socklen_t*)&length);
-
- if (cc < 0)
- return(-1);
-@@ -539,6 +539,7 @@
- struct hostent * hp;
- char hostname[MAXHOSTNAMELEN];
- int s_errno = 0;
-+ int nice_ret;
-
- if (argc < 2) {
- setuid(getuid());
-@@ -606,7 +607,7 @@
- rspace[1] = ip_opt_len;
- rspace[2] = 5;
- rspace[3] = IPOPT_TS_PRESPEC;
-- if (getsockname(sock_raw, (struct sockaddr*)&myaddr, &addrlen) == -1) {
-+ if (getsockname(sock_raw, (struct sockaddr*)&myaddr, (socklen_t*)&addrlen) == -1) {
- perror("getsockname");
- exit(1);
- }
-@@ -623,8 +624,13 @@
- ip_opt_len = 0;
- }
- }
--
-- nice(-16);
-+ nice_ret = nice(-16);
-+ if (nice_ret < 0) {
-+ if (errno)
-+ perror("nice");
-+ else
-+ fprintf(stderr, "nice: unknown failure\n");
-+ }
-
- if ((measure_status = (ip_opt_len ? measure_opt : measure)(&server)) < 0) {
- if (errno)
---- iputils/rdisc.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/rdisc.c 2006-01-25 16:21:47.000000000 +0100
-@@ -454,7 +454,7 @@
- int cc;
-
- cc=recvfrom(s, (char *)packet, len, 0,
-- (struct sockaddr *)&from, &fromlen);
-+ (struct sockaddr *)&from, (socklen_t*)&fromlen);
- if (cc<0) {
- if (errno == EINTR)
- continue;
---- iputils/rarpd.c.gcc41 2001-12-02 19:45:06.000000000 +0100
-+++ iputils/rarpd.c 2006-01-25 16:21:47.000000000 +0100
-@@ -154,8 +154,8 @@
- ifl->index = index;
- ifl->hatype = ifrp->ifr_hwaddr.sa_family;
- memcpy(ifl->lladdr, ifrp->ifr_hwaddr.sa_data, 14);
-- strncpy(ifl->name, ifrp->ifr_name, IFNAMSIZ);
-- p = strchr(ifl->name, ':');
-+ strncpy((char*)ifl->name, ifrp->ifr_name, IFNAMSIZ);
-+ p = strchr((char*)ifl->name, ':');
- if (p)
- *p = 0;
- if (verbose)
-@@ -423,7 +423,7 @@
- unsigned char *ptr;
- int n;
-
-- n = recvfrom(fd, buf, sizeof(buf), MSG_DONTWAIT, (struct sockaddr*)&sll, &sll_len);
-+ n = recvfrom(fd, buf, sizeof(buf), MSG_DONTWAIT, (struct sockaddr*)&sll, (socklen_t*)&sll_len);
- if (n<0) {
- if (errno != EINTR && errno != EAGAIN)
- syslog(LOG_ERR, "recvfrom: %m");
-@@ -531,7 +531,7 @@
- /* Update our ARP cache. Probably, this guy
- will not able to make ARP (if it is broken)
- */
-- arp_advise(sll.sll_ifindex, rmap->lladdr, rmap->lladdr_len, rmap->ipaddr);
-+ arp_advise(sll.sll_ifindex,(unsigned char *)rmap->lladdr, rmap->lladdr_len, rmap->ipaddr);
-
- /* Sendto is blocking, but with 5sec timeout */
- alarm(5);
-@@ -673,8 +673,15 @@
- perror("rarpd: fork");
- exit(1);
- }
-+ int chdir_ret = chdir("/");
-+ if (chdir_ret != 0) {
-+ if (errno)
-+ perror("chdir");
-+ else
-+ fprintf(stderr, "chdir: Uknown error\n");
-+ }
-
-- chdir("/");
-+
- fd = open("/dev/null", O_RDWR);
- if (fd >= 0) {
- dup2(fd, 0);
---- iputils/ping_common.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/ping_common.c 2006-01-25 16:21:47.000000000 +0100
-@@ -284,6 +284,7 @@
- static int oom_count;
- static int tokens;
- int i;
-+ ssize_t wr_ret;
-
- /* Have we already sent enough? If we have, return an arbitrary positive value. */
- if (exiting || (npackets && ntransmitted >= npackets && !deadline))
-@@ -327,7 +328,7 @@
- * high preload or pipe size is very confusing. */
- if ((preload < screen_width && pipesize < screen_width) ||
- in_flight() < screen_width)
-- write(STDOUT_FILENO, ".", 1);
-+ wr_ret = write(STDOUT_FILENO, ".", 1);
- }
- return interval - tokens;
- }
-@@ -380,7 +381,7 @@
-
- if (i == 0 && !(options & F_QUIET)) {
- if (options & F_FLOOD)
-- write(STDOUT_FILENO, "E", 1);
-+ wr_ret = write(STDOUT_FILENO, "E", 1);
- else
- perror("ping: sendmsg");
- }
-@@ -402,8 +403,8 @@
- rcvbuf = hold = alloc * preload;
- if (hold < 65536)
- hold = 65536;
-- setsockopt(icmp_sock, SOL_SOCKET, SO_RCVBUF, (char *)&hold, sizeof(hold));
-- if (getsockopt(icmp_sock, SOL_SOCKET, SO_RCVBUF, (char *)&hold, &tmplen) == 0) {
-+ setsockopt(icmp_sock, SOL_SOCKET, SO_RCVBUF, (char *)&hold, (socklen_t)sizeof(hold));
-+ if (getsockopt(icmp_sock, SOL_SOCKET, SO_RCVBUF, (char *)&hold, (socklen_t*)&tmplen) == 0) {
- if (hold < rcvbuf)
- fprintf(stderr, "WARNING: probably, rcvbuf is not enough to hold preload.\n");
- }
-@@ -650,7 +651,8 @@
- {
- int dupflag = 0;
- long triptime = 0;
--
-+ ssize_t wr_ret;
-+
- ++nreceived;
- if (!csfailed)
- acknowledge(seq);
-@@ -706,9 +708,9 @@
-
- if (options & F_FLOOD) {
- if (!csfailed)
-- write(STDOUT_FILENO, "\b \b", 3);
-+ wr_ret = write(STDOUT_FILENO, "\b \b", 3);
- else
-- write(STDOUT_FILENO, "\bC", 1);
-+ wr_ret = write(STDOUT_FILENO, "\bC", 1);
- } else {
- int i;
- __u8 *cp, *dp;
---- iputils/ping.c.gcc41 2006-01-25 16:21:47.000000000 +0100
-+++ iputils/ping.c 2006-01-25 16:21:47.000000000 +0100
-@@ -314,7 +314,7 @@
- }
- }
- alen = sizeof(source);
-- if (getsockname(probe_fd, (struct sockaddr*)&source, &alen) == -1) {
-+ if (getsockname(probe_fd, (struct sockaddr*)&source, (socklen_t*)&alen) == -1) {
- perror("getsockname");
- exit(2);
- }
-@@ -517,6 +517,7 @@
- int net_errors = 0;
- int local_errors = 0;
- int saved_errno = errno;
-+ ssize_t wr_ret;
-
- iov.iov_base = &icmph;
- iov.iov_len = sizeof(icmph);
-@@ -547,7 +548,7 @@
- if (options & F_QUIET)
- goto out;
- if (options & F_FLOOD)
-- write(STDOUT_FILENO, "E", 1);
-+ wr_ret = write(STDOUT_FILENO, "E", 1);
- else if (e->ee_errno != EMSGSIZE)
- fprintf(stderr, "ping: local error: %s\n", strerror(e->ee_errno));
- else
-@@ -583,7 +584,7 @@
- if (options & F_QUIET)
- goto out;
- if (options & F_FLOOD) {
-- write(STDOUT_FILENO, "\bE", 2);
-+ wr_ret = write(STDOUT_FILENO, "\bE", 2);
- } else {
- printf("From %s icmp_seq=%u ", pr_addr(sin->sin_addr.s_addr), ntohs(icmph.un.echo.sequence));
- pr_icmph(e->ee_type, e->ee_code, e->ee_info, NULL);
-@@ -677,6 +678,7 @@
- struct iphdr *ip;
- int hlen;
- int csfailed;
-+ ssize_t wr_ret;
-
- /* Check the IP header */
- ip = (struct iphdr *)buf;
-@@ -748,7 +750,7 @@
- return !error_pkt;
- if (options & F_FLOOD) {
- if (error_pkt)
-- write(STDOUT_FILENO, "\bE", 2);
-+ wr_ret = write(STDOUT_FILENO, "\bE", 2);
- return !error_pkt;
- }
- printf("From %s: icmp_seq=%u ",
-@@ -765,9 +767,9 @@
- }
- if ((options & F_FLOOD) && !(options & (F_VERBOSE|F_QUIET))) {
- if (!csfailed)
-- write(STDOUT_FILENO, "!E", 2);
-+ wr_ret = write(STDOUT_FILENO, "!E", 2);
- else
-- write(STDOUT_FILENO, "!EC", 3);
-+ wr_ret = write(STDOUT_FILENO, "!EC", 3);
- return 0;
- }
- if (!(options & F_VERBOSE) || uid)
---- iputils/ping6.c.OLD 2006-02-06 10:34:35.000000000 +0100
-+++ iputils/ping6.c 2006-02-06 10:35:38.000000000 +0100
-@@ -353,7 +353,7 @@
- hostname = target;
-
- if (ipv6_addr_any(&source.sin6_addr)) {
-- int alen;
-+ socklen_t alen;
- int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0);
-
- if (probe_fd < 0) {
---- iputils/ping.c.OLD 2006-02-06 10:34:35.000000000 +0100
-+++ iputils/ping.c 2006-02-06 10:34:35.000000000 +0100
-@@ -253,7 +253,7 @@
- }
-
- if (source.sin_addr.s_addr == 0) {
-- int alen;
-+ socklen_t alen;
- struct sockaddr_in dst = whereto;
- int probe_fd = socket(AF_INET, SOCK_DGRAM, 0);
-
-@@ -855,9 +855,36 @@
- case ICMP_SR_FAILED:
- printf("Source Route Failed\n");
- break;
-+ case ICMP_NET_UNKNOWN:
-+ printf("Destination Net Unknown\n");
-+ break;
-+ case ICMP_HOST_UNKNOWN:
-+ printf("Destination Host Unknown\n");
-+ break;
-+ case ICMP_HOST_ISOLATED:
-+ printf("Source Host Isolated\n");
-+ break;
-+ case ICMP_NET_ANO:
-+ printf("Destination Net Prohibited\n");
-+ break;
-+ case ICMP_HOST_ANO:
-+ printf("Destination Host Prohibited\n");
-+ break;
-+ case ICMP_NET_UNR_TOS:
-+ printf("Destination Net Unreachable for Type of Service\n");
-+ break;
-+ case ICMP_HOST_UNR_TOS:
-+ printf("Destination Host Unreachable for Type of Service\n");
-+ break;
- case ICMP_PKT_FILTERED:
- printf("Packet filtered\n");
- break;
-+ case ICMP_PREC_VIOLATION:
-+ printf("Precedence Violation\n");
-+ break;
-+ case ICMP_PREC_CUTOFF:
-+ printf("Precedence Cutoff\n");
-+ break;
- default:
- printf("Dest Unreachable, Bad Code: %d\n", code);
- break;
---- iputils/ping_common.c.OLD 2006-02-06 10:34:35.000000000 +0100
-+++ iputils/ping_common.c 2006-02-06 10:34:35.000000000 +0100
-@@ -67,7 +67,7 @@
- int ii, jj, kk;
- int pat[16];
- char *cp;
-- char *bp = outpack+8;
-+ unsigned char *bp = outpack+8;
-
- for (cp = patp; *cp; cp++) {
- if (!isxdigit(*cp)) {
-@@ -393,7 +393,7 @@
- void sock_setbufs(int icmp_sock, int alloc)
- {
- int rcvbuf, hold;
-- int tmplen = sizeof(hold);
-+ socklen_t tmplen = sizeof(hold);
-
- if (!sndbuf)
- sndbuf = alloc;
-@@ -464,7 +464,7 @@
-
- if (!(options & F_PINGFILLED)) {
- int i;
-- char *p = outpack+8;
-+ unsigned char *p = outpack+8;
-
- /* Do not forget about case of small datalen,
- * fill timestamp area too!
-@@ -819,7 +819,7 @@
- }
- if (pipesize > 1)
- printf(", pipe %d", pipesize);
-- if (ntransmitted > 1 && (!interval || (options&(F_FLOOD|F_ADAPTIVE)))) {
-+ if (ntransmitted > 1 && nreceived && (!interval || (options&(F_FLOOD|F_ADAPTIVE)))) {
- int ipg = (1000000*(long long)tv.tv_sec+tv.tv_usec)/(ntransmitted-1);
- printf(", ipg/ewma %d.%03d/%d.%03d ms",
- ipg/1000, ipg%1000, rtt/8000, (rtt/8)%1000); \ No newline at end of file
diff --git a/abs/core/iputils/permission-fix.patch b/abs/core/iputils/permission-fix.patch
deleted file mode 100644
index c47636f..0000000
--- a/abs/core/iputils/permission-fix.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- traceroute-1.4a12/Makefile.in.old 2000-11-23 21:05:29.000000000 +0100
-+++ traceroute-1.4a12/Makefile.in 2008-09-27 20:04:30.000000000 +0200
-@@ -90,10 +90,10 @@
- sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $@
-
- install: force
-- $(INSTALL) -m 4555 -o root -g bin traceroute $(DESTDIR)$(BINDEST)
-+ $(INSTALL) -m 4555 -o root -g root traceroute $(DESTDIR)$(BINDEST)
-
- install-man: force
-- $(INSTALL) -m 444 -o bin -g bin traceroute.8 $(DESTDIR)$(MANDEST)/man8
-+ $(INSTALL) -m 644 -o root -g root traceroute.8 $(DESTDIR)$(MANDEST)/man8
-
- lint: $(GENSRC) force
- lint -hbxn $(SRC) | \
diff --git a/abs/core/iputils/protocols b/abs/core/iputils/protocols
deleted file mode 100644
index e6463f1..0000000
--- a/abs/core/iputils/protocols
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# protocols This file describes the various protocols that are
-# available from the TCP/IP subsystem. It should be
-# consulted instead of using the numbers in the ARPA
-# include files, or, worse, just guessing them.
-#
-
-ip 0 IP # internet protocol, pseudo protocol number
-icmp 1 ICMP # internet control message protocol
-igmp 2 IGMP # internet group multicast protocol
-ggp 3 GGP # gateway-gateway protocol
-tcp 6 TCP # transmission control protocol
-pup 12 PUP # PARC universal packet protocol
-udp 17 UDP # user datagram protocol
-idp 22 IDP # WhatsThis?
-raw 255 RAW # RAW IP interface
-
-# End.
diff --git a/abs/core/iputils/services b/abs/core/iputils/services
deleted file mode 100644
index 9a31e69..0000000
--- a/abs/core/iputils/services
+++ /dev/null
@@ -1,195 +0,0 @@
-#
-# Network services, Internet style
-#
-# Note that it is presently the policy of IANA to assign a single well-known
-# port number for both TCP and UDP; hence, most entries here have two entries
-# even if the protocol doesn't support UDP operations.
-# Updated from RFC 1340, ``Assigned Numbers'' (July 1992). Not all ports
-# are included, only the more common ones.
-#
-# from: @(#)services 5.8 (Berkeley) 5/9/91
-# $Id: services,v 1.8 2005/07/08 19:20:10 judd Exp $
-#
-tcpmux 1/tcp # TCP port service multiplexer
-echo 7/tcp
-echo 7/udp
-discard 9/tcp sink null
-discard 9/udp sink null
-systat 11/tcp users
-daytime 13/tcp
-daytime 13/udp
-netstat 15/tcp
-qotd 17/tcp quote
-msp 18/tcp # message send protocol
-msp 18/udp # message send protocol
-chargen 19/tcp ttytst source
-chargen 19/udp ttytst source
-ftp-data 20/tcp
-ftp 21/tcp
-ssh 22/tcp
-telnet 23/tcp
-# 24 - private
-smtp 25/tcp mail
-# 26 - unassigned
-time 37/tcp timserver
-time 37/udp timserver
-rlp 39/udp resource # resource location
-nameserver 42/tcp name # IEN 116
-whois 43/tcp nicname
-domain 53/tcp nameserver # name-domain server
-domain 53/udp nameserver
-mtp 57/tcp # deprecated
-bootps 67/tcp # BOOTP server
-bootps 67/udp
-bootpc 68/tcp # BOOTP client
-bootpc 68/udp
-tftp 69/udp
-gopher 70/tcp # Internet Gopher
-gopher 70/udp
-rje 77/tcp netrjs
-finger 79/tcp
-www 80/tcp http # WorldWideWeb HTTP
-www 80/udp # HyperText Transfer Protocol
-link 87/tcp ttylink
-kerberos 88/tcp krb5 # Kerberos v5
-kerberos 88/udp
-supdup 95/tcp
-# 100 - reserved
-hostnames 101/tcp hostname # usually from sri-nic
-iso-tsap 102/tcp tsap # part of ISODE.
-csnet-ns 105/tcp cso-ns # also used by CSO name server
-csnet-ns 105/udp cso-ns
-rtelnet 107/tcp # Remote Telnet
-rtelnet 107/udp
-pop2 109/tcp postoffice # POP version 2
-pop2 109/udp
-pop3 110/tcp # POP version 3
-pop3 110/udp
-sunrpc 111/tcp
-sunrpc 111/udp
-auth 113/tcp tap ident authentication
-sftp 115/tcp
-uucp-path 117/tcp
-nntp 119/tcp readnews untp # USENET News Transfer Protocol
-ntp 123/tcp
-ntp 123/udp # Network Time Protocol
-netbios-ns 137/tcp # NETBIOS Name Service
-netbios-ns 137/udp
-netbios-dgm 138/tcp # NETBIOS Datagram Service
-netbios-dgm 138/udp
-netbios-ssn 139/tcp # NETBIOS session service
-netbios-ssn 139/udp
-imap 143/tcp # An alias for imap2
-imap 143/udp
-imap2 143/tcp # Interim Mail Access Proto v2
-imap2 143/udp
-snmp 161/udp # Simple Net Mgmt Proto
-snmp-trap 162/udp snmptrap # Traps for SNMP
-cmip-man 163/tcp # ISO mgmt over IP (CMOT)
-cmip-man 163/udp
-cmip-agent 164/tcp
-cmip-agent 164/udp
-xdmcp 177/tcp # X Display Mgr. Control Proto
-xdmcp 177/udp
-nextstep 178/tcp NeXTStep NextStep # NeXTStep window
-nextstep 178/udp NeXTStep NextStep # server
-bgp 179/tcp # Border Gateway Proto.
-bgp 179/udp
-prospero 191/tcp # Cliff Neuman's Prospero
-prospero 191/udp
-irc 194/tcp # Internet Relay Chat
-irc 194/udp
-smux 199/tcp # SNMP Unix Multiplexer
-smux 199/udp
-at-rtmp 201/tcp # AppleTalk routing
-at-rtmp 201/udp
-at-nbp 202/tcp # AppleTalk name binding
-at-nbp 202/udp
-at-echo 204/tcp # AppleTalk echo
-at-echo 204/udp
-at-zis 206/tcp # AppleTalk zone information
-at-zis 206/udp
-z3950 210/tcp wais # NISO Z39.50 database
-z3950 210/udp wais
-ipx 213/tcp # IPX
-ipx 213/udp
-imap3 220/tcp # Interactive Mail Access
-imap3 220/udp # Protocol v3
-ulistserv 372/tcp # UNIX Listserv
-ulistserv 372/udp
-https 443/tcp
-#
-# UNIX specific services
-#
-exec 512/tcp
-biff 512/udp comsat
-login 513/tcp
-who 513/udp whod
-shell 514/tcp cmd # no passwords used
-syslog 514/udp
-printer 515/tcp spooler # line printer spooler
-talk 517/udp
-ntalk 518/udp
-route 520/udp router routed # RIP
-timed 525/udp timeserver
-tempo 526/tcp newdate
-courier 530/tcp rpc
-conference 531/tcp chat
-netnews 532/tcp readnews
-netwall 533/udp # -for emergency broadcasts
-uucp 540/tcp uucpd # uucp daemon
-remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
-klogin 543/tcp # Kerberized `rlogin' (v5)
-kshell 544/tcp # Kerberized `rsh' (v5)
-kerberos-adm 749/tcp # Kerberos `kadmin' (v5)
-#
-webster 765/tcp # Network dictionary
-webster 765/udp
-rsync 873/tcp # RSYNC Server
-rsync 873/udp
-swat 901/tcp # SWAT
-imaps 993/tcp # SSL IMAP
-imaps 993/udp
-pop3s 995/tcp
-pop3s 995/udp
-#
-# From ``Assigned Numbers'':
-#
-#> The Registered Ports are not controlled by the IANA and on most systems
-#> can be used by ordinary user processes or programs executed by ordinary
-#> users.
-#
-#> Ports are used in the TCP [45,106] to name the ends of logical
-#> connections which carry long term conversations. For the purpose of
-#> providing services to unknown callers, a service contact port is
-#> defined. This list specifies the port used by the server process as its
-#> contact port. While the IANA can not control uses of these ports it
-#> does register or list uses of these ports as a convienence to the
-#> community.
-#
-ingreslock 1524/tcp
-ingreslock 1524/udp
-prospero-np 1525/tcp # Prospero non-privileged
-prospero-np 1525/udp
-rfe 5002/tcp # Radio Free Ethernet
-rfe 5002/udp # Actually uses UDP only
-#
-#
-# Kerberos (Project Athena/MIT) services
-# Note that these are for Kerberos v4, and are unofficial. Sites running
-# v4 should uncomment these and comment out the v5 entries above.
-#
-#kerberos 750/udp kdc # Kerberos (server) udp
-#kerberos 750/tcp kdc # Kerberos (server) tcp
-krbupdate 760/tcp kreg # Kerberos registration
-kpasswd 761/tcp kpwd # Kerberos "passwd"
-#klogin 543/tcp # Kerberos rlogin
-eklogin 2105/tcp # Kerberos encrypted rlogin
-#kshell 544/tcp krcmd # Kerberos remote shell
-svn 3690/tcp # Subversion Server
-svn 3690/udp # Subversion Server
-#
-# Unofficial but necessary (for NetBSD) services
-#
-supfilesrv 871/tcp # SUP server
-supfiledbg 1127/tcp # SUP debugging
diff --git a/abs/core/iputils/tftp.xinetd b/abs/core/iputils/tftp.xinetd
new file mode 100644
index 0000000..26041a3
--- /dev/null
+++ b/abs/core/iputils/tftp.xinetd
@@ -0,0 +1,10 @@
+service tftp
+{
+ socket_type = dgram
+ protocol = udp
+ wait = yes
+ user = nobody
+ server = /usr/sbin/tftpd
+ server_args = /var/tftpboot
+ disable = yes
+}