summaryrefslogtreecommitdiff
path: root/ui/qt
diff options
context:
space:
mode:
authorIrene RĂ¼ngeler <I.Ruengeler@fh-muenster.de>2013-12-18 13:49:10 +0000
committerIrene RĂ¼ngeler <I.Ruengeler@fh-muenster.de>2013-12-18 13:49:10 +0000
commit4729c083ac6ae7456584cbf726c1023b8707b72b (patch)
treeb935c703603a123bcffd92bc4b63faae9295ee1e /ui/qt
parent485faca86dd9976763bf58b341dac2c53f1c3120 (diff)
downloadwireshark-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.h1
-rw-r--r--ui/qt/main_window.ui8
-rw-r--r--ui/qt/main_window_slots.cpp12
-rw-r--r--ui/qt/packet_list.cpp2
-rw-r--r--ui/qt/sctp_all_assocs_dialog.cpp4
-rw-r--r--ui/qt/sctp_assoc_analyse_dialog.cpp17
-rw-r--r--ui/qt/sctp_assoc_analyse_dialog.h2
-rw-r--r--ui/qt/sctp_graph_arwnd_dialog.cpp4
-rw-r--r--ui/qt/sctp_graph_byte_dialog.cpp4
-rw-r--r--ui/qt/sctp_graph_dialog.cpp4
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;