summaryrefslogtreecommitdiffstats
path: root/abs/core/iputils
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2013-02-19 21:10:18 (GMT)
committerJames Meyer <james.meyer@operamail.com>2013-02-19 21:10:18 (GMT)
commit2648e999d277eac5c3d331a3609bcc73fafbea71 (patch)
tree40951fb8e7fdbe28a0baa324ae615055203f1e2e /abs/core/iputils
parentc759b5e0c4aa6fc37412b4dee2cf9ad993fd376d (diff)
parent7e6f7ca174e1af67178dc5293a312a4a733eb095 (diff)
downloadlinhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.zip
linhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.tar.gz
linhes_pkgbuild-2648e999d277eac5c3d331a3609bcc73fafbea71.tar.bz2
Merge branch 'testing'
# By James Meyer (1091) and others # Via James Meyer (5) and others * testing: (1148 commits) LinHES-config: during install don't kill off lirc. This keeps the remote active all the way to the finish Change version numbers to 8.0 to match the release number. LinHES-conifg LinHES-system mythdb-initial runit-scripts supplemental-web LinHES-conifig: mv_install.py for the last partition don't go all the way to the end. Gotta leave room for gpt tables. xf86-video-ati: xorg ati driver. LinHES-config: timezip.py add syncing up of parental lvl passwords and starting level with MBE. LinHES-system: correct the logic for breaking out of the wmctrl loop. As written it would break out of the inner loop..but not the 60 iteration loop. e16_theme_settings: remove slide-in prop for new windows. For whatever reason this was preventing mplayer from being positioned correctly for appletrailers. LinHES-config, mythinstall: change case of hd_pvr and serial to all lower refs #902 zilog-firmware: firmware for TX support of the hdpvr and pvr-150 In general I can't recommend anybody using these transmitters but including the firmware just in case someone really wants to linhes-udev-rules: added hdprv_lirc rule. All of these lirc rules are limited to exactly one device. If more then one device is present then only the last device in init will get the symlink runit-scripts: fix logging for igdeamon, add support to remote init script so that the blaster is always the first device in the chain. added support specificly for hd_pvr LinHES-system: add lh_system_restore and lh_system_backup. These scripts are called from the mythmenu. refs #900 iguanair: rebuild with python 2.7 LinHES-system: msg_daemon.py fix init and nasty bug related to timeout. In a nutshell timeout wouldn't work unless a msg without a timeout was called first. linhes-udev-rules: add rules for mce,streamzap,serial lirc devices. mythinstall: recompile for matching libs mythtv: latest .25-fixes and change mythbackup/restore call lh_system_$op to replace mythbackup/mythrestore. mythbackup no longer works correctly with the new windowmanager linhes-scripts: myth2mp3, myth2x264, myth2xvid: use mythutil to get cutlist LinHES-config, supplimental-web: Fix proxy numbering for Ceton infiniTV linhes-system: add additional stuff to the system backup and also introduced an exclude file. The exclude/include files are locate in /home/mythtv/backup_config/ ...
Diffstat (limited to 'abs/core/iputils')
-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
+}