When double clicking on an interface in the main welcome menu opens the edit interfaces
[obnox/wireshark/wip.git] / gtk / capture_dlg.h
1 /* capture_dlg.h
2  * Definitions for packet capture windows
3  *
4  * $Id$
5  *
6  * Wireshark - Network traffic analyzer
7  * By Gerald Combs <gerald@wireshark.org>
8  * Copyright 1998 Gerald Combs
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23  */
24
25 #ifndef __CAPTURE_DLG_H__
26 #define __CAPTURE_DLG_H__
27
28 /* extern GtkWidget* airpcap_tb; */
29
30 /** @file
31  *  "Capture Options" dialog box.
32  *  @ingroup dialog_group
33  */
34 #include "capture_opts.h"
35
36 #ifdef HAVE_PCAP_REMOTE
37 struct remote_host {
38     gchar *remote_host;          /**< Host name or network address for remote capturing */
39     gchar *remote_port;          /**< TCP port of remote RPCAP server */
40     gint auth_type;              /**< Authentication type */
41     gchar *auth_username;        /**< Remote authentication parameters */
42     gchar *auth_password;        /**< Remote authentication parameters */
43     gboolean datatx_udp;
44     gboolean nocap_rpcap;
45     gboolean nocap_local;
46 };
47
48 typedef struct remote_options_tag {
49     capture_source src_type;
50     struct remote_host remote_host_opts;
51 #ifdef HAVE_PCAP_SETSAMPLING
52     capture_sampling sampling_method;
53     int sampling_param;
54 #endif
55 } remote_options;
56 #endif /* HAVE_PCAP_REMOTE */
57
58 typedef struct row_options_tag {
59     gchar *name;
60     gchar *display_name;
61     gchar *addresses;
62     gint no_addresses;
63     gchar *cfilter;
64     GList *links;
65     gint active_dlt;
66     gboolean pmode;
67 #ifdef HAVE_PCAP_CREATE
68     gboolean monitor_mode_enabled;
69     gboolean monitor_mode_supported;
70 #endif
71     gboolean has_snaplen;
72     guint snaplen;
73 #if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
74     gint buffer;
75 #endif
76 #ifdef HAVE_PCAP_REMOTE
77     remote_options remote_opts;
78 #endif
79 } interface_row;
80
81 typedef struct link_row_tag {
82     gchar *name;
83     gint dlt;
84 } link_row;
85
86 enum
87 {
88     CAPTURE = 0,
89     INTERFACE,
90     LINK,
91     PMODE,
92     SNAPLEN,
93 #if defined(HAVE_PCAP_CREATE)
94     BUFFER,
95     MONITOR,
96 #elif defined(_WIN32) && !defined(HAVE_PCAP_CREATE)
97     BUFFER,
98 #endif
99     FILTER,
100     NUM_COLUMNS
101 };
102
103 /** User requested the "Capture Options" dialog box by menu or toolbar.
104  *
105  * @param widget parent widget (unused)
106  * @param data unused
107  */
108 void capture_prep_cb(GtkWidget *widget, gpointer data);
109
110 /** User requested capture start by menu or toolbar.
111  *
112  * @param widget parent widget (unused)
113  * @param data unused
114  */
115 void capture_start_cb(GtkWidget *widget, gpointer data);
116
117 /** User requested capture stop by menu or toolbar.
118  *
119  * @param widget parent widget (unused)
120  * @param data unused
121  */
122 void capture_stop_cb(GtkWidget *widget, gpointer data);
123
124 /** User requested capture restart by menu or toolbar.
125  *
126  * @param widget parent widget (unused)
127  * @param data unused
128  */
129 void capture_restart_cb(GtkWidget *widget, gpointer data);
130
131 /* capture start confirmed by "Save unsaved capture", so do it now */
132 void capture_start_confirmed(void);
133
134 /** User requested the "Capture Airpcap" dialog box by menu or toolbar.
135  *
136  * @param widget parent widget (unused)
137  * @param data unused
138  */
139 void
140 capture_air_cb(GtkWidget *widget, gpointer data);
141
142 /*
143  * We remember the capture settings for each interface when a capture
144  * is started on it; the next time we select that interface we start
145  * out with those settings.
146  *
147  * XXX - we currently only do that for monitor mode and the link-layer
148  * type; arguably we should do it for the snapshot length, and perhaps
149  * promiscuous mode.
150  */
151 typedef struct {
152     gboolean monitor_mode;
153     int linktype;
154 } cap_settings_t;
155
156 /** Get capture settings for interface
157  *
158  * @param if_name interface name
159  */
160 cap_settings_t
161 capture_get_cap_settings (gchar *if_name);
162
163 GtkTreeModel* 
164 create_and_fill_model (GtkTreeView *view);
165
166 gboolean 
167 query_tooltip_tree_view_cb (GtkWidget  *widget,
168                             gint        x,
169                             gint        y,
170                             gboolean    keyboard_tip,
171                             GtkTooltip *tooltip,
172                             gpointer    data);
173
174 void 
175 activate_monitor (GtkTreeViewColumn *tree_column, GtkCellRenderer *renderer,
176                   GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data);
177
178 #ifdef HAVE_PCAP_REMOTE
179 #define RECENT_KEY_REMOTE_HOST "recent.remote_host"
180
181 /** Write all remote hosts to the recent file
182  *
183  * @param rf recent file
184  */
185 void
186 capture_remote_combo_recent_write_all(FILE *rf);
187
188 /** Add a new remote host from the recent file
189  *
190  * @param s string with hostname,port,auth_type
191  * @return TRUE if correctly added
192  */
193 gboolean 
194 capture_remote_combo_add_recent(gchar *s);
195 #endif
196
197 gboolean
198 dlg_window_present(void);
199
200 void
201 enable_selected_interface(gchar *name, gboolean enable);
202
203 void
204 options_interface_cb(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn *column _U_, gpointer userdata);
205
206 #endif /* capture_dlg.h */