Update to V9.0.0 (2009-12)
[obnox/wireshark/wip.git] / capture_opts.h
index c47519329d543011f67232a4bb557936fd59efba..7b7fb67d86fca6dd5896c6208bd49fcaa95b1bd2 100644 (file)
 #ifndef __CAPTURE_OPTS_H__
 #define __CAPTURE_OPTS_H__
 
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>            /* for gid_t */
+#endif
+
 
 /* Current state of capture engine. XXX - differentiate states */
 typedef enum {
@@ -40,6 +44,34 @@ typedef enum {
     CAPTURE_RUNNING         /**< capture child signalled ok, capture is running now */
 } capture_state;
 
+#ifdef HAVE_PCAP_REMOTE
+/* Type of capture source */
+typedef enum {
+    CAPTURE_IFLOCAL,        /**< Local network interface */
+    CAPTURE_IFREMOTE        /**< Remote network interface */
+} capture_source;
+
+/* Type of RPCAPD Authentication */
+typedef enum {
+    CAPTURE_AUTH_NULL,      /**< No authentication */
+    CAPTURE_AUTH_PWD        /**< User/password authentication */
+} capture_auth;
+
+#ifdef HAVE_PCAP_SETSAMPLING
+/**
+ * Method of packet sampling (dropping some captured packets),
+ * may require additional integer parameter, marked here as N
+ */
+typedef enum {
+    CAPTURE_SAMP_NONE,      /**< No sampling - capture all packets */
+    CAPTURE_SAMP_BY_COUNT,  /**< Counter-based sampling -
+                                 capture 1 packet from every N */
+    CAPTURE_SAMP_BY_TIMER   /**< Timer-based sampling -
+                                 capture no more than 1 packet
+                                 in N milliseconds */
+} capture_sampling;
+#endif
+#endif
 
 /** Capture options coming from user interface */
 typedef struct capture_options_tag {
@@ -55,7 +87,24 @@ typedef struct capture_options_tag {
                                      *< Readers of this field should use
                                      *< get_iface_description() from
                                      *< "capture_ui_utils.h" to access it. */
-
+#ifdef HAVE_PCAP_REMOTE
+    capture_source src_type;        /**< Capturing on remote interface */
+    gchar    *remote_host;          /**< Host name or network address
+                                     *< for remote capturing */
+    gchar    *remote_port;          /**< TCP port of remote RPCAP server */
+
+    capture_auth  auth_type;
+    gchar    *auth_username;
+    gchar    *auth_password;        /**< Remote authentication parameters */
+
+    gboolean datatx_udp;            /**< Whether to use UDP for data transfer */
+    gboolean nocap_rpcap;           /**< Whether to capture RPCAP own traffic */
+    gboolean nocap_local;           /**< TODO: Whether to capture local traffic */
+#ifdef HAVE_PCAP_SETSAMPLING
+    capture_sampling sampling_method; /**< PCAP packet sampling method */
+    int sampling_param;             /**< PCAP packet sampling parameter */
+#endif
+#endif
 #ifdef _WIN32
     int      buffer_size;           /**< the capture buffer size (MB) */
 #endif
@@ -67,6 +116,7 @@ typedef struct capture_options_tag {
                                          "use default" */
     gboolean saving_to_file;        /**< TRUE if capture is writing to a file */
     gchar    *save_file;            /**< the capture file name */
+    gboolean use_pcapng;            /**< TRUE if file format is pcapng */
 
     /* GUI related */
     gboolean real_time_mode;        /**< Update list of packets in real time */
@@ -112,7 +162,7 @@ typedef struct capture_options_tag {
 
 /* initialize the capture_options with some reasonable values */
 extern void
-capture_opts_init(capture_options *capture_opts, void *cfile);
+capture_opts_init(capture_options *capture_opts, void *cf);
 
 /* set a command line option value */
 extern int
@@ -130,10 +180,6 @@ capture_opts_list_link_layer_types(capture_options *capture_opts, gboolean machi
 extern int
 capture_opts_list_interfaces(gboolean machine_readable);
 
-/* print interface statistics */
-extern int
-capture_opts_print_statistics(gboolean machine_readable);
-
 /* trim the snaplen entry */
 extern void
 capture_opts_trim_snaplen(capture_options *capture_opts, int snaplen_min);