diff options
author | Michael Mann <mmann78@netscape.net> | 2017-09-22 21:57:50 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-09-23 03:42:14 +0000 |
commit | e7cc0279ab9a11319de521dfdf25057d1ff7ab7f (patch) | |
tree | 3607326ca0c45da15f84cb2f7e60c9042b254eb1 /ui | |
parent | 3c8750dfb3b9cef1af2e29159782b443dfcd32ff (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.c | 2 | ||||
-rw-r--r-- | ui/gtk/flow_graph.c | 14 | ||||
-rw-r--r-- | ui/qt/sequence_dialog.cpp | 17 | ||||
-rw-r--r-- | ui/qt/sequence_dialog.h | 2 | ||||
-rw-r--r-- | ui/qt/sequence_dialog.ui | 19 |
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><html><head/><body><p>Only show flows matching the current display filter</p></body></html></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> |