Upstream-Status: Pending [from tcpdump-4.1.1-1.fc14.src.rpm]

Signed-off-by: Roy Li <rongqing.li@windriver.com>

--- tcpslice-1.2a3.orig/search.c	2000-09-10 10:52:40.000000000 +0200
+++ tcpslice-1.2a3/search.c	2006-07-28 14:56:55.000000000 +0200
@@ -53,7 +53,7 @@
 /* Size of a packet header in bytes; easier than typing the sizeof() all
  * the time ...
  */
-#define PACKET_HDR_LEN (sizeof( struct pcap_pkthdr ))
+#define PACKET_HDR_LEN (sizeof( struct pcap_sf_pkthdr ))
 
 extern int snaplen;
 
@@ -111,16 +111,24 @@
 static void
 extract_header( pcap_t *p, u_char *buf, struct pcap_pkthdr *hdr )
 	{
-	memcpy((char *) hdr, (char *) buf, sizeof(struct pcap_pkthdr));
+	struct pcap_sf_pkthdr hdri;
+
+	memcpy((char *) &hdri, (char *) buf, sizeof(struct pcap_sf_pkthdr));
 
 	if ( pcap_is_swapped( p ) )
 		{
-		hdr->ts.tv_sec = SWAPLONG(hdr->ts.tv_sec);
-		hdr->ts.tv_usec = SWAPLONG(hdr->ts.tv_usec);
-		hdr->len = SWAPLONG(hdr->len);
-		hdr->caplen = SWAPLONG(hdr->caplen);
+		hdr->ts.tv_sec = SWAPLONG(hdri.ts.tv_sec);
+		hdr->ts.tv_usec = SWAPLONG(hdri.ts.tv_usec);
+		hdr->len = SWAPLONG(hdri.len);
+		hdr->caplen = SWAPLONG(hdri.caplen);
+		}
+	else
+		{
+		hdr->ts.tv_sec = hdri.ts.tv_sec;
+		hdr->ts.tv_usec = hdri.ts.tv_usec;
+		hdr->len = hdri.len;
+		hdr->caplen = hdri.caplen;
 		}
-
 	/*
 	 * From bpf/libpcap/savefile.c:
 	 *
--- tcpslice-1.2a3.orig/tcpslice.h	1995-11-02 00:40:53.000000000 +0100
+++ tcpslice-1.2a3/tcpslice.h	2006-07-28 14:56:55.000000000 +0200
@@ -20,6 +20,26 @@
  */
 
 
+#include <time.h>
+/* #include <net/bpf.h> */
+
+/*
+ * This is a timeval as stored in disk in a dumpfile.
+ * It has to use the same types everywhere, independent of the actual
+ * `struct timeval'
+ */
+
+struct pcap_timeval {
+    bpf_int32 tv_sec;           /* seconds */
+    bpf_int32 tv_usec;          /* microseconds */
+};
+
+struct pcap_sf_pkthdr {
+    struct pcap_timeval ts;     /* time stamp */
+    bpf_u_int32 caplen;         /* length of portion present */
+    bpf_u_int32 len;            /* length this packet (off wire) */
+};
+
 time_t	gwtm2secs( struct tm *tm );
 
 int	sf_find_end( struct pcap *p, struct timeval *first_timestamp,
