From 55c971f5ebca752105a99a5c353635590199d9eb Mon Sep 17 00:00:00 2001 From: Frans Meulenbroeks Date: Sun, 19 Sep 2010 16:12:49 +0200 Subject: iputils : moved unused files to obsolete dir Signed-off-by: Frans Meulenbroeks --- recipes/iputils/files/debian-fixes.patch | 133 --- recipes/iputils/files/glibc-2.4-compat.patch | 78 -- recipes/iputils/files/iputils-retvals.patch | 49 - recipes/iputils/files/makefile.patch | 49 - recipes/iputils/files/remove-glibc-headers.patch | 944 ----------------- recipes/iputils/files/standard-header-types.patch | 1072 -------------------- recipes/iputils/files/tracepath6-mtu-opt.patch | 35 - recipes/obsolete/iputils/files/debian-fixes.patch | 133 +++ .../obsolete/iputils/files/glibc-2.4-compat.patch | 78 ++ .../obsolete/iputils/files/iputils-retvals.patch | 49 + recipes/obsolete/iputils/files/makefile.patch | 49 + .../iputils/files/remove-glibc-headers.patch | 944 +++++++++++++++++ .../iputils/files/standard-header-types.patch | 1072 ++++++++++++++++++++ .../iputils/files/tracepath6-mtu-opt.patch | 35 + 14 files changed, 2360 insertions(+), 2360 deletions(-) delete mode 100644 recipes/iputils/files/debian-fixes.patch delete mode 100644 recipes/iputils/files/glibc-2.4-compat.patch delete mode 100644 recipes/iputils/files/iputils-retvals.patch delete mode 100644 recipes/iputils/files/makefile.patch delete mode 100644 recipes/iputils/files/remove-glibc-headers.patch delete mode 100644 recipes/iputils/files/standard-header-types.patch delete mode 100644 recipes/iputils/files/tracepath6-mtu-opt.patch create mode 100644 recipes/obsolete/iputils/files/debian-fixes.patch create mode 100644 recipes/obsolete/iputils/files/glibc-2.4-compat.patch create mode 100644 recipes/obsolete/iputils/files/iputils-retvals.patch create mode 100644 recipes/obsolete/iputils/files/makefile.patch create mode 100644 recipes/obsolete/iputils/files/remove-glibc-headers.patch create mode 100644 recipes/obsolete/iputils/files/standard-header-types.patch create mode 100644 recipes/obsolete/iputils/files/tracepath6-mtu-opt.patch diff --git a/recipes/iputils/files/debian-fixes.patch b/recipes/iputils/files/debian-fixes.patch deleted file mode 100644 index 1b014f07f9..0000000000 --- a/recipes/iputils/files/debian-fixes.patch +++ /dev/null @@ -1,133 +0,0 @@ -Fixes taken from the lastest debian .deb pacakge (20020927-3). - ---- iputils-20020927.orig/ping.c -+++ iputils-20020927/ping.c -@@ -232,7 +232,7 @@ - if (argc == 1) - options |= F_NUMERIC; - } else { -- hp = gethostbyname(target); -+ hp = gethostbyname2(target, AF_INET); - if (!hp) { - fprintf(stderr, "ping: unknown host %s\n", target); - exit(2); -@@ -373,8 +373,13 @@ - (1<h_addr, 4); ---- iputils-20020927.orig/traceroute6.c -+++ iputils-20020927/traceroute6.c -@@ -441,7 +441,7 @@ - * to fix something send the patch to me for sanity checking. - * "datalen" patch is a shit. */ - if ((unsigned int)datalen == 0) -- datalen == sizeof(struct pkt_format); -+ datalen = sizeof(struct pkt_format); - } - - if (datalen < (int)sizeof(struct pkt_format) || datalen >= MAXPACKET) { ---- iputils-20020927.orig/ping_common.c -+++ iputils-20020927/ping_common.c -@@ -435,6 +435,7 @@ - if (options & F_SO_DONTROUTE) - setsockopt(icmp_sock, SOL_SOCKET, SO_DONTROUTE, (char *)&hold, sizeof(hold)); - -+#ifndef __sparc__ /* XXX SO_TIMESTAMP seems broken on sparc */ - #ifdef SO_TIMESTAMP - if (!(options&F_LATENCY)) { - int on = 1; -@@ -442,6 +443,7 @@ - fprintf(stderr, "Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP\n"); - } - #endif -+#endif /* __sparc__ */ - - /* Set some SNDTIMEO to prevent blocking forever - * on sends, when device is too slow or stalls. Just put limit -@@ -817,7 +819,8 @@ - } - 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); -@@ -851,4 +854,3 @@ - } - fprintf(stderr, "\n"); - } -- diff --git a/recipes/iputils/files/glibc-2.4-compat.patch b/recipes/iputils/files/glibc-2.4-compat.patch deleted file mode 100644 index 736d660c3d..0000000000 --- a/recipes/iputils/files/glibc-2.4-compat.patch +++ /dev/null @@ -1,78 +0,0 @@ -This patch renames the ICMP6 variables to the new names, as used in glibc -2.4. It also provides a header which will define the new names to the old -names - as used in glibc < 2.4 and uclibc, so that it'll build on -uclibc, glibc < 2.4 and glibc 2.4. - ---- iputils/ping6.c 2006/07/10 02:23:05 1.1 -+++ iputils/ping6.c 2006/07/10 02:30:06 -@@ -71,6 +71,7 @@ - #include - #include - #include -+#include "glibc_compat.h" - - /* define to specify we want type0 routing headers */ - #define IPV6_SRCRT_TYPE_0 0 -@@ -86,7 +87,6 @@ - #define HAVE_SIN6_SCOPEID 1 - #endif - -- - uint32_t flowlabel; - uint32_t tclass; - struct cmsghdr *srcrt; -@@ -781,7 +781,7 @@ - case ICMP6_DST_UNREACH_ADMIN: - printf("Administratively prohibited"); - break; -- case ICMP6_DST_UNREACH_NOTNEIGHBOR: -+ case ICMP6_DST_UNREACH_BEYONDSCOPE: - printf("Not neighbour"); - break; - case ICMP6_DST_UNREACH_ADDR: -@@ -827,13 +827,13 @@ - case ICMP6_ECHO_REPLY: - printf("Echo reply"); - break; -- case ICMP6_MEMBERSHIP_QUERY: -+ case MLD_LISTENER_QUERY: - printf("MLD Query"); - break; -- case ICMP6_MEMBERSHIP_REPORT: -+ case MLD_LISTENER_REPORT: - printf("MLD Report"); - break; -- case ICMP6_MEMBERSHIP_REDUCTION: -+ case MLD_LISTENER_REDUCTION: - printf("MLD Reduction"); - break; - default: ---- /dev/null 2006-07-03 23:05:35.026189000 +1000 -+++ iputils/glibc_compat.h 2006-07-10 12:30:04.000000000 +1000 -@@ -0,0 +1,26 @@ -+/* -+ * glibc 2.4 renamed some of the IPv6 related constants. -+ * -+ * We use the new names and rename them back the old names if the new names -+ * are not definied anyway. -+ */ -+#ifndef GLIBC_COMPAT -+#define GLIBC_COMPAT -+ -+#ifndef ICMP6_DST_UNREACH_BEYONDSCOPE -+#define ICMP6_DST_UNREACH_BEYONDSCOPE ICMP6_DST_UNREACH_NOTNEIGHBOR -+#endif -+ -+#ifndef MLD_LISTENER_QUERY -+#define MLD_LISTENER_QUERY ICMP6_MEMBERSHIP_QUERY -+#endif -+ -+#ifndef MLD_LISTENER_REPORT -+#define MLD_LISTENER_REPORT ICMP6_MEMBERSHIP_REPORT -+#endif -+ -+#ifndef MLD_LISTENER_REDUCTION -+#define MLD_LISTENER_REDUCTION ICMP6_MEMBERSHIP_REDUCTION -+#endif -+ -+#endif diff --git a/recipes/iputils/files/iputils-retvals.patch b/recipes/iputils/files/iputils-retvals.patch deleted file mode 100644 index 73ef8a364e..0000000000 --- a/recipes/iputils/files/iputils-retvals.patch +++ /dev/null @@ -1,49 +0,0 @@ -From the fedora core SRPM. Outputs error message and exists if the -command is not suid root or run as user root. - ---- 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; - diff --git a/recipes/iputils/files/makefile.patch b/recipes/iputils/files/makefile.patch deleted file mode 100644 index 6cc35ad978..0000000000 --- a/recipes/iputils/files/makefile.patch +++ /dev/null @@ -1,49 +0,0 @@ -Update the makefile: Stop building it as a debug version by default, -remove the manual mangling of the include directories and don't build -the clockdiff, rdisc, tftp or rarpd components (everyone uses version -provided by other packages.) - ---- new/Makefile 2005/11/14 13:34:06 1.1 -+++ new/Makefile 2005/11/14 13:40:13 -@@ -1,37 +1,17 @@ --# Path to parent kernel include files directory --KERNEL_INCLUDE=/usr/src/linux/include --LIBC_INCLUDE=/usr/include -- --DEFINES= -- - #options if you have a bind>=4.9.4 libresolv (or, maybe, glibc) - 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 -- -- --#options if you compile with libc5, and without a bind>=4.9.4 libresolv --# NOT AVAILABLE. Please, use libresolv. - - CC=gcc - # 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 $(DEFINES) -+CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -+CFLAGS=$(CCOPT) -I$(KERNEL_INCLUDE) $(DEFINES) - --IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd -+IPV4_TARGETS=tracepath ping arping - IPV6_TARGETS=tracepath6 traceroute6 ping6 - TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS) - --all: check-kernel $(TARGETS) -+all: $(TARGETS) - - - tftpd: tftpd.o tftpsubs.o diff --git a/recipes/iputils/files/remove-glibc-headers.patch b/recipes/iputils/files/remove-glibc-headers.patch deleted file mode 100644 index 0930acd656..0000000000 --- a/recipes/iputils/files/remove-glibc-headers.patch +++ /dev/null @@ -1,944 +0,0 @@ -We are not using the local glibc headers for now. -Remove them to keep them out of the way. - -diff -durN orig/include-glibc/bits/socket.h new/include-glibc/bits/socket.h ---- orig/include-glibc/bits/socket.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/bits/socket.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,280 +0,0 @@ --/* System-specific socket constants and types. Linux version. -- Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Library General Public License as -- published by the Free Software Foundation; either version 2 of the -- License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -- -- You should have received a copy of the GNU Library General Public -- License along with the GNU C Library; see the file COPYING.LIB. If not, -- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- Boston, MA 02111-1307, USA. */ -- --#ifndef _SOCKETBITS_H -- --#define _SOCKETBITS_H 1 --#include -- --#define __need_size_t --#define __need_NULL --#include -- -- --__BEGIN_DECLS -- --/* Type for length arguments in socket calls. */ --#ifndef __socklen_t_defined --typedef unsigned int socklen_t; --# define __socklen_t_defined --#endif -- --/* Types of sockets. */ --enum __socket_type --{ --#ifndef __mips__ -- SOCK_STREAM = 1, /* Sequenced, reliable, connection-based -- byte streams. */ --#define SOCK_STREAM SOCK_STREAM -- SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams -- of fixed maximum length. */ --#define SOCK_DGRAM SOCK_DGRAM --#else -- SOCK_STREAM = 2, /* Sequenced, reliable, connection-based -- byte streams. */ --#define SOCK_STREAM SOCK_STREAM -- SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams -- of fixed maximum length. */ --#define SOCK_DGRAM SOCK_DGRAM --#endif -- SOCK_RAW = 3, /* Raw protocol interface. */ --#define SOCK_RAW SOCK_RAW -- SOCK_RDM = 4, /* Reliably-delivered messages. */ --#define SOCK_RDM SOCK_RDM -- SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, -- datagrams of fixed maximum length. */ --#define SOCK_SEQPACKET SOCK_SEQPACKET -- SOCK_PACKET = 10 /* Linux specific way of getting packets -- at the dev level. For writing rarp and -- other similar things on the user level. */ --#define SOCK_PACKET SOCK_PACKET --}; -- --/* Protocol families. */ --#define PF_UNSPEC 0 /* Unspecified. */ --#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ --#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ --#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ --#define PF_INET 2 /* IP protocol family. */ --#define PF_AX25 3 /* Amateur Radio AX.25. */ --#define PF_IPX 4 /* Novell Internet Protocol. */ --#define PF_APPLETALK 5 /* Don't use this. */ --#define PF_NETROM 6 /* Amateur radio NetROM. */ --#define PF_BRIDGE 7 /* Multiprotocol bridge. */ --#define PF_AAL5 8 /* Reserved for Werner's ATM. */ --#define PF_X25 9 /* Reserved for X.25 project. */ --#define PF_INET6 10 /* IP version 6. */ --#define PF_ROSE 11 /* Amateur Radio X.25 PLP */ --#define PF_DECnet 12 /* Reserved for DECnet project */ --#define PF_NETBEUI 13 /* Reserved for 802.2LLC project*/ --#define PF_SECURITY 14 /* Security callback pseudo AF */ --#define PF_KEY 15 /* PF_KEY key management API */ --#define PF_NETLINK 16 --#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD */ --#define PF_PACKET 17 /* Packet family */ --#define PF_MAX 32 /* For now.. */ -- --/* Address families. */ --#define AF_UNSPEC PF_UNSPEC --#define AF_LOCAL PF_LOCAL --#define AF_UNIX PF_UNIX --#define AF_FILE PF_FILE --#define AF_INET PF_INET --#define AF_AX25 PF_AX25 --#define AF_IPX PF_IPX --#define AF_APPLETALK PF_APPLETALK --#define AF_NETROM PF_NETROM --#define AF_BRIDGE PF_BRIDGE --#define AF_AAL5 PF_AAL5 --#define AF_X25 PF_X25 --#define AF_INET6 PF_INET6 --#define AF_ROSE PF_ROSE --#define AF_DECnet PF_DECnet --#define AF_NETBEUI PF_NETBEUI --#define AF_SECURITY PF_SECURITY --#define pseudo_AF_KEY pseudo_PF_KEY --#define AF_NETLINK PF_NETLINK --#define AF_ROUTE PF_ROUTE --#define AF_PACKET PF_PACKET --#define AF_MAX PF_MAX -- --/* Socket level values. Others are defined in the appropriate headers. -- -- XXX These definitions also should go into the appropriate headers as -- far as they are available. */ --#define SOL_IPV6 41 --#define SOL_ICMPV6 58 --#define SOL_RAW 255 --#define SOL_AX25 257 --#define SOL_ATALK 258 --#define SOL_NETROM 259 --#define SOL_ROSE 260 --#define SOL_DECNET 261 --#define SOL_X25 262 -- --/* Maximum queue length specifiable by listen. */ --#define SOMAXCONN 128 -- --/* Get the definition of the macro to define the common sockaddr members. */ --#if __GLIBC_MINOR__ >= 1 --#include --#else --#include --#endif -- --/* Structure describing a generic socket address. */ --struct sockaddr -- { -- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ -- char sa_data[14]; /* Address data. */ -- }; -- -- --/* Bits in the FLAGS argument to `send', `recv', et al. */ --enum -- { -- MSG_OOB = 0x01, /* Process out-of-band data. */ --#define MSG_OOB MSG_OOB -- MSG_PEEK = 0x02, /* Peek at incoming messages. */ --#define MSG_PEEK MSG_PEEK -- MSG_DONTROUTE = 0x04, /* Don't use local routing. */ --#define MSG_DONTROUTE MSG_DONTROUTE -- MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ --#define MSG_CTRUNC MSG_CTRUNC -- MSG_PROBE = 0x10, --#define MSG_PROBE MSG_PROBE -- MSG_TRUNC = 0x20, --#define MSG_TRUNC MSG_TRUNC -- MSG_DONTWAIT = 0x40, --#define MSG_DONTWAIT MSG_DONTWAIT -- MSG_WAITALL = 0x100, --#define MSG_WAITALL MSG_WAITALL -- MSG_CONFIRM = 0x800, --#define MSG_CONFIRM MSG_CONFIRM -- MSG_ERRQUEUE = 0x2000, --#define MSG_ERRQUEUE MSG_ERRQUEUE -- MSG_NOSIGNAL = 0x4000, --#define MSG_NOSIGNAL MSG_NOSIGNAL -- }; -- --/* Structure describing messages sent by -- `sendmsg' and received by `recvmsg'. */ --struct msghdr -- { -- __ptr_t msg_name; /* Address to send to/receive from. */ -- socklen_t msg_namelen; /* Length of address data. */ -- -- struct iovec *msg_iov; /* Vector of data to send/receive into. */ -- size_t msg_iovlen; /* Number of elements in the vector. */ -- -- __ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */ -- size_t msg_controllen; /* Ancillary data buffer length. */ -- -- int msg_flags; /* Flags on received message. */ -- }; -- --/* Structure used for storage of ancillary data object information. */ --struct cmsghdr -- { -- size_t cmsg_len; /* Length of data in cmsg_data plus length -- of cmsghdr structure. */ -- int cmsg_level; /* Originating protocol. */ -- int cmsg_type; /* Protocol specific type. */ --#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 -- unsigned char __cmsg_data[0]; /* Ancillary data. */ --#endif -- }; -- --/* Ancillary data object manipulation macros. */ --#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 --# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) --#else --# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1)) --#endif --#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) --#define CMSG_FIRSTHDR(mhdr) \ -- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ -- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) --#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) ) --#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len)) --#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) -- -- --#ifndef _EXTERN_INLINE --# define _EXTERN_INLINE extern __inline --#endif --extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr, -- struct cmsghdr *__cmsg)); --_EXTERN_INLINE struct cmsghdr * --__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) --{ -- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) -- /* The kernel header does this so there may be a reason. */ -- return NULL; -- -- __cmsg = (struct cmsghdr *) -- ((unsigned char *) __cmsg + CMSG_ALIGN(__cmsg->cmsg_len)); -- -- if ( (unsigned char *) (__cmsg + 1) >= -- (unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) -- /* No more entries. */ -- return NULL; -- return __cmsg; --} -- --/* Socket level message types. This must match the definitions in -- . */ --enum -- { -- SCM_RIGHTS = 0x01, /* Data array contains access rights. */ --#define SCM_RIGHTS SCM_RIGHTS -- SCM_CREDENTIALS = 0x02, /* Data array is `struct ucred'. */ --#define SCM_CREDENTIALS SCM_CREDENTIALS -- }; -- -- -- --/* Get socket manipulation related informations from kernel headers. */ --#ifdef THIS_IS_CRAP --#ifndef _LINUX_TYPES_H --# define _LINUX_TYPES_H --#endif --#endif -- --#include --#include -- --struct ucred --{ -- __u32 pid; -- __u32 uid; -- __u32 gid; --}; -- -- --/* Structure used to manipulate the SO_LINGER option. */ --struct linger -- { -- int l_onoff; /* Nonzero to linger on close. */ -- int l_linger; /* Time to linger. */ -- }; -- --__END_DECLS -- --#endif /* socketbits.h */ -diff -durN orig/include-glibc/bits/sockunion.h new/include-glibc/bits/sockunion.h ---- orig/include-glibc/bits/sockunion.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/bits/sockunion.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,25 +0,0 @@ -- --/* I cannot describe, how I laughed, when saw, that now sys/socket.h -- includes ALL OF networking include files. 8)8)8) -- -- Bravo! Aah, they forgot sockaddr_ll, sockaddr_pkt and sockaddr_nl... -- Not a big problem, we only start the way to single UNIVERSAL include file: -- -- #include . -- -- Jokes apart, it is full crap. Removed. -- --ANK -- -- */ -- --/* Union of all sockaddr types (required by IPv6 Basic API). This is -- somewhat evil. */ --/* 8)8) Well, ipngwg really does strange things sometimes, but -- not in such extent! It is removed long ago --ANK -- */ -- --union sockaddr_union -- { -- struct sockaddr sa; -- char __maxsize[128]; -- }; -diff -durN orig/include-glibc/glibc-bugs.h new/include-glibc/glibc-bugs.h ---- orig/include-glibc/glibc-bugs.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/glibc-bugs.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,20 +0,0 @@ --#ifndef __GLIBC_BUGS_H__ --#define __GLIBC_BUGS_H__ 1 -- --#include --#include -- --#if defined(__GLIBC__) && __GLIBC__ >= 2 -- --#ifndef __KERNEL_STRICT_NAMES --#define __KERNEL_STRICT_NAMES 1 --#endif -- --#include -- --typedef __u16 in_port_t; --typedef __u32 in_addr_t; -- --#endif -- --#endif -diff -durN orig/include-glibc/netinet/in.h new/include-glibc/netinet/in.h ---- orig/include-glibc/netinet/in.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/netinet/in.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,11 +0,0 @@ --#ifndef _NETINET_IN_H --#define _NETINET_IN_H 1 -- --#include "glibc-bugs.h" --#include --#include --#include -- --#define SOL_IP 0 -- --#endif /* netinet/in.h */ -diff -durN orig/include-glibc/netinet/ip.h new/include-glibc/netinet/ip.h ---- orig/include-glibc/netinet/ip.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/netinet/ip.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,98 +0,0 @@ --#ifndef __NETINET_IP_H --#define __NETINET_IP_H 1 -- --#include --#include -- --#include -- --#ifdef __USE_BSD --/* -- * Copyright (c) 1982, 1986, 1993 -- * The Regents of the University of California. All rights reserved. -- * -- * Redistribution and use in source and binary forms, with or without -- * modification, are permitted provided that the following conditions -- * are met: -- * 1. Redistributions of source code must retain the above copyright -- * notice, this list of conditions and the following disclaimer. -- * 2. Redistributions in binary form must reproduce the above copyright -- * notice, this list of conditions and the following disclaimer in the -- * documentation and/or other materials provided with the distribution. -- * 3. All advertising materials mentioning features or use of this software -- * must display the following acknowledgement: -- * This product includes software developed by the University of -- * California, Berkeley and its contributors. -- * 4. Neither the name of the University nor the names of its contributors -- * may be used to endorse or promote products derived from this software -- * without specific prior written permission. -- * -- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- * SUCH DAMAGE. -- * -- * @(#)ip.h 8.1 (Berkeley) 6/10/93 -- */ -- --/* -- * Definitions for internet protocol version 4. -- * Per RFC 791, September 1981. -- */ -- --/* -- * Structure of an internet header, naked of options. -- */ --struct ip -- { --#if __BYTE_ORDER == __LITTLE_ENDIAN -- u_int8_t ip_hl:4; /* header length */ -- u_int8_t ip_v:4; /* version */ --#endif --#if __BYTE_ORDER == __BIG_ENDIAN -- u_int8_t ip_v:4; /* version */ -- u_int8_t ip_hl:4; /* header length */ --#endif -- u_int8_t ip_tos; /* type of service */ -- u_short ip_len; /* total length */ -- u_short ip_id; /* identification */ -- u_short ip_off; /* fragment offset field */ --#define IP_RF 0x8000 /* reserved fragment flag */ --#define IP_DF 0x4000 /* dont fragment flag */ --#define IP_MF 0x2000 /* more fragments flag */ --#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ -- u_int8_t ip_ttl; /* time to live */ -- u_int8_t ip_p; /* protocol */ -- u_short ip_sum; /* checksum */ -- struct in_addr ip_src, ip_dst; /* source and dest address */ -- }; -- --/* -- * Time stamp option structure. -- */ --struct ip_timestamp -- { -- u_int8_t ipt_code; /* IPOPT_TS */ -- u_int8_t ipt_len; /* size of structure (variable) */ -- u_int8_t ipt_ptr; /* index of current entry */ --#if __BYTE_ORDER == __LITTLE_ENDIAN -- u_int8_t ipt_flg:4; /* flags, see below */ -- u_int8_t ipt_oflw:4; /* overflow counter */ --#endif --#if __BYTE_ORDER == __BIG_ENDIAN -- u_int8_t ipt_oflw:4; /* overflow counter */ -- u_int8_t ipt_flg:4; /* flags, see below */ --#endif -- u_int32_t data[9]; -- }; --#endif /* __USE_BSD */ -- -- --#endif /* netinet/ip.h */ -diff -durN orig/include-glibc/netinet/ip_icmp.h new/include-glibc/netinet/ip_icmp.h ---- orig/include-glibc/netinet/ip_icmp.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/netinet/ip_icmp.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,199 +0,0 @@ --#ifndef __NETINET_IP_ICMP_H --#define __NETINET_IP_ICMP_H 1 -- -- --#include --#include -- --#ifdef __USE_BSD --/* -- * Copyright (c) 1982, 1986, 1993 -- * The Regents of the University of California. All rights reserved. -- * -- * Redistribution and use in source and binary forms, with or without -- * modification, are permitted provided that the following conditions -- * are met: -- * 1. Redistributions of source code must retain the above copyright -- * notice, this list of conditions and the following disclaimer. -- * 2. Redistributions in binary form must reproduce the above copyright -- * notice, this list of conditions and the following disclaimer in the -- * documentation and/or other materials provided with the distribution. -- * 3. All advertising materials mentioning features or use of this software -- * must display the following acknowledgement: -- * This product includes software developed by the University of -- * California, Berkeley and its contributors. -- * 4. Neither the name of the University nor the names of its contributors -- * may be used to endorse or promote products derived from this software -- * without specific prior written permission. -- * -- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- * SUCH DAMAGE. -- * -- * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93 -- */ -- --#include --#include -- --/* -- * Internal of an ICMP Router Advertisement -- */ --struct icmp_ra_addr --{ -- u_int32_t ira_addr; -- u_int32_t ira_preference; --}; -- --struct icmp --{ -- u_int8_t icmp_type; /* type of message, see below */ -- u_int8_t icmp_code; /* type sub code */ -- u_int16_t icmp_cksum; /* ones complement checksum of struct */ -- union -- { -- u_char ih_pptr; /* ICMP_PARAMPROB */ -- struct in_addr ih_gwaddr; /* gateway address */ -- struct ih_idseq /* echo datagram */ -- { -- u_int16_t icd_id; -- u_int16_t icd_seq; -- } ih_idseq; -- u_int32_t ih_void; -- -- /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ -- struct ih_pmtu -- { -- u_int16_t ipm_void; -- u_int16_t ipm_nextmtu; -- } ih_pmtu; -- -- struct ih_rtradv -- { -- u_int8_t irt_num_addrs; -- u_int8_t irt_wpa; -- u_int16_t irt_lifetime; -- } ih_rtradv; -- } icmp_hun; --#define icmp_pptr icmp_hun.ih_pptr --#define icmp_gwaddr icmp_hun.ih_gwaddr --#define icmp_id icmp_hun.ih_idseq.icd_id --#define icmp_seq icmp_hun.ih_idseq.icd_seq --#define icmp_void icmp_hun.ih_void --#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void --#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu --#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs --#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa --#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime -- union -- { -- struct -- { -- u_int32_t its_otime; -- u_int32_t its_rtime; -- u_int32_t its_ttime; -- } id_ts; -- struct -- { -- struct ip idi_ip; -- /* options and then 64 bits of data */ -- } id_ip; -- struct icmp_ra_addr id_radv; -- u_int32_t id_mask; -- u_int8_t id_data[1]; -- } icmp_dun; --#define icmp_otime icmp_dun.id_ts.its_otime --#define icmp_rtime icmp_dun.id_ts.its_rtime --#define icmp_ttime icmp_dun.id_ts.its_ttime --#define icmp_ip icmp_dun.id_ip.idi_ip --#define icmp_radv icmp_dun.id_radv --#define icmp_mask icmp_dun.id_mask --#define icmp_data icmp_dun.id_data --}; -- --/* -- * Lower bounds on packet lengths for various types. -- * For the error advice packets must first insure that the -- * packet is large enough to contain the returned ip header. -- * Only then can we do the check to see if 64 bits of packet -- * data have been returned, since we need to check the returned -- * ip header length. -- */ --#define ICMP_MINLEN 8 /* abs minimum */ --#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */ --#define ICMP_MASKLEN 12 /* address mask */ --#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ --#ifndef _IP_VHL --#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) -- /* N.B.: must separately check that ip_hl >= 5 */ --#else --#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8) -- /* N.B.: must separately check that header length >= 5 */ --#endif -- --/* Definition of type and code fields. */ --/* defined above: ICMP_ECHOREPLY, ICMP_REDIRECT, ICMP_ECHO */ --#define ICMP_UNREACH 3 /* dest unreachable, codes: */ --#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ --#define ICMP_ROUTERADVERT 9 /* router advertisement */ --#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ --#define ICMP_TIMXCEED 11 /* time exceeded, code: */ --#define ICMP_PARAMPROB 12 /* ip header bad */ --#define ICMP_TSTAMP 13 /* timestamp request */ --#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ --#define ICMP_IREQ 15 /* information request */ --#define ICMP_IREQREPLY 16 /* information reply */ --#define ICMP_MASKREQ 17 /* address mask request */ --#define ICMP_MASKREPLY 18 /* address mask reply */ -- --#define ICMP_MAXTYPE 18 -- --/* UNREACH codes */ --#define ICMP_UNREACH_NET 0 /* bad net */ --#define ICMP_UNREACH_HOST 1 /* bad host */ --#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ --#define ICMP_UNREACH_PORT 3 /* bad port */ --#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ --#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ --#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ --#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ --#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ --#define ICMP_UNREACH_NET_PROHIB 9 /* net denied */ --#define ICMP_UNREACH_HOST_PROHIB 10 /* host denied */ --#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ --#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ --#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */ --#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */ --#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */ -- --/* REDIRECT codes */ --#define ICMP_REDIRECT_NET 0 /* for network */ --#define ICMP_REDIRECT_HOST 1 /* for host */ --#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ --#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ -- --/* TIMEXCEED codes */ --#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ --#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ -- --/* PARAMPROB code */ --#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */ -- --#define ICMP_INFOTYPE(type) \ -- ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ -- (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ -- (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ -- (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ -- (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) -- --#endif /* __USE_BSD */ -- --#endif /* netinet/ip_icmp.h */ -diff -durN orig/include-glibc/socketbits.h new/include-glibc/socketbits.h ---- orig/include-glibc/socketbits.h 2005-11-14 22:37:26.000000000 +1100 -+++ new/include-glibc/socketbits.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,280 +0,0 @@ --/* System-specific socket constants and types. Linux version. -- Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Library General Public License as -- published by the Free Software Foundation; either version 2 of the -- License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Library General Public License for more details. -- -- You should have received a copy of the GNU Library General Public -- License along with the GNU C Library; see the file COPYING.LIB. If not, -- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- Boston, MA 02111-1307, USA. */ -- --#ifndef _SOCKETBITS_H -- --#define _SOCKETBITS_H 1 --#include -- --#define __need_size_t --#define __need_NULL --#include -- -- --__BEGIN_DECLS -- --/* Type for length arguments in socket calls. */ --#ifndef __socklen_t_defined --typedef unsigned int socklen_t; --# define __socklen_t_defined --#endif -- --/* Types of sockets. */ --enum __socket_type --{ --#ifndef __mips__ -- SOCK_STREAM = 1, /* Sequenced, reliable, connection-based -- byte streams. */ --#define SOCK_STREAM SOCK_STREAM -- SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams -- of fixed maximum length. */ --#define SOCK_DGRAM SOCK_DGRAM --#else -- SOCK_STREAM = 2, /* Sequenced, reliable, connection-based -- byte streams. */ --#define SOCK_STREAM SOCK_STREAM -- SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams -- of fixed maximum length. */ --#define SOCK_DGRAM SOCK_DGRAM --#endif -- SOCK_RAW = 3, /* Raw protocol interface. */ --#define SOCK_RAW SOCK_RAW -- SOCK_RDM = 4, /* Reliably-delivered messages. */ --#define SOCK_RDM SOCK_RDM -- SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, -- datagrams of fixed maximum length. */ --#define SOCK_SEQPACKET SOCK_SEQPACKET -- SOCK_PACKET = 10 /* Linux specific way of getting packets -- at the dev level. For writing rarp and -- other similar things on the user level. */ --#define SOCK_PACKET SOCK_PACKET --}; -- --/* Protocol families. */ --#define PF_UNSPEC 0 /* Unspecified. */ --#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ --#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ --#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ --#define PF_INET 2 /* IP protocol family. */ --#define PF_AX25 3 /* Amateur Radio AX.25. */ --#define PF_IPX 4 /* Novell Internet Protocol. */ --#define PF_APPLETALK 5 /* Don't use this. */ --#define PF_NETROM 6 /* Amateur radio NetROM. */ --#define PF_BRIDGE 7 /* Multiprotocol bridge. */ --#define PF_AAL5 8 /* Reserved for Werner's ATM. */ --#define PF_X25 9 /* Reserved for X.25 project. */ --#define PF_INET6 10 /* IP version 6. */ --#define PF_ROSE 11 /* Amateur Radio X.25 PLP */ --#define PF_DECnet 12 /* Reserved for DECnet project */ --#define PF_NETBEUI 13 /* Reserved for 802.2LLC project*/ --#define PF_SECURITY 14 /* Security callback pseudo AF */ --#define PF_KEY 15 /* PF_KEY key management API */ --#define PF_NETLINK 16 --#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD */ --#define PF_PACKET 17 /* Packet family */ --#define PF_MAX 32 /* For now.. */ -- --/* Address families. */ --#define AF_UNSPEC PF_UNSPEC --#define AF_LOCAL PF_LOCAL --#define AF_UNIX PF_UNIX --#define AF_FILE PF_FILE --#define AF_INET PF_INET --#define AF_AX25 PF_AX25 --#define AF_IPX PF_IPX --#define AF_APPLETALK PF_APPLETALK --#define AF_NETROM PF_NETROM --#define AF_BRIDGE PF_BRIDGE --#define AF_AAL5 PF_AAL5 --#define AF_X25 PF_X25 --#define AF_INET6 PF_INET6 --#define AF_ROSE PF_ROSE --#define AF_DECnet PF_DECnet --#define AF_NETBEUI PF_NETBEUI --#define AF_SECURITY PF_SECURITY --#define pseudo_AF_KEY pseudo_PF_KEY --#define AF_NETLINK PF_NETLINK --#define AF_ROUTE PF_ROUTE --#define AF_PACKET PF_PACKET --#define AF_MAX PF_MAX -- --/* Socket level values. Others are defined in the appropriate headers. -- -- XXX These definitions also should go into the appropriate headers as -- far as they are available. */ --#define SOL_IPV6 41 --#define SOL_ICMPV6 58 --#define SOL_RAW 255 --#define SOL_AX25 257 --#define SOL_ATALK 258 --#define SOL_NETROM 259 --#define SOL_ROSE 260 --#define SOL_DECNET 261 --#define SOL_X25 262 -- --/* Maximum queue length specifiable by listen. */ --#define SOMAXCONN 128 -- --/* Get the definition of the macro to define the common sockaddr members. */ --#if __GLIBC_MINOR__ >= 1 --#include --#else --#include --#endif -- --/* Structure describing a generic socket address. */ --struct sockaddr -- { -- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ -- char sa_data[14]; /* Address data. */ -- }; -- -- --/* Bits in the FLAGS argument to `send', `recv', et al. */ --enum -- { -- MSG_OOB = 0x01, /* Process out-of-band data. */ --#define MSG_OOB MSG_OOB -- MSG_PEEK = 0x02, /* Peek at incoming messages. */ --#define MSG_PEEK MSG_PEEK -- MSG_DONTROUTE = 0x04, /* Don't use local routing. */ --#define MSG_DONTROUTE MSG_DONTROUTE -- MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ --#define MSG_CTRUNC MSG_CTRUNC -- MSG_PROBE = 0x10, --#define MSG_PROBE MSG_PROBE -- MSG_TRUNC = 0x20, --#define MSG_TRUNC MSG_TRUNC -- MSG_DONTWAIT = 0x40, --#define MSG_DONTWAIT MSG_DONTWAIT -- MSG_WAITALL = 0x100, --#define MSG_WAITALL MSG_WAITALL -- MSG_CONFIRM = 0x800, --#define MSG_CONFIRM MSG_CONFIRM -- MSG_ERRQUEUE = 0x2000, --#define MSG_ERRQUEUE MSG_ERRQUEUE -- MSG_NOSIGNAL = 0x4000, --#define MSG_NOSIGNAL MSG_NOSIGNAL -- }; -- --/* Structure describing messages sent by -- `sendmsg' and received by `recvmsg'. */ --struct msghdr -- { -- __ptr_t msg_name; /* Address to send to/receive from. */ -- socklen_t msg_namelen; /* Length of address data. */ -- -- struct iovec *msg_iov; /* Vector of data to send/receive into. */ -- size_t msg_iovlen; /* Number of elements in the vector. */ -- -- __ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */ -- size_t msg_controllen; /* Ancillary data buffer length. */ -- -- int msg_flags; /* Flags on received message. */ -- }; -- --/* Structure used for storage of ancillary data object information. */ --struct cmsghdr -- { -- size_t cmsg_len; /* Length of data in cmsg_data plus length -- of cmsghdr structure. */ -- int cmsg_level; /* Originating protocol. */ -- int cmsg_type; /* Protocol specific type. */ --#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 -- unsigned char __cmsg_data[0]; /* Ancillary data. */ --#endif -- }; -- --/* Ancillary data object manipulation macros. */ --#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 --# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) --#else --# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1)) --#endif --#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) --#define CMSG_FIRSTHDR(mhdr) \ -- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ -- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) --#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) ) --#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len)) --#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) -- -- --#ifndef _EXTERN_INLINE --# define _EXTERN_INLINE extern __inline --#endif --extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr, -- struct cmsghdr *__cmsg)); --_EXTERN_INLINE struct cmsghdr * --__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) --{ -- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) -- /* The kernel header does this so there may be a reason. */ -- return NULL; -- -- __cmsg = (struct cmsghdr *) -- ((unsigned char *) __cmsg + CMSG_ALIGN(__cmsg->cmsg_len)); -- -- if ( (unsigned char *) (__cmsg + 1) >= -- (unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) -- /* No more entries. */ -- return NULL; -- return __cmsg; --} -- --/* Socket level message types. This must match the definitions in -- . */ --enum -- { -- SCM_RIGHTS = 0x01, /* Data array contains access rights. */ --#define SCM_RIGHTS SCM_RIGHTS -- SCM_CREDENTIALS = 0x02, /* Data array is `struct ucred'. */ --#define SCM_CREDENTIALS SCM_CREDENTIALS -- }; -- -- -- --/* Get socket manipulation related informations from kernel headers. */ --#ifdef THIS_IS_CRAP --#ifndef _LINUX_TYPES_H --# define _LINUX_TYPES_H --#endif --#endif -- --#include --#include -- --struct ucred --{ -- __u32 pid; -- __u32 uid; -- __u32 gid; --}; -- -- --/* Structure used to manipulate the SO_LINGER option. */ --struct linger -- { -- int l_onoff; /* Nonzero to linger on close. */ -- int l_linger; /* Time to linger. */ -- }; -- --__END_DECLS -- --#endif /* socketbits.h */ diff --git a/recipes/iputils/files/standard-header-types.patch b/recipes/iputils/files/standard-header-types.patch deleted file mode 100644 index fac1ac60de..0000000000 --- a/recipes/iputils/files/standard-header-types.patch +++ /dev/null @@ -1,1072 +0,0 @@ -Move away from using the linux specific headers and types and use the -common glibc provided headers and types. Probably need to test this -on uclibc / klibc at some stage as well. - -diff -durN orig/arping.c new/arping.c ---- orig/arping.c 2005-11-14 22:38:27.000000000 +1100 -+++ new/arping.c 2005-11-14 22:52:15.000000000 +1100 -@@ -12,13 +12,13 @@ - #include - #include - #include --#include - #include - #include - #include - #include --#include --#include -+#include -+#include -+#include - #include - - #include -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - - #include "SNAPSHOT.h" - -@@ -101,7 +102,7 @@ - ah->ar_hrd = htons(ME->sll_hatype); - if (ah->ar_hrd == htons(ARPHRD_FDDI)) - ah->ar_hrd = htons(ARPHRD_ETHER); -- ah->ar_pro = htons(ETH_P_IP); -+ ah->ar_pro = htons(ETHERTYPE_IP); - ah->ar_hln = ME->sll_halen; - ah->ar_pln = 4; - ah->ar_op = advert ? htons(ARPOP_REPLY) : htons(ARPOP_REQUEST); -@@ -213,7 +214,7 @@ - return 0; - - /* Protocol must be IP. */ -- if (ah->ar_pro != htons(ETH_P_IP)) -+ if (ah->ar_pro != htons(ETHERTYPE_IP)) - return 0; - if (ah->ar_pln != 4) - return 0; -@@ -434,7 +435,7 @@ - } - } else if (!dad) { - int on = 1; -- int alen = sizeof(saddr); -+ unsigned int alen = sizeof(saddr); - - saddr.sin_port = htons(1025); - saddr.sin_addr = dst; -@@ -456,14 +457,14 @@ - - me.sll_family = AF_PACKET; - me.sll_ifindex = ifindex; -- me.sll_protocol = htons(ETH_P_ARP); -+ me.sll_protocol = htons(ETHERTYPE_ARP); - if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) { - perror("bind"); - exit(2); - } - - if (1) { -- int alen = sizeof(me); -+ unsigned int alen = sizeof(me); - if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) { - perror("getsockname"); - exit(2); -@@ -495,9 +496,9 @@ - - while(1) { - sigset_t sset, osset; -- char packet[4096]; -+ unsigned char packet[4096]; - struct sockaddr_ll from; -- int alen = sizeof(from); -+ unsigned int alen = sizeof(from); - int cc; - - if ((cc = recvfrom(s, packet, sizeof(packet), 0, -diff -durN orig/linux-errqueue.h new/linux-errqueue.h ---- orig/linux-errqueue.h 1970-01-01 10:00:00.000000000 +1000 -+++ new/linux-errqueue.h 2005-11-14 22:39:06.000000000 +1100 -@@ -0,0 +1,22 @@ -+#ifndef LINUX_ERRQUEUE_H -+#define LINUX_ERRQUEUE_H 1 -+ -+struct sock_extended_err -+{ -+ uint32_t ee_errno; -+ uint8_t ee_origin; -+ uint8_t ee_type; -+ uint8_t ee_code; -+ uint8_t ee_pad; -+ uint32_t ee_info; -+ uint32_t ee_data; -+}; -+ -+#define SO_EE_ORIGIN_NONE 0 -+#define SO_EE_ORIGIN_LOCAL 1 -+#define SO_EE_ORIGIN_ICMP 2 -+#define SO_EE_ORIGIN_ICMP6 3 -+ -+#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) -+ -+#endif -diff -durN orig/ping6.c new/ping6.c ---- orig/ping6.c 2005-11-14 22:38:28.000000000 +1100 -+++ new/ping6.c 2005-11-14 22:39:06.000000000 +1100 -@@ -66,34 +66,19 @@ - * More statistics could always be gathered. - * This program has to run SUID to ROOT to access the ICMP socket. - */ --#include "ping_common.h" -- --#include --#include --#include -- --#define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0) --#define BIT_SET(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] |= (1U << ((nr) & 31)); } while(0) --#define BIT_TEST(nr, addr) do { (__u32 *)(addr))[(nr) >> 5] & (1U << ((nr) & 31)); } while(0) -- --#define ICMPV6_FILTER_WILLPASS(type, filterp) \ -- (BIT_TEST((type), filterp) == 0) -- --#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \ -- BIT_TEST((type), filterp) - --#define ICMPV6_FILTER_SETPASS(type, filterp) \ -- BIT_CLEAR((type), filterp) -- --#define ICMPV6_FILTER_SETBLOCK(type, filterp) \ -- BIT_SET((type), filterp) -- --#define ICMPV6_FILTER_SETPASSALL(filterp) \ -- memset(filterp, 0, sizeof(struct icmp6_filter)); -+#include "ping_common.h" -+#include -+#include -+#include - --#define ICMPV6_FILTER_SETBLOCKALL(filterp) \ -- memset(filterp, 0xFF, sizeof(struct icmp6_filter)); -+/* define to specify we want type0 routing headers */ -+#define IPV6_SRCRT_TYPE_0 0 - -+/* without this it won't link, seems like a hack to me ;( */ -+#ifndef __constant_htons -+#define __constant_htons(x) htons(x) -+#endif - - #define MAXPACKET 128000 /* max packet size */ - -@@ -102,8 +87,8 @@ - #endif - - --__u32 flowlabel; --__u32 tclass; -+uint32_t flowlabel; -+uint32_t tclass; - struct cmsghdr *srcrt; - - struct sockaddr_in6 whereto; /* who to ping */ -@@ -115,7 +100,7 @@ - - static char * pr_addr(struct in6_addr *addr); - static char * pr_addr_n(struct in6_addr *addr); --static int pr_icmph(__u8 type, __u8 code, __u32 info); -+static int pr_icmph(uint8_t type, uint8_t code, uint32_t info); - static void usage(void) __attribute((noreturn)); - - struct sockaddr_in6 source; -@@ -137,7 +122,7 @@ - if (type != 0 || segments > 24) - return 0; - -- return (sizeof(struct cmsghdr) + sizeof(struct rt0_hdr) + -+ return (sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0) + - segments * sizeof(struct in6_addr)); - } - -@@ -148,10 +133,10 @@ - if (type) - return NULL; - -- memset(bp, 0, sizeof(struct cmsghdr) + sizeof(struct rt0_hdr)); -+ memset(bp, 0, sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0)); - cmsg = (struct cmsghdr *) bp; - -- cmsg->cmsg_len = sizeof(struct cmsghdr) + sizeof(struct rt0_hdr); -+ cmsg->cmsg_len = sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0); - cmsg->cmsg_level = SOL_IPV6; - cmsg->cmsg_type = IPV6_RTHDR; - -@@ -160,14 +145,14 @@ - - int inet6_srcrt_add(struct cmsghdr *cmsg, const struct in6_addr *addr) - { -- struct rt0_hdr *hdr; -+ struct ip6_rthdr0 *hdr; - -- hdr = (struct rt0_hdr *) CMSG_DATA(cmsg); -+ hdr = (struct ip6_rthdr0 *) CMSG_DATA(cmsg); - - cmsg->cmsg_len += sizeof(struct in6_addr); -- hdr->rt_hdr.hdrlen += sizeof(struct in6_addr) / 8; -+ hdr->ip6r0_len += sizeof(struct in6_addr) / 8; - -- memcpy(&hdr->addr[hdr->rt_hdr.segments_left++], addr, -+ memcpy(&hdr->ip6r0_addr[hdr->ip6r0_segleft++], addr, - sizeof(struct in6_addr)); - - return 0; -@@ -313,7 +298,7 @@ - hostname = target; - - if (ipv6_addr_any(&source.sin6_addr)) { -- int alen; -+ unsigned int alen; - int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0); - - if (probe_fd < 0) { -@@ -440,22 +425,22 @@ - /* - * select icmp echo reply as icmp type to receive - */ -- ICMPV6_FILTER_SETBLOCKALL(&filter); -+ ICMP6_FILTER_SETBLOCKALL(&filter); - - if (!working_recverr) { -- ICMPV6_FILTER_SETPASS(ICMPV6_DEST_UNREACH, &filter); -- ICMPV6_FILTER_SETPASS(ICMPV6_PKT_TOOBIG, &filter); -- ICMPV6_FILTER_SETPASS(ICMPV6_TIME_EXCEED, &filter); -- ICMPV6_FILTER_SETPASS(ICMPV6_PARAMPROB, &filter); -+ ICMP6_FILTER_SETPASS(ICMP6_DST_UNREACH, &filter); -+ ICMP6_FILTER_SETPASS(ICMP6_PACKET_TOO_BIG, &filter); -+ ICMP6_FILTER_SETPASS(ICMP6_TIME_EXCEEDED, &filter); -+ ICMP6_FILTER_SETPASS(ICMP6_PARAM_PROB, &filter); - } - -- ICMPV6_FILTER_SETPASS(ICMPV6_ECHO_REPLY, &filter); -+ ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY, &filter); - -- err = setsockopt(icmp_sock, SOL_ICMPV6, ICMPV6_FILTER, &filter, -+ err = setsockopt(icmp_sock, SOL_ICMPV6, ICMP6_FILTER, &filter, - sizeof(struct icmp6_filter)); - - if (err < 0) { -- perror("setsockopt(ICMPV6_FILTER)"); -+ perror("setsockopt(ICMP6_FILTER)"); - exit(2); - } - -@@ -556,7 +541,7 @@ - struct msghdr msg; - struct cmsghdr *cmsg; - struct sock_extended_err *e; -- struct icmp6hdr icmph; -+ struct icmp6_hdr icmph; - struct sockaddr_in6 target; - int net_errors = 0; - int local_errors = 0; -@@ -602,8 +587,8 @@ - - if (res < sizeof(icmph) || - memcmp(&target.sin6_addr, &whereto.sin6_addr, 16) || -- icmph.icmp6_type != ICMPV6_ECHO_REQUEST || -- icmph.icmp6_identifier != ident) { -+ icmph.icmp6_type != ICMP6_ECHO_REQUEST || -+ icmph.icmp6_id != ident) { - /* Not our error, not an error at all. Clear. */ - saved_errno = 0; - goto out; -@@ -616,7 +601,7 @@ - if (options & F_FLOOD) { - write(STDOUT_FILENO, "\bE", 2); - } else { -- printf("From %s icmp_seq=%u ", pr_addr(&sin6->sin6_addr), ntohs(icmph.icmp6_sequence)); -+ printf("From %s icmp_seq=%u ", pr_addr(&sin6->sin6_addr), ntohs(icmph.icmp6_seq)); - pr_icmph(e->ee_type, e->ee_code, e->ee_info); - putchar('\n'); - fflush(stdout); -@@ -638,16 +623,16 @@ - */ - int send_probe(void) - { -- struct icmp6hdr *icmph; -+ struct icmp6_hdr *icmph; - int cc; - int i; - -- icmph = (struct icmp6hdr *)outpack; -- icmph->icmp6_type = ICMPV6_ECHO_REQUEST; -+ icmph = (struct icmp6_hdr *)outpack; -+ icmph->icmp6_type = ICMP6_ECHO_REQUEST; - icmph->icmp6_code = 0; - icmph->icmp6_cksum = 0; -- icmph->icmp6_sequence = htons(ntransmitted+1); -- icmph->icmp6_identifier = ident; -+ icmph->icmp6_seq = htons(ntransmitted+1); -+ icmph->icmp6_id = ident; - - CLR((ntransmitted+1) % mx_dup_ck); - -@@ -693,9 +678,9 @@ - parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv) - { - struct sockaddr_in6 *from = addr; -- __u8 *buf = msg->msg_iov->iov_base; -+ uint8_t *buf = msg->msg_iov->iov_base; - struct cmsghdr *c; -- struct icmp6hdr *icmph; -+ struct icmp6_hdr *icmph; - int hops = -1; - - for (c = CMSG_FIRSTHDR(msg); c; c = CMSG_NXTHDR(msg, c)) { -@@ -710,24 +695,24 @@ - - /* Now the ICMP part */ - -- icmph = (struct icmp6hdr *) buf; -+ icmph = (struct icmp6_hdr *) buf; - if (cc < 8) { - if (options & F_VERBOSE) - fprintf(stderr, "ping: packet too short (%d bytes)\n", cc); - return 1; - } - -- if (icmph->icmp6_type == ICMPV6_ECHO_REPLY) { -- if (icmph->icmp6_identifier != ident) -+ if (icmph->icmp6_type == ICMP6_ECHO_REPLY) { -+ if (icmph->icmp6_id != ident) - return 1; -- if (gather_statistics((__u8*)(icmph+1), cc, -- ntohs(icmph->icmp6_sequence), -+ if (gather_statistics((uint8_t*)(icmph+1), cc, -+ ntohs(icmph->icmp6_seq), - hops, 0, tv, pr_addr(&from->sin6_addr))) - return 0; - } else { - int nexthdr; -- struct ipv6hdr *iph1 = (struct ipv6hdr*)(icmph+1); -- struct icmp6hdr *icmph1 = (struct icmp6hdr *)(iph1+1); -+ struct ip6_hdr *iph1 = (struct ip6_hdr*)(icmph+1); -+ struct icmp6_hdr *icmph1 = (struct icmp6_hdr *)(iph1+1); - - /* We must not ever fall here. All the messages but - * echo reply are blocked by filter and error are -@@ -736,23 +721,23 @@ - * using RECVRERR. :-) - */ - -- if (cc < 8+sizeof(struct ipv6hdr)+8) -+ if (cc < 8+sizeof(struct ip6_hdr)+8) - return 1; - -- if (memcmp(&iph1->daddr, &whereto.sin6_addr, 16)) -+ if (memcmp(&iph1->ip6_dst, &whereto.sin6_addr, 16)) - return 1; - -- nexthdr = iph1->nexthdr; -+ nexthdr = iph1->ip6_nxt; - - if (nexthdr == 44) { -- nexthdr = *(__u8*)icmph1; -+ nexthdr = *(uint8_t*)icmph1; - icmph1++; - } - if (nexthdr == IPPROTO_ICMPV6) { -- if (icmph1->icmp6_type != ICMPV6_ECHO_REQUEST || -- icmph1->icmp6_identifier != ident) -+ if (icmph1->icmp6_type != ICMP6_ECHO_REQUEST || -+ icmph1->icmp6_id != ident) - return 1; -- acknowledge(ntohs(icmph1->icmp6_sequence)); -+ acknowledge(ntohs(icmph1->icmp6_seq)); - if (working_recverr) - return 0; - nerrors++; -@@ -760,7 +745,7 @@ - write(STDOUT_FILENO, "\bE", 2); - return 0; - } -- printf("From %s: icmp_seq=%u ", pr_addr(&from->sin6_addr), ntohs(icmph1->icmp6_sequence)); -+ printf("From %s: icmp_seq=%u ", pr_addr(&from->sin6_addr), ntohs(icmph1->icmp6_seq)); - } else { - /* We've got something other than an ECHOREPLY */ - if (!(options & F_VERBOSE) || uid) -@@ -780,25 +765,25 @@ - } - - --int pr_icmph(__u8 type, __u8 code, __u32 info) -+int pr_icmph(uint8_t type, uint8_t code, uint32_t info) - { - switch(type) { -- case ICMPV6_DEST_UNREACH: -+ case ICMP6_DST_UNREACH: - printf("Destination unreachable: "); - switch (code) { -- case ICMPV6_NOROUTE: -+ case ICMP6_DST_UNREACH_NOROUTE: - printf("No route"); - break; -- case ICMPV6_ADM_PROHIBITED: -+ case ICMP6_DST_UNREACH_ADMIN: - printf("Administratively prohibited"); - break; -- case ICMPV6_NOT_NEIGHBOUR: -+ case ICMP6_DST_UNREACH_NOTNEIGHBOR: - printf("Not neighbour"); - break; -- case ICMPV6_ADDR_UNREACH: -+ case ICMP6_DST_UNREACH_ADDR: - printf("Address unreachable"); - break; -- case ICMPV6_PORT_UNREACH: -+ case ICMP6_DST_UNREACH_NOPORT: - printf("Port unreachable"); - break; - default: -@@ -806,45 +791,45 @@ - break; - } - break; -- case ICMPV6_PKT_TOOBIG: -+ case ICMP6_PACKET_TOO_BIG: - printf("Packet too big: mtu=%u", info); - if (code) - printf(", code=%d", code); - break; -- case ICMPV6_TIME_EXCEED: -+ case ICMP6_TIME_EXCEEDED: - printf("Time exceeded: "); -- if (code == ICMPV6_EXC_HOPLIMIT) -+ if (code == ICMP6_TIME_EXCEED_TRANSIT) - printf("Hop limit"); -- else if (code == ICMPV6_EXC_FRAGTIME) -+ else if (code == ICMP6_TIME_EXCEED_REASSEMBLY) - printf("Defragmentation failure"); - else - printf("code %d", code); - break; -- case ICMPV6_PARAMPROB: -+ case ICMP6_PARAM_PROB: - printf("Parameter problem: "); -- if (code == ICMPV6_HDR_FIELD) -+ if (code == ICMP6_PARAMPROB_HEADER) - printf("Wrong header field "); -- else if (code == ICMPV6_UNK_NEXTHDR) -+ else if (code == ICMP6_PARAMPROB_NEXTHEADER) - printf("Unknown header "); -- else if (code == ICMPV6_UNK_OPTION) -+ else if (code == ICMP6_PARAMPROB_OPTION) - printf("Unknown option "); - else - printf("code %d ", code); - printf ("at %u", info); - break; -- case ICMPV6_ECHO_REQUEST: -+ case ICMP6_ECHO_REQUEST: - printf("Echo request"); - break; -- case ICMPV6_ECHO_REPLY: -+ case ICMP6_ECHO_REPLY: - printf("Echo reply"); - break; -- case ICMPV6_MGM_QUERY: -+ case ICMP6_MEMBERSHIP_QUERY: - printf("MLD Query"); - break; -- case ICMPV6_MGM_REPORT: -+ case ICMP6_MEMBERSHIP_REPORT: - printf("MLD Report"); - break; -- case ICMPV6_MGM_REDUCTION: -+ case ICMP6_MEMBERSHIP_REDUCTION: - printf("MLD Reduction"); - break; - default: -@@ -856,6 +841,7 @@ - - #include - -+ - void install_filter(void) - { - static int once; -@@ -864,7 +850,7 @@ - BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0xAAAA, 0, 1), /* Ours? */ - BPF_STMT(BPF_RET|BPF_K, ~0U), /* Yes, it passes. */ - BPF_STMT(BPF_LD|BPF_B|BPF_ABS, 0), /* Load icmp type */ -- BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ICMPV6_ECHO_REPLY, 1, 0), /* Echo? */ -+ BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ICMP6_ECHO_REPLY, 1, 0), /* Echo? */ - BPF_STMT(BPF_RET|BPF_K, ~0U), /* No. It passes. This must not happen. */ - BPF_STMT(BPF_RET|BPF_K, 0), /* Echo with wrong ident. Reject. */ - }; -@@ -895,7 +881,7 @@ - struct hostent *hp = NULL; - - if (!(options&F_NUMERIC)) -- hp = gethostbyaddr((__u8*)addr, sizeof(struct in6_addr), AF_INET6); -+ hp = gethostbyaddr((uint8_t*)addr, sizeof(struct in6_addr), AF_INET6); - - return hp ? hp->h_name : pr_addr_n(addr); - } -diff -durN orig/ping.c new/ping.c ---- orig/ping.c 2005-11-14 22:38:28.000000000 +1100 -+++ new/ping.c 2005-11-14 22:39:06.000000000 +1100 -@@ -57,12 +57,21 @@ - * More statistics could always be gathered. - * This program has to run SUID to ROOT to access the ICMP socket. - */ -- - #include "ping_common.h" - - #include - #include - -+/* from linux/icmp.h */ -+#define ICMP_FILTER 1 -+struct icmp_filter { -+ uint32_t data; -+}; -+ -+/* without this it won't link, seems like a hack to me ;( */ -+#ifndef __constant_htons -+#define __constant_htons(x) htons(x) -+#endif - - #define MAXIPLEN 60 - #define MAXICMPLEN 76 -@@ -72,7 +81,7 @@ - - static int ts_type; - static int nroute = 0; --static __u32 route[10]; -+static uint32_t route[10]; - - - -@@ -85,12 +94,12 @@ - - static int broadcast_pings = 0; - --static char *pr_addr(__u32); -+static char *pr_addr(uint32_t); - static void pr_options(unsigned char * cp, int hlen); - static void pr_iph(struct iphdr *ip); - static void usage(void) __attribute__((noreturn)); - static u_short in_cksum(const u_short *addr, int len, u_short salt); --static void pr_icmph(__u8 type, __u8 code, __u32 info, struct icmphdr *icp); -+static void pr_icmph(uint8_t type, uint8_t code, uint32_t info, struct icmphdr *icp); - static int parsetos(char *str); - - static struct { -@@ -169,8 +178,8 @@ - - if (sscanf(optarg, "%u.%u.%u.%u%c", - &i1, &i2, &i3, &i4, &dummy) == 4) { -- __u8 *ptr; -- ptr = (__u8*)&source.sin_addr; -+ uint8_t *ptr; -+ ptr = (uint8_t*)&source.sin_addr; - ptr[0] = i1; - ptr[1] = i2; - ptr[2] = i3; -@@ -249,7 +258,7 @@ - } - - if (source.sin_addr.s_addr == 0) { -- int alen; -+ unsigned int alen; - struct sockaddr_in dst = whereto; - int probe_fd = socket(AF_INET, SOCK_DGRAM, 0); - -@@ -409,7 +418,7 @@ - int i; - rspace[1] = 4+nroute*8; - for (i=0; imsg_iov->iov_base; -+ uint8_t *buf = msg->msg_iov->iov_base; - struct icmphdr *icp; - struct iphdr *ip; - int hlen; -@@ -694,7 +703,7 @@ - if (icp->type == ICMP_ECHOREPLY) { - if (icp->un.echo.id != ident) - return 1; /* 'Twas not our ECHO */ -- if (gather_statistics((__u8*)(icp+1), cc, -+ if (gather_statistics((uint8_t*)(icp+1), cc, - ntohs(icp->un.echo.sequence), - ip->ttl, 0, tv, pr_addr(from->sin_addr.s_addr))) - return 0; -@@ -826,7 +835,7 @@ - * pr_icmph -- - * Print a descriptive string about an ICMP header. - */ --void pr_icmph(__u8 type, __u8 code, __u32 info, struct icmphdr *icp) -+void pr_icmph(uint8_t type, uint8_t code, uint32_t info, struct icmphdr *icp) - { - switch(type) { - case ICMP_ECHOREPLY: -@@ -1008,7 +1017,7 @@ - cp++; - if (j > IPOPT_MINOFF) { - for (;;) { -- __u32 address; -+ uint32_t address; - memcpy(&address, cp, 4); - cp += 4; - if (address == 0) -@@ -1043,7 +1052,7 @@ - printf("\nRR: "); - cp++; - for (;;) { -- __u32 address; -+ uint32_t address; - memcpy(&address, cp, 4); - cp += 4; - if (address == 0) -@@ -1059,7 +1068,7 @@ - case IPOPT_TS: - { - int stdtime = 0, nonstdtime = 0; -- __u8 flags; -+ uint8_t flags; - j = *++cp; /* get length */ - i = *++cp; /* and pointer */ - if (i > j) -@@ -1074,7 +1083,7 @@ - long l; - - if ((flags&0xF) != IPOPT_TS_TSONLY) { -- __u32 address; -+ uint32_t address; - memcpy(&address, cp, 4); - cp += 4; - if (address == 0) -@@ -1152,7 +1161,7 @@ - * a hostname. - */ - char * --pr_addr(__u32 addr) -+pr_addr(uint32_t addr) - { - struct hostent *hp; - static char buf[4096]; -diff -durN orig/ping_common.c new/ping_common.c ---- orig/ping_common.c 2005-11-14 22:38:28.000000000 +1100 -+++ new/ping_common.c 2005-11-14 22:39:06.000000000 +1100 -@@ -8,7 +8,7 @@ - int ttl; - int rtt; - int rtt_addend; --__u16 acked; -+uint16_t acked; - - int mx_dup_ck = MAX_DUP_CHK; - char rcvd_tbl[MAX_DUP_CHK / 8]; -@@ -62,12 +62,12 @@ - /* Fills all the outpack, excluding ICMP header, but _including_ - * timestamp area with supplied pattern. - */ --static void fill(char *patp) -+static void fill(unsigned char *patp) - { - int ii, jj, kk; - int pat[16]; -- char *cp; -- char *bp = outpack+8; -+ unsigned char *cp; -+ unsigned char *bp = outpack+8; - - for (cp = patp; *cp; cp++) { - if (!isxdigit(*cp)) { -@@ -76,7 +76,7 @@ - exit(2); - } - } -- ii = sscanf(patp, -+ ii = sscanf((char*)patp, - "%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x", - &pat[0], &pat[1], &pat[2], &pat[3], &pat[4], &pat[5], &pat[6], - &pat[7], &pat[8], &pat[9], &pat[10], &pat[11], &pat[12], -@@ -173,7 +173,7 @@ - break; - case 'p': /* fill buffer with user pattern */ - options |= F_PINGFILLED; -- fill(optarg); -+ fill((unsigned char*)optarg); - break; - case 'q': - options |= F_QUIET; -@@ -393,7 +393,7 @@ - void sock_setbufs(int icmp_sock, int alloc) - { - int rcvbuf, hold; -- int tmplen = sizeof(hold); -+ unsigned int tmplen = sizeof(hold); - - if (!sndbuf) - sndbuf = alloc; -@@ -466,7 +466,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! -@@ -503,7 +503,7 @@ - } - } - --void main_loop(int icmp_sock, __u8 *packet, int packlen) -+void main_loop(int icmp_sock, uint8_t *packet, int packlen) - { - char addrbuf[128]; - char ans_data[4096]; -@@ -646,7 +646,7 @@ - finish(); - } - --int gather_statistics(__u8 *ptr, int cc, __u16 seq, int hops, -+int gather_statistics(uint8_t *ptr, int cc, uint16_t seq, int hops, - int csfailed, struct timeval *tv, char *from) - { - int dupflag = 0; -@@ -711,7 +711,7 @@ - write(STDOUT_FILENO, "\bC", 1); - } else { - int i; -- __u8 *cp, *dp; -+ uint8_t *cp, *dp; - printf("%d bytes from %s: icmp_seq=%u", cc, from, seq); - - if (hops >= 0) -diff -durN orig/ping_common.h new/ping_common.h ---- orig/ping_common.h 2005-11-14 22:38:28.000000000 +1100 -+++ new/ping_common.h 2005-11-14 22:39:06.000000000 +1100 -@@ -4,7 +4,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -16,9 +15,9 @@ - #include - #include - #include -- - #include - #include -+#include - #include - - #include "SNAPSHOT.h" -@@ -109,7 +108,7 @@ - extern long long tsum; /* sum of all times, for doing average */ - extern long long tsum2; - extern int rtt; --extern __u16 acked; -+extern uint16_t acked; - extern int pipesize; - - #define COMMON_OPTIONS \ -@@ -160,18 +159,18 @@ - - static inline int in_flight(void) - { -- __u16 diff = (__u16)ntransmitted - acked; -+ uint16_t diff = (uint16_t)ntransmitted - acked; - return (diff<=0x7FFF) ? diff : ntransmitted-nreceived-nerrors; - } - --static inline void acknowledge(__u16 seq) -+static inline void acknowledge(uint16_t seq) - { -- __u16 diff = (__u16)ntransmitted - seq; -+ uint16_t diff = (uint16_t)ntransmitted - seq; - if (diff <= 0x7FFF) { - if ((int)diff+1 > pipesize) - pipesize = (int)diff+1; -- if ((__s16)(seq - acked) > 0 || -- (__u16)ntransmitted - acked > 0x7FFF) -+ if ((int16_t)(seq - acked) > 0 || -+ (uint16_t)ntransmitted - acked > 0x7FFF) - acked = seq; - } - } -@@ -180,8 +179,8 @@ - { - ntransmitted++; - /* Invalidate acked, if 16 bit seq overflows. */ -- if ((__u16)ntransmitted - acked > 0x7FFF) -- acked = (__u16)ntransmitted + 1; -+ if ((uint16_t)ntransmitted - acked > 0x7FFF) -+ acked = (uint16_t)ntransmitted + 1; - } - - -@@ -193,9 +192,9 @@ - extern int pinger(void); - extern void sock_setbufs(int icmp_sock, int alloc); - extern void setup(int icmp_sock); --extern void main_loop(int icmp_sock, __u8 *buf, int buflen) __attribute__((noreturn)); -+extern void main_loop(int icmp_sock, uint8_t *buf, int buflen) __attribute__((noreturn)); - extern void finish(void) __attribute__((noreturn)); - extern void status(void); - extern void common_options(int ch); --extern int gather_statistics(__u8 *ptr, int cc, __u16 seq, int hops, -+extern int gather_statistics(uint8_t *ptr, int cc, uint16_t seq, int hops, - int csfailed, struct timeval *tv, char *from); -diff -durN orig/tracepath6.c new/tracepath6.c ---- orig/tracepath6.c 2005-11-14 22:38:28.000000000 +1100 -+++ new/tracepath6.c 2005-11-14 22:39:54.000000000 +1100 -@@ -14,16 +14,14 @@ - #include - #include - #include -- --#include --#include - #include - #include - #include - #include - #include --#include -+#include - #include -+#include "linux-errqueue.h" - - int overhead = 48; - int mtu = 128000; -@@ -35,7 +33,7 @@ - - struct probehdr - { -- __u32 ttl; -+ uint32_t ttl; - struct timeval tv; - }; - -@@ -116,7 +114,7 @@ - } - } else if (cmsg->cmsg_level == SOL_IP) { - if (cmsg->cmsg_type == IP_TTL) { -- rethops = *(__u8*)CMSG_DATA(cmsg); -+ rethops = *(uint8_t*)CMSG_DATA(cmsg); - } - } - } -diff -durN orig/tracepath.c new/tracepath.c ---- orig/tracepath.c 2005-11-14 22:38:28.000000000 +1100 -+++ new/tracepath.c 2005-11-14 22:39:06.000000000 +1100 -@@ -13,7 +13,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -22,6 +21,7 @@ - #include - #include - #include -+#include "linux-errqueue.h" - - struct hhistory - { -@@ -33,7 +33,7 @@ - int hisptr; - - struct sockaddr_in target; --__u16 base_port; -+uint16_t base_port; - - const int overhead = 28; - int mtu = 65535; -@@ -43,7 +43,7 @@ - - struct probehdr - { -- __u32 ttl; -+ uint32_t ttl; - struct timeval tv; - }; - -@@ -80,7 +80,7 @@ - memset(&rcvbuf, -1, sizeof(rcvbuf)); - iov.iov_base = &rcvbuf; - iov.iov_len = sizeof(rcvbuf); -- msg.msg_name = (__u8*)&addr; -+ msg.msg_name = (uint8_t*)&addr; - msg.msg_namelen = sizeof(addr); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; -diff -durN orig/traceroute6.c new/traceroute6.c ---- orig/traceroute6.c 2005-11-14 22:38:28.000000000 +1100 -+++ new/traceroute6.c 2005-11-14 22:40:56.000000000 +1100 -@@ -245,11 +245,8 @@ - #include - #include - #include -- --#include --#include -- --#include -+#include -+#include - - #include - -@@ -314,8 +311,8 @@ - - struct pkt_format - { -- __u32 ident; -- __u32 seq; -+ uint32_t ident; -+ uint32_t seq; - struct timeval tv; - }; - -@@ -497,7 +494,7 @@ - (char *)&on, sizeof(on)); - - if (source == NULL) { -- int alen; -+ unsigned int alen; - int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0); - - if (probe_fd < 0) { -@@ -574,20 +571,20 @@ - } - Printf(" %g ms", deltaT(&t1, &t2)); - switch(i - 1) { -- case ICMPV6_PORT_UNREACH: -+ case ICMP6_DST_UNREACH_NOPORT: - ++got_there; - break; - -- case ICMPV6_NOROUTE: -+ case ICMP6_DST_UNREACH_NOROUTE: - ++unreachable; - Printf(" !N"); - break; -- case ICMPV6_ADDR_UNREACH: -+ case ICMP6_DST_UNREACH_ADDR: - ++unreachable; - Printf(" !H"); - break; - -- case ICMPV6_ADM_PROHIBITED: -+ case ICMP6_DST_UNREACH_ADMIN: - ++unreachable; - Printf(" !S"); - break; -@@ -618,7 +615,7 @@ - fd_set fds; - static struct timeval wait; - int cc = 0; -- int fromlen = sizeof (*from); -+ unsigned int fromlen = sizeof (*from); - - FD_ZERO(&fds); - FD_SET(sock, &fds); -@@ -727,24 +724,24 @@ - int packet_ok(u_char *buf, int cc, struct sockaddr_in6 *from, int seq, - struct timeval *tv) - { -- struct icmp6hdr *icp; -+ struct icmp6_hdr *icp; - u_char type, code; - -- icp = (struct icmp6hdr *) buf; -+ icp = (struct icmp6_hdr *) buf; - - type = icp->icmp6_type; - code = icp->icmp6_code; - -- if ((type == ICMPV6_TIME_EXCEED && code == ICMPV6_EXC_HOPLIMIT) || -- type == ICMPV6_DEST_UNREACH) -+ if ((type == ICMP6_TIME_EXCEEDED && code == ICMP6_TIME_EXCEED_TRANSIT) || -+ type == ICMP6_DST_UNREACH) - { -- struct ipv6hdr *hip; -+ struct ip6_hdr *hip; - struct udphdr *up; - int nexthdr; - -- hip = (struct ipv6hdr *) (icp + 1); -+ hip = (struct ip6_hdr *) (icp + 1); - up = (struct udphdr *)(hip+1); -- nexthdr = hip->nexthdr; -+ nexthdr = hip->ip6_nxt; - - if (nexthdr == 44) { - nexthdr = *(unsigned char*)up; -@@ -760,29 +757,29 @@ - ntohl(pkt->seq) == seq) - { - *tv = pkt->tv; -- return (type == ICMPV6_TIME_EXCEED? -1 : code+1); -+ return (type == ICMP6_TIME_EXCEEDED? -1 : code+1); - } - } - - } - - if (verbose) { -- struct ipv6hdr *hip; -- __u32 *lp; -+ struct ip6_hdr *hip; -+ uint32_t *lp; - char pa1[MAXHOSTNAMELEN]; - char pa2[MAXHOSTNAMELEN]; - int i; -- hip = (struct ipv6hdr *) (icp + 1); -- lp = (__u32 *) (icp + 1); -+ hip = (struct ip6_hdr *) (icp + 1); -+ lp = (uint32_t *) (icp + 1); - - Printf("\n%d bytes from %s to %s", cc, -- inet_ntop(AF_INET6, &hip->saddr, pa1, sizeof(pa1)), -- inet_ntop(AF_INET6, &hip->daddr, pa2, sizeof(pa2))); -+ inet_ntop(AF_INET6, &hip->ip6_src, pa1, sizeof(pa1)), -+ inet_ntop(AF_INET6, &hip->ip6_dst, pa2, sizeof(pa2))); - - Printf(": icmp type %d (%s) code %d\n", type, pr_type(type), - icp->icmp6_code); - -- for (i = sizeof(struct ipv6hdr); i < cc ; i += 4) -+ for (i = sizeof(struct ip6_hdr); i < cc ; i += 4) - Printf("%2d: x%8.8x\n", i, *lp++); - } - diff --git a/recipes/iputils/files/tracepath6-mtu-opt.patch b/recipes/iputils/files/tracepath6-mtu-opt.patch deleted file mode 100644 index 63c8e76b3a..0000000000 --- a/recipes/iputils/files/tracepath6-mtu-opt.patch +++ /dev/null @@ -1,35 +0,0 @@ -This patch adds a manual option to set the MTU. The method to determine the -local MTU is failing on sh4/2.6.14. It's not yet clear if this is an sh4, -2.6.14 and glibc bug. The manual mtu option allows tracepath6 to still be -used on this platform. - ---- new/tracepath6.c 2005/11/14 13:03:19 1.1 -+++ new/tracepath6.c 2005/11/14 13:04:24 -@@ -267,7 +267,7 @@ - - static void usage(void) - { -- fprintf(stderr, "Usage: tracepath6 [-n] [-b] [/]\n"); -+ fprintf(stderr, "Usage: tracepath6 [-n] [-b] [-m ] [/]\n"); - exit(-1); - } - -@@ -282,7 +282,7 @@ - struct hostent *he; - int ch; - -- while ((ch = getopt(argc, argv, "nbh?")) != EOF) { -+ while ((ch = getopt(argc, argv, "nbh?m:")) != EOF) { - switch(ch) { - case 'n': - no_resolve = 1; -@@ -290,6 +290,9 @@ - case 'b': - show_both = 1; - break; -+ case 'm': -+ mtu = atol(optarg); -+ break; - default: - usage(); - } diff --git a/recipes/obsolete/iputils/files/debian-fixes.patch b/recipes/obsolete/iputils/files/debian-fixes.patch new file mode 100644 index 0000000000..1b014f07f9 --- /dev/null +++ b/recipes/obsolete/iputils/files/debian-fixes.patch @@ -0,0 +1,133 @@ +Fixes taken from the lastest debian .deb pacakge (20020927-3). + +--- iputils-20020927.orig/ping.c ++++ iputils-20020927/ping.c +@@ -232,7 +232,7 @@ + if (argc == 1) + options |= F_NUMERIC; + } else { +- hp = gethostbyname(target); ++ hp = gethostbyname2(target, AF_INET); + if (!hp) { + fprintf(stderr, "ping: unknown host %s\n", target); + exit(2); +@@ -373,8 +373,13 @@ + (1<h_addr, 4); +--- iputils-20020927.orig/traceroute6.c ++++ iputils-20020927/traceroute6.c +@@ -441,7 +441,7 @@ + * to fix something send the patch to me for sanity checking. + * "datalen" patch is a shit. */ + if ((unsigned int)datalen == 0) +- datalen == sizeof(struct pkt_format); ++ datalen = sizeof(struct pkt_format); + } + + if (datalen < (int)sizeof(struct pkt_format) || datalen >= MAXPACKET) { +--- iputils-20020927.orig/ping_common.c ++++ iputils-20020927/ping_common.c +@@ -435,6 +435,7 @@ + if (options & F_SO_DONTROUTE) + setsockopt(icmp_sock, SOL_SOCKET, SO_DONTROUTE, (char *)&hold, sizeof(hold)); + ++#ifndef __sparc__ /* XXX SO_TIMESTAMP seems broken on sparc */ + #ifdef SO_TIMESTAMP + if (!(options&F_LATENCY)) { + int on = 1; +@@ -442,6 +443,7 @@ + fprintf(stderr, "Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP\n"); + } + #endif ++#endif /* __sparc__ */ + + /* Set some SNDTIMEO to prevent blocking forever + * on sends, when device is too slow or stalls. Just put limit +@@ -817,7 +819,8 @@ + } + 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); +@@ -851,4 +854,3 @@ + } + fprintf(stderr, "\n"); + } +- diff --git a/recipes/obsolete/iputils/files/glibc-2.4-compat.patch b/recipes/obsolete/iputils/files/glibc-2.4-compat.patch new file mode 100644 index 0000000000..736d660c3d --- /dev/null +++ b/recipes/obsolete/iputils/files/glibc-2.4-compat.patch @@ -0,0 +1,78 @@ +This patch renames the ICMP6 variables to the new names, as used in glibc +2.4. It also provides a header which will define the new names to the old +names - as used in glibc < 2.4 and uclibc, so that it'll build on +uclibc, glibc < 2.4 and glibc 2.4. + +--- iputils/ping6.c 2006/07/10 02:23:05 1.1 ++++ iputils/ping6.c 2006/07/10 02:30:06 +@@ -71,6 +71,7 @@ + #include + #include + #include ++#include "glibc_compat.h" + + /* define to specify we want type0 routing headers */ + #define IPV6_SRCRT_TYPE_0 0 +@@ -86,7 +87,6 @@ + #define HAVE_SIN6_SCOPEID 1 + #endif + +- + uint32_t flowlabel; + uint32_t tclass; + struct cmsghdr *srcrt; +@@ -781,7 +781,7 @@ + case ICMP6_DST_UNREACH_ADMIN: + printf("Administratively prohibited"); + break; +- case ICMP6_DST_UNREACH_NOTNEIGHBOR: ++ case ICMP6_DST_UNREACH_BEYONDSCOPE: + printf("Not neighbour"); + break; + case ICMP6_DST_UNREACH_ADDR: +@@ -827,13 +827,13 @@ + case ICMP6_ECHO_REPLY: + printf("Echo reply"); + break; +- case ICMP6_MEMBERSHIP_QUERY: ++ case MLD_LISTENER_QUERY: + printf("MLD Query"); + break; +- case ICMP6_MEMBERSHIP_REPORT: ++ case MLD_LISTENER_REPORT: + printf("MLD Report"); + break; +- case ICMP6_MEMBERSHIP_REDUCTION: ++ case MLD_LISTENER_REDUCTION: + printf("MLD Reduction"); + break; + default: +--- /dev/null 2006-07-03 23:05:35.026189000 +1000 ++++ iputils/glibc_compat.h 2006-07-10 12:30:04.000000000 +1000 +@@ -0,0 +1,26 @@ ++/* ++ * glibc 2.4 renamed some of the IPv6 related constants. ++ * ++ * We use the new names and rename them back the old names if the new names ++ * are not definied anyway. ++ */ ++#ifndef GLIBC_COMPAT ++#define GLIBC_COMPAT ++ ++#ifndef ICMP6_DST_UNREACH_BEYONDSCOPE ++#define ICMP6_DST_UNREACH_BEYONDSCOPE ICMP6_DST_UNREACH_NOTNEIGHBOR ++#endif ++ ++#ifndef MLD_LISTENER_QUERY ++#define MLD_LISTENER_QUERY ICMP6_MEMBERSHIP_QUERY ++#endif ++ ++#ifndef MLD_LISTENER_REPORT ++#define MLD_LISTENER_REPORT ICMP6_MEMBERSHIP_REPORT ++#endif ++ ++#ifndef MLD_LISTENER_REDUCTION ++#define MLD_LISTENER_REDUCTION ICMP6_MEMBERSHIP_REDUCTION ++#endif ++ ++#endif diff --git a/recipes/obsolete/iputils/files/iputils-retvals.patch b/recipes/obsolete/iputils/files/iputils-retvals.patch new file mode 100644 index 0000000000..73ef8a364e --- /dev/null +++ b/recipes/obsolete/iputils/files/iputils-retvals.patch @@ -0,0 +1,49 @@ +From the fedora core SRPM. Outputs error message and exists if the +command is not suid root or run as user root. + +--- 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; + diff --git a/recipes/obsolete/iputils/files/makefile.patch b/recipes/obsolete/iputils/files/makefile.patch new file mode 100644 index 0000000000..6cc35ad978 --- /dev/null +++ b/recipes/obsolete/iputils/files/makefile.patch @@ -0,0 +1,49 @@ +Update the makefile: Stop building it as a debug version by default, +remove the manual mangling of the include directories and don't build +the clockdiff, rdisc, tftp or rarpd components (everyone uses version +provided by other packages.) + +--- new/Makefile 2005/11/14 13:34:06 1.1 ++++ new/Makefile 2005/11/14 13:40:13 +@@ -1,37 +1,17 @@ +-# Path to parent kernel include files directory +-KERNEL_INCLUDE=/usr/src/linux/include +-LIBC_INCLUDE=/usr/include +- +-DEFINES= +- + #options if you have a bind>=4.9.4 libresolv (or, maybe, glibc) + 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 +- +- +-#options if you compile with libc5, and without a bind>=4.9.4 libresolv +-# NOT AVAILABLE. Please, use libresolv. + + CC=gcc + # 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 $(DEFINES) ++CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall ++CFLAGS=$(CCOPT) -I$(KERNEL_INCLUDE) $(DEFINES) + +-IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd ++IPV4_TARGETS=tracepath ping arping + IPV6_TARGETS=tracepath6 traceroute6 ping6 + TARGETS=$(IPV4_TARGETS) $(IPV6_TARGETS) + +-all: check-kernel $(TARGETS) ++all: $(TARGETS) + + + tftpd: tftpd.o tftpsubs.o diff --git a/recipes/obsolete/iputils/files/remove-glibc-headers.patch b/recipes/obsolete/iputils/files/remove-glibc-headers.patch new file mode 100644 index 0000000000..0930acd656 --- /dev/null +++ b/recipes/obsolete/iputils/files/remove-glibc-headers.patch @@ -0,0 +1,944 @@ +We are not using the local glibc headers for now. +Remove them to keep them out of the way. + +diff -durN orig/include-glibc/bits/socket.h new/include-glibc/bits/socket.h +--- orig/include-glibc/bits/socket.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/bits/socket.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,280 +0,0 @@ +-/* System-specific socket constants and types. Linux version. +- Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Library General Public License as +- published by the Free Software Foundation; either version 2 of the +- License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Library General Public License for more details. +- +- You should have received a copy of the GNU Library General Public +- License along with the GNU C Library; see the file COPYING.LIB. If not, +- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +- Boston, MA 02111-1307, USA. */ +- +-#ifndef _SOCKETBITS_H +- +-#define _SOCKETBITS_H 1 +-#include +- +-#define __need_size_t +-#define __need_NULL +-#include +- +- +-__BEGIN_DECLS +- +-/* Type for length arguments in socket calls. */ +-#ifndef __socklen_t_defined +-typedef unsigned int socklen_t; +-# define __socklen_t_defined +-#endif +- +-/* Types of sockets. */ +-enum __socket_type +-{ +-#ifndef __mips__ +- SOCK_STREAM = 1, /* Sequenced, reliable, connection-based +- byte streams. */ +-#define SOCK_STREAM SOCK_STREAM +- SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams +- of fixed maximum length. */ +-#define SOCK_DGRAM SOCK_DGRAM +-#else +- SOCK_STREAM = 2, /* Sequenced, reliable, connection-based +- byte streams. */ +-#define SOCK_STREAM SOCK_STREAM +- SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams +- of fixed maximum length. */ +-#define SOCK_DGRAM SOCK_DGRAM +-#endif +- SOCK_RAW = 3, /* Raw protocol interface. */ +-#define SOCK_RAW SOCK_RAW +- SOCK_RDM = 4, /* Reliably-delivered messages. */ +-#define SOCK_RDM SOCK_RDM +- SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, +- datagrams of fixed maximum length. */ +-#define SOCK_SEQPACKET SOCK_SEQPACKET +- SOCK_PACKET = 10 /* Linux specific way of getting packets +- at the dev level. For writing rarp and +- other similar things on the user level. */ +-#define SOCK_PACKET SOCK_PACKET +-}; +- +-/* Protocol families. */ +-#define PF_UNSPEC 0 /* Unspecified. */ +-#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ +-#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ +-#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ +-#define PF_INET 2 /* IP protocol family. */ +-#define PF_AX25 3 /* Amateur Radio AX.25. */ +-#define PF_IPX 4 /* Novell Internet Protocol. */ +-#define PF_APPLETALK 5 /* Don't use this. */ +-#define PF_NETROM 6 /* Amateur radio NetROM. */ +-#define PF_BRIDGE 7 /* Multiprotocol bridge. */ +-#define PF_AAL5 8 /* Reserved for Werner's ATM. */ +-#define PF_X25 9 /* Reserved for X.25 project. */ +-#define PF_INET6 10 /* IP version 6. */ +-#define PF_ROSE 11 /* Amateur Radio X.25 PLP */ +-#define PF_DECnet 12 /* Reserved for DECnet project */ +-#define PF_NETBEUI 13 /* Reserved for 802.2LLC project*/ +-#define PF_SECURITY 14 /* Security callback pseudo AF */ +-#define PF_KEY 15 /* PF_KEY key management API */ +-#define PF_NETLINK 16 +-#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD */ +-#define PF_PACKET 17 /* Packet family */ +-#define PF_MAX 32 /* For now.. */ +- +-/* Address families. */ +-#define AF_UNSPEC PF_UNSPEC +-#define AF_LOCAL PF_LOCAL +-#define AF_UNIX PF_UNIX +-#define AF_FILE PF_FILE +-#define AF_INET PF_INET +-#define AF_AX25 PF_AX25 +-#define AF_IPX PF_IPX +-#define AF_APPLETALK PF_APPLETALK +-#define AF_NETROM PF_NETROM +-#define AF_BRIDGE PF_BRIDGE +-#define AF_AAL5 PF_AAL5 +-#define AF_X25 PF_X25 +-#define AF_INET6 PF_INET6 +-#define AF_ROSE PF_ROSE +-#define AF_DECnet PF_DECnet +-#define AF_NETBEUI PF_NETBEUI +-#define AF_SECURITY PF_SECURITY +-#define pseudo_AF_KEY pseudo_PF_KEY +-#define AF_NETLINK PF_NETLINK +-#define AF_ROUTE PF_ROUTE +-#define AF_PACKET PF_PACKET +-#define AF_MAX PF_MAX +- +-/* Socket level values. Others are defined in the appropriate headers. +- +- XXX These definitions also should go into the appropriate headers as +- far as they are available. */ +-#define SOL_IPV6 41 +-#define SOL_ICMPV6 58 +-#define SOL_RAW 255 +-#define SOL_AX25 257 +-#define SOL_ATALK 258 +-#define SOL_NETROM 259 +-#define SOL_ROSE 260 +-#define SOL_DECNET 261 +-#define SOL_X25 262 +- +-/* Maximum queue length specifiable by listen. */ +-#define SOMAXCONN 128 +- +-/* Get the definition of the macro to define the common sockaddr members. */ +-#if __GLIBC_MINOR__ >= 1 +-#include +-#else +-#include +-#endif +- +-/* Structure describing a generic socket address. */ +-struct sockaddr +- { +- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ +- char sa_data[14]; /* Address data. */ +- }; +- +- +-/* Bits in the FLAGS argument to `send', `recv', et al. */ +-enum +- { +- MSG_OOB = 0x01, /* Process out-of-band data. */ +-#define MSG_OOB MSG_OOB +- MSG_PEEK = 0x02, /* Peek at incoming messages. */ +-#define MSG_PEEK MSG_PEEK +- MSG_DONTROUTE = 0x04, /* Don't use local routing. */ +-#define MSG_DONTROUTE MSG_DONTROUTE +- MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ +-#define MSG_CTRUNC MSG_CTRUNC +- MSG_PROBE = 0x10, +-#define MSG_PROBE MSG_PROBE +- MSG_TRUNC = 0x20, +-#define MSG_TRUNC MSG_TRUNC +- MSG_DONTWAIT = 0x40, +-#define MSG_DONTWAIT MSG_DONTWAIT +- MSG_WAITALL = 0x100, +-#define MSG_WAITALL MSG_WAITALL +- MSG_CONFIRM = 0x800, +-#define MSG_CONFIRM MSG_CONFIRM +- MSG_ERRQUEUE = 0x2000, +-#define MSG_ERRQUEUE MSG_ERRQUEUE +- MSG_NOSIGNAL = 0x4000, +-#define MSG_NOSIGNAL MSG_NOSIGNAL +- }; +- +-/* Structure describing messages sent by +- `sendmsg' and received by `recvmsg'. */ +-struct msghdr +- { +- __ptr_t msg_name; /* Address to send to/receive from. */ +- socklen_t msg_namelen; /* Length of address data. */ +- +- struct iovec *msg_iov; /* Vector of data to send/receive into. */ +- size_t msg_iovlen; /* Number of elements in the vector. */ +- +- __ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */ +- size_t msg_controllen; /* Ancillary data buffer length. */ +- +- int msg_flags; /* Flags on received message. */ +- }; +- +-/* Structure used for storage of ancillary data object information. */ +-struct cmsghdr +- { +- size_t cmsg_len; /* Length of data in cmsg_data plus length +- of cmsghdr structure. */ +- int cmsg_level; /* Originating protocol. */ +- int cmsg_type; /* Protocol specific type. */ +-#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 +- unsigned char __cmsg_data[0]; /* Ancillary data. */ +-#endif +- }; +- +-/* Ancillary data object manipulation macros. */ +-#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 +-# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) +-#else +-# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1)) +-#endif +-#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) +-#define CMSG_FIRSTHDR(mhdr) \ +- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ +- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) +-#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) ) +-#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len)) +-#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) +- +- +-#ifndef _EXTERN_INLINE +-# define _EXTERN_INLINE extern __inline +-#endif +-extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr, +- struct cmsghdr *__cmsg)); +-_EXTERN_INLINE struct cmsghdr * +-__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) +-{ +- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) +- /* The kernel header does this so there may be a reason. */ +- return NULL; +- +- __cmsg = (struct cmsghdr *) +- ((unsigned char *) __cmsg + CMSG_ALIGN(__cmsg->cmsg_len)); +- +- if ( (unsigned char *) (__cmsg + 1) >= +- (unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) +- /* No more entries. */ +- return NULL; +- return __cmsg; +-} +- +-/* Socket level message types. This must match the definitions in +- . */ +-enum +- { +- SCM_RIGHTS = 0x01, /* Data array contains access rights. */ +-#define SCM_RIGHTS SCM_RIGHTS +- SCM_CREDENTIALS = 0x02, /* Data array is `struct ucred'. */ +-#define SCM_CREDENTIALS SCM_CREDENTIALS +- }; +- +- +- +-/* Get socket manipulation related informations from kernel headers. */ +-#ifdef THIS_IS_CRAP +-#ifndef _LINUX_TYPES_H +-# define _LINUX_TYPES_H +-#endif +-#endif +- +-#include +-#include +- +-struct ucred +-{ +- __u32 pid; +- __u32 uid; +- __u32 gid; +-}; +- +- +-/* Structure used to manipulate the SO_LINGER option. */ +-struct linger +- { +- int l_onoff; /* Nonzero to linger on close. */ +- int l_linger; /* Time to linger. */ +- }; +- +-__END_DECLS +- +-#endif /* socketbits.h */ +diff -durN orig/include-glibc/bits/sockunion.h new/include-glibc/bits/sockunion.h +--- orig/include-glibc/bits/sockunion.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/bits/sockunion.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,25 +0,0 @@ +- +-/* I cannot describe, how I laughed, when saw, that now sys/socket.h +- includes ALL OF networking include files. 8)8)8) +- +- Bravo! Aah, they forgot sockaddr_ll, sockaddr_pkt and sockaddr_nl... +- Not a big problem, we only start the way to single UNIVERSAL include file: +- +- #include . +- +- Jokes apart, it is full crap. Removed. +- --ANK +- +- */ +- +-/* Union of all sockaddr types (required by IPv6 Basic API). This is +- somewhat evil. */ +-/* 8)8) Well, ipngwg really does strange things sometimes, but +- not in such extent! It is removed long ago --ANK +- */ +- +-union sockaddr_union +- { +- struct sockaddr sa; +- char __maxsize[128]; +- }; +diff -durN orig/include-glibc/glibc-bugs.h new/include-glibc/glibc-bugs.h +--- orig/include-glibc/glibc-bugs.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/glibc-bugs.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,20 +0,0 @@ +-#ifndef __GLIBC_BUGS_H__ +-#define __GLIBC_BUGS_H__ 1 +- +-#include +-#include +- +-#if defined(__GLIBC__) && __GLIBC__ >= 2 +- +-#ifndef __KERNEL_STRICT_NAMES +-#define __KERNEL_STRICT_NAMES 1 +-#endif +- +-#include +- +-typedef __u16 in_port_t; +-typedef __u32 in_addr_t; +- +-#endif +- +-#endif +diff -durN orig/include-glibc/netinet/in.h new/include-glibc/netinet/in.h +--- orig/include-glibc/netinet/in.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/netinet/in.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,11 +0,0 @@ +-#ifndef _NETINET_IN_H +-#define _NETINET_IN_H 1 +- +-#include "glibc-bugs.h" +-#include +-#include +-#include +- +-#define SOL_IP 0 +- +-#endif /* netinet/in.h */ +diff -durN orig/include-glibc/netinet/ip.h new/include-glibc/netinet/ip.h +--- orig/include-glibc/netinet/ip.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/netinet/ip.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,98 +0,0 @@ +-#ifndef __NETINET_IP_H +-#define __NETINET_IP_H 1 +- +-#include +-#include +- +-#include +- +-#ifdef __USE_BSD +-/* +- * Copyright (c) 1982, 1986, 1993 +- * The Regents of the University of California. All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions +- * are met: +- * 1. Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * 2. Redistributions in binary form must reproduce the above copyright +- * notice, this list of conditions and the following disclaimer in the +- * documentation and/or other materials provided with the distribution. +- * 3. All advertising materials mentioning features or use of this software +- * must display the following acknowledgement: +- * This product includes software developed by the University of +- * California, Berkeley and its contributors. +- * 4. Neither the name of the University nor the names of its contributors +- * may be used to endorse or promote products derived from this software +- * without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +- * SUCH DAMAGE. +- * +- * @(#)ip.h 8.1 (Berkeley) 6/10/93 +- */ +- +-/* +- * Definitions for internet protocol version 4. +- * Per RFC 791, September 1981. +- */ +- +-/* +- * Structure of an internet header, naked of options. +- */ +-struct ip +- { +-#if __BYTE_ORDER == __LITTLE_ENDIAN +- u_int8_t ip_hl:4; /* header length */ +- u_int8_t ip_v:4; /* version */ +-#endif +-#if __BYTE_ORDER == __BIG_ENDIAN +- u_int8_t ip_v:4; /* version */ +- u_int8_t ip_hl:4; /* header length */ +-#endif +- u_int8_t ip_tos; /* type of service */ +- u_short ip_len; /* total length */ +- u_short ip_id; /* identification */ +- u_short ip_off; /* fragment offset field */ +-#define IP_RF 0x8000 /* reserved fragment flag */ +-#define IP_DF 0x4000 /* dont fragment flag */ +-#define IP_MF 0x2000 /* more fragments flag */ +-#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ +- u_int8_t ip_ttl; /* time to live */ +- u_int8_t ip_p; /* protocol */ +- u_short ip_sum; /* checksum */ +- struct in_addr ip_src, ip_dst; /* source and dest address */ +- }; +- +-/* +- * Time stamp option structure. +- */ +-struct ip_timestamp +- { +- u_int8_t ipt_code; /* IPOPT_TS */ +- u_int8_t ipt_len; /* size of structure (variable) */ +- u_int8_t ipt_ptr; /* index of current entry */ +-#if __BYTE_ORDER == __LITTLE_ENDIAN +- u_int8_t ipt_flg:4; /* flags, see below */ +- u_int8_t ipt_oflw:4; /* overflow counter */ +-#endif +-#if __BYTE_ORDER == __BIG_ENDIAN +- u_int8_t ipt_oflw:4; /* overflow counter */ +- u_int8_t ipt_flg:4; /* flags, see below */ +-#endif +- u_int32_t data[9]; +- }; +-#endif /* __USE_BSD */ +- +- +-#endif /* netinet/ip.h */ +diff -durN orig/include-glibc/netinet/ip_icmp.h new/include-glibc/netinet/ip_icmp.h +--- orig/include-glibc/netinet/ip_icmp.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/netinet/ip_icmp.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,199 +0,0 @@ +-#ifndef __NETINET_IP_ICMP_H +-#define __NETINET_IP_ICMP_H 1 +- +- +-#include +-#include +- +-#ifdef __USE_BSD +-/* +- * Copyright (c) 1982, 1986, 1993 +- * The Regents of the University of California. All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions +- * are met: +- * 1. Redistributions of source code must retain the above copyright +- * notice, this list of conditions and the following disclaimer. +- * 2. Redistributions in binary form must reproduce the above copyright +- * notice, this list of conditions and the following disclaimer in the +- * documentation and/or other materials provided with the distribution. +- * 3. All advertising materials mentioning features or use of this software +- * must display the following acknowledgement: +- * This product includes software developed by the University of +- * California, Berkeley and its contributors. +- * 4. Neither the name of the University nor the names of its contributors +- * may be used to endorse or promote products derived from this software +- * without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +- * SUCH DAMAGE. +- * +- * @(#)ip_icmp.h 8.1 (Berkeley) 6/10/93 +- */ +- +-#include +-#include +- +-/* +- * Internal of an ICMP Router Advertisement +- */ +-struct icmp_ra_addr +-{ +- u_int32_t ira_addr; +- u_int32_t ira_preference; +-}; +- +-struct icmp +-{ +- u_int8_t icmp_type; /* type of message, see below */ +- u_int8_t icmp_code; /* type sub code */ +- u_int16_t icmp_cksum; /* ones complement checksum of struct */ +- union +- { +- u_char ih_pptr; /* ICMP_PARAMPROB */ +- struct in_addr ih_gwaddr; /* gateway address */ +- struct ih_idseq /* echo datagram */ +- { +- u_int16_t icd_id; +- u_int16_t icd_seq; +- } ih_idseq; +- u_int32_t ih_void; +- +- /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ +- struct ih_pmtu +- { +- u_int16_t ipm_void; +- u_int16_t ipm_nextmtu; +- } ih_pmtu; +- +- struct ih_rtradv +- { +- u_int8_t irt_num_addrs; +- u_int8_t irt_wpa; +- u_int16_t irt_lifetime; +- } ih_rtradv; +- } icmp_hun; +-#define icmp_pptr icmp_hun.ih_pptr +-#define icmp_gwaddr icmp_hun.ih_gwaddr +-#define icmp_id icmp_hun.ih_idseq.icd_id +-#define icmp_seq icmp_hun.ih_idseq.icd_seq +-#define icmp_void icmp_hun.ih_void +-#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void +-#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu +-#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs +-#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa +-#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime +- union +- { +- struct +- { +- u_int32_t its_otime; +- u_int32_t its_rtime; +- u_int32_t its_ttime; +- } id_ts; +- struct +- { +- struct ip idi_ip; +- /* options and then 64 bits of data */ +- } id_ip; +- struct icmp_ra_addr id_radv; +- u_int32_t id_mask; +- u_int8_t id_data[1]; +- } icmp_dun; +-#define icmp_otime icmp_dun.id_ts.its_otime +-#define icmp_rtime icmp_dun.id_ts.its_rtime +-#define icmp_ttime icmp_dun.id_ts.its_ttime +-#define icmp_ip icmp_dun.id_ip.idi_ip +-#define icmp_radv icmp_dun.id_radv +-#define icmp_mask icmp_dun.id_mask +-#define icmp_data icmp_dun.id_data +-}; +- +-/* +- * Lower bounds on packet lengths for various types. +- * For the error advice packets must first insure that the +- * packet is large enough to contain the returned ip header. +- * Only then can we do the check to see if 64 bits of packet +- * data have been returned, since we need to check the returned +- * ip header length. +- */ +-#define ICMP_MINLEN 8 /* abs minimum */ +-#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */ +-#define ICMP_MASKLEN 12 /* address mask */ +-#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ +-#ifndef _IP_VHL +-#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) +- /* N.B.: must separately check that ip_hl >= 5 */ +-#else +-#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8) +- /* N.B.: must separately check that header length >= 5 */ +-#endif +- +-/* Definition of type and code fields. */ +-/* defined above: ICMP_ECHOREPLY, ICMP_REDIRECT, ICMP_ECHO */ +-#define ICMP_UNREACH 3 /* dest unreachable, codes: */ +-#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ +-#define ICMP_ROUTERADVERT 9 /* router advertisement */ +-#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ +-#define ICMP_TIMXCEED 11 /* time exceeded, code: */ +-#define ICMP_PARAMPROB 12 /* ip header bad */ +-#define ICMP_TSTAMP 13 /* timestamp request */ +-#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ +-#define ICMP_IREQ 15 /* information request */ +-#define ICMP_IREQREPLY 16 /* information reply */ +-#define ICMP_MASKREQ 17 /* address mask request */ +-#define ICMP_MASKREPLY 18 /* address mask reply */ +- +-#define ICMP_MAXTYPE 18 +- +-/* UNREACH codes */ +-#define ICMP_UNREACH_NET 0 /* bad net */ +-#define ICMP_UNREACH_HOST 1 /* bad host */ +-#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ +-#define ICMP_UNREACH_PORT 3 /* bad port */ +-#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ +-#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ +-#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ +-#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ +-#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ +-#define ICMP_UNREACH_NET_PROHIB 9 /* net denied */ +-#define ICMP_UNREACH_HOST_PROHIB 10 /* host denied */ +-#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ +-#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ +-#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */ +-#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */ +-#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */ +- +-/* REDIRECT codes */ +-#define ICMP_REDIRECT_NET 0 /* for network */ +-#define ICMP_REDIRECT_HOST 1 /* for host */ +-#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ +-#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ +- +-/* TIMEXCEED codes */ +-#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ +-#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ +- +-/* PARAMPROB code */ +-#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */ +- +-#define ICMP_INFOTYPE(type) \ +- ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ +- (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \ +- (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ +- (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ +- (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) +- +-#endif /* __USE_BSD */ +- +-#endif /* netinet/ip_icmp.h */ +diff -durN orig/include-glibc/socketbits.h new/include-glibc/socketbits.h +--- orig/include-glibc/socketbits.h 2005-11-14 22:37:26.000000000 +1100 ++++ new/include-glibc/socketbits.h 1970-01-01 10:00:00.000000000 +1000 +@@ -1,280 +0,0 @@ +-/* System-specific socket constants and types. Linux version. +- Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Library General Public License as +- published by the Free Software Foundation; either version 2 of the +- License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Library General Public License for more details. +- +- You should have received a copy of the GNU Library General Public +- License along with the GNU C Library; see the file COPYING.LIB. If not, +- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +- Boston, MA 02111-1307, USA. */ +- +-#ifndef _SOCKETBITS_H +- +-#define _SOCKETBITS_H 1 +-#include +- +-#define __need_size_t +-#define __need_NULL +-#include +- +- +-__BEGIN_DECLS +- +-/* Type for length arguments in socket calls. */ +-#ifndef __socklen_t_defined +-typedef unsigned int socklen_t; +-# define __socklen_t_defined +-#endif +- +-/* Types of sockets. */ +-enum __socket_type +-{ +-#ifndef __mips__ +- SOCK_STREAM = 1, /* Sequenced, reliable, connection-based +- byte streams. */ +-#define SOCK_STREAM SOCK_STREAM +- SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams +- of fixed maximum length. */ +-#define SOCK_DGRAM SOCK_DGRAM +-#else +- SOCK_STREAM = 2, /* Sequenced, reliable, connection-based +- byte streams. */ +-#define SOCK_STREAM SOCK_STREAM +- SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams +- of fixed maximum length. */ +-#define SOCK_DGRAM SOCK_DGRAM +-#endif +- SOCK_RAW = 3, /* Raw protocol interface. */ +-#define SOCK_RAW SOCK_RAW +- SOCK_RDM = 4, /* Reliably-delivered messages. */ +-#define SOCK_RDM SOCK_RDM +- SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, +- datagrams of fixed maximum length. */ +-#define SOCK_SEQPACKET SOCK_SEQPACKET +- SOCK_PACKET = 10 /* Linux specific way of getting packets +- at the dev level. For writing rarp and +- other similar things on the user level. */ +-#define SOCK_PACKET SOCK_PACKET +-}; +- +-/* Protocol families. */ +-#define PF_UNSPEC 0 /* Unspecified. */ +-#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ +-#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ +-#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ +-#define PF_INET 2 /* IP protocol family. */ +-#define PF_AX25 3 /* Amateur Radio AX.25. */ +-#define PF_IPX 4 /* Novell Internet Protocol. */ +-#define PF_APPLETALK 5 /* Don't use this. */ +-#define PF_NETROM 6 /* Amateur radio NetROM. */ +-#define PF_BRIDGE 7 /* Multiprotocol bridge. */ +-#define PF_AAL5 8 /* Reserved for Werner's ATM. */ +-#define PF_X25 9 /* Reserved for X.25 project. */ +-#define PF_INET6 10 /* IP version 6. */ +-#define PF_ROSE 11 /* Amateur Radio X.25 PLP */ +-#define PF_DECnet 12 /* Reserved for DECnet project */ +-#define PF_NETBEUI 13 /* Reserved for 802.2LLC project*/ +-#define PF_SECURITY 14 /* Security callback pseudo AF */ +-#define PF_KEY 15 /* PF_KEY key management API */ +-#define PF_NETLINK 16 +-#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD */ +-#define PF_PACKET 17 /* Packet family */ +-#define PF_MAX 32 /* For now.. */ +- +-/* Address families. */ +-#define AF_UNSPEC PF_UNSPEC +-#define AF_LOCAL PF_LOCAL +-#define AF_UNIX PF_UNIX +-#define AF_FILE PF_FILE +-#define AF_INET PF_INET +-#define AF_AX25 PF_AX25 +-#define AF_IPX PF_IPX +-#define AF_APPLETALK PF_APPLETALK +-#define AF_NETROM PF_NETROM +-#define AF_BRIDGE PF_BRIDGE +-#define AF_AAL5 PF_AAL5 +-#define AF_X25 PF_X25 +-#define AF_INET6 PF_INET6 +-#define AF_ROSE PF_ROSE +-#define AF_DECnet PF_DECnet +-#define AF_NETBEUI PF_NETBEUI +-#define AF_SECURITY PF_SECURITY +-#define pseudo_AF_KEY pseudo_PF_KEY +-#define AF_NETLINK PF_NETLINK +-#define AF_ROUTE PF_ROUTE +-#define AF_PACKET PF_PACKET +-#define AF_MAX PF_MAX +- +-/* Socket level values. Others are defined in the appropriate headers. +- +- XXX These definitions also should go into the appropriate headers as +- far as they are available. */ +-#define SOL_IPV6 41 +-#define SOL_ICMPV6 58 +-#define SOL_RAW 255 +-#define SOL_AX25 257 +-#define SOL_ATALK 258 +-#define SOL_NETROM 259 +-#define SOL_ROSE 260 +-#define SOL_DECNET 261 +-#define SOL_X25 262 +- +-/* Maximum queue length specifiable by listen. */ +-#define SOMAXCONN 128 +- +-/* Get the definition of the macro to define the common sockaddr members. */ +-#if __GLIBC_MINOR__ >= 1 +-#include +-#else +-#include +-#endif +- +-/* Structure describing a generic socket address. */ +-struct sockaddr +- { +- __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ +- char sa_data[14]; /* Address data. */ +- }; +- +- +-/* Bits in the FLAGS argument to `send', `recv', et al. */ +-enum +- { +- MSG_OOB = 0x01, /* Process out-of-band data. */ +-#define MSG_OOB MSG_OOB +- MSG_PEEK = 0x02, /* Peek at incoming messages. */ +-#define MSG_PEEK MSG_PEEK +- MSG_DONTROUTE = 0x04, /* Don't use local routing. */ +-#define MSG_DONTROUTE MSG_DONTROUTE +- MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ +-#define MSG_CTRUNC MSG_CTRUNC +- MSG_PROBE = 0x10, +-#define MSG_PROBE MSG_PROBE +- MSG_TRUNC = 0x20, +-#define MSG_TRUNC MSG_TRUNC +- MSG_DONTWAIT = 0x40, +-#define MSG_DONTWAIT MSG_DONTWAIT +- MSG_WAITALL = 0x100, +-#define MSG_WAITALL MSG_WAITALL +- MSG_CONFIRM = 0x800, +-#define MSG_CONFIRM MSG_CONFIRM +- MSG_ERRQUEUE = 0x2000, +-#define MSG_ERRQUEUE MSG_ERRQUEUE +- MSG_NOSIGNAL = 0x4000, +-#define MSG_NOSIGNAL MSG_NOSIGNAL +- }; +- +-/* Structure describing messages sent by +- `sendmsg' and received by `recvmsg'. */ +-struct msghdr +- { +- __ptr_t msg_name; /* Address to send to/receive from. */ +- socklen_t msg_namelen; /* Length of address data. */ +- +- struct iovec *msg_iov; /* Vector of data to send/receive into. */ +- size_t msg_iovlen; /* Number of elements in the vector. */ +- +- __ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */ +- size_t msg_controllen; /* Ancillary data buffer length. */ +- +- int msg_flags; /* Flags on received message. */ +- }; +- +-/* Structure used for storage of ancillary data object information. */ +-struct cmsghdr +- { +- size_t cmsg_len; /* Length of data in cmsg_data plus length +- of cmsghdr structure. */ +- int cmsg_level; /* Originating protocol. */ +- int cmsg_type; /* Protocol specific type. */ +-#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 +- unsigned char __cmsg_data[0]; /* Ancillary data. */ +-#endif +- }; +- +-/* Ancillary data object manipulation macros. */ +-#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 +-# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) +-#else +-# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1)) +-#endif +-#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) +-#define CMSG_FIRSTHDR(mhdr) \ +- ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ +- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) +-#define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) ) +-#define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len)) +-#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) +- +- +-#ifndef _EXTERN_INLINE +-# define _EXTERN_INLINE extern __inline +-#endif +-extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr, +- struct cmsghdr *__cmsg)); +-_EXTERN_INLINE struct cmsghdr * +-__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) +-{ +- if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) +- /* The kernel header does this so there may be a reason. */ +- return NULL; +- +- __cmsg = (struct cmsghdr *) +- ((unsigned char *) __cmsg + CMSG_ALIGN(__cmsg->cmsg_len)); +- +- if ( (unsigned char *) (__cmsg + 1) >= +- (unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) +- /* No more entries. */ +- return NULL; +- return __cmsg; +-} +- +-/* Socket level message types. This must match the definitions in +- . */ +-enum +- { +- SCM_RIGHTS = 0x01, /* Data array contains access rights. */ +-#define SCM_RIGHTS SCM_RIGHTS +- SCM_CREDENTIALS = 0x02, /* Data array is `struct ucred'. */ +-#define SCM_CREDENTIALS SCM_CREDENTIALS +- }; +- +- +- +-/* Get socket manipulation related informations from kernel headers. */ +-#ifdef THIS_IS_CRAP +-#ifndef _LINUX_TYPES_H +-# define _LINUX_TYPES_H +-#endif +-#endif +- +-#include +-#include +- +-struct ucred +-{ +- __u32 pid; +- __u32 uid; +- __u32 gid; +-}; +- +- +-/* Structure used to manipulate the SO_LINGER option. */ +-struct linger +- { +- int l_onoff; /* Nonzero to linger on close. */ +- int l_linger; /* Time to linger. */ +- }; +- +-__END_DECLS +- +-#endif /* socketbits.h */ diff --git a/recipes/obsolete/iputils/files/standard-header-types.patch b/recipes/obsolete/iputils/files/standard-header-types.patch new file mode 100644 index 0000000000..fac1ac60de --- /dev/null +++ b/recipes/obsolete/iputils/files/standard-header-types.patch @@ -0,0 +1,1072 @@ +Move away from using the linux specific headers and types and use the +common glibc provided headers and types. Probably need to test this +on uclibc / klibc at some stage as well. + +diff -durN orig/arping.c new/arping.c +--- orig/arping.c 2005-11-14 22:38:27.000000000 +1100 ++++ new/arping.c 2005-11-14 22:52:15.000000000 +1100 +@@ -12,13 +12,13 @@ + #include + #include + #include +-#include + #include + #include + #include + #include +-#include +-#include ++#include ++#include ++#include + #include + + #include +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + #include "SNAPSHOT.h" + +@@ -101,7 +102,7 @@ + ah->ar_hrd = htons(ME->sll_hatype); + if (ah->ar_hrd == htons(ARPHRD_FDDI)) + ah->ar_hrd = htons(ARPHRD_ETHER); +- ah->ar_pro = htons(ETH_P_IP); ++ ah->ar_pro = htons(ETHERTYPE_IP); + ah->ar_hln = ME->sll_halen; + ah->ar_pln = 4; + ah->ar_op = advert ? htons(ARPOP_REPLY) : htons(ARPOP_REQUEST); +@@ -213,7 +214,7 @@ + return 0; + + /* Protocol must be IP. */ +- if (ah->ar_pro != htons(ETH_P_IP)) ++ if (ah->ar_pro != htons(ETHERTYPE_IP)) + return 0; + if (ah->ar_pln != 4) + return 0; +@@ -434,7 +435,7 @@ + } + } else if (!dad) { + int on = 1; +- int alen = sizeof(saddr); ++ unsigned int alen = sizeof(saddr); + + saddr.sin_port = htons(1025); + saddr.sin_addr = dst; +@@ -456,14 +457,14 @@ + + me.sll_family = AF_PACKET; + me.sll_ifindex = ifindex; +- me.sll_protocol = htons(ETH_P_ARP); ++ me.sll_protocol = htons(ETHERTYPE_ARP); + if (bind(s, (struct sockaddr*)&me, sizeof(me)) == -1) { + perror("bind"); + exit(2); + } + + if (1) { +- int alen = sizeof(me); ++ unsigned int alen = sizeof(me); + if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) { + perror("getsockname"); + exit(2); +@@ -495,9 +496,9 @@ + + while(1) { + sigset_t sset, osset; +- char packet[4096]; ++ unsigned char packet[4096]; + struct sockaddr_ll from; +- int alen = sizeof(from); ++ unsigned int alen = sizeof(from); + int cc; + + if ((cc = recvfrom(s, packet, sizeof(packet), 0, +diff -durN orig/linux-errqueue.h new/linux-errqueue.h +--- orig/linux-errqueue.h 1970-01-01 10:00:00.000000000 +1000 ++++ new/linux-errqueue.h 2005-11-14 22:39:06.000000000 +1100 +@@ -0,0 +1,22 @@ ++#ifndef LINUX_ERRQUEUE_H ++#define LINUX_ERRQUEUE_H 1 ++ ++struct sock_extended_err ++{ ++ uint32_t ee_errno; ++ uint8_t ee_origin; ++ uint8_t ee_type; ++ uint8_t ee_code; ++ uint8_t ee_pad; ++ uint32_t ee_info; ++ uint32_t ee_data; ++}; ++ ++#define SO_EE_ORIGIN_NONE 0 ++#define SO_EE_ORIGIN_LOCAL 1 ++#define SO_EE_ORIGIN_ICMP 2 ++#define SO_EE_ORIGIN_ICMP6 3 ++ ++#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1)) ++ ++#endif +diff -durN orig/ping6.c new/ping6.c +--- orig/ping6.c 2005-11-14 22:38:28.000000000 +1100 ++++ new/ping6.c 2005-11-14 22:39:06.000000000 +1100 +@@ -66,34 +66,19 @@ + * More statistics could always be gathered. + * This program has to run SUID to ROOT to access the ICMP socket. + */ +-#include "ping_common.h" +- +-#include +-#include +-#include +- +-#define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0) +-#define BIT_SET(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] |= (1U << ((nr) & 31)); } while(0) +-#define BIT_TEST(nr, addr) do { (__u32 *)(addr))[(nr) >> 5] & (1U << ((nr) & 31)); } while(0) +- +-#define ICMPV6_FILTER_WILLPASS(type, filterp) \ +- (BIT_TEST((type), filterp) == 0) +- +-#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \ +- BIT_TEST((type), filterp) + +-#define ICMPV6_FILTER_SETPASS(type, filterp) \ +- BIT_CLEAR((type), filterp) +- +-#define ICMPV6_FILTER_SETBLOCK(type, filterp) \ +- BIT_SET((type), filterp) +- +-#define ICMPV6_FILTER_SETPASSALL(filterp) \ +- memset(filterp, 0, sizeof(struct icmp6_filter)); ++#include "ping_common.h" ++#include ++#include ++#include + +-#define ICMPV6_FILTER_SETBLOCKALL(filterp) \ +- memset(filterp, 0xFF, sizeof(struct icmp6_filter)); ++/* define to specify we want type0 routing headers */ ++#define IPV6_SRCRT_TYPE_0 0 + ++/* without this it won't link, seems like a hack to me ;( */ ++#ifndef __constant_htons ++#define __constant_htons(x) htons(x) ++#endif + + #define MAXPACKET 128000 /* max packet size */ + +@@ -102,8 +87,8 @@ + #endif + + +-__u32 flowlabel; +-__u32 tclass; ++uint32_t flowlabel; ++uint32_t tclass; + struct cmsghdr *srcrt; + + struct sockaddr_in6 whereto; /* who to ping */ +@@ -115,7 +100,7 @@ + + static char * pr_addr(struct in6_addr *addr); + static char * pr_addr_n(struct in6_addr *addr); +-static int pr_icmph(__u8 type, __u8 code, __u32 info); ++static int pr_icmph(uint8_t type, uint8_t code, uint32_t info); + static void usage(void) __attribute((noreturn)); + + struct sockaddr_in6 source; +@@ -137,7 +122,7 @@ + if (type != 0 || segments > 24) + return 0; + +- return (sizeof(struct cmsghdr) + sizeof(struct rt0_hdr) + ++ return (sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0) + + segments * sizeof(struct in6_addr)); + } + +@@ -148,10 +133,10 @@ + if (type) + return NULL; + +- memset(bp, 0, sizeof(struct cmsghdr) + sizeof(struct rt0_hdr)); ++ memset(bp, 0, sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0)); + cmsg = (struct cmsghdr *) bp; + +- cmsg->cmsg_len = sizeof(struct cmsghdr) + sizeof(struct rt0_hdr); ++ cmsg->cmsg_len = sizeof(struct cmsghdr) + sizeof(struct ip6_rthdr0); + cmsg->cmsg_level = SOL_IPV6; + cmsg->cmsg_type = IPV6_RTHDR; + +@@ -160,14 +145,14 @@ + + int inet6_srcrt_add(struct cmsghdr *cmsg, const struct in6_addr *addr) + { +- struct rt0_hdr *hdr; ++ struct ip6_rthdr0 *hdr; + +- hdr = (struct rt0_hdr *) CMSG_DATA(cmsg); ++ hdr = (struct ip6_rthdr0 *) CMSG_DATA(cmsg); + + cmsg->cmsg_len += sizeof(struct in6_addr); +- hdr->rt_hdr.hdrlen += sizeof(struct in6_addr) / 8; ++ hdr->ip6r0_len += sizeof(struct in6_addr) / 8; + +- memcpy(&hdr->addr[hdr->rt_hdr.segments_left++], addr, ++ memcpy(&hdr->ip6r0_addr[hdr->ip6r0_segleft++], addr, + sizeof(struct in6_addr)); + + return 0; +@@ -313,7 +298,7 @@ + hostname = target; + + if (ipv6_addr_any(&source.sin6_addr)) { +- int alen; ++ unsigned int alen; + int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0); + + if (probe_fd < 0) { +@@ -440,22 +425,22 @@ + /* + * select icmp echo reply as icmp type to receive + */ +- ICMPV6_FILTER_SETBLOCKALL(&filter); ++ ICMP6_FILTER_SETBLOCKALL(&filter); + + if (!working_recverr) { +- ICMPV6_FILTER_SETPASS(ICMPV6_DEST_UNREACH, &filter); +- ICMPV6_FILTER_SETPASS(ICMPV6_PKT_TOOBIG, &filter); +- ICMPV6_FILTER_SETPASS(ICMPV6_TIME_EXCEED, &filter); +- ICMPV6_FILTER_SETPASS(ICMPV6_PARAMPROB, &filter); ++ ICMP6_FILTER_SETPASS(ICMP6_DST_UNREACH, &filter); ++ ICMP6_FILTER_SETPASS(ICMP6_PACKET_TOO_BIG, &filter); ++ ICMP6_FILTER_SETPASS(ICMP6_TIME_EXCEEDED, &filter); ++ ICMP6_FILTER_SETPASS(ICMP6_PARAM_PROB, &filter); + } + +- ICMPV6_FILTER_SETPASS(ICMPV6_ECHO_REPLY, &filter); ++ ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY, &filter); + +- err = setsockopt(icmp_sock, SOL_ICMPV6, ICMPV6_FILTER, &filter, ++ err = setsockopt(icmp_sock, SOL_ICMPV6, ICMP6_FILTER, &filter, + sizeof(struct icmp6_filter)); + + if (err < 0) { +- perror("setsockopt(ICMPV6_FILTER)"); ++ perror("setsockopt(ICMP6_FILTER)"); + exit(2); + } + +@@ -556,7 +541,7 @@ + struct msghdr msg; + struct cmsghdr *cmsg; + struct sock_extended_err *e; +- struct icmp6hdr icmph; ++ struct icmp6_hdr icmph; + struct sockaddr_in6 target; + int net_errors = 0; + int local_errors = 0; +@@ -602,8 +587,8 @@ + + if (res < sizeof(icmph) || + memcmp(&target.sin6_addr, &whereto.sin6_addr, 16) || +- icmph.icmp6_type != ICMPV6_ECHO_REQUEST || +- icmph.icmp6_identifier != ident) { ++ icmph.icmp6_type != ICMP6_ECHO_REQUEST || ++ icmph.icmp6_id != ident) { + /* Not our error, not an error at all. Clear. */ + saved_errno = 0; + goto out; +@@ -616,7 +601,7 @@ + if (options & F_FLOOD) { + write(STDOUT_FILENO, "\bE", 2); + } else { +- printf("From %s icmp_seq=%u ", pr_addr(&sin6->sin6_addr), ntohs(icmph.icmp6_sequence)); ++ printf("From %s icmp_seq=%u ", pr_addr(&sin6->sin6_addr), ntohs(icmph.icmp6_seq)); + pr_icmph(e->ee_type, e->ee_code, e->ee_info); + putchar('\n'); + fflush(stdout); +@@ -638,16 +623,16 @@ + */ + int send_probe(void) + { +- struct icmp6hdr *icmph; ++ struct icmp6_hdr *icmph; + int cc; + int i; + +- icmph = (struct icmp6hdr *)outpack; +- icmph->icmp6_type = ICMPV6_ECHO_REQUEST; ++ icmph = (struct icmp6_hdr *)outpack; ++ icmph->icmp6_type = ICMP6_ECHO_REQUEST; + icmph->icmp6_code = 0; + icmph->icmp6_cksum = 0; +- icmph->icmp6_sequence = htons(ntransmitted+1); +- icmph->icmp6_identifier = ident; ++ icmph->icmp6_seq = htons(ntransmitted+1); ++ icmph->icmp6_id = ident; + + CLR((ntransmitted+1) % mx_dup_ck); + +@@ -693,9 +678,9 @@ + parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv) + { + struct sockaddr_in6 *from = addr; +- __u8 *buf = msg->msg_iov->iov_base; ++ uint8_t *buf = msg->msg_iov->iov_base; + struct cmsghdr *c; +- struct icmp6hdr *icmph; ++ struct icmp6_hdr *icmph; + int hops = -1; + + for (c = CMSG_FIRSTHDR(msg); c; c = CMSG_NXTHDR(msg, c)) { +@@ -710,24 +695,24 @@ + + /* Now the ICMP part */ + +- icmph = (struct icmp6hdr *) buf; ++ icmph = (struct icmp6_hdr *) buf; + if (cc < 8) { + if (options & F_VERBOSE) + fprintf(stderr, "ping: packet too short (%d bytes)\n", cc); + return 1; + } + +- if (icmph->icmp6_type == ICMPV6_ECHO_REPLY) { +- if (icmph->icmp6_identifier != ident) ++ if (icmph->icmp6_type == ICMP6_ECHO_REPLY) { ++ if (icmph->icmp6_id != ident) + return 1; +- if (gather_statistics((__u8*)(icmph+1), cc, +- ntohs(icmph->icmp6_sequence), ++ if (gather_statistics((uint8_t*)(icmph+1), cc, ++ ntohs(icmph->icmp6_seq), + hops, 0, tv, pr_addr(&from->sin6_addr))) + return 0; + } else { + int nexthdr; +- struct ipv6hdr *iph1 = (struct ipv6hdr*)(icmph+1); +- struct icmp6hdr *icmph1 = (struct icmp6hdr *)(iph1+1); ++ struct ip6_hdr *iph1 = (struct ip6_hdr*)(icmph+1); ++ struct icmp6_hdr *icmph1 = (struct icmp6_hdr *)(iph1+1); + + /* We must not ever fall here. All the messages but + * echo reply are blocked by filter and error are +@@ -736,23 +721,23 @@ + * using RECVRERR. :-) + */ + +- if (cc < 8+sizeof(struct ipv6hdr)+8) ++ if (cc < 8+sizeof(struct ip6_hdr)+8) + return 1; + +- if (memcmp(&iph1->daddr, &whereto.sin6_addr, 16)) ++ if (memcmp(&iph1->ip6_dst, &whereto.sin6_addr, 16)) + return 1; + +- nexthdr = iph1->nexthdr; ++ nexthdr = iph1->ip6_nxt; + + if (nexthdr == 44) { +- nexthdr = *(__u8*)icmph1; ++ nexthdr = *(uint8_t*)icmph1; + icmph1++; + } + if (nexthdr == IPPROTO_ICMPV6) { +- if (icmph1->icmp6_type != ICMPV6_ECHO_REQUEST || +- icmph1->icmp6_identifier != ident) ++ if (icmph1->icmp6_type != ICMP6_ECHO_REQUEST || ++ icmph1->icmp6_id != ident) + return 1; +- acknowledge(ntohs(icmph1->icmp6_sequence)); ++ acknowledge(ntohs(icmph1->icmp6_seq)); + if (working_recverr) + return 0; + nerrors++; +@@ -760,7 +745,7 @@ + write(STDOUT_FILENO, "\bE", 2); + return 0; + } +- printf("From %s: icmp_seq=%u ", pr_addr(&from->sin6_addr), ntohs(icmph1->icmp6_sequence)); ++ printf("From %s: icmp_seq=%u ", pr_addr(&from->sin6_addr), ntohs(icmph1->icmp6_seq)); + } else { + /* We've got something other than an ECHOREPLY */ + if (!(options & F_VERBOSE) || uid) +@@ -780,25 +765,25 @@ + } + + +-int pr_icmph(__u8 type, __u8 code, __u32 info) ++int pr_icmph(uint8_t type, uint8_t code, uint32_t info) + { + switch(type) { +- case ICMPV6_DEST_UNREACH: ++ case ICMP6_DST_UNREACH: + printf("Destination unreachable: "); + switch (code) { +- case ICMPV6_NOROUTE: ++ case ICMP6_DST_UNREACH_NOROUTE: + printf("No route"); + break; +- case ICMPV6_ADM_PROHIBITED: ++ case ICMP6_DST_UNREACH_ADMIN: + printf("Administratively prohibited"); + break; +- case ICMPV6_NOT_NEIGHBOUR: ++ case ICMP6_DST_UNREACH_NOTNEIGHBOR: + printf("Not neighbour"); + break; +- case ICMPV6_ADDR_UNREACH: ++ case ICMP6_DST_UNREACH_ADDR: + printf("Address unreachable"); + break; +- case ICMPV6_PORT_UNREACH: ++ case ICMP6_DST_UNREACH_NOPORT: + printf("Port unreachable"); + break; + default: +@@ -806,45 +791,45 @@ + break; + } + break; +- case ICMPV6_PKT_TOOBIG: ++ case ICMP6_PACKET_TOO_BIG: + printf("Packet too big: mtu=%u", info); + if (code) + printf(", code=%d", code); + break; +- case ICMPV6_TIME_EXCEED: ++ case ICMP6_TIME_EXCEEDED: + printf("Time exceeded: "); +- if (code == ICMPV6_EXC_HOPLIMIT) ++ if (code == ICMP6_TIME_EXCEED_TRANSIT) + printf("Hop limit"); +- else if (code == ICMPV6_EXC_FRAGTIME) ++ else if (code == ICMP6_TIME_EXCEED_REASSEMBLY) + printf("Defragmentation failure"); + else + printf("code %d", code); + break; +- case ICMPV6_PARAMPROB: ++ case ICMP6_PARAM_PROB: + printf("Parameter problem: "); +- if (code == ICMPV6_HDR_FIELD) ++ if (code == ICMP6_PARAMPROB_HEADER) + printf("Wrong header field "); +- else if (code == ICMPV6_UNK_NEXTHDR) ++ else if (code == ICMP6_PARAMPROB_NEXTHEADER) + printf("Unknown header "); +- else if (code == ICMPV6_UNK_OPTION) ++ else if (code == ICMP6_PARAMPROB_OPTION) + printf("Unknown option "); + else + printf("code %d ", code); + printf ("at %u", info); + break; +- case ICMPV6_ECHO_REQUEST: ++ case ICMP6_ECHO_REQUEST: + printf("Echo request"); + break; +- case ICMPV6_ECHO_REPLY: ++ case ICMP6_ECHO_REPLY: + printf("Echo reply"); + break; +- case ICMPV6_MGM_QUERY: ++ case ICMP6_MEMBERSHIP_QUERY: + printf("MLD Query"); + break; +- case ICMPV6_MGM_REPORT: ++ case ICMP6_MEMBERSHIP_REPORT: + printf("MLD Report"); + break; +- case ICMPV6_MGM_REDUCTION: ++ case ICMP6_MEMBERSHIP_REDUCTION: + printf("MLD Reduction"); + break; + default: +@@ -856,6 +841,7 @@ + + #include + ++ + void install_filter(void) + { + static int once; +@@ -864,7 +850,7 @@ + BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 0xAAAA, 0, 1), /* Ours? */ + BPF_STMT(BPF_RET|BPF_K, ~0U), /* Yes, it passes. */ + BPF_STMT(BPF_LD|BPF_B|BPF_ABS, 0), /* Load icmp type */ +- BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ICMPV6_ECHO_REPLY, 1, 0), /* Echo? */ ++ BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ICMP6_ECHO_REPLY, 1, 0), /* Echo? */ + BPF_STMT(BPF_RET|BPF_K, ~0U), /* No. It passes. This must not happen. */ + BPF_STMT(BPF_RET|BPF_K, 0), /* Echo with wrong ident. Reject. */ + }; +@@ -895,7 +881,7 @@ + struct hostent *hp = NULL; + + if (!(options&F_NUMERIC)) +- hp = gethostbyaddr((__u8*)addr, sizeof(struct in6_addr), AF_INET6); ++ hp = gethostbyaddr((uint8_t*)addr, sizeof(struct in6_addr), AF_INET6); + + return hp ? hp->h_name : pr_addr_n(addr); + } +diff -durN orig/ping.c new/ping.c +--- orig/ping.c 2005-11-14 22:38:28.000000000 +1100 ++++ new/ping.c 2005-11-14 22:39:06.000000000 +1100 +@@ -57,12 +57,21 @@ + * More statistics could always be gathered. + * This program has to run SUID to ROOT to access the ICMP socket. + */ +- + #include "ping_common.h" + + #include + #include + ++/* from linux/icmp.h */ ++#define ICMP_FILTER 1 ++struct icmp_filter { ++ uint32_t data; ++}; ++ ++/* without this it won't link, seems like a hack to me ;( */ ++#ifndef __constant_htons ++#define __constant_htons(x) htons(x) ++#endif + + #define MAXIPLEN 60 + #define MAXICMPLEN 76 +@@ -72,7 +81,7 @@ + + static int ts_type; + static int nroute = 0; +-static __u32 route[10]; ++static uint32_t route[10]; + + + +@@ -85,12 +94,12 @@ + + static int broadcast_pings = 0; + +-static char *pr_addr(__u32); ++static char *pr_addr(uint32_t); + static void pr_options(unsigned char * cp, int hlen); + static void pr_iph(struct iphdr *ip); + static void usage(void) __attribute__((noreturn)); + static u_short in_cksum(const u_short *addr, int len, u_short salt); +-static void pr_icmph(__u8 type, __u8 code, __u32 info, struct icmphdr *icp); ++static void pr_icmph(uint8_t type, uint8_t code, uint32_t info, struct icmphdr *icp); + static int parsetos(char *str); + + static struct { +@@ -169,8 +178,8 @@ + + if (sscanf(optarg, "%u.%u.%u.%u%c", + &i1, &i2, &i3, &i4, &dummy) == 4) { +- __u8 *ptr; +- ptr = (__u8*)&source.sin_addr; ++ uint8_t *ptr; ++ ptr = (uint8_t*)&source.sin_addr; + ptr[0] = i1; + ptr[1] = i2; + ptr[2] = i3; +@@ -249,7 +258,7 @@ + } + + if (source.sin_addr.s_addr == 0) { +- int alen; ++ unsigned int alen; + struct sockaddr_in dst = whereto; + int probe_fd = socket(AF_INET, SOCK_DGRAM, 0); + +@@ -409,7 +418,7 @@ + int i; + rspace[1] = 4+nroute*8; + for (i=0; imsg_iov->iov_base; ++ uint8_t *buf = msg->msg_iov->iov_base; + struct icmphdr *icp; + struct iphdr *ip; + int hlen; +@@ -694,7 +703,7 @@ + if (icp->type == ICMP_ECHOREPLY) { + if (icp->un.echo.id != ident) + return 1; /* 'Twas not our ECHO */ +- if (gather_statistics((__u8*)(icp+1), cc, ++ if (gather_statistics((uint8_t*)(icp+1), cc, + ntohs(icp->un.echo.sequence), + ip->ttl, 0, tv, pr_addr(from->sin_addr.s_addr))) + return 0; +@@ -826,7 +835,7 @@ + * pr_icmph -- + * Print a descriptive string about an ICMP header. + */ +-void pr_icmph(__u8 type, __u8 code, __u32 info, struct icmphdr *icp) ++void pr_icmph(uint8_t type, uint8_t code, uint32_t info, struct icmphdr *icp) + { + switch(type) { + case ICMP_ECHOREPLY: +@@ -1008,7 +1017,7 @@ + cp++; + if (j > IPOPT_MINOFF) { + for (;;) { +- __u32 address; ++ uint32_t address; + memcpy(&address, cp, 4); + cp += 4; + if (address == 0) +@@ -1043,7 +1052,7 @@ + printf("\nRR: "); + cp++; + for (;;) { +- __u32 address; ++ uint32_t address; + memcpy(&address, cp, 4); + cp += 4; + if (address == 0) +@@ -1059,7 +1068,7 @@ + case IPOPT_TS: + { + int stdtime = 0, nonstdtime = 0; +- __u8 flags; ++ uint8_t flags; + j = *++cp; /* get length */ + i = *++cp; /* and pointer */ + if (i > j) +@@ -1074,7 +1083,7 @@ + long l; + + if ((flags&0xF) != IPOPT_TS_TSONLY) { +- __u32 address; ++ uint32_t address; + memcpy(&address, cp, 4); + cp += 4; + if (address == 0) +@@ -1152,7 +1161,7 @@ + * a hostname. + */ + char * +-pr_addr(__u32 addr) ++pr_addr(uint32_t addr) + { + struct hostent *hp; + static char buf[4096]; +diff -durN orig/ping_common.c new/ping_common.c +--- orig/ping_common.c 2005-11-14 22:38:28.000000000 +1100 ++++ new/ping_common.c 2005-11-14 22:39:06.000000000 +1100 +@@ -8,7 +8,7 @@ + int ttl; + int rtt; + int rtt_addend; +-__u16 acked; ++uint16_t acked; + + int mx_dup_ck = MAX_DUP_CHK; + char rcvd_tbl[MAX_DUP_CHK / 8]; +@@ -62,12 +62,12 @@ + /* Fills all the outpack, excluding ICMP header, but _including_ + * timestamp area with supplied pattern. + */ +-static void fill(char *patp) ++static void fill(unsigned char *patp) + { + int ii, jj, kk; + int pat[16]; +- char *cp; +- char *bp = outpack+8; ++ unsigned char *cp; ++ unsigned char *bp = outpack+8; + + for (cp = patp; *cp; cp++) { + if (!isxdigit(*cp)) { +@@ -76,7 +76,7 @@ + exit(2); + } + } +- ii = sscanf(patp, ++ ii = sscanf((char*)patp, + "%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x", + &pat[0], &pat[1], &pat[2], &pat[3], &pat[4], &pat[5], &pat[6], + &pat[7], &pat[8], &pat[9], &pat[10], &pat[11], &pat[12], +@@ -173,7 +173,7 @@ + break; + case 'p': /* fill buffer with user pattern */ + options |= F_PINGFILLED; +- fill(optarg); ++ fill((unsigned char*)optarg); + break; + case 'q': + options |= F_QUIET; +@@ -393,7 +393,7 @@ + void sock_setbufs(int icmp_sock, int alloc) + { + int rcvbuf, hold; +- int tmplen = sizeof(hold); ++ unsigned int tmplen = sizeof(hold); + + if (!sndbuf) + sndbuf = alloc; +@@ -466,7 +466,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! +@@ -503,7 +503,7 @@ + } + } + +-void main_loop(int icmp_sock, __u8 *packet, int packlen) ++void main_loop(int icmp_sock, uint8_t *packet, int packlen) + { + char addrbuf[128]; + char ans_data[4096]; +@@ -646,7 +646,7 @@ + finish(); + } + +-int gather_statistics(__u8 *ptr, int cc, __u16 seq, int hops, ++int gather_statistics(uint8_t *ptr, int cc, uint16_t seq, int hops, + int csfailed, struct timeval *tv, char *from) + { + int dupflag = 0; +@@ -711,7 +711,7 @@ + write(STDOUT_FILENO, "\bC", 1); + } else { + int i; +- __u8 *cp, *dp; ++ uint8_t *cp, *dp; + printf("%d bytes from %s: icmp_seq=%u", cc, from, seq); + + if (hops >= 0) +diff -durN orig/ping_common.h new/ping_common.h +--- orig/ping_common.h 2005-11-14 22:38:28.000000000 +1100 ++++ new/ping_common.h 2005-11-14 22:39:06.000000000 +1100 +@@ -4,7 +4,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -16,9 +15,9 @@ + #include + #include + #include +- + #include + #include ++#include + #include + + #include "SNAPSHOT.h" +@@ -109,7 +108,7 @@ + extern long long tsum; /* sum of all times, for doing average */ + extern long long tsum2; + extern int rtt; +-extern __u16 acked; ++extern uint16_t acked; + extern int pipesize; + + #define COMMON_OPTIONS \ +@@ -160,18 +159,18 @@ + + static inline int in_flight(void) + { +- __u16 diff = (__u16)ntransmitted - acked; ++ uint16_t diff = (uint16_t)ntransmitted - acked; + return (diff<=0x7FFF) ? diff : ntransmitted-nreceived-nerrors; + } + +-static inline void acknowledge(__u16 seq) ++static inline void acknowledge(uint16_t seq) + { +- __u16 diff = (__u16)ntransmitted - seq; ++ uint16_t diff = (uint16_t)ntransmitted - seq; + if (diff <= 0x7FFF) { + if ((int)diff+1 > pipesize) + pipesize = (int)diff+1; +- if ((__s16)(seq - acked) > 0 || +- (__u16)ntransmitted - acked > 0x7FFF) ++ if ((int16_t)(seq - acked) > 0 || ++ (uint16_t)ntransmitted - acked > 0x7FFF) + acked = seq; + } + } +@@ -180,8 +179,8 @@ + { + ntransmitted++; + /* Invalidate acked, if 16 bit seq overflows. */ +- if ((__u16)ntransmitted - acked > 0x7FFF) +- acked = (__u16)ntransmitted + 1; ++ if ((uint16_t)ntransmitted - acked > 0x7FFF) ++ acked = (uint16_t)ntransmitted + 1; + } + + +@@ -193,9 +192,9 @@ + extern int pinger(void); + extern void sock_setbufs(int icmp_sock, int alloc); + extern void setup(int icmp_sock); +-extern void main_loop(int icmp_sock, __u8 *buf, int buflen) __attribute__((noreturn)); ++extern void main_loop(int icmp_sock, uint8_t *buf, int buflen) __attribute__((noreturn)); + extern void finish(void) __attribute__((noreturn)); + extern void status(void); + extern void common_options(int ch); +-extern int gather_statistics(__u8 *ptr, int cc, __u16 seq, int hops, ++extern int gather_statistics(uint8_t *ptr, int cc, uint16_t seq, int hops, + int csfailed, struct timeval *tv, char *from); +diff -durN orig/tracepath6.c new/tracepath6.c +--- orig/tracepath6.c 2005-11-14 22:38:28.000000000 +1100 ++++ new/tracepath6.c 2005-11-14 22:39:54.000000000 +1100 +@@ -14,16 +14,14 @@ + #include + #include + #include +- +-#include +-#include + #include + #include + #include + #include + #include +-#include ++#include + #include ++#include "linux-errqueue.h" + + int overhead = 48; + int mtu = 128000; +@@ -35,7 +33,7 @@ + + struct probehdr + { +- __u32 ttl; ++ uint32_t ttl; + struct timeval tv; + }; + +@@ -116,7 +114,7 @@ + } + } else if (cmsg->cmsg_level == SOL_IP) { + if (cmsg->cmsg_type == IP_TTL) { +- rethops = *(__u8*)CMSG_DATA(cmsg); ++ rethops = *(uint8_t*)CMSG_DATA(cmsg); + } + } + } +diff -durN orig/tracepath.c new/tracepath.c +--- orig/tracepath.c 2005-11-14 22:38:28.000000000 +1100 ++++ new/tracepath.c 2005-11-14 22:39:06.000000000 +1100 +@@ -13,7 +13,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -22,6 +21,7 @@ + #include + #include + #include ++#include "linux-errqueue.h" + + struct hhistory + { +@@ -33,7 +33,7 @@ + int hisptr; + + struct sockaddr_in target; +-__u16 base_port; ++uint16_t base_port; + + const int overhead = 28; + int mtu = 65535; +@@ -43,7 +43,7 @@ + + struct probehdr + { +- __u32 ttl; ++ uint32_t ttl; + struct timeval tv; + }; + +@@ -80,7 +80,7 @@ + memset(&rcvbuf, -1, sizeof(rcvbuf)); + iov.iov_base = &rcvbuf; + iov.iov_len = sizeof(rcvbuf); +- msg.msg_name = (__u8*)&addr; ++ msg.msg_name = (uint8_t*)&addr; + msg.msg_namelen = sizeof(addr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; +diff -durN orig/traceroute6.c new/traceroute6.c +--- orig/traceroute6.c 2005-11-14 22:38:28.000000000 +1100 ++++ new/traceroute6.c 2005-11-14 22:40:56.000000000 +1100 +@@ -245,11 +245,8 @@ + #include + #include + #include +- +-#include +-#include +- +-#include ++#include ++#include + + #include + +@@ -314,8 +311,8 @@ + + struct pkt_format + { +- __u32 ident; +- __u32 seq; ++ uint32_t ident; ++ uint32_t seq; + struct timeval tv; + }; + +@@ -497,7 +494,7 @@ + (char *)&on, sizeof(on)); + + if (source == NULL) { +- int alen; ++ unsigned int alen; + int probe_fd = socket(AF_INET6, SOCK_DGRAM, 0); + + if (probe_fd < 0) { +@@ -574,20 +571,20 @@ + } + Printf(" %g ms", deltaT(&t1, &t2)); + switch(i - 1) { +- case ICMPV6_PORT_UNREACH: ++ case ICMP6_DST_UNREACH_NOPORT: + ++got_there; + break; + +- case ICMPV6_NOROUTE: ++ case ICMP6_DST_UNREACH_NOROUTE: + ++unreachable; + Printf(" !N"); + break; +- case ICMPV6_ADDR_UNREACH: ++ case ICMP6_DST_UNREACH_ADDR: + ++unreachable; + Printf(" !H"); + break; + +- case ICMPV6_ADM_PROHIBITED: ++ case ICMP6_DST_UNREACH_ADMIN: + ++unreachable; + Printf(" !S"); + break; +@@ -618,7 +615,7 @@ + fd_set fds; + static struct timeval wait; + int cc = 0; +- int fromlen = sizeof (*from); ++ unsigned int fromlen = sizeof (*from); + + FD_ZERO(&fds); + FD_SET(sock, &fds); +@@ -727,24 +724,24 @@ + int packet_ok(u_char *buf, int cc, struct sockaddr_in6 *from, int seq, + struct timeval *tv) + { +- struct icmp6hdr *icp; ++ struct icmp6_hdr *icp; + u_char type, code; + +- icp = (struct icmp6hdr *) buf; ++ icp = (struct icmp6_hdr *) buf; + + type = icp->icmp6_type; + code = icp->icmp6_code; + +- if ((type == ICMPV6_TIME_EXCEED && code == ICMPV6_EXC_HOPLIMIT) || +- type == ICMPV6_DEST_UNREACH) ++ if ((type == ICMP6_TIME_EXCEEDED && code == ICMP6_TIME_EXCEED_TRANSIT) || ++ type == ICMP6_DST_UNREACH) + { +- struct ipv6hdr *hip; ++ struct ip6_hdr *hip; + struct udphdr *up; + int nexthdr; + +- hip = (struct ipv6hdr *) (icp + 1); ++ hip = (struct ip6_hdr *) (icp + 1); + up = (struct udphdr *)(hip+1); +- nexthdr = hip->nexthdr; ++ nexthdr = hip->ip6_nxt; + + if (nexthdr == 44) { + nexthdr = *(unsigned char*)up; +@@ -760,29 +757,29 @@ + ntohl(pkt->seq) == seq) + { + *tv = pkt->tv; +- return (type == ICMPV6_TIME_EXCEED? -1 : code+1); ++ return (type == ICMP6_TIME_EXCEEDED? -1 : code+1); + } + } + + } + + if (verbose) { +- struct ipv6hdr *hip; +- __u32 *lp; ++ struct ip6_hdr *hip; ++ uint32_t *lp; + char pa1[MAXHOSTNAMELEN]; + char pa2[MAXHOSTNAMELEN]; + int i; +- hip = (struct ipv6hdr *) (icp + 1); +- lp = (__u32 *) (icp + 1); ++ hip = (struct ip6_hdr *) (icp + 1); ++ lp = (uint32_t *) (icp + 1); + + Printf("\n%d bytes from %s to %s", cc, +- inet_ntop(AF_INET6, &hip->saddr, pa1, sizeof(pa1)), +- inet_ntop(AF_INET6, &hip->daddr, pa2, sizeof(pa2))); ++ inet_ntop(AF_INET6, &hip->ip6_src, pa1, sizeof(pa1)), ++ inet_ntop(AF_INET6, &hip->ip6_dst, pa2, sizeof(pa2))); + + Printf(": icmp type %d (%s) code %d\n", type, pr_type(type), + icp->icmp6_code); + +- for (i = sizeof(struct ipv6hdr); i < cc ; i += 4) ++ for (i = sizeof(struct ip6_hdr); i < cc ; i += 4) + Printf("%2d: x%8.8x\n", i, *lp++); + } + diff --git a/recipes/obsolete/iputils/files/tracepath6-mtu-opt.patch b/recipes/obsolete/iputils/files/tracepath6-mtu-opt.patch new file mode 100644 index 0000000000..63c8e76b3a --- /dev/null +++ b/recipes/obsolete/iputils/files/tracepath6-mtu-opt.patch @@ -0,0 +1,35 @@ +This patch adds a manual option to set the MTU. The method to determine the +local MTU is failing on sh4/2.6.14. It's not yet clear if this is an sh4, +2.6.14 and glibc bug. The manual mtu option allows tracepath6 to still be +used on this platform. + +--- new/tracepath6.c 2005/11/14 13:03:19 1.1 ++++ new/tracepath6.c 2005/11/14 13:04:24 +@@ -267,7 +267,7 @@ + + static void usage(void) + { +- fprintf(stderr, "Usage: tracepath6 [-n] [-b] [/]\n"); ++ fprintf(stderr, "Usage: tracepath6 [-n] [-b] [-m ] [/]\n"); + exit(-1); + } + +@@ -282,7 +282,7 @@ + struct hostent *he; + int ch; + +- while ((ch = getopt(argc, argv, "nbh?")) != EOF) { ++ while ((ch = getopt(argc, argv, "nbh?m:")) != EOF) { + switch(ch) { + case 'n': + no_resolve = 1; +@@ -290,6 +290,9 @@ + case 'b': + show_both = 1; + break; ++ case 'm': ++ mtu = atol(optarg); ++ break; + default: + usage(); + } -- cgit v1.2.3