mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
595 lines
15 KiB
Diff
595 lines
15 KiB
Diff
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>
|