+diff -urN iputils/clockdiff.c iputils.new/clockdiff.c
+--- iputils/clockdiff.c 2002-02-22 19:10:59.000000000 -0500
++++ iputils.new/clockdiff.c 2003-09-10 09:20:28.000000000 -0400
+@@ -2,6 +2,7 @@
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <stdio.h>
++#include <linux/types.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <math.h>
+diff -urN iputils/ping6.c iputils.new/ping6.c
+--- iputils/ping6.c 2003-09-10 17:27:48.000000000 -0400
++++ iputils.new/ping6.c 2003-09-10 17:22:43.000000000 -0400
+@@ -68,8 +68,44 @@
+ */
+ #include "ping_common.h"
+
+-#include <linux/in6.h>
+-#include <linux/ipv6.h>
++struct ipv6_rt_hdr {
++ __u8 nexthdr;
++ __u8 hdrlen;
++ __u8 type;
++ __u8 segments_left;
++
++ /*
++ * type specific data
++ * variable length field
++ */
++};
++
++struct rt0_hdr {
++ struct ipv6_rt_hdr rt_hdr;
++ __u32 bitmap; /* strict/loose bit map */
++ struct in6_addr addr[0];
++
++#define rt0_type rt_hdr.type;
++};
++#define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */
++struct ipv6hdr {
++#if defined(__LITTLE_ENDIAN)
++ __u8 priority:4,
++ version:4;
++#elif defined(__BIG_ENDIAN)
++ __u8 version:4,
++ priority:4;
++#endif
++ __u8 flow_lbl[3];
++
++ __u16 payload_len;
++ __u8 nexthdr;
++ __u8 hop_limit;
++
++ struct in6_addr saddr;
++ struct in6_addr daddr;
++};
++
+ #include <linux/icmpv6.h>
+
+ #define BIT_CLEAR(nr, addr) do { ((__u32 *)(addr))[(nr) >> 5] &= ~(1U << ((nr) & 31)); } while(0)
+diff -urN iputils/ping.c iputils.new/ping.c
+--- iputils/ping.c 2003-09-10 17:27:48.000000000 -0400
++++ iputils.new/ping.c 2003-09-10 17:18:16.000000000 -0400
+@@ -60,8 +60,8 @@
+
+ #include "ping_common.h"
+
++#include <linux/icmp.h>
+ #include <netinet/ip.h>
+-#include <netinet/ip_icmp.h>
+
+
+ #define MAXIPLEN 60
+diff -urN iputils/ping_common.h iputils.new/ping_common.h
+--- iputils/ping_common.h 2002-09-20 11:08:11.000000000 -0400
++++ iputils.new/ping_common.h 2003-09-10 17:16:16.000000000 -0400
+@@ -19,6 +19,7 @@
+
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
++#include <linux/types.h>
+ #include <linux/errqueue.h>
+
+ #include "SNAPSHOT.h"
+diff -urN iputils/tftpd.c iputils.new/tftpd.c
+--- iputils/tftpd.c 2002-01-23 19:31:41.000000000 -0500
++++ iputils.new/tftpd.c 2003-09-10 09:39:45.000000000 -0400
+@@ -57,7 +57,6 @@
+
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+-#include <linux/in6.h>
+ #include <netdb.h>
+
+ #include <setjmp.h>
+diff -urN iputils/tracepath6.c iputils.new/tracepath6.c
+--- iputils/tracepath6.c 2001-09-01 22:03:46.000000000 -0400
++++ iputils.new/tracepath6.c 2003-09-10 09:40:18.000000000 -0400
+@@ -14,8 +14,7 @@
+ #include <unistd.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+-
+-#include <linux/in6.h>
++#include <linux/types.h>
+ #include <linux/errqueue.h>
+ #include <errno.h>
+ #include <string.h>
+diff -urN iputils/tracepath.c iputils.new/tracepath.c
+--- iputils/tracepath.c 2002-02-22 19:10:59.000000000 -0500
++++ iputils.new/tracepath.c 2003-09-10 06:14:35.000000000 -0400
+@@ -13,6 +13,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/socket.h>
++#include <linux/types.h>
+ #include <linux/errqueue.h>
+ #include <errno.h>
+ #include <string.h>
+diff -urN iputils/traceroute6.c iputils.new/traceroute6.c
+--- iputils/traceroute6.c 2002-09-20 11:44:22.000000000 -0400
++++ iputils.new/traceroute6.c 2003-09-10 10:12:47.000000000 -0400
+@@ -246,9 +246,24 @@
+ #include <netinet/ip_icmp.h>
+ #include <netinet/udp.h>
+
+-#include <linux/ipv6.h>
+-#include <linux/in6.h>
++#include <linux/types.h>
++struct ipv6hdr {
++#if defined(__LITTLE_ENDIAN)
++ __u8 priority:4,
++ version:4;
++#elif defined(__BIG_ENDIAN)
++ __u8 version:4,
++ priority:4;
++#endif
++ __u8 flow_lbl[3];
++
++ __u16 payload_len;
++ __u8 nexthdr;
++ __u8 hop_limit;
+
++ struct in6_addr saddr;
++ struct in6_addr daddr;
++};
+ #include <linux/icmpv6.h>
+
+ #include <arpa/inet.h>