diff options
author | Irene RĂ¼ngeler <I.Ruengeler@fh-muenster.de> | 2013-12-18 13:49:10 +0000 |
---|---|---|
committer | Irene RĂ¼ngeler <I.Ruengeler@fh-muenster.de> | 2013-12-18 13:49:10 +0000 |
commit | 4729c083ac6ae7456584cbf726c1023b8707b72b (patch) | |
tree | b935c703603a123bcffd92bc4b63faae9295ee1e /ui/qt | |
parent | 485faca86dd9976763bf58b341dac2c53f1c3120 (diff) | |
download | wireshark-4729c083ac6ae7456584cbf726c1023b8707b72b.tar.gz |
Add 'Filter Association' to context menu in packet list.
svn path=/trunk/; revision=54219
Diffstat (limited to 'ui/qt')
-rw-r--r-- | ui/qt/main_window.h | 1 | ||||
-rw-r--r-- | ui/qt/main_window.ui | 8 | ||||
-rw-r--r-- | ui/qt/main_window_slots.cpp | 12 | ||||
-rw-r--r-- | ui/qt/packet_list.cpp | 2 | ||||
-rw-r--r-- | ui/qt/sctp_all_assocs_dialog.cpp | 4 | ||||
-rw-r--r-- | ui/qt/sctp_assoc_analyse_dialog.cpp | 17 | ||||
-rw-r--r-- | ui/qt/sctp_assoc_analyse_dialog.h | 2 | ||||
-rw-r--r-- | ui/qt/sctp_graph_arwnd_dialog.cpp | 4 | ||||
-rw-r--r-- | ui/qt/sctp_graph_byte_dialog.cpp | 4 | ||||
-rw-r--r-- | ui/qt/sctp_graph_dialog.cpp | 4 |
10 files changed, 48 insertions, 10 deletions
diff --git a/ui/qt/main_window.h b/ui/qt/main_window.h index 448a592cb9..68918c30bc 100644 --- a/ui/qt/main_window.h +++ b/ui/qt/main_window.h @@ -329,6 +329,7 @@ private slots: void openSCTPAllAssocsDialog(); void on_actionSCTPShowAllAssociations_triggered(); void on_actionSCTPAnalyseThisAssociation_triggered(); + void on_actionSCTPFilterThisAssociation_triggered(); #ifdef HAVE_LIBPCAP void on_actionCaptureInterfaces_triggered(); diff --git a/ui/qt/main_window.ui b/ui/qt/main_window.ui index 3f190a76e7..8dd0a6648c 100644 --- a/ui/qt/main_window.ui +++ b/ui/qt/main_window.ui @@ -1522,6 +1522,14 @@ <string>Change the way packets are dissected</string> </property> </action> + <action name="actionSCTPFilterThisAssociation"> + <property name="text"> + <string>Filter this Association</string> + </property> + <property name="toolTip"> + <string>Filter this Association</string> + </property> + </action> </widget> <layoutdefault spacing="6" margin="11"/> <customwidgets> diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 0383b33d61..b0fb1b53ba 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -928,6 +928,7 @@ void MainWindow::setMenusForSelectedPacket() main_ui_->menuSCTP->setEnabled(is_sctp); main_ui_->actionSCTPAnalyseThisAssociation->setEnabled(is_sctp); main_ui_->actionSCTPShowAllAssociations->setEnabled(is_sctp); + main_ui_->actionSCTPFilterThisAssociation->setEnabled(is_sctp); // while (list_entry != NULL) { // dissector_filter_t *filter_entry; @@ -1795,6 +1796,17 @@ void MainWindow::on_actionSCTPAnalyseThisAssociation_triggered() sctp_analyse->activateWindow(); } +void MainWindow::on_actionSCTPFilterThisAssociation_triggered() +{ + sctp_assoc_info_t* assoc = SCTPAssocAnalyseDialog::findAssocForPacket(cap_file_); + if (assoc) { + QString newFilter = QString("sctp.assoc_index==%1").arg(assoc->assoc_id); + assoc = NULL; + emit filterPackets(newFilter, false); + } +} + + // Next / previous / first / last slots in packet_list // Statistics Menu diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp index 987fdd294a..f2a75b875b 100644 --- a/ui/qt/packet_list.cpp +++ b/ui/qt/packet_list.cpp @@ -263,7 +263,7 @@ PacketList::PacketList(QWidget *parent) : ctx_menu_.addMenu(submenu); submenu->addAction(window()->findChild<QAction *>("actionSCTPAnalyseThisAssociation")); submenu->addAction(window()->findChild<QAction *>("actionSCTPShowAllAssociations")); - submenu->addAction(window()->findChild<QAction *>("actionSCTPChunkCounter")); + submenu->addAction(window()->findChild<QAction *>("actionSCTPFilterThisAssociation")); filter_actions_ << submenu->actions(); ctx_menu_.addSeparator(); // " <menuitem name='ManuallyResolveAddress' action='/ManuallyResolveAddress'/>\n" diff --git a/ui/qt/sctp_all_assocs_dialog.cpp b/ui/qt/sctp_all_assocs_dialog.cpp index 5e7e653723..3f99f99a6c 100644 --- a/ui/qt/sctp_all_assocs_dialog.cpp +++ b/ui/qt/sctp_all_assocs_dialog.cpp @@ -69,9 +69,9 @@ void SCTPAllAssocsDialog::fillTable() sctp_assocs = (sctp_allassocs_info_t*)sctp_stat_get_info(); if (sctp_stat_get_info()->is_registered == FALSE) { register_tap_listener_sctp_stat(); + /* (redissect all packets) */ + cf_retap_packets(cap_file_); } - /* (redissect all packets) */ - cf_retap_packets(cap_file_); numAssocs = 0; ui->assocList->setRowCount(g_list_length(sctp_assocs->assoc_info_list)); diff --git a/ui/qt/sctp_assoc_analyse_dialog.cpp b/ui/qt/sctp_assoc_analyse_dialog.cpp index 7c633e80ef..630c679d84 100644 --- a/ui/qt/sctp_assoc_analyse_dialog.cpp +++ b/ui/qt/sctp_assoc_analyse_dialog.cpp @@ -44,7 +44,7 @@ SCTPAssocAnalyseDialog::SCTPAssocAnalyseDialog(QWidget *parent, sctp_assoc_info_ } /* (redissect all packets) */ cf_retap_packets(cap_file_); - findAssocForPacket(); + selected_assoc = findAssocForPacket(cap_file_); } this->setWindowTitle(QString(tr("SCTP Analyse Association: %1 Port1 %2 Port2 %3")).arg(cf_get_display_name(cap_file_)).arg(selected_assoc->port1).arg(selected_assoc->port2)); fillTabs(); @@ -55,14 +55,19 @@ SCTPAssocAnalyseDialog::~SCTPAssocAnalyseDialog() delete ui; } -void SCTPAssocAnalyseDialog::findAssocForPacket() +sctp_assoc_info_t* SCTPAssocAnalyseDialog::findAssocForPacket(capture_file* cf) { frame_data *fdata; GList *list, *framelist; sctp_assoc_info_t *assoc; bool frame_found = false; - fdata = cap_file_->current_frame; + fdata = cf->current_frame; + if (sctp_stat_get_info()->is_registered == FALSE) { + register_tap_listener_sctp_stat(); + /* (redissect all packets) */ + cf_retap_packets(cf); + } list = g_list_first(sctp_stat_get_info()->assoc_info_list); while (list) { @@ -79,8 +84,7 @@ void SCTPAssocAnalyseDialog::findAssocForPacket() framelist = g_list_next(framelist); } if (frame_found) { - selected_assoc = assoc; - return; + return assoc; } else { list = g_list_next(list); } @@ -91,6 +95,7 @@ void SCTPAssocAnalyseDialog::findAssocForPacket() msgBox.setText(tr("No Association found for this packet.")); msgBox.exec(); } + return NULL; } void SCTPAssocAnalyseDialog::fillTabs() @@ -244,7 +249,7 @@ void SCTPAssocAnalyseDialog::on_chunkStatisticsButton_clicked() if (caller_ && !selected_assoc) { selected_assoc = caller_->findSelectedAssoc(); } else if (!caller_ && !selected_assoc) { - findAssocForPacket(); + selected_assoc = findAssocForPacket(cap_file_); } SCTPChunkStatisticsDialog *sctp_dialog = new SCTPChunkStatisticsDialog(this, selected_assoc, cap_file_); diff --git a/ui/qt/sctp_assoc_analyse_dialog.h b/ui/qt/sctp_assoc_analyse_dialog.h index 0a1612f4b2..9fc75d298a 100644 --- a/ui/qt/sctp_assoc_analyse_dialog.h +++ b/ui/qt/sctp_assoc_analyse_dialog.h @@ -55,6 +55,7 @@ public: ~SCTPAssocAnalyseDialog(); void fillTabs(); + static sctp_assoc_info_t* findAssocForPacket(capture_file* cf); public slots: void setCaptureFile(capture_file *cf) { cap_file_ = cf; } @@ -76,7 +77,6 @@ private: sctp_assoc_info_t *selected_assoc; capture_file *cap_file_; SCTPAllAssocsDialog *caller_; - void findAssocForPacket(); void openGraphDialog(int direction); void openGraphByteDialog(int direction); void openGraphArwndDialog(int direction); diff --git a/ui/qt/sctp_graph_arwnd_dialog.cpp b/ui/qt/sctp_graph_arwnd_dialog.cpp index de9410cd53..2ed274f293 100644 --- a/ui/qt/sctp_graph_arwnd_dialog.cpp +++ b/ui/qt/sctp_graph_arwnd_dialog.cpp @@ -23,6 +23,7 @@ #include "sctp_graph_arwnd_dialog.h" #include "ui_sctp_graph_arwnd_dialog.h" +#include "sctp_assoc_analyse_dialog.h" #include "sctp_graph_dialog.h" @@ -34,6 +35,9 @@ SCTPGraphArwndDialog::SCTPGraphArwndDialog(QWidget *parent, sctp_assoc_info_t *a direction(dir) { ui->setupUi(this); + if (!selected_assoc) { + selected_assoc = SCTPAssocAnalyseDialog::findAssocForPacket(cap_file_); + } this->setWindowTitle(QString(tr("SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3")).arg(cf_get_display_name(cap_file_)).arg(selected_assoc->port1).arg(selected_assoc->port2)); if ((direction == 1 && selected_assoc->n_array_tsn1 == 0) || (direction == 2 && selected_assoc->n_array_tsn2 == 0)) { QMessageBox msgBox; diff --git a/ui/qt/sctp_graph_byte_dialog.cpp b/ui/qt/sctp_graph_byte_dialog.cpp index 359f8bc942..72bb5ec900 100644 --- a/ui/qt/sctp_graph_byte_dialog.cpp +++ b/ui/qt/sctp_graph_byte_dialog.cpp @@ -25,6 +25,7 @@ #include "ui_sctp_graph_byte_dialog.h" #include "sctp_graph_dialog.h" +#include "sctp_assoc_analyse_dialog.h" SCTPGraphByteDialog::SCTPGraphByteDialog(QWidget *parent, sctp_assoc_info_t *assoc, capture_file *cf, int dir) : QDialog(parent), @@ -34,6 +35,9 @@ SCTPGraphByteDialog::SCTPGraphByteDialog(QWidget *parent, sctp_assoc_info_t *ass direction(dir) { ui->setupUi(this); + if (!selected_assoc) { + selected_assoc = SCTPAssocAnalyseDialog::findAssocForPacket(cap_file_); + } this->setWindowTitle(QString(tr("SCTP Data and Adv. Rec. Window over Time: %1 Port1 %2 Port2 %3")).arg(cf_get_display_name(cap_file_)).arg(selected_assoc->port1).arg(selected_assoc->port2)); if ((direction == 1 && selected_assoc->n_array_tsn1 == 0) || (direction == 2 && selected_assoc->n_array_tsn2 == 0)) { QMessageBox msgBox; diff --git a/ui/qt/sctp_graph_dialog.cpp b/ui/qt/sctp_graph_dialog.cpp index 0905f88a00..a34617fd15 100644 --- a/ui/qt/sctp_graph_dialog.cpp +++ b/ui/qt/sctp_graph_dialog.cpp @@ -23,6 +23,7 @@ #include "sctp_graph_dialog.h" #include "ui_sctp_graph_dialog.h" +#include "sctp_assoc_analyse_dialog.h" #include "wireshark_application.h" @@ -34,6 +35,9 @@ SCTPGraphDialog::SCTPGraphDialog(QWidget *parent, sctp_assoc_info_t *assoc, capt direction(dir) { ui->setupUi(this); + if (!selected_assoc) { + selected_assoc = SCTPAssocAnalyseDialog::findAssocForPacket(cap_file_); + } this->setWindowTitle(QString(tr("SCTP TSNs and SACKs over Time: %1 Port1 %2 Port2 %3")).arg(cf_get_display_name(cap_file_)).arg(selected_assoc->port1).arg(selected_assoc->port2)); if ((direction == 1 && selected_assoc->n_array_tsn1 == 0) || (direction == 2 && selected_assoc->n_array_tsn2 == 0)) { QMessageBox msgBox; |