aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/libpcap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2000-03-22 07:06:59 +0000
committerGuy Harris <guy@alum.mit.edu>2000-03-22 07:06:59 +0000
commit005588b8b94d679cc461ddd290bc9399b3d16f1b (patch)
tree900b9afc981b65ab61b957599a56dc60cf034b7b /wiretap/libpcap.c
parent8d47efa6f9bcd6422011379f4b5ccb27df8c12c4 (diff)
In a Network Monitor capture file, get the starting offsets of frames
from the frame table - Network Monitor 2.x, at least, doesn't always write frame N+1 right after frame N. To do that, we need to mallocate a big array to hold the frame table, and free it when we close the capture file; this requires that we have capture-file-type-specific close routines as well as capture-file-type-specific read routines - we let it the pointer to that routine be null if it's not needed. Given that, we might as well get rid of the switch statement in "wtap_close()", in favor of using capture-file-type-specific close routines, as per the comment before that switch statement. svn path=/trunk/; revision=1740
Diffstat (limited to 'wiretap/libpcap.c')
-rw-r--r--wiretap/libpcap.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index a4a45e673d..822b2faaed 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -1,6 +1,6 @@
/* libpcap.c
*
- * $Id: libpcap.c,v 1.32 2000/02/19 08:00:06 guy Exp $
+ * $Id: libpcap.c,v 1.33 2000/03/22 07:06:58 guy Exp $
*
* Wiretap Library
* Copyright (c) 1998 by Gilbert Ramirez <gram@xiexie.org>
@@ -88,6 +88,7 @@ struct pcaprec_modified_hdr {
static int libpcap_read(wtap *wth, int *err);
static void adjust_header(wtap *wth, struct pcaprec_hdr *hdr);
+static void libpcap_close(wtap *wth);
static gboolean libpcap_dump(wtap_dumper *wdh, const struct wtap_pkthdr *phdr,
const u_char *pd, int *err);
@@ -259,6 +260,7 @@ int libpcap_open(wtap *wth, int *err)
wth->capture.pcap->version_major = hdr.version_major;
wth->capture.pcap->version_minor = hdr.version_minor;
wth->subtype_read = libpcap_read;
+ wth->subtype_close = libpcap_close;
wth->file_encap = pcap_encap[hdr.network];
wth->snapshot_length = hdr.snaplen;
@@ -454,6 +456,12 @@ adjust_header(wtap *wth, struct pcaprec_hdr *hdr)
}
}
+static void
+libpcap_close(wtap *wth)
+{
+ g_free(wth->capture.pcap);
+}
+
int wtap_pcap_encap_to_wtap_encap(int encap)
{
if (encap < 0 || encap >= NUM_PCAP_ENCAPS)