aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrene RĂ¼ngeler <I.Ruengeler@fh-muenster.de>2013-04-11 12:08:48 +0000
committerIrene RĂ¼ngeler <I.Ruengeler@fh-muenster.de>2013-04-11 12:08:48 +0000
commit799985b0f987d6ec4615f7efc7f8fef2b01bd2d9 (patch)
tree9a387511f02a933d0b66574bdd064f621f1ad3e2
parent77a71eb93638d6e3658cc60cfe5b7b3736d7cd71 (diff)
Don't select the 'any' device (in Linux), when 'capture all' is selected.
svn path=/trunk/; revision=48815
-rw-r--r--ui/gtk/capture_dlg.c32
-rw-r--r--ui/gtk/main_welcome.c10
2 files changed, 32 insertions, 10 deletions
diff --git a/ui/gtk/capture_dlg.c b/ui/gtk/capture_dlg.c
index 50533f68ab..2cf805c1ba 100644
--- a/ui/gtk/capture_dlg.c
+++ b/ui/gtk/capture_dlg.c
@@ -3135,28 +3135,39 @@ static void capture_all_cb(GtkToggleButton *button, gpointer d _U_)
GtkTreeView *if_cb;
GtkTreeModel *model;
GtkWidget *pcap_ng_cb;
- gboolean enabled = FALSE, capture_set = FALSE;
+ gchar *interface = NULL;
+ gboolean enabled = FALSE, capture_set = FALSE, pseudo = FALSE;
+ guint16 num_temp;
if (gtk_toggle_button_get_active(button))
enabled = TRUE;
if_cb = (GtkTreeView *) g_object_get_data(G_OBJECT(cap_open_w), E_CAP_IFACE_KEY);
model = gtk_tree_view_get_model(if_cb);
pcap_ng_cb = (GtkWidget *) g_object_get_data(G_OBJECT(cap_open_w), E_CAP_PCAP_NG_KEY);
+ num_temp = global_capture_opts.num_selected++;
if (gtk_tree_model_get_iter_first(model, &iter)) {
do {
- gtk_tree_model_get (model, &iter, CAPTURE, &capture_set, -1);
- if (!capture_set && enabled) {
- global_capture_opts.num_selected++;
- } else if (capture_set && !enabled) {
- global_capture_opts.num_selected--;
+ gtk_tree_model_get (model, &iter, CAPTURE, &capture_set, IFACE_HIDDEN_NAME, &interface, -1);
+ if (strcmp(interface, "any") == 0) {
+ pseudo = TRUE;
+ }
+ if (!capture_set && enabled && !pseudo) {
+ num_temp++;
+ } else if (capture_set && (!enabled || (enabled && pseudo))) {
+ num_temp--;
}
- gtk_list_store_set(GTK_LIST_STORE(model), &iter, CAPTURE, enabled, -1);
+ if (!pseudo) {
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, CAPTURE, enabled, -1);
+ } else {
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, CAPTURE, FALSE, -1);
+ }
+ pseudo = FALSE;
} while (gtk_tree_model_iter_next(model, &iter));
}
- if (global_capture_opts.num_selected >= 2) {
+ if (num_temp >= 2) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pcap_ng_cb), TRUE);
gtk_widget_set_sensitive(pcap_ng_cb, FALSE);
- } else if (global_capture_opts.num_selected <= 1) {
+ } else if (num_temp <= 1) {
gtk_widget_set_sensitive(pcap_ng_cb, TRUE);
}
if (interfaces_dialog_window_present()) {
@@ -3165,6 +3176,9 @@ static void capture_all_cb(GtkToggleButton *button, gpointer d _U_)
if (get_welcome_window() != NULL) {
change_selection_for_all(enabled);
}
+ if (global_capture_opts.num_selected != num_temp) {
+ global_capture_opts.num_selected = num_temp;
+ }
if (global_capture_opts.num_selected > 0) {
gtk_widget_set_sensitive(ok_bt, TRUE);
#if defined(HAVE_PCAP_OPEN_DEAD) && defined(HAVE_BPF_IMAGE)
diff --git a/ui/gtk/main_welcome.c b/ui/gtk/main_welcome.c
index e880a7e477..ad82a26087 100644
--- a/ui/gtk/main_welcome.c
+++ b/ui/gtk/main_welcome.c
@@ -794,9 +794,17 @@ void change_interface_selection(gchar* name, gboolean activate)
void change_selection_for_all(gboolean enable)
{
guint i;
+ gboolean all = FALSE;
+ interface_t device;
for (i = 0; i < global_capture_opts.all_ifaces->len; i++) {
- change_interface_selection(g_array_index(global_capture_opts.all_ifaces, interface_t, i).name, enable);
+ device = g_array_index(global_capture_opts.all_ifaces, interface_t, i);
+ all = strcmp(device.name, "any");
+ if (all) {
+ change_interface_selection(device.name, enable);
+ } else {
+ change_interface_selection(device.name, FALSE);
+ }
}
}
#endif