summaryrefslogtreecommitdiffstats
path: root/ui/qt/sctp_all_assocs_dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt/sctp_all_assocs_dialog.cpp')
-rw-r--r--ui/qt/sctp_all_assocs_dialog.cpp118
1 files changed, 118 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 00000000..c8208d66
--- /dev/null
+++ b/ui/qt/sctp_all_assocs_dialog.cpp
@@ -0,0 +1,118 @@
+/* sctp_all_assocs_dialog.cpp
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "sctp_all_assocs_dialog.h"
+#include <ui_sctp_all_assocs_dialog.h>
+#include "sctp_assoc_analyse_dialog.h"
+
+#include <ui/qt/utils/qt_ui_utils.h>
+//#include "main_application.h"
+#include "file.h"
+#include "ui/qt/main_window.h"
+
+#include <QWidget>
+#include <QDir>
+#include <QPushButton>
+
+//#include <QDebug>
+
+SCTPAllAssocsDialog::SCTPAllAssocsDialog(QWidget *parent, capture_file *cf) :
+ QDialog(parent),
+ ui(new Ui::SCTPAllAssocsDialog),
+ cap_file_(cf)
+{
+ ui->setupUi(this);
+ Qt::WindowFlags flags = Qt::Window | Qt::WindowSystemMenuHint
+ | Qt::WindowMinimizeButtonHint
+ | Qt::WindowMaximizeButtonHint
+ | Qt::WindowCloseButtonHint;
+ this->setWindowFlags(flags);
+ fillTable();
+}
+
+SCTPAllAssocsDialog::~SCTPAllAssocsDialog()
+{
+ delete ui;
+}
+
+void SCTPAllAssocsDialog::fillTable()
+{
+ const sctp_allassocs_info_t *sctp_assocs;
+ GList *list;
+ const 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_stat_get_info();
+ if (sctp_assocs->is_registered == FALSE) {
+ register_tap_listener_sctp_stat();
+ /* (redissect all packets) */
+ cf_retap_packets(cap_file_);
+ }
+ numAssocs = 0;
+ ui->assocList->setRowCount(static_cast<int>(g_list_length(sctp_assocs->assoc_info_list)));
+
+ list = g_list_first(sctp_assocs->assoc_info_list);
+
+ while (list) {
+ assinfo = gxx_list_data(const sctp_assoc_info_t*, list);
+ 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 = gxx_list_next(list);
+ numAssocs++;
+ }
+ ui->analyseButton->setEnabled(false);
+ ui->setFilterButton->setEnabled(false);
+ connect(ui->assocList, SIGNAL(itemSelectionChanged()), this, SLOT(getSelectedItem()));
+ }
+
+void SCTPAllAssocsDialog::getSelectedItem()
+{
+ ui->analyseButton->setEnabled(true);
+ ui->setFilterButton->setEnabled(true);
+ ui->analyseButton->setFocus(Qt::OtherFocusReason);
+ selected_assoc_id = ui->assocList->item(ui->assocList->selectedItems().at(0)->row(), 0)->data(0).toInt();
+}
+
+void SCTPAllAssocsDialog::on_analyseButton_clicked()
+{
+ const sctp_assoc_info_t* selected_assoc = SCTPAssocAnalyseDialog::findAssoc(this, selected_assoc_id);
+ if (!selected_assoc) return;
+
+ SCTPAssocAnalyseDialog *sctp_analyse = new SCTPAssocAnalyseDialog(this, selected_assoc, cap_file_);
+ 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()
+{
+ QString newFilter = QString("sctp.assoc_index==%1").arg(selected_assoc_id);
+ emit filterPackets(newFilter, false);
+}