From 679e855206798435f8b168db6426e283e1f70a12 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 6 Aug 2012 21:45:11 -0500
Subject: iputils 20101006

---
 abs/core/iputils/PKGBUILD                          |  108 +-
 .../iputils-20101006-ping-integer-overflow.patch   |   11 +
 abs/core/iputils/iputils-big-patches.patch         |  595 ----------
 abs/core/iputils/iputils-ss021109-try.patch        |  239 ----
 abs/core/iputils/iputils.install                   |   11 +
 abs/core/iputils/iputils.patch                     | 1170 --------------------
 abs/core/iputils/permission-fix.patch              |   15 -
 abs/core/iputils/protocols                         |   18 -
 abs/core/iputils/services                          |  195 ----
 abs/core/iputils/tftp.xinetd                       |   10 +
 10 files changed, 91 insertions(+), 2281 deletions(-)
 create mode 100644 abs/core/iputils/iputils-20101006-ping-integer-overflow.patch
 delete mode 100644 abs/core/iputils/iputils-big-patches.patch
 delete mode 100644 abs/core/iputils/iputils-ss021109-try.patch
 create mode 100644 abs/core/iputils/iputils.install
 delete mode 100644 abs/core/iputils/iputils.patch
 delete mode 100644 abs/core/iputils/permission-fix.patch
 delete mode 100644 abs/core/iputils/protocols
 delete mode 100644 abs/core/iputils/services
 create mode 100644 abs/core/iputils/tftp.xinetd

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
+}
-- 
cgit v0.12

