summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/iputils/iputils-big-patches.patch
diff options
context:
space:
mode:
authorJames Meyer <James.meyer@operamail.com>2008-10-02 03:19:12 (GMT)
committerJames Meyer <James.meyer@operamail.com>2008-10-02 03:19:12 (GMT)
commit0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a (patch)
treec0aa2c0b53c317be87eacfcb77b63f53f1f415e7 /abs/core-testing/iputils/iputils-big-patches.patch
downloadlinhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.zip
linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.gz
linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.bz2
initial import
Diffstat (limited to 'abs/core-testing/iputils/iputils-big-patches.patch')
-rw-r--r--abs/core-testing/iputils/iputils-big-patches.patch595
1 files changed, 595 insertions, 0 deletions
diff --git a/abs/core-testing/iputils/iputils-big-patches.patch b/abs/core-testing/iputils/iputils-big-patches.patch
new file mode 100644
index 0000000..29bc310
--- /dev/null
+++ b/abs/core-testing/iputils/iputils-big-patches.patch
@@ -0,0 +1,595 @@
+diff -Naur iputils.orig/Makefile iputils/Makefile
+--- iputils.orig/Makefile 2002-11-09 03:01:11.000000000 +0000
++++ iputils/Makefile 2005-06-09 16:15:32.000000000 +0000
+@@ -17,11 +17,6 @@
+ GLIBCFIX=-Iinclude-glibc -include include-glibc/glibc-bugs.h
+ endif
+
+-ifeq ($(KERNEL_INCLUDE)/linux/pfkeyv2.h,$(wildcard $(KERNEL_INCLUDE)/linux/pfkeyv2.h))
+- SUBDIRS=libipsec setkey
+- LDLIBS+=-Llibipsec -lipsec
+- IPSECDEF=-DDO_IPSEC -Ilibipsec
+-endif
+
+
+ #options if you compile with libc5, and without a bind>=4.9.4 libresolv
+@@ -31,7 +26,7 @@
+ # What a pity, all new gccs are buggy and -Werror does not work. Sigh.
+ #CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g -Werror
+ CCOPT=-D_GNU_SOURCE -O2 -Wstrict-prototypes -Wall -g
+-CFLAGS=$(CCOPT) $(GLIBCFIX) -I$(KERNEL_INCLUDE) -I../include $(IPSECDEF) $(DEFINES)
++CFLAGS=$(CCOPT) -I../include $(IPSECDEF) $(DEFINES)
+
+ IPV4_TARGETS=tracepath ping clockdiff rdisc arping tftpd rarpd
+ IPV6_TARGETS=tracepath6 traceroute6 ping6
+@@ -42,7 +37,11 @@
+
+ tftpd: tftpd.o tftpsubs.o
+ ping: ping.o ping_common.o
++ $(LINK.o) $^ $(LDLIBS) -o $@ -Wl,-z,now -Wl,-z,relro
+ ping6: ping6.o ping_common.o
++ $(LINK.o) $^ $(LDLIBS) -o $@ -Wl,-z,now -Wl,-z,relro
++traceroute6: traceroute6.o
++ $(LINK.o) $^ $(LDLIBS) -o $@ -Wl,-z,now -Wl,-z,relro
+ ping.o ping6.o ping_common.o: ping_common.h
+ tftpd.o tftpsubs.o: tftp.h
+
+diff -Naur iputils.orig/arping.c iputils/arping.c
+--- iputils.orig/arping.c 2001-10-05 22:42:47.000000000 +0000
++++ iputils/arping.c 2005-06-09 16:15:24.000000000 +0000
+@@ -9,6 +9,7 @@
+ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ */
+
++#include <asm/byteorder.h>
+ #include <stdlib.h>
+ #include <sys/param.h>
+ #include <sys/socket.h>
+@@ -19,6 +20,8 @@
+ #include <sys/ioctl.h>
+ #include <linux/if.h>
+ #include <linux/if_arp.h>
++#include <linux/if_ether.h>
++#include <linux/if_packet.h>
+ #include <sys/uio.h>
+
+ #include <netdb.h>
+diff -Naur iputils.orig/clockdiff.c iputils/clockdiff.c
+--- iputils.orig/clockdiff.c 2002-02-23 00:10:59.000000000 +0000
++++ iputils/clockdiff.c 2005-06-09 16:15:24.000000000 +0000
+@@ -1,7 +1,9 @@
++#include <asm/byteorder.h>
+ #include <time.h>
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <stdio.h>
++#include <linux/types.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <math.h>
+diff -Naur iputils.orig/include-glibc/netinet/in.h iputils/include-glibc/netinet/in.h
+--- iputils.orig/include-glibc/netinet/in.h 2002-11-09 00:22:25.000000000 +0000
++++ iputils/include-glibc/netinet/in.h 2005-06-09 16:15:00.000000000 +0000
+@@ -65,4 +65,45 @@
+ && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
+
+
+-#endif /* netinet/in.h */
++/* Functions to convert between host and network byte order.
++
++ Please note that these functions normally take `unsigned long int' or
++ `unsigned short int' values as arguments and also return them. But
++ this was a short-sighted decision since on different systems the types
++ may have different representations but the values are always the same. */
++
++extern u_int32_t ntohl (u_int32_t __netlong) __THROW __attribute__ ((__const__));
++extern u_int16_t ntohs (u_int16_t __netshort)
++ __THROW __attribute__ ((__const__));
++extern u_int32_t htonl (u_int32_t __hostlong)
++ __THROW __attribute__ ((__const__));
++extern u_int16_t htons (u_int16_t __hostshort)
++ __THROW __attribute__ ((__const__));
++
++#include <endian.h>
++
++/* Get machine dependent optimized versions of byte swapping functions. */
++#include <bits/byteswap.h>
++
++#ifdef __OPTIMIZE__
++/* We can optimize calls to the conversion functions. Either nothing has
++ to be done or we are using directly the byte-swapping functions which
++ often can be inlined. */
++# if __BYTE_ORDER == __BIG_ENDIAN
++/* The host byte order is the same as network byte order,
++ so these functions are all just identity. */
++# define ntohl(x) (x)
++# define ntohs(x) (x)
++# define htonl(x) (x)
++# define htons(x) (x)
++# else
++# if __BYTE_ORDER == __LITTLE_ENDIAN
++# define ntohl(x) __bswap_32 (x)
++# define ntohs(x) __bswap_16 (x)
++# define htonl(x) __bswap_32 (x)
++# define htons(x) __bswap_16 (x)
++# endif
++# endif
++#endif
++
++#endif /* netinet/in.h */
+diff -Naur iputils.orig/ipg iputils/ipg
+--- iputils.orig/ipg 2001-08-02 22:37:32.000000000 +0000
++++ iputils/ipg 2005-06-09 16:14:49.000000000 +0000
+@@ -1,21 +1,31 @@
+-#! /bin/bash
++#!/bin/bash
+
+-modprobe pg3
++modprobe pg3 >& /dev/null
++modprobe pktgen >& /dev/null
++
++PGDEV=/proc/net/pg
++if [[ ! -e ${PGDEV} ]] ; then
++ PGDEV=/proc/net/pktgen/pg0
++ if [[ ! -e ${PGDEV} ]] ; then
++ echo "Couldn't not locate pg in /proc/net :("
++ exit 1
++ fi
++fi
+
+ function pgset() {
+ local result
+
+- echo $1 > /proc/net/pg
++ echo $1 > ${PGDEV}
+
+- result=`cat /proc/net/pg | fgrep "Result: OK:"`
++ result=`cat ${PGDEV} | fgrep "Result: OK:"`
+ if [ "$result" = "" ]; then
+- cat /proc/net/pg | fgrep Result:
++ cat ${PGDEV} | fgrep Result:
+ fi
+ }
+
+ function pg() {
+- echo inject > /proc/net/pg
+- cat /proc/net/pg
++ echo inject > ${PGDEV}
++ cat ${PGDEV}
+ }
+
+ pgset "odev eth0"
+diff -Naur iputils.orig/ping.c iputils/ping.c
+--- iputils.orig/ping.c 2002-11-07 22:53:21.000000000 +0000
++++ iputils/ping.c 2005-06-09 16:15:00.000000000 +0000
+@@ -60,8 +60,8 @@
+
+ #include "ping_common.h"
+
++#include <linux/icmp.h>
+ #include <netinet/ip.h>
+-#include <netinet/ip_icmp.h>
+ #ifdef DO_IPSEC
+ #include <libipsec.h>
+ #endif
+@@ -1213,7 +1213,7 @@
+ once = 1;
+
+ /* Patch bpflet for current identifier. */
+- insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
++ insns[2] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
+
+ if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
+ perror("WARNING: failed to install socket filter\n");
+diff -Naur iputils.orig/ping6.c iputils/ping6.c
+--- iputils.orig/ping6.c 2002-09-20 15:08:11.000000000 +0000
++++ iputils/ping6.c 2005-06-09 16:15:00.000000000 +0000
+@@ -68,8 +68,44 @@
+ */
+ #include "ping_common.h"
+
+-#include <linux/in6.h>
+-#include <linux/ipv6.h>
++struct ipv6_rt_hdr {
++ __u8 nexthdr;
++ __u8 hdrlen;
++ __u8 type;
++ __u8 segments_left;
++
++ /*
++ * type specific data
++ * variable length field
++ */
++};
++
++struct rt0_hdr {
++ struct ipv6_rt_hdr rt_hdr;
++ __u32 bitmap; /* strict/loose bit map */
++ struct in6_addr addr[0];
++
++#define rt0_type rt_hdr.type;
++};
++#define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */
++struct ipv6hdr {
++#if defined(__LITTLE_ENDIAN)
++ __u8 priority:4,
++ version:4;
++#elif defined(__BIG_ENDIAN)
++ __u8 version:4,
++ priority:4;
++#endif
++ __u8 flow_lbl[3];
++
++ __u16 payload_len;
++ __u8 nexthdr;
++ __u8 hop_limit;
++
++ struct in6_addr saddr;
++ struct in6_addr daddr;
++};
++
+ #include <linux/icmpv6.h>
+
+ #define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0)
+@@ -879,7 +915,7 @@
+ once = 1;
+
+ /* Patch bpflet for current identifier. */
+- insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, __constant_htons(ident), 0, 1);
++ insns[1] = (struct sock_filter)BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, htons(ident), 0, 1);
+
+ if (setsockopt(icmp_sock, SOL_SOCKET, SO_ATTACH_FILTER, &filter, sizeof(filter)))
+ perror("WARNING: failed to install socket filter\n");
+diff -Naur iputils.orig/ping_common.h iputils/ping_common.h
+--- iputils.orig/ping_common.h 2002-09-20 15:08:11.000000000 +0000
++++ iputils/ping_common.h 2005-06-09 16:15:24.000000000 +0000
+@@ -1,3 +1,4 @@
++#include <asm/byteorder.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+@@ -19,6 +20,7 @@
+
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
++#include <linux/types.h>
+ #include <linux/errqueue.h>
+
+ #include "SNAPSHOT.h"
+diff -Naur iputils.orig/rarpd.c iputils/rarpd.c
+--- iputils.orig/rarpd.c 2001-12-02 18:45:06.000000000 +0000
++++ iputils/rarpd.c 2005-06-09 16:15:24.000000000 +0000
+@@ -9,6 +9,7 @@
+ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ */
+
++#include <asm/byteorder.h>
+ #include <stdio.h>
+ #include <syslog.h>
+ #include <dirent.h>
+@@ -26,6 +27,7 @@
+ #include <sys/signal.h>
+ #include <linux/if.h>
+ #include <linux/if_arp.h>
++#include <linux/if_ether.h>
+ #include <netinet/in.h>
+ #include <linux/if_packet.h>
+ #include <linux/filter.h>
+@@ -42,7 +44,9 @@
+ char *ifname;
+ char *tftp_dir = "/etc/tftpboot";
+
++#ifndef __UCLIBC__
+ extern int ether_ntohost(char *name, unsigned char *ea);
++#endif
+ void usage(void) __attribute__((noreturn));
+
+ struct iflink
+@@ -52,12 +56,12 @@
+ int hatype;
+ unsigned char lladdr[16];
+ unsigned char name[IFNAMSIZ];
+- struct ifaddr *ifa_list;
++ struct l_ifaddr *ifa_list;
+ } *ifl_list;
+
+-struct ifaddr
++struct l_ifaddr
+ {
+- struct ifaddr *next;
++ struct l_ifaddr *next;
+ __u32 prefix;
+ __u32 mask;
+ __u32 local;
+@@ -89,7 +93,7 @@
+ int fd;
+ struct ifreq *ifrp, *ifend;
+ struct iflink *ifl;
+- struct ifaddr *ifa;
++ struct l_ifaddr *ifa;
+ struct ifconf ifc;
+ struct ifreq ibuf[256];
+
+@@ -180,7 +184,7 @@
+ if (ifa == NULL) {
+ if (mask == 0 || prefix == 0)
+ continue;
+- ifa = (struct ifaddr*)malloc(sizeof(*ifa));
++ ifa = (struct l_ifaddr*)malloc(sizeof(*ifa));
+ memset(ifa, 0, sizeof(*ifa));
+ ifa->local = addr;
+ ifa->prefix = prefix;
+@@ -236,10 +240,10 @@
+ return dent != NULL;
+ }
+
+-struct ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
++struct l_ifaddr *select_ipaddr(int ifindex, __u32 *sel_addr, __u32 **alist)
+ {
+ struct iflink *ifl;
+- struct ifaddr *ifa;
++ struct l_ifaddr *ifa;
+ int retry = 0;
+ int i;
+
+@@ -295,7 +299,7 @@
+
+ if (r == NULL) {
+ if (hatype == ARPHRD_ETHER && halen == 6) {
+- struct ifaddr *ifa;
++ struct l_ifaddr *ifa;
+ struct hostent *hp;
+ char ename[256];
+ static struct rarp_map emap = {
+@@ -305,7 +309,11 @@
+ 6,
+ };
+
++#ifndef __UCLIBC__
+ if (ether_ntohost(ename, lladdr) != 0 ||
++#else
++ if (
++#endif
+ (hp = gethostbyname(ename)) == NULL) {
+ if (verbose)
+ syslog(LOG_INFO, "not found in /etc/ethers");
+@@ -364,7 +372,7 @@
+ {
+ __u32 laddr = 0;
+ struct iflink *ifl;
+- struct ifaddr *ifa;
++ struct l_ifaddr *ifa;
+
+ for (ifl=ifl_list; ifl; ifl = ifl->next)
+ if (ifl->index == ifindex)
+diff -Naur iputils.orig/rdisc.c iputils/rdisc.c
+--- iputils.orig/rdisc.c 2001-08-24 17:39:00.000000000 +0000
++++ iputils/rdisc.c 2005-06-09 16:15:24.000000000 +0000
+@@ -25,6 +25,7 @@
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
++#include <asm/byteorder.h>
+ #include <stdio.h>
+ #include <errno.h>
+ #include <signal.h>
+@@ -1504,5 +1505,5 @@
+ if (logging)
+ syslog(LOG_ERR, "%s: %m", str);
+ else
+- (void) fprintf(stderr, "%s: %s\n", str, sys_errlist[errno]);
++ (void) fprintf(stderr, "%s: %s\n", str, strerror(errno));
+ }
+diff -Naur iputils.orig/tftpd.c iputils/tftpd.c
+--- iputils.orig/tftpd.c 2002-01-24 00:31:41.000000000 +0000
++++ iputils/tftpd.c 2005-06-09 16:15:24.000000000 +0000
+@@ -48,6 +48,7 @@
+ * This version includes many modifications by Jim Guyton <guyton@rand-unix>
+ */
+
++#include <asm/byteorder.h>
+ #include <sys/types.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+@@ -57,7 +58,6 @@
+
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+-#include <linux/in6.h>
+ #include <netdb.h>
+
+ #include <setjmp.h>
+diff -Naur iputils.orig/tracepath.c iputils/tracepath.c
+--- iputils.orig/tracepath.c 2002-11-09 04:54:46.000000000 +0000
++++ iputils/tracepath.c 2005-06-09 16:15:24.000000000 +0000
+@@ -9,10 +9,12 @@
+ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ */
+
++#include <asm/byteorder.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/socket.h>
++#include <linux/types.h>
+ #include <linux/errqueue.h>
+ #include <errno.h>
+ #include <string.h>
+@@ -76,7 +78,7 @@
+ int progress = -1;
+ int broken_router;
+
+-restart:
++ while (1) {
+ memset(&rcvbuf, -1, sizeof(rcvbuf));
+ iov.iov_base = &rcvbuf;
+ iov.iov_len = sizeof(rcvbuf);
+@@ -93,7 +95,7 @@
+ if (res < 0) {
+ if (errno == EAGAIN)
+ return progress;
+- goto restart;
++ continue;
+ }
+
+ progress = mtu;
+@@ -216,7 +218,7 @@
+ perror("NET ERROR");
+ return 0;
+ }
+- goto restart;
++ }
+ }
+
+ int probe_ttl(int fd, int ttl)
+@@ -227,7 +229,6 @@
+
+ memset(sndbuf,0,mtu);
+
+-restart:
+ for (i=0; i<10; i++) {
+ int res;
+
+@@ -243,7 +244,8 @@
+ if (res==0)
+ return 0;
+ if (res > 0)
+- goto restart;
++ i = 0;
++ continue;
+ }
+ hisptr = (hisptr + 1)&63;
+
+diff -Naur iputils.orig/tracepath6.c iputils/tracepath6.c
+--- iputils.orig/tracepath6.c 2001-09-02 02:03:46.000000000 +0000
++++ iputils/tracepath6.c 2005-06-09 16:15:24.000000000 +0000
+@@ -9,13 +9,13 @@
+ * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ */
+
++#include <asm/byteorder.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+-
+-#include <linux/in6.h>
++#include <linux/types.h>
+ #include <linux/errqueue.h>
+ #include <errno.h>
+ #include <string.h>
+@@ -66,7 +66,7 @@
+ int progress = -1;
+ int broken_router;
+
+-restart:
++ while (1) {
+ memset(&rcvbuf, -1, sizeof(rcvbuf));
+ iov.iov_base = &rcvbuf;
+ iov.iov_len = sizeof(rcvbuf);
+@@ -83,7 +83,7 @@
+ if (res < 0) {
+ if (errno == EAGAIN)
+ return progress;
+- goto restart;
++ continue;
+ }
+
+ progress = 2;
+@@ -222,34 +222,29 @@
+ perror("NET ERROR");
+ return 0;
+ }
+- goto restart;
++ }
+ }
+
+ int probe_ttl(int fd, int ttl)
+ {
+- int i;
++ int i=0, res;
+ char sndbuf[mtu];
+ struct probehdr *hdr = (struct probehdr*)sndbuf;
+
+-restart:
+-
+- for (i=0; i<10; i++) {
+- int res;
+-
+- hdr->ttl = ttl;
+- gettimeofday(&hdr->tv, NULL);
+- if (send(fd, sndbuf, mtu-overhead, 0) > 0)
+- break;
+- res = recverr(fd, ttl);
+- if (res==0)
+- return 0;
+- if (res > 0)
+- goto restart;
+- }
+-
+- if (i<10) {
+- int res;
+-
++ while (i<10) {
++ for (i=0; i<10; i++) {
++ hdr->ttl = ttl;
++ gettimeofday(&hdr->tv, NULL);
++ if (send(fd, sndbuf, mtu-overhead, 0) > 0)
++ break;
++ res = recverr(fd, ttl);
++ if (res==0)
++ return 0;
++ if (res > 0) {
++ i = 0;
++ continue;
++ }
++ }
+ data_wait(fd);
+ if (recv(fd, sndbuf, sizeof(sndbuf), MSG_DONTWAIT) > 0) {
+ printf("%2d?: reply received 8)\n", ttl);
+@@ -257,7 +252,7 @@
+ }
+ res = recverr(fd, ttl);
+ if (res == 1)
+- goto restart;
++ continue;
+ return res;
+ }
+
+diff -Naur iputils.orig/traceroute6.c iputils/traceroute6.c
+--- iputils.orig/traceroute6.c 2002-10-03 03:29:23.000000000 +0000
++++ iputils/traceroute6.c 2005-06-09 16:14:49.000000000 +0000
+@@ -244,11 +244,30 @@
+ #include <netinet/in.h>
+ #include <netinet/ip.h>
+ #include <netinet/ip_icmp.h>
++#if __linux__
++#include <linux/udp.h>
++#else
+ #include <netinet/udp.h>
++#endif
++
++#include <linux/types.h>
++struct ipv6hdr {
++#if defined(__LITTLE_ENDIAN)
++ __u8 priority:4,
++ version:4;
++#elif defined(__BIG_ENDIAN)
++ __u8 version:4,
++ priority:4;
++#endif
++ __u8 flow_lbl[3];
+
+-#include <linux/ipv6.h>
+-#include <linux/in6.h>
++ __u16 payload_len;
++ __u8 nexthdr;
++ __u8 hop_limit;
+
++ struct in6_addr saddr;
++ struct in6_addr daddr;
++};
+ #include <linux/icmpv6.h>
+
+ #include <arpa/inet.h>