| 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, |