If doing a catpure with "-S", as soon as we've created the capture file

(this assumes that "libpcap" writes out the header as soon as that
happens, which is the case for "libpcap" 0.4), we sync it out (to make
sure said header is in the file), and signal the parent process, so that
it opens the capture file and updates its windows to indicate that the
capture is in progress.

svn path=/trunk/; revision=371
This commit is contained in:
Guy Harris 1999-07-20 06:16:09 +00:00
parent c2107fa600
commit ee263d9381
2 changed files with 11 additions and 13 deletions

View File

@ -1,7 +1,7 @@
/* capture.c
* Routines for packet capture windows
*
* $Id: capture.c,v 1.32 1999/07/20 05:07:57 guy Exp $
* $Id: capture.c,v 1.33 1999/07/20 06:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -411,7 +411,6 @@ capture(void) {
ld.counts.total = 0;
ld.max = cf.count;
ld.linktype = DLT_NULL;
ld.signal_sent = 0;
ld.sync_time = 0;
ld.counts.tcp = 0;
ld.counts.udp = 0;
@ -451,6 +450,15 @@ capture(void) {
}
}
if (sync_mode) {
/* Sync out the capture file, so the header makes it to the file
system, and signal our parent so that they'll open the capture
file and update its windows to indicate that we have a live
capture in progress. */
fflush((FILE *)ld.pdh);
kill(getppid(), SIGUSR2);
}
cap_w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(cap_w), "Ethereal: Capture / Playback");
@ -622,15 +630,6 @@ capture_pcap_cb(u_char *user, const struct pcap_pkthdr *phdr,
capture_raw(pd, phdr->caplen, &ld->counts);
break;
}
if (sync_mode && !ld->signal_sent) {
/* will trigger the father to open the cap file which contains
at least one complete packet */
fflush((FILE *)ld->pdh);
kill(getppid(), SIGUSR2);
ld->signal_sent = 1;
}
}
#endif /* HAVE_LIBPCAP */

View File

@ -1,7 +1,7 @@
/* capture.h
* Definitions for packet capture windows
*
* $Id: capture.h,v 1.8 1999/07/09 04:18:33 gram Exp $
* $Id: capture.h,v 1.9 1999/07/20 06:16:09 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@ -36,7 +36,6 @@ typedef struct _loop_data {
gint go;
gint max;
gint linktype;
gint signal_sent;
time_t sync_time;
packet_counts counts;
pcap_dumper_t *pdh;