aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-09-22 21:57:50 -0400
committerMichael Mann <mmann78@netscape.net>2017-09-23 03:42:14 +0000
commite7cc0279ab9a11319de521dfdf25057d1ff7ab7f (patch)
tree3607326ca0c45da15f84cb2f7e60c9042b254eb1 /ui
parent3c8750dfb3b9cef1af2e29159782b443dfcd32ff (diff)
Have sequence analysis properly use filters from taps.
Sequence analysis has its own "filtering" system that required its tap functions to look for some "filter flags". register_tap_listener() already comes with a filter argument, so use that to simplify logic of tap functions in dissectors. Also have Qt GUI for Flow Graph look like other dialogs that have a "Limit to display filter" checkbox. Change-Id: I91d9d9599309786892f5b50c98692e52651e7174 Reviewed-on: https://code.wireshark.org/review/23659 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui')
-rw-r--r--ui/cli/tap-flow.c2
-rw-r--r--ui/gtk/flow_graph.c14
-rw-r--r--ui/qt/sequence_dialog.cpp17
-rw-r--r--ui/qt/sequence_dialog.h2
-rw-r--r--ui/qt/sequence_dialog.ui19
5 files changed, 19 insertions, 35 deletions
diff --git a/ui/cli/tap-flow.c b/ui/cli/tap-flow.c
index 8915df15af..57ffcd32a5 100644
--- a/ui/cli/tap-flow.c
+++ b/ui/cli/tap-flow.c
@@ -103,8 +103,6 @@ flow_init(const char *opt_argp, void *userdata)
filter = opt_argp + 1;
}
- flow_info->all_packets = TRUE;
-
sequence_analysis_list_free(flow_info);
errp = register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), flow_info, filter, sequence_analysis_get_tap_flags(analysis),
diff --git a/ui/gtk/flow_graph.c b/ui/gtk/flow_graph.c
index 2214bf7947..018138efaf 100644
--- a/ui/gtk/flow_graph.c
+++ b/ui/gtk/flow_graph.c
@@ -37,11 +37,13 @@
#include "ui/gtk/main.h"
#include "ui/gtk/gui_stat_menu.h"
#include "ui/gtk/old-gtk-compat.h"
+#include "ui/gtk/gtkglobals.h"
void register_tap_listener_flow_graph(void);
static seq_analysis_info_t *graph_analysis = NULL;
static graph_analysis_data_t *graph_analysis_data = NULL;
+static const char* display_filter = NULL;
static GtkWidget *flow_graph_dlg = NULL;
@@ -57,7 +59,7 @@ static void
flow_graph_data_init(void) {
graph_analysis = sequence_analysis_info_new();
graph_analysis->name = "any";
- graph_analysis->all_packets = TRUE;
+ display_filter = NULL;
}
@@ -111,7 +113,7 @@ toggle_select_all(GtkWidget *widget _U_, gpointer user_data _U_)
{
/* is the button now active? */
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_all_rb))) {
- graph_analysis->all_packets = TRUE;
+ display_filter = NULL;
}
}
@@ -121,7 +123,7 @@ toggle_select_displayed(GtkWidget *widget _U_, gpointer user_data _U_)
{
/* is the button now active? */
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(select_displayed_rb))) {
- graph_analysis->all_packets = FALSE;
+ display_filter = gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget));
}
}
@@ -156,7 +158,7 @@ flow_graph_on_ok(GtkButton *button _U_, gpointer user_data)
if (analysis != NULL)
{
- register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), graph_analysis, NULL, sequence_analysis_get_tap_flags(analysis),
+ register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), graph_analysis, display_filter, sequence_analysis_get_tap_flags(analysis),
NULL, sequence_analysis_get_packet_func(analysis), NULL);
cf_retap_packets(&cfile);
@@ -248,7 +250,7 @@ flow_graph_dlg_create(void)
g_signal_connect(select_all_rb, "toggled", G_CALLBACK(toggle_select_all), NULL);
ws_gtk_grid_attach_extended(GTK_GRID(range_grid), select_all_rb, 0, 0, 1, 1,
(GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0);
- if (graph_analysis->all_packets) {
+ if (display_filter == NULL) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_all_rb),TRUE);
}
gtk_widget_show(select_all_rb);
@@ -260,7 +262,7 @@ flow_graph_dlg_create(void)
g_signal_connect(select_displayed_rb, "toggled", G_CALLBACK(toggle_select_displayed), NULL);
ws_gtk_grid_attach_extended(GTK_GRID(range_grid), select_displayed_rb, 0, 1, 1, 1,
(GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0);
- if (!graph_analysis->all_packets) {
+ if (display_filter != NULL) {
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(select_displayed_rb),TRUE);
}
gtk_widget_show(select_displayed_rb);
diff --git a/ui/qt/sequence_dialog.cpp b/ui/qt/sequence_dialog.cpp
index 4842c0ed93..57d55cb220 100644
--- a/ui/qt/sequence_dialog.cpp
+++ b/ui/qt/sequence_dialog.cpp
@@ -90,7 +90,6 @@ SequenceDialog::SequenceDialog(QWidget &parent, CaptureFile &cf, SequenceInfo *i
if (!info_) {
info_ = new SequenceInfo(sequence_analysis_info_new());
info_->sainfo()->name = "any";
- info_->sainfo()->all_packets = TRUE;
} else {
info_->ref();
sequence_analysis_free_nodes(info_->sainfo());
@@ -159,7 +158,6 @@ SequenceDialog::SequenceDialog(QWidget &parent, CaptureFile &cf, SequenceInfo *i
ctx_menu_.addAction(ui->actionGoToNextPacket);
ctx_menu_.addAction(ui->actionGoToPreviousPacket);
- ui->showComboBox->setCurrentIndex(0);
ui->addressComboBox->setCurrentIndex(0);
sequence_items_t item_data;
@@ -434,7 +432,11 @@ void SequenceDialog::fillDiagram()
register_analysis_t* analysis = sequence_analysis_find_by_name(info_->sainfo()->name);
if (analysis != NULL)
{
- register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), info_->sainfo(), NULL, sequence_analysis_get_tap_flags(analysis),
+ const char *filter = NULL;
+ if (ui->displayFilterCheckBox->checkState() == Qt::Checked)
+ filter = cap_file_.capFile()->dfilter;
+
+ register_tap_listener(sequence_analysis_get_tap_listener_name(analysis), info_->sainfo(), filter, sequence_analysis_get_tap_flags(analysis),
NULL, sequence_analysis_get_packet_func(analysis), NULL);
cf_retap_packets(cap_file_.capFile());
@@ -603,15 +605,8 @@ void SequenceDialog::goToAdjacentPacket(bool next)
}
}
-void SequenceDialog::on_showComboBox_activated(int index)
+void SequenceDialog::on_displayFilterCheckBox_toggled(bool)
{
- if (!info_->sainfo()) return;
-
- if (index == 0) {
- info_->sainfo()->all_packets = TRUE;
- } else {
- info_->sainfo()->all_packets = FALSE;
- }
fillDiagram();
}
diff --git a/ui/qt/sequence_dialog.h b/ui/qt/sequence_dialog.h
index c4d8caf5fb..f9d1ec0dee 100644
--- a/ui/qt/sequence_dialog.h
+++ b/ui/qt/sequence_dialog.h
@@ -85,7 +85,7 @@ private slots:
void on_actionGoToPacket_triggered();
void on_actionGoToNextPacket_triggered() { goToAdjacentPacket(true); }
void on_actionGoToPreviousPacket_triggered() { goToAdjacentPacket(false); }
- void on_showComboBox_activated(int index);
+ void on_displayFilterCheckBox_toggled(bool checked);
void on_flowComboBox_activated(int index);
void on_addressComboBox_activated(int index);
void on_actionReset_triggered();
diff --git a/ui/qt/sequence_dialog.ui b/ui/qt/sequence_dialog.ui
index b726daa1d9..16d43ac5a1 100644
--- a/ui/qt/sequence_dialog.ui
+++ b/ui/qt/sequence_dialog.ui
@@ -102,24 +102,13 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Show:</string>
+ <widget class="QCheckBox" name="displayFilterCheckBox">
+ <property name="toolTip">
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Only show flows matching the current display filter&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="showComboBox">
- <item>
<property name="text">
- <string>All packets</string>
+ <string>Limit to display filter</string>
</property>
- </item>
- <item>
- <property name="text">
- <string>Displayed packets</string>
- </property>
- </item>
</widget>
</item>
<item>