diff options
-rw-r--r-- | capture.h | 118 | ||||
-rw-r--r-- | capture_loop.c | 1 | ||||
-rw-r--r-- | capture_loop.h | 71 | ||||
-rw-r--r-- | capture_opts.c | 1 | ||||
-rw-r--r-- | capture_opts.h | 112 | ||||
-rw-r--r-- | capture_sync.h | 4 | ||||
-rw-r--r-- | dumpcap.c | 1 | ||||
-rw-r--r-- | gtk/capture_info_dlg.c | 1 | ||||
-rw-r--r-- | gtk/main.c | 2 |
9 files changed, 194 insertions, 117 deletions
@@ -31,86 +31,7 @@ * Capture related things. */ -/** Name we give to the child process when doing a "-S" capture. */ -#define CHILD_NAME "ethereal-capture" - - -/* Current state of capture engine. XXX - differentiate states */ -typedef enum { - CAPTURE_STOPPED, /**< stopped */ - CAPTURE_PREPARING, /**< preparing, but still no response from capture child */ - CAPTURE_RUNNING /**< capture child signalled ok, capture is running now */ -} capture_state; - - -/** Capture options coming from user interface */ -typedef struct capture_options_tag { - /* general */ - void *cf; /**< handle to cfile (note: untyped handle) */ - gchar *cfilter; /**< Capture filter string */ - gchar *iface; /**< the network interface to capture from */ - -#ifdef _WIN32 - int buffer_size; /**< the capture buffer size (MB) */ -#endif - gboolean has_snaplen; /**< TRUE if maximum capture packet length - is specified */ - int snaplen; /**< Maximum captured packet length */ - gboolean promisc_mode; /**< Capture in promiscuous mode */ - int linktype; /**< Data link type to use, or -1 for - "use default" */ - gchar *save_file; /**< the capture file name */ - - /* GUI related */ - gboolean real_time_mode; /**< Update list of packets in real time */ - gboolean show_info; /**< show the info dialog */ - gboolean quit_after_cap; /** Makes a "capture only mode". Implies -k */ - gboolean restart; /**< restart after closing is done */ - - /* multiple files (and ringbuffer) */ - gboolean multi_files_on; /**< TRUE if ring buffer in use */ - - gboolean has_file_duration; /**< TRUE if ring duration specified */ - gint32 file_duration; /* Switch file after n seconds */ - gboolean has_ring_num_files;/**< TRUE if ring num_files specified */ - guint32 ring_num_files; /**< Number of multiple buffer files */ - - /* autostop conditions */ - gboolean has_autostop_files;/**< TRUE if maximum number of capture files - are specified */ - gint32 autostop_files; /**< Maximum number of capture files */ - - gboolean has_autostop_packets; /**< TRUE if maximum packet count is - specified */ - int autostop_packets; /**< Maximum packet count */ - gboolean has_autostop_filesize; /**< TRUE if maximum capture file size - is specified */ - gint32 autostop_filesize; /**< Maximum capture file size */ - gboolean has_autostop_duration; /**< TRUE if maximum capture duration - is specified */ - gint32 autostop_duration; /**< Maximum capture duration */ - - /* internally used (don't touch from outside) */ - int fork_child; /**< If not -1, in parent, process ID of child */ -#ifdef _WIN32 - int signal_pipe_fd; /**< the pipe to signal the child */ -#endif - capture_state state; /**< current state of the capture engine */ -} capture_options; - - -/* initialize the capture_options with some reasonable values */ -extern void -capture_opts_init(capture_options *capture_opts, void *cfile); - -extern void -capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg, gboolean *start_capture); - -/* log content of capture_opts */ -extern void -capture_opts_log(const char *log_domain, GLogLevelFlags log_level, capture_options *capture_opts); - - +#include "capture_opts.h" /** * Start a capture session. @@ -155,41 +76,4 @@ extern void capture_input_error_message(capture_options *capture_opts, char *err extern void capture_input_closed(capture_options *capture_opts); - -/** Do the low-level work of a capture (start the capture child). - * Returns TRUE if it succeeds, FALSE otherwise. */ -extern int capture_loop_start(capture_options *capture_opts, gboolean *stats_known, struct pcap_stat *stats); - -/** Stop a low-level capture (stops the capture child). */ -extern void capture_loop_stop(void); - - - -/** Current Capture info. */ -typedef struct { - /* handles */ - gpointer callback_data; /**< capture callback handle */ - gpointer ui; /**< user interfaces own handle */ - - /* capture info */ - packet_counts *counts; /**< protocol specific counters */ - time_t running_time; /**< running time since last update */ - gint new_packets; /**< packets since last update */ -} capture_info; - - -/** Create the capture info dialog */ -extern void capture_info_create( -capture_info *cinfo, -gchar *iface); - -/** Update the capture info counters in the dialog */ -extern void capture_info_update( -capture_info *cinfo); - -/** Destroy the capture info dialog again */ -extern void capture_info_destroy( -capture_info *cinfo); - - #endif /* capture.h */ diff --git a/capture_loop.c b/capture_loop.c index 77e6ad2f86..2e6beefad9 100644 --- a/capture_loop.c +++ b/capture_loop.c @@ -68,6 +68,7 @@ #include <epan/packet.h> #include "capture.h" +#include "capture_loop.h" #include "capture_sync.h" #include "pcap-util.h" diff --git a/capture_loop.h b/capture_loop.h new file mode 100644 index 0000000000..9b57499706 --- /dev/null +++ b/capture_loop.h @@ -0,0 +1,71 @@ +/* capture_loop.h + * Do the low-level work of a capture + * + * $Id$ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +/** @file + * + * Do the low-level work of a capture. + * + */ + +#ifndef __CAPTURE_LOOP_H__ +#define __CAPTURE_LOOP_H__ + +/** Do the low-level work of a capture. + * Returns TRUE if it succeeds, FALSE otherwise. */ +extern int capture_loop_start(capture_options *capture_opts, gboolean *stats_known, struct pcap_stat *stats); + +/** Stop a low-level capture (stops the capture child). */ +extern void capture_loop_stop(void); + + + +/** Current Capture info. */ +typedef struct { + /* handles */ + gpointer callback_data; /**< capture callback handle */ + gpointer ui; /**< user interfaces own handle */ + + /* capture info */ + packet_counts *counts; /**< protocol specific counters */ + time_t running_time; /**< running time since last update */ + gint new_packets; /**< packets since last update */ +} capture_info; + + +/** Create the capture info dialog */ +extern void capture_info_create( +capture_info *cinfo, +gchar *iface); + +/** Update the capture info counters in the dialog */ +extern void capture_info_update( +capture_info *cinfo); + +/** Destroy the capture info dialog again */ +extern void capture_info_destroy( +capture_info *cinfo); + + +#endif /* capture_loop.h */ diff --git a/capture_opts.c b/capture_opts.c index df66d6b3a3..38da616b64 100644 --- a/capture_opts.c +++ b/capture_opts.c @@ -38,6 +38,7 @@ #include <epan/packet.h> #include "capture.h" +#include "capture_opts.h" #include "ringbuffer.h" #include "clopts_common.h" #include "cmdarg_err.h" diff --git a/capture_opts.h b/capture_opts.h new file mode 100644 index 0000000000..2708f80e61 --- /dev/null +++ b/capture_opts.h @@ -0,0 +1,112 @@ +/* capture_opts.h + * Capture options (all parameters needed to do the actual capture) + * + * $Id$ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +/** @file + * + * Capture options (all parameters needed to do the actual capture) + * + */ + +#ifndef __CAPTURE_OPTS_H__ +#define __CAPTURE_OPTS_H__ + + +/* Current state of capture engine. XXX - differentiate states */ +typedef enum { + CAPTURE_STOPPED, /**< stopped */ + CAPTURE_PREPARING, /**< preparing, but still no response from capture child */ + CAPTURE_RUNNING /**< capture child signalled ok, capture is running now */ +} capture_state; + + +/** Capture options coming from user interface */ +typedef struct capture_options_tag { + /* general */ + void *cf; /**< handle to cfile (note: untyped handle) */ + gchar *cfilter; /**< Capture filter string */ + gchar *iface; /**< the network interface to capture from */ + +#ifdef _WIN32 + int buffer_size; /**< the capture buffer size (MB) */ +#endif + gboolean has_snaplen; /**< TRUE if maximum capture packet length + is specified */ + int snaplen; /**< Maximum captured packet length */ + gboolean promisc_mode; /**< Capture in promiscuous mode */ + int linktype; /**< Data link type to use, or -1 for + "use default" */ + gchar *save_file; /**< the capture file name */ + + /* GUI related */ + gboolean real_time_mode; /**< Update list of packets in real time */ + gboolean show_info; /**< show the info dialog */ + gboolean quit_after_cap; /** Makes a "capture only mode". Implies -k */ + gboolean restart; /**< restart after closing is done */ + + /* multiple files (and ringbuffer) */ + gboolean multi_files_on; /**< TRUE if ring buffer in use */ + + gboolean has_file_duration; /**< TRUE if ring duration specified */ + gint32 file_duration; /* Switch file after n seconds */ + gboolean has_ring_num_files;/**< TRUE if ring num_files specified */ + guint32 ring_num_files; /**< Number of multiple buffer files */ + + /* autostop conditions */ + gboolean has_autostop_files;/**< TRUE if maximum number of capture files + are specified */ + gint32 autostop_files; /**< Maximum number of capture files */ + + gboolean has_autostop_packets; /**< TRUE if maximum packet count is + specified */ + int autostop_packets; /**< Maximum packet count */ + gboolean has_autostop_filesize; /**< TRUE if maximum capture file size + is specified */ + gint32 autostop_filesize; /**< Maximum capture file size */ + gboolean has_autostop_duration; /**< TRUE if maximum capture duration + is specified */ + gint32 autostop_duration; /**< Maximum capture duration */ + + /* internally used (don't touch from outside) */ + int fork_child; /**< If not -1, in parent, process ID of child */ +#ifdef _WIN32 + int signal_pipe_fd; /**< the pipe to signal the child */ +#endif + capture_state state; /**< current state of the capture engine */ +} capture_options; + + +/* initialize the capture_options with some reasonable values */ +extern void +capture_opts_init(capture_options *capture_opts, void *cfile); + +extern void +capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg, gboolean *start_capture); + +/* log content of capture_opts */ +extern void +capture_opts_log(const char *log_domain, GLogLevelFlags log_level, capture_options *capture_opts); + + +#endif /* capture_opts.h */ diff --git a/capture_sync.h b/capture_sync.h index 614747ee5e..d734641d41 100644 --- a/capture_sync.h +++ b/capture_sync.h @@ -34,6 +34,10 @@ #ifndef __CAPTURE_SYNC_H__ #define __CAPTURE_SYNC_H__ +/** Name we give to the child process when doing a "-S" capture. */ +#define CHILD_NAME "ethereal-capture" + + /** * Start a new capture session. * Create a capture child which is doing the real capture work. @@ -53,6 +53,7 @@ #include "pcap-util.h" #include "capture.h" +#include "capture_loop.h" #ifdef _WIN32 #include "capture-wpcap.h" diff --git a/gtk/capture_info_dlg.c b/gtk/capture_info_dlg.c index 1d182a33f6..6ab480fd83 100644 --- a/gtk/capture_info_dlg.c +++ b/gtk/capture_info_dlg.c @@ -38,6 +38,7 @@ #include <epan/packet.h> #include "capture.h" +#include "capture_loop.h" #include "globals.h" #include "capture_ui_utils.h" #include "dlg_utils.h" diff --git a/gtk/main.c b/gtk/main.c index a9173e939f..9a764d0937 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -91,6 +91,8 @@ #include <pcap.h> #include "pcap-util.h" #include "capture.h" +#include "capture_loop.h" +#include "capture_sync.h" #endif #ifdef _WIN32 |