diff options
author | Guy Harris <guy@alum.mit.edu> | 2000-03-22 07:06:59 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2000-03-22 07:06:59 +0000 |
commit | 005588b8b94d679cc461ddd290bc9399b3d16f1b (patch) | |
tree | 900b9afc981b65ab61b957599a56dc60cf034b7b /wiretap/libpcap.c | |
parent | 8d47efa6f9bcd6422011379f4b5ccb27df8c12c4 (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.c | 10 |
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) |