aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/sctp_all_assocs_dialog.cpp
diff options
context:
space:
mode:
authorIrene RĂ¼ngeler <I.Ruengeler@fh-muenster.de>2013-12-13 07:25:30 +0000
committerIrene RĂ¼ngeler <I.Ruengeler@fh-muenster.de>2013-12-13 07:25:30 +0000
commit796bf409b0c286dd76e6ecd5c61d0d947d54b479 (patch)
tree42d21c7d8b1175adf0f155f5c0fb9f53feb795d5 /ui/qt/sctp_all_assocs_dialog.cpp
parent28e6aa4e8a06299895d7924508a32a895a5454ab (diff)
Add dialogs and graphs to analyse SCTP behavior similar to the GTK version.
svn path=/trunk/; revision=54026
Diffstat (limited to 'ui/qt/sctp_all_assocs_dialog.cpp')
-rw-r--r--ui/qt/sctp_all_assocs_dialog.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/ui/qt/sctp_all_assocs_dialog.cpp b/ui/qt/sctp_all_assocs_dialog.cpp
new file mode 100644
index 0000000000..d51522c4fd
--- /dev/null
+++ b/ui/qt/sctp_all_assocs_dialog.cpp
@@ -0,0 +1,144 @@
+#include "sctp_all_assocs_dialog.h"
+#include "ui_sctp_all_assocs_dialog.h"
+#include "sctp_assoc_analyse_dialog.h"
+
+#include "qt_ui_utils.h"
+//#include "wireshark_application.h"
+#include "file.h"
+#include "ui/qt/main_window.h"
+
+#include <QWidget>
+#include <QDir>
+#include <QFileDialog>
+#include <QIcon>
+#include <QPushButton>
+
+//#include <QDebug>
+
+SCTPAllAssocsDialog::SCTPAllAssocsDialog(QWidget *parent, capture_file *cf) :
+ QDialog(parent),
+ ui(new Ui::SCTPAllAssocsDialog),
+ cap_file_(cf)
+{
+ ui->setupUi(this);
+ sctp_assocs = (sctp_allassocs_info_t *)g_malloc(sizeof(sctp_allassocs_info_t));
+ fillTable();
+}
+
+SCTPAllAssocsDialog::~SCTPAllAssocsDialog()
+{
+ delete ui;
+}
+
+void SCTPAllAssocsDialog::fillTable()
+{
+ QString output;
+ GList *list;
+ sctp_assoc_info_t* assinfo;
+ int numAssocs;
+
+ ui->assocList->setColumnHidden(0, true);
+ ui->assocList->setColumnWidth(1, 85);
+ ui->assocList->setColumnWidth(2, 85);
+ ui->assocList->setColumnWidth(3, 150);
+ ui->assocList->setColumnWidth(4, 150);
+
+ 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_);
+ numAssocs = 0;
+ ui->assocList->setRowCount(g_list_length(sctp_assocs->assoc_info_list));
+
+ list = g_list_first(sctp_assocs->assoc_info_list);
+
+ while (list) {
+ assinfo = (sctp_assoc_info_t*)(list->data);
+ ui->assocList->setItem(numAssocs, 0, new QTableWidgetItem(QString("%1").arg(assinfo->assoc_id)));
+ ui->assocList->setItem(numAssocs, 1, new QTableWidgetItem(QString("%1").arg(assinfo->port1)));
+ ui->assocList->setItem(numAssocs, 2, new QTableWidgetItem(QString("%1").arg(assinfo->port2)));
+ ui->assocList->setItem(numAssocs, 3, new QTableWidgetItem(QString("%1").arg(assinfo->n_packets)));
+ ui->assocList->setItem(numAssocs, 4, new QTableWidgetItem(QString("%1").arg(assinfo->n_data_chunks)));
+ ui->assocList->setItem(numAssocs, 5, new QTableWidgetItem(QString("%1").arg(assinfo->n_data_bytes)));
+ list = g_list_next(list);
+ numAssocs++;
+ }
+ ui->analyseButton->setEnabled(false);
+ ui->setFilterButton->setEnabled(false);
+ connect(ui->assocList, SIGNAL(itemSelectionChanged()), this, SLOT(getSelectedItem()));
+ }
+
+sctp_assoc_info_t* SCTPAllAssocsDialog::findSelectedAssoc()
+{
+ QTableWidgetItem *selection;
+ GList *list;
+ sctp_assoc_info_t* assinfo;
+ int row, id;
+
+ selection = ui->assocList->selectedItems()[0];
+ row = selection->row();
+ selection = ui->assocList->item(row, 0);
+ id = (selection->data(0)).toInt();
+ list = g_list_first(sctp_assocs->assoc_info_list);
+
+ while (list) {
+ assinfo = (sctp_assoc_info_t*)(list->data);
+ if (assinfo->assoc_id == id) {
+ return assinfo;
+ }
+ list = g_list_next(list);
+ }
+ return NULL;
+}
+
+void SCTPAllAssocsDialog::getSelectedItem()
+{
+ ui->analyseButton->setEnabled(true);
+ ui->setFilterButton->setEnabled(true);
+ ui->analyseButton->setFocus(Qt::OtherFocusReason);
+ selected_assoc = findSelectedAssoc();
+ printf("selection changed assoc now %p with id %d\n",
+ selected_assoc, selected_assoc->assoc_id);
+}
+
+void SCTPAllAssocsDialog::on_analyseButton_clicked()
+{
+
+ if (!selected_assoc) {
+ selected_assoc = findSelectedAssoc();
+ printf("on_analyseButton_clicked found assoc %p with id %d\n",
+ selected_assoc, selected_assoc->assoc_id);
+ }
+
+ SCTPAssocAnalyseDialog *sctp_analyse = new SCTPAssocAnalyseDialog(this, selected_assoc, cap_file_, this);
+ connect(sctp_analyse, SIGNAL(filterPackets(QString&,bool)),
+ parent(), SLOT(filterPackets(QString&,bool)));
+
+ if (sctp_analyse->isMinimized() == true)
+ {
+ sctp_analyse->showNormal();
+ }
+ else
+ {
+ sctp_analyse->show();
+ }
+
+ sctp_analyse->raise();
+ sctp_analyse->activateWindow();
+}
+
+void SCTPAllAssocsDialog::on_setFilterButton_clicked()
+{
+
+ if (!selected_assoc){
+ selected_assoc = findSelectedAssoc();
+ printf("on_setFilterButton_clicked found assoc %p with id %d\n",
+ selected_assoc, selected_assoc->assoc_id);
+ }
+
+ QString newFilter = QString("sctp.assoc_index==%1").arg(selected_assoc->assoc_id);
+ selected_assoc = NULL;
+ emit filterPackets(newFilter, false);
+}