forked from osmocom/wireshark
Qt: Add a CaptureFile class.
Wrap the capture_file struct in a QObject which translates cf_cb_* and capture_cb_* events into signals. Move the global cfile to capture_file.cpp. Don't use a void pointer for the capture file struct. Change-Id: Ic5d5efb4bb1db64aa0247245890e5669b1da723a Reviewed-on: https://code.wireshark.org/review/5885 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
parent
2bb8255e29
commit
9ba9cd83a4
|
@ -47,8 +47,9 @@
|
|||
#include <glib.h>
|
||||
|
||||
#include "capture_opts.h"
|
||||
#include <capchild/capture_session.h>
|
||||
#include <capchild/capture_sync.h>
|
||||
|
||||
#include "capchild/capture_session.h"
|
||||
#include "capchild/capture_sync.h"
|
||||
#ifdef HAVE_EXTCAP
|
||||
#include "extcap.h"
|
||||
#endif
|
||||
|
|
|
@ -41,10 +41,12 @@ typedef enum {
|
|||
CAPTURE_RUNNING /**< capture child signalled ok, capture is running now */
|
||||
} capture_state;
|
||||
|
||||
struct _capture_file;
|
||||
|
||||
/*
|
||||
* State of a capture session.
|
||||
*/
|
||||
typedef struct {
|
||||
typedef struct _capture_session {
|
||||
int fork_child; /**< If not -1, in parent, process ID of child */
|
||||
int fork_child_status; /**< Child exit status */
|
||||
#ifdef _WIN32
|
||||
|
@ -57,15 +59,15 @@ typedef struct {
|
|||
#endif
|
||||
gboolean session_started;
|
||||
capture_options *capture_opts; /**< options for this capture */
|
||||
void *cf; /**< handle to cfile (note: untyped handle) */
|
||||
struct _capture_file *cf; /**< handle to cfile */
|
||||
} capture_session;
|
||||
|
||||
extern void
|
||||
capture_session_init(capture_session *cap_session, void *cf);
|
||||
capture_session_init(capture_session *cap_session, struct _capture_file *cf);
|
||||
#else
|
||||
|
||||
/* dummy is needed because clang throws the error: empty struct has size 0 in C, size 1 in C++ */
|
||||
typedef struct {int dummy;} capture_session;
|
||||
typedef struct _capture_session {int dummy;} capture_session;
|
||||
|
||||
#endif /* HAVE_LIBPCAP */
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ static void (*fetch_dumpcap_pid)(int) = NULL;
|
|||
|
||||
|
||||
void
|
||||
capture_session_init(capture_session *cap_session, void *cf)
|
||||
capture_session_init(capture_session *cap_session, struct _capture_file *cf)
|
||||
{
|
||||
cap_session->cf = cf;
|
||||
cap_session->fork_child = -1; /* invalid process handle */
|
||||
|
|
|
@ -138,7 +138,7 @@ static echld_epan_stuff_t stuff;
|
|||
static void init_stuff(void) {
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_opts_init(&stuff.cap_opts);
|
||||
capture_session_init(&stuff.cap_sess, (void *)&stuff.cfile);
|
||||
capture_session_init(&stuff.cap_sess, &stuff.cfile);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
4
file.c
4
file.c
|
@ -195,14 +195,14 @@ cf_callback_add(cf_callback_t func, gpointer user_data)
|
|||
}
|
||||
|
||||
void
|
||||
cf_callback_remove(cf_callback_t func)
|
||||
cf_callback_remove(cf_callback_t func, gpointer user_data)
|
||||
{
|
||||
cf_callback_data_t *cb;
|
||||
GList *cb_item = cf_callbacks;
|
||||
|
||||
while (cb_item != NULL) {
|
||||
cb = (cf_callback_data_t *)cb_item->data;
|
||||
if (cb->cb_fct == func) {
|
||||
if (cb->cb_fct == func && cb->user_data == user_data) {
|
||||
cf_callbacks = g_list_remove(cf_callbacks, cb);
|
||||
g_free(cb);
|
||||
return;
|
||||
|
|
20
file.h
20
file.h
|
@ -95,11 +95,29 @@ typedef struct {
|
|||
field_info *finfo;
|
||||
} match_data;
|
||||
|
||||
/**
|
||||
* Add a capture file event callback.
|
||||
*
|
||||
* @param func The function to be called for each event.
|
||||
* The function will be passed three parameters: The event type (event),
|
||||
* event-dependent data (data), and user-supplied data (user_data).
|
||||
* Event-dependent data may be a capture_file pointer, character pointer,
|
||||
* or NULL.
|
||||
* @param user_data User-supplied data to pass to the callback. May be NULL.
|
||||
*/
|
||||
|
||||
extern void
|
||||
cf_callback_add(cf_callback_t func, gpointer user_data);
|
||||
|
||||
/**
|
||||
* Remove a capture file event callback.
|
||||
*
|
||||
* @param func The function to be removed.
|
||||
* @param user_data User-supplied data. Must be the same value supplied to cf_callback_add.
|
||||
*/
|
||||
|
||||
extern void
|
||||
cf_callback_remove(cf_callback_t func);
|
||||
cf_callback_remove(cf_callback_t func, gpointer user_data);
|
||||
|
||||
/**
|
||||
* Open a capture file.
|
||||
|
|
2
tshark.c
2
tshark.c
|
@ -1164,7 +1164,7 @@ main(int argc, char *argv[])
|
|||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_opts_init(&global_capture_opts);
|
||||
capture_session_init(&global_capture_session, (void *)&cfile);
|
||||
capture_session_init(&global_capture_session, &cfile);
|
||||
#endif
|
||||
|
||||
timestamp_set_type(TS_RELATIVE);
|
||||
|
|
|
@ -105,14 +105,14 @@ capture_callback_add(capture_callback_t func, gpointer user_data)
|
|||
}
|
||||
|
||||
void
|
||||
capture_callback_remove(capture_callback_t func)
|
||||
capture_callback_remove(capture_callback_t func, gpointer user_data)
|
||||
{
|
||||
capture_callback_data_t *cb;
|
||||
GList *cb_item = capture_callbacks;
|
||||
|
||||
while(cb_item != NULL) {
|
||||
cb = (capture_callback_data_t *)cb_item->data;
|
||||
if(cb->cb_fct == func) {
|
||||
if(cb->cb_fct == func && cb->user_data == user_data) {
|
||||
capture_callbacks = g_list_remove(capture_callbacks, cb);
|
||||
g_free(cb);
|
||||
return;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
*/
|
||||
|
||||
#include "capture_opts.h"
|
||||
#include <capchild/capture_session.h>
|
||||
#include "capchild/capture_session.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -55,7 +55,7 @@ extern void
|
|||
capture_callback_add(capture_callback_t func, gpointer user_data);
|
||||
|
||||
extern void
|
||||
capture_callback_remove(capture_callback_t func);
|
||||
capture_callback_remove(capture_callback_t func, gpointer user_data);
|
||||
|
||||
/**
|
||||
* Start a capture session.
|
||||
|
|
|
@ -2469,7 +2469,7 @@ main(int argc, char *argv[])
|
|||
by preference settings and then again by the command line parameters. */
|
||||
capture_opts_init(&global_capture_opts);
|
||||
|
||||
capture_session_init(&global_capture_session, (void *)&cfile);
|
||||
capture_session_init(&global_capture_session, &cfile);
|
||||
#endif
|
||||
|
||||
init_report_err(failure_alert_box, open_failure_alert_box,
|
||||
|
|
|
@ -26,6 +26,7 @@ set(WIRESHARK_QT_HEADERS
|
|||
accordion_frame.h
|
||||
byte_view_tab.h
|
||||
byte_view_text.h
|
||||
capture_file.h
|
||||
capture_file_dialog.h
|
||||
capture_file_properties_dialog.h
|
||||
capture_filter_combo.h
|
||||
|
@ -122,6 +123,7 @@ set(WIRESHARK_QT_SRC
|
|||
accordion_frame.cpp
|
||||
byte_view_tab.cpp
|
||||
byte_view_text.cpp
|
||||
capture_file.cpp
|
||||
capture_file_dialog.cpp
|
||||
capture_file_properties_dialog.cpp
|
||||
capture_filter_combo.cpp
|
||||
|
|
|
@ -116,6 +116,7 @@ MOC_HDRS = \
|
|||
accordion_frame.h \
|
||||
byte_view_tab.h \
|
||||
byte_view_text.h \
|
||||
capture_file.h \
|
||||
capture_file_dialog.h \
|
||||
capture_file_properties_dialog.h \
|
||||
capture_filter_combo.h \
|
||||
|
@ -309,6 +310,7 @@ WIRESHARK_QT_SRC = \
|
|||
accordion_frame.cpp \
|
||||
byte_view_tab.cpp \
|
||||
byte_view_text.cpp \
|
||||
capture_file.cpp \
|
||||
capture_file_dialog.cpp \
|
||||
capture_file_properties_dialog.cpp \
|
||||
capture_filter_combo.cpp \
|
||||
|
|
|
@ -547,6 +547,7 @@ win32: QMAKE_CLEAN += *.pdb
|
|||
HEADERS += \
|
||||
byte_view_tab.h \
|
||||
byte_view_text.h \
|
||||
capture_file.h \
|
||||
capture_file_dialog.h \
|
||||
capture_filter_combo.h \
|
||||
capture_filter_edit.h \
|
||||
|
@ -589,6 +590,7 @@ SOURCES += \
|
|||
accordion_frame.cpp \
|
||||
byte_view_tab.cpp \
|
||||
byte_view_text.cpp \
|
||||
capture_file.cpp \
|
||||
capture_file_dialog.cpp \
|
||||
capture_file_properties_dialog.cpp \
|
||||
capture_filter_combo.cpp \
|
||||
|
|
|
@ -0,0 +1,212 @@
|
|||
/* capture_file.cpp
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include "capture_file.h"
|
||||
|
||||
/*
|
||||
* @file Capture file class
|
||||
*
|
||||
* Wraps the capture_file struct, cfile global, and callbacks.
|
||||
*/
|
||||
|
||||
#include "globals.h"
|
||||
capture_file cfile;
|
||||
|
||||
#include "file.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "ui/capture.h"
|
||||
|
||||
// To do:
|
||||
// - Add isValid or isOpen methods instead of checking capFile() for NULL.
|
||||
// - Add getters and (if needed) setters:
|
||||
// - Base filename
|
||||
// - Full filename
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
CaptureFile::CaptureFile(QObject *parent, capture_file *cap_file) :
|
||||
QObject(parent),
|
||||
cap_file_(cap_file)
|
||||
{
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_callback_add(captureCallback, (gpointer) this);
|
||||
#endif
|
||||
cf_callback_add(captureFileCallback, (gpointer) this);
|
||||
}
|
||||
|
||||
CaptureFile::~CaptureFile()
|
||||
{
|
||||
cf_callback_remove(captureFileCallback, this);
|
||||
}
|
||||
|
||||
capture_file *CaptureFile::globalCapFile()
|
||||
{
|
||||
return &cfile;
|
||||
}
|
||||
|
||||
gpointer CaptureFile::window()
|
||||
{
|
||||
if (cap_file_) return cap_file_->window;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void CaptureFile::captureFileCallback(gint event, gpointer data, gpointer user_data)
|
||||
{
|
||||
CaptureFile *capture_file = static_cast<CaptureFile *>(user_data);
|
||||
if (!capture_file) return;
|
||||
|
||||
capture_file->captureFileEvent(event, data);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void CaptureFile::captureCallback(gint event, capture_session *cap_session, gpointer user_data)
|
||||
{
|
||||
CaptureFile *capture_file = static_cast<CaptureFile *>(user_data);
|
||||
if (!capture_file) return;
|
||||
|
||||
capture_file->captureEvent(event, cap_session);
|
||||
}
|
||||
#endif
|
||||
|
||||
void CaptureFile::captureFileEvent(int event, gpointer data)
|
||||
{
|
||||
qDebug() << "=cfe" << event << data;
|
||||
switch(event) {
|
||||
case(cf_cb_file_opened):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Opened");
|
||||
cap_file_ = (capture_file *) data;
|
||||
qDebug() << "=cfe fo" << cap_file_;
|
||||
emit captureFileOpened();
|
||||
break;
|
||||
case(cf_cb_file_closing):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Closing");
|
||||
emit captureFileClosing();
|
||||
break;
|
||||
case(cf_cb_file_closed):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Closed");
|
||||
qDebug() << "=cfe fc" << cap_file_;
|
||||
emit captureFileClosed();
|
||||
cap_file_ = NULL;
|
||||
break;
|
||||
case(cf_cb_file_read_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read started");
|
||||
emit captureFileReadStarted();
|
||||
break;
|
||||
case(cf_cb_file_read_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read finished");
|
||||
emit captureFileReadFinished();
|
||||
break;
|
||||
case(cf_cb_file_reload_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload started");
|
||||
emit captureFileReadStarted();
|
||||
break;
|
||||
case(cf_cb_file_reload_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload finished");
|
||||
emit captureFileReadFinished();
|
||||
break;
|
||||
|
||||
case(cf_cb_packet_selected):
|
||||
case(cf_cb_packet_unselected):
|
||||
case(cf_cb_field_unselected):
|
||||
// Signals and slots handled elsewhere.
|
||||
break;
|
||||
|
||||
// case(cf_cb_file_save_started): // data = string
|
||||
// g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save started");
|
||||
// break;
|
||||
// case(cf_cb_file_save_finished):
|
||||
// g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save finished");
|
||||
// break;
|
||||
// case(cf_cb_file_save_failed):
|
||||
// g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save failed");
|
||||
// break;
|
||||
default:
|
||||
g_log(NULL, G_LOG_LEVEL_DEBUG, "FIX: main_cf_callback %d %p", event, data);
|
||||
g_warning("CaptureFile::captureFileCallback: event %u unknown", event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CaptureFile::captureEvent(int event, capture_session *cap_session)
|
||||
{
|
||||
#ifndef HAVE_LIBPCAP
|
||||
Q_UNUSED(event)
|
||||
Q_UNUSED(cap_session)
|
||||
#else
|
||||
qDebug() << "=ce" << event << cap_session->cf;
|
||||
switch(event) {
|
||||
case(capture_cb_capture_prepared):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture prepared");
|
||||
emit captureCapturePrepared(cap_session);
|
||||
cap_file_ = cap_session->cf;
|
||||
break;
|
||||
case(capture_cb_capture_update_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture update started");
|
||||
emit captureCaptureUpdateStarted(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_update_continue):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture update continue");
|
||||
emit captureCaptureUpdateContinue(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_update_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture update finished");
|
||||
emit captureCaptureUpdateFinished(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_fixed_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture fixed started");
|
||||
emit captureCaptureFixedStarted(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_fixed_continue):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture fixed continue");
|
||||
break;
|
||||
case(capture_cb_capture_fixed_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture fixed finished");
|
||||
emit captureCaptureFixedFinished(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_stopping):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture stopping");
|
||||
/* Beware: this state won't be called, if the capture child
|
||||
* closes the capturing on it's own! */
|
||||
emit captureCaptureStopping(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_failed):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture failed");
|
||||
emit captureCaptureFailed(cap_session);
|
||||
break;
|
||||
default:
|
||||
g_warning("main_capture_callback: event %u unknown", event);
|
||||
}
|
||||
#endif // HAVE_LIBPCAP
|
||||
}
|
||||
|
||||
/*
|
||||
* Editor modelines
|
||||
*
|
||||
* Local Variables:
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* ex: set shiftwidth=4 tabstop=8 expandtab:
|
||||
* :indentSize=4:tabSize=8:noTabs=true:
|
||||
*/
|
|
@ -0,0 +1,92 @@
|
|||
/* capture_file.h
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#ifndef CAPTURE_FILE_H
|
||||
#define CAPTURE_FILE_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
typedef struct _capture_file capture_file;
|
||||
typedef struct _capture_session capture_session;
|
||||
|
||||
class CaptureFile : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CaptureFile(QObject *parent = 0, capture_file *cap_file = NULL);
|
||||
~CaptureFile();
|
||||
|
||||
capture_file *capFile() const { return cap_file_; }
|
||||
void setCapFile(capture_file *cap_file) { cap_file_ = cap_file; }
|
||||
|
||||
// XXX This shouldn't be needed.
|
||||
static capture_file *globalCapFile();
|
||||
|
||||
gpointer window();
|
||||
|
||||
signals:
|
||||
void captureFileOpened() const;
|
||||
void captureFileReadStarted() const;
|
||||
void captureFileReadFinished() const;
|
||||
void captureFileClosing() const;
|
||||
void captureFileClosed() const;
|
||||
|
||||
void captureCapturePrepared(capture_session *cap_session);
|
||||
void captureCaptureUpdateStarted(capture_session *cap_session);
|
||||
void captureCaptureUpdateContinue(capture_session *cap_session);
|
||||
void captureCaptureUpdateFinished(capture_session *cap_session);
|
||||
void captureCaptureFixedStarted(capture_session *cap_session);
|
||||
void captureCaptureFixedFinished(capture_session *cap_session);
|
||||
void captureCaptureStopping(capture_session *cap_session);
|
||||
void captureCaptureFailed(capture_session *cap_session);
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
static void captureFileCallback(gint event, gpointer data, gpointer user_data);
|
||||
#ifdef HAVE_LIBPCAP
|
||||
static void captureCallback(gint event, capture_session *cap_session, gpointer user_data);
|
||||
#endif
|
||||
|
||||
void captureFileEvent(int event, gpointer data);
|
||||
void captureEvent(int event, capture_session *cap_session);
|
||||
|
||||
capture_file *cap_file_;
|
||||
};
|
||||
|
||||
#endif // CAPTURE_FILE_H
|
||||
|
||||
/*
|
||||
* Editor modelines
|
||||
*
|
||||
* Local Variables:
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* ex: set shiftwidth=4 tabstop=8 expandtab:
|
||||
* :indentSize=4:tabSize=8:noTabs=true:
|
||||
*/
|
|
@ -25,8 +25,6 @@
|
|||
#include "main_window.h"
|
||||
#include "wireshark_application.h"
|
||||
|
||||
#include "globals.h"
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include <signal.h>
|
||||
|
@ -143,6 +141,7 @@
|
|||
#include <QTextCodec>
|
||||
#endif
|
||||
|
||||
#include "capture_file.h"
|
||||
#include "conversation_dialog.h"
|
||||
#include "endpoint_dialog.h"
|
||||
|
||||
|
@ -150,34 +149,12 @@
|
|||
capture_options global_capture_opts;
|
||||
#endif
|
||||
|
||||
capture_file cfile;
|
||||
|
||||
#ifdef HAVE_AIRPCAP
|
||||
int airpcap_dll_ret_val = -1;
|
||||
#endif
|
||||
|
||||
GString *comp_info_str, *runtime_info_str;
|
||||
|
||||
//static gboolean have_capture_file = FALSE; /* XXX - is there an equivalent in cfile? */
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
extern capture_options global_capture_opts;
|
||||
|
||||
static void
|
||||
main_capture_callback(gint event, capture_session *cap_session, gpointer user_data )
|
||||
{
|
||||
Q_UNUSED(user_data);
|
||||
wsApp->captureCallback(event, cap_session);
|
||||
}
|
||||
#endif // HAVE_LIBPCAP
|
||||
|
||||
static void
|
||||
main_cf_callback(gint event, gpointer data, gpointer user_data )
|
||||
{
|
||||
Q_UNUSED(user_data);
|
||||
wsApp->captureFileCallback(event, data);
|
||||
}
|
||||
|
||||
/* update the main window */
|
||||
void main_window_update(void)
|
||||
{
|
||||
|
@ -828,11 +805,6 @@ int main(int argc, char *argv[])
|
|||
signal(SIGPIPE, SIG_IGN);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_callback_add(main_capture_callback, NULL);
|
||||
#endif
|
||||
cf_callback_add(main_cf_callback, NULL);
|
||||
|
||||
set_console_log_handler();
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
|
@ -1294,7 +1266,7 @@ int main(int argc, char *argv[])
|
|||
set_disabled_protos_list();
|
||||
}
|
||||
|
||||
build_column_format_array(&cfile.cinfo, prefs_p->num_cols, TRUE);
|
||||
build_column_format_array(&CaptureFile::globalCapFile()->cinfo, prefs_p->num_cols, TRUE);
|
||||
|
||||
wsApp->setMonospaceFont(prefs.gui_qt_font_name);
|
||||
|
||||
|
@ -1355,7 +1327,7 @@ int main(int argc, char *argv[])
|
|||
if(go_to_packet != 0) {
|
||||
/* Jump to the specified frame number, kept for backward
|
||||
compatibility. */
|
||||
cf_goto_frame(&cfile, go_to_packet);
|
||||
cf_goto_frame(CaptureFile::globalCapFile(), go_to_packet);
|
||||
}
|
||||
}
|
||||
#ifdef HAVE_LIBPCAP
|
||||
|
@ -1377,7 +1349,7 @@ int main(int argc, char *argv[])
|
|||
to use for this capture. */
|
||||
if (global_capture_opts.ifaces->len == 0)
|
||||
collect_ifaces(&global_capture_opts);
|
||||
cfile.window = main_w;
|
||||
CaptureFile::globalCapFile()->window = main_w;
|
||||
if (capture_start(&global_capture_opts, main_w->captureSession(), main_window_update)) {
|
||||
/* The capture started. Open stat windows; we do so after creating
|
||||
the main window, to avoid GTK warnings, and after successfully
|
||||
|
|
|
@ -22,8 +22,6 @@
|
|||
#include "main_window.h"
|
||||
#include "ui_main_window.h"
|
||||
|
||||
#include "globals.h"
|
||||
|
||||
#include <epan/addr_resolv.h>
|
||||
#include <epan/epan_dissect.h>
|
||||
#include <wsutil/filesystem.h>
|
||||
|
@ -149,7 +147,6 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
QMainWindow(parent),
|
||||
main_ui_(new Ui::MainWindow),
|
||||
df_combo_box_(new DisplayFilterCombo()),
|
||||
cap_file_(NULL),
|
||||
previous_focus_(NULL),
|
||||
show_hide_actions_(NULL),
|
||||
time_display_actions_(NULL),
|
||||
|
@ -168,7 +165,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
}
|
||||
gbl_cur_main_window_ = this;
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session_init(&cap_session_, (void *)&cfile);
|
||||
capture_session_init(&cap_session_, CaptureFile::globalCapFile());
|
||||
#endif
|
||||
main_ui_->setupUi(this);
|
||||
setTitlebarForCaptureFile();
|
||||
|
@ -277,31 +274,37 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
initTimePrecisionFormatMenu();
|
||||
updateNameResolutionActions();
|
||||
|
||||
connect(wsApp, SIGNAL(captureCapturePrepared(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCapturePrepared(capture_session *)),
|
||||
this, SLOT(captureCapturePrepared(capture_session *)));
|
||||
connect(wsApp, SIGNAL(captureCaptureUpdateStarted(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCaptureUpdateStarted(capture_session *)),
|
||||
this, SLOT(captureCaptureUpdateStarted(capture_session *)));
|
||||
connect(wsApp, SIGNAL(captureCaptureUpdateFinished(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCaptureUpdateFinished(capture_session *)),
|
||||
this, SLOT(captureCaptureUpdateFinished(capture_session *)));
|
||||
connect(wsApp, SIGNAL(captureCaptureFixedStarted(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCaptureFixedStarted(capture_session *)),
|
||||
this, SLOT(captureCaptureFixedStarted(capture_session *)));
|
||||
connect(wsApp, SIGNAL(captureCaptureFixedFinished(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCaptureFixedFinished(capture_session *)),
|
||||
this, SLOT(captureCaptureFixedFinished(capture_session *)));
|
||||
connect(wsApp, SIGNAL(captureCaptureStopping(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCaptureStopping(capture_session *)),
|
||||
this, SLOT(captureCaptureStopping(capture_session *)));
|
||||
connect(wsApp, SIGNAL(captureCaptureFailed(capture_session *)),
|
||||
connect(&capture_file_, SIGNAL(captureCaptureFailed(capture_session *)),
|
||||
this, SLOT(captureCaptureFailed(capture_session *)));
|
||||
|
||||
connect(wsApp, SIGNAL(captureFileOpened(const capture_file*)),
|
||||
this, SLOT(captureFileOpened(const capture_file*)));
|
||||
connect(wsApp, SIGNAL(captureFileReadStarted(const capture_file*)),
|
||||
this, SLOT(captureFileReadStarted(const capture_file*)));
|
||||
connect(wsApp, SIGNAL(captureFileReadFinished(const capture_file*)),
|
||||
this, SLOT(captureFileReadFinished(const capture_file*)));
|
||||
connect(wsApp, SIGNAL(captureFileClosing(const capture_file*)),
|
||||
this, SLOT(captureFileClosing(const capture_file*)));
|
||||
connect(wsApp, SIGNAL(captureFileClosed(const capture_file*)),
|
||||
this, SLOT(captureFileClosed(const capture_file*)));
|
||||
connect(&capture_file_, SIGNAL(captureFileOpened()),
|
||||
this, SLOT(captureFileOpened()));
|
||||
connect(&capture_file_, SIGNAL(captureFileReadStarted()),
|
||||
this, SLOT(captureFileReadStarted()));
|
||||
connect(&capture_file_, SIGNAL(captureFileReadFinished()),
|
||||
this, SLOT(captureFileReadFinished()));
|
||||
connect(&capture_file_, SIGNAL(captureFileClosing()),
|
||||
this, SLOT(captureFileClosing()));
|
||||
connect(&capture_file_, SIGNAL(captureFileClosed()),
|
||||
this, SLOT(captureFileClosed()));
|
||||
|
||||
connect(&capture_file_, SIGNAL(captureFileReadStarted()),
|
||||
wsApp, SLOT(captureFileReadStarted()));
|
||||
connect(&capture_file_, SIGNAL(captureFileReadFinished()),
|
||||
wsApp, SLOT(updateTaps()));
|
||||
|
||||
connect(wsApp, SIGNAL(columnsChanged()),
|
||||
this, SLOT(recreatePacketList()));
|
||||
connect(wsApp, SIGNAL(packetDissectionChanged()),
|
||||
|
@ -615,11 +618,11 @@ void MainWindow::mergeCaptureFile()
|
|||
dfilter_t *rfcode = NULL;
|
||||
int err;
|
||||
|
||||
if (!cap_file_)
|
||||
if (!capture_file_.capFile())
|
||||
return;
|
||||
|
||||
if (prefs.gui_ask_unsaved) {
|
||||
if (cf_has_unsaved_data(cap_file_)) {
|
||||
if (cf_has_unsaved_data(capture_file_.capFile())) {
|
||||
QMessageBox msg_dialog;
|
||||
gchar *display_basename;
|
||||
int response;
|
||||
|
@ -627,14 +630,14 @@ void MainWindow::mergeCaptureFile()
|
|||
msg_dialog.setIcon(QMessageBox::Question);
|
||||
/* This file has unsaved data; ask the user whether to save
|
||||
the capture. */
|
||||
if (cap_file_->is_tempfile) {
|
||||
if (capture_file_.capFile()->is_tempfile) {
|
||||
msg_dialog.setText(tr("Save packets before merging?"));
|
||||
msg_dialog.setInformativeText(tr("A temporary capture file can't be merged."));
|
||||
} else {
|
||||
/*
|
||||
* Format the message.
|
||||
*/
|
||||
display_basename = g_filename_display_basename(cap_file_->filename);
|
||||
display_basename = g_filename_display_basename(capture_file_.capFile()->filename);
|
||||
msg_dialog.setText(QString(tr("Save changes in \"%1\" before merging?")).arg(display_basename));
|
||||
g_free(display_basename);
|
||||
msg_dialog.setInformativeText(tr("Changes must be saved before the files can be merged."));
|
||||
|
@ -649,7 +652,7 @@ void MainWindow::mergeCaptureFile()
|
|||
|
||||
case QMessageBox::Save:
|
||||
/* Save the file but don't close it */
|
||||
saveCaptureFile(cap_file_, FALSE);
|
||||
saveCaptureFile(capture_file_.capFile(), FALSE);
|
||||
break;
|
||||
|
||||
case QMessageBox::Cancel:
|
||||
|
@ -661,7 +664,7 @@ void MainWindow::mergeCaptureFile()
|
|||
}
|
||||
|
||||
for (;;) {
|
||||
CaptureFileDialog merge_dlg(this, cap_file_, display_filter);
|
||||
CaptureFileDialog merge_dlg(this, capture_file_.capFile(), display_filter);
|
||||
int file_type;
|
||||
cf_status_t merge_status;
|
||||
char *in_filenames[2];
|
||||
|
@ -689,7 +692,7 @@ void MainWindow::mergeCaptureFile()
|
|||
|
||||
if (merge_dlg.merge(file_name)) {
|
||||
if (dfilter_compile(display_filter.toUtf8().constData(), &rfcode)) {
|
||||
cf_set_rfcode(cap_file_, rfcode);
|
||||
cf_set_rfcode(capture_file_.capFile(), rfcode);
|
||||
} else {
|
||||
/* Not valid. Tell the user, and go back and run the file
|
||||
selection box again once they dismiss the alert. */
|
||||
|
@ -703,23 +706,23 @@ void MainWindow::mergeCaptureFile()
|
|||
return;
|
||||
}
|
||||
|
||||
file_type = cap_file_->cd_t;
|
||||
file_type = capture_file_.capFile()->cd_t;
|
||||
|
||||
/* Try to merge or append the two files */
|
||||
tmpname = NULL;
|
||||
if (merge_dlg.mergeType() == 0) {
|
||||
/* chronological order */
|
||||
in_filenames[0] = cap_file_->filename;
|
||||
in_filenames[0] = capture_file_.capFile()->filename;
|
||||
in_filenames[1] = file_name.toUtf8().data();
|
||||
merge_status = cf_merge_files(&tmpname, 2, in_filenames, file_type, FALSE);
|
||||
} else if (merge_dlg.mergeType() <= 0) {
|
||||
/* prepend file */
|
||||
in_filenames[0] = file_name.toUtf8().data();
|
||||
in_filenames[1] = cap_file_->filename;
|
||||
in_filenames[1] = capture_file_.capFile()->filename;
|
||||
merge_status = cf_merge_files(&tmpname, 2, in_filenames, file_type, TRUE);
|
||||
} else {
|
||||
/* append file */
|
||||
in_filenames[0] = cap_file_->filename;
|
||||
in_filenames[0] = capture_file_.capFile()->filename;
|
||||
in_filenames[1] = file_name.toUtf8().data();
|
||||
merge_status = cf_merge_files(&tmpname, 2, in_filenames, file_type, TRUE);
|
||||
}
|
||||
|
@ -731,13 +734,13 @@ void MainWindow::mergeCaptureFile()
|
|||
continue;
|
||||
}
|
||||
|
||||
cf_close(cap_file_);
|
||||
cf_close(capture_file_.capFile());
|
||||
|
||||
/* Try to open the merged capture file. */
|
||||
cfile.window = this;
|
||||
if (cf_open(&cfile, tmpname, WTAP_TYPE_AUTO, TRUE /* temporary file */, &err) != CF_OK) {
|
||||
CaptureFile::globalCapFile()->window = this;
|
||||
if (cf_open(CaptureFile::globalCapFile(), tmpname, WTAP_TYPE_AUTO, TRUE /* temporary file */, &err) != CF_OK) {
|
||||
/* We couldn't open it; fail. */
|
||||
cfile.window = NULL;
|
||||
CaptureFile::globalCapFile()->window = NULL;
|
||||
if (rfcode != NULL)
|
||||
dfilter_free(rfcode);
|
||||
g_free(tmpname);
|
||||
|
@ -747,9 +750,9 @@ void MainWindow::mergeCaptureFile()
|
|||
/* Attach the new read filter to "cf" ("cf_open()" succeeded, so
|
||||
it closed the previous capture file, and thus destroyed any
|
||||
previous read filter attached to "cf"). */
|
||||
cfile.rfcode = rfcode;
|
||||
CaptureFile::globalCapFile()->rfcode = rfcode;
|
||||
|
||||
switch (cf_read(&cfile, FALSE)) {
|
||||
switch (cf_read(CaptureFile::globalCapFile(), FALSE)) {
|
||||
|
||||
case CF_READ_OK:
|
||||
case CF_READ_ERROR:
|
||||
|
@ -1017,16 +1020,16 @@ void MainWindow::exportSelectedPackets() {
|
|||
gchar *dirname;
|
||||
gboolean discard_comments = FALSE;
|
||||
|
||||
if (!cap_file_)
|
||||
if (!capture_file_.capFile())
|
||||
return;
|
||||
|
||||
/* Init the packet range */
|
||||
packet_range_init(&range, cap_file_);
|
||||
packet_range_init(&range, capture_file_.capFile());
|
||||
range.process_filtered = TRUE;
|
||||
range.include_dependents = TRUE;
|
||||
|
||||
for (;;) {
|
||||
CaptureFileDialog esp_dlg(this, cap_file_);
|
||||
CaptureFileDialog esp_dlg(this, capture_file_.capFile());
|
||||
|
||||
switch (prefs.gui_fileopen_style) {
|
||||
|
||||
|
@ -1091,7 +1094,7 @@ void MainWindow::exportSelectedPackets() {
|
|||
* name and the read file name may be relative (if supplied on
|
||||
* the command line). From Joerg Mayer.
|
||||
*/
|
||||
if (files_identical(cap_file_->filename, file_name.toUtf8().constData())) {
|
||||
if (files_identical(capture_file_.capFile()->filename, file_name.toUtf8().constData())) {
|
||||
QMessageBox msg_box;
|
||||
gchar *display_basename = g_filename_display_basename(file_name.toUtf8().constData());
|
||||
|
||||
|
@ -1119,7 +1122,7 @@ void MainWindow::exportSelectedPackets() {
|
|||
//#endif
|
||||
|
||||
/* Attempt to save the file */
|
||||
status = cf_export_specified_packets(cap_file_, file_name.toUtf8().constData(), &range, file_type, compressed);
|
||||
status = cf_export_specified_packets(capture_file_.capFile(), file_name.toUtf8().constData(), &range, file_type, compressed);
|
||||
switch (status) {
|
||||
|
||||
case CF_WRITE_OK:
|
||||
|
@ -1147,14 +1150,14 @@ void MainWindow::exportSelectedPackets() {
|
|||
}
|
||||
|
||||
void MainWindow::exportDissections(export_type_e export_type) {
|
||||
ExportDissectionDialog ed_dlg(this, cap_file_, export_type);
|
||||
ExportDissectionDialog ed_dlg(this, capture_file_.capFile(), export_type);
|
||||
packet_range_t range;
|
||||
|
||||
if (!cap_file_)
|
||||
if (!capture_file_.capFile())
|
||||
return;
|
||||
|
||||
/* Init the packet range */
|
||||
packet_range_init(&range, cap_file_);
|
||||
packet_range_init(&range, capture_file_.capFile());
|
||||
range.process_filtered = TRUE;
|
||||
range.include_dependents = TRUE;
|
||||
|
||||
|
@ -1220,11 +1223,11 @@ void MainWindow::fileAddExtension(QString &file_name, int file_type, bool compre
|
|||
bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
||||
bool capture_in_progress = FALSE;
|
||||
|
||||
if (!cap_file_ || cap_file_->state == FILE_CLOSED)
|
||||
if (!capture_file_.capFile() || capture_file_.capFile()->state == FILE_CLOSED)
|
||||
return true; /* Already closed, nothing to do */
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
if (cap_file_->state == FILE_READ_IN_PROGRESS) {
|
||||
if (capture_file_.capFile()->state == FILE_READ_IN_PROGRESS) {
|
||||
/* This is true if we're reading a capture file *or* if we're doing
|
||||
a live capture. If we're reading a capture file, the main loop
|
||||
is busy reading packets, and only accepting input from the
|
||||
|
@ -1235,7 +1238,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
#endif
|
||||
|
||||
if (prefs.gui_ask_unsaved) {
|
||||
if (cf_has_unsaved_data(cap_file_) || capture_in_progress) {
|
||||
if (cf_has_unsaved_data(capture_file_.capFile()) || capture_in_progress) {
|
||||
QMessageBox msg_dialog;
|
||||
QString question;
|
||||
QPushButton *saveButton;
|
||||
|
@ -1245,7 +1248,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
msg_dialog.setWindowTitle("Unsaved packets...");
|
||||
/* This file has unsaved data or there's a capture in
|
||||
progress; ask the user whether to save the data. */
|
||||
if (cap_file_->is_tempfile) {
|
||||
if (capture_file_.capFile()->is_tempfile) {
|
||||
|
||||
msg_dialog.setText(tr("You have unsaved packets"));
|
||||
msg_dialog.setInformativeText(tr("They will be lost if you don't save them."));
|
||||
|
@ -1269,7 +1272,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
msg_dialog.setText(question);
|
||||
msg_dialog.setInformativeText(tr("Your captured packets will be lost if you don't save them."));
|
||||
} else {
|
||||
gchar *display_basename = g_filename_display_basename(cap_file_->filename);
|
||||
gchar *display_basename = g_filename_display_basename(capture_file_.capFile()->filename);
|
||||
question.append(QString(tr("Do you want to save the changes you've made to the capture file \"%1\"%2?"))
|
||||
.arg(display_basename)
|
||||
.arg(before_what)
|
||||
|
@ -1295,7 +1298,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
msg_dialog.setDefaultButton(saveButton);
|
||||
|
||||
if (from_quit) {
|
||||
if (cap_file_->state == FILE_READ_IN_PROGRESS) {
|
||||
if (capture_file_.capFile()->state == FILE_READ_IN_PROGRESS) {
|
||||
discardButton = msg_dialog.addButton(tr("Stop and Quit without Saving"),
|
||||
QMessageBox::DestructiveRole);
|
||||
} else {
|
||||
|
@ -1326,7 +1329,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
captureStop();
|
||||
#endif
|
||||
/* Save the file and close it */
|
||||
saveCaptureFile(cap_file_, TRUE);
|
||||
saveCaptureFile(capture_file_.capFile(), TRUE);
|
||||
}
|
||||
else if(msg_dialog.clickedButton() == discardButton)
|
||||
{
|
||||
|
@ -1339,7 +1342,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
captureStop();
|
||||
#endif
|
||||
/* Just close the file, discarding changes */
|
||||
cf_close(cap_file_);
|
||||
cf_close(capture_file_.capFile());
|
||||
return true;
|
||||
}
|
||||
else //cancelButton or some other unspecified button
|
||||
|
@ -1349,7 +1352,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
|
||||
} else {
|
||||
/* Unchanged file, just close it */
|
||||
cf_close(cap_file_);
|
||||
cf_close(capture_file_.capFile());
|
||||
}
|
||||
} else {
|
||||
/* User asked not to be bothered by those prompts, just close it.
|
||||
|
@ -1360,7 +1363,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
if (capture_in_progress)
|
||||
captureStop();
|
||||
#endif
|
||||
cf_close(cap_file_);
|
||||
cf_close(capture_file_.capFile());
|
||||
}
|
||||
|
||||
return true; /* File closed */
|
||||
|
@ -1369,7 +1372,7 @@ bool MainWindow::testCaptureFileClose(bool from_quit, QString &before_what) {
|
|||
void MainWindow::captureStop() {
|
||||
stopCapture();
|
||||
|
||||
while(cap_file_ && cap_file_->state == FILE_READ_IN_PROGRESS) {
|
||||
while(capture_file_.capFile() && capture_file_.capFile()->state == FILE_READ_IN_PROGRESS) {
|
||||
WiresharkApplication::processEvents();
|
||||
}
|
||||
}
|
||||
|
@ -1520,7 +1523,7 @@ void MainWindow::initTimePrecisionFormatMenu()
|
|||
// Titlebar
|
||||
void MainWindow::setTitlebarForCaptureFile()
|
||||
{
|
||||
if (cap_file_ && cap_file_->filename) {
|
||||
if (capture_file_.capFile() && capture_file_.capFile()->filename) {
|
||||
//
|
||||
// Qt *REALLY* doesn't like windows that sometimes have a
|
||||
// title set with setWindowTitle() and other times have a
|
||||
|
@ -1541,7 +1544,7 @@ void MainWindow::setTitlebarForCaptureFile()
|
|||
// live capture at time T1 and then, after you've saved the live
|
||||
// capture to a user file, associated with a user file at time T2.
|
||||
//
|
||||
if (cap_file_->is_tempfile) {
|
||||
if (capture_file_.capFile()->is_tempfile) {
|
||||
//
|
||||
// For a temporary file, put the source of the data
|
||||
// in the window title, not whatever random pile
|
||||
|
@ -1553,7 +1556,7 @@ void MainWindow::setTitlebarForCaptureFile()
|
|||
//
|
||||
gchar *window_name;
|
||||
setWindowFilePath(NULL);
|
||||
window_name = g_strdup_printf("Capturing from %s[*]", cf_get_tempfile_source(cap_file_)); //TODO : Fix Translate
|
||||
window_name = g_strdup_printf("Capturing from %s[*]", cf_get_tempfile_source(capture_file_.capFile())); //TODO : Fix Translate
|
||||
setWindowTitle(window_name);
|
||||
g_free(window_name);
|
||||
} else {
|
||||
|
@ -1567,7 +1570,7 @@ void MainWindow::setTitlebarForCaptureFile()
|
|||
// file path to UTF-8. If that fails, we're somewhat
|
||||
// stuck.
|
||||
//
|
||||
char *utf8_filename = g_filename_to_utf8(cap_file_->filename,
|
||||
char *utf8_filename = g_filename_to_utf8(capture_file_.capFile()->filename,
|
||||
-1,
|
||||
NULL,
|
||||
NULL,
|
||||
|
@ -1582,7 +1585,7 @@ void MainWindow::setTitlebarForCaptureFile()
|
|||
g_free(utf8_filename);
|
||||
}
|
||||
}
|
||||
setWindowModified(cf_has_unsaved_data(cap_file_));
|
||||
setWindowModified(cf_has_unsaved_data(capture_file_.capFile()));
|
||||
} else {
|
||||
/* We have no capture file. */
|
||||
setWindowFilePath(NULL);
|
||||
|
@ -1601,8 +1604,8 @@ void MainWindow::setTitlebarForCaptureInProgress()
|
|||
gchar *window_name;
|
||||
|
||||
setWindowFilePath(NULL);
|
||||
if (cap_file_) {
|
||||
window_name = g_strdup_printf("Capturing from %s", cf_get_tempfile_source(cap_file_)); //TODO : Fix Translate
|
||||
if (capture_file_.capFile()) {
|
||||
window_name = g_strdup_printf("Capturing from %s", cf_get_tempfile_source(capture_file_.capFile())); //TODO : Fix Translate
|
||||
setWindowTitle(window_name);
|
||||
g_free(window_name);
|
||||
} else {
|
||||
|
@ -1617,17 +1620,17 @@ void MainWindow::setMenusForFollowStream()
|
|||
{
|
||||
gboolean is_tcp = FALSE, is_udp = FALSE;
|
||||
|
||||
if (!cap_file_)
|
||||
if (!capture_file_.capFile())
|
||||
return;
|
||||
|
||||
if (!cap_file_->edt)
|
||||
if (!capture_file_.capFile()->edt)
|
||||
return;
|
||||
|
||||
main_ui_->actionAnalyzeFollowTCPStream->setEnabled(false);
|
||||
main_ui_->actionAnalyzeFollowUDPStream->setEnabled(false);
|
||||
main_ui_->actionAnalyzeFollowSSLStream->setEnabled(false);
|
||||
|
||||
proto_get_frame_protocols(cap_file_->edt->pi.layers, NULL, &is_tcp, &is_udp, NULL, NULL);
|
||||
proto_get_frame_protocols(capture_file_.capFile()->edt->pi.layers, NULL, &is_tcp, &is_udp, NULL, NULL);
|
||||
|
||||
if (is_tcp)
|
||||
{
|
||||
|
@ -1639,7 +1642,7 @@ void MainWindow::setMenusForFollowStream()
|
|||
main_ui_->actionAnalyzeFollowUDPStream->setEnabled(true);
|
||||
}
|
||||
|
||||
if ( epan_dissect_packet_contains_field(cap_file_->edt, "ssl") )
|
||||
if ( epan_dissect_packet_contains_field(capture_file_.capFile()->edt, "ssl") )
|
||||
{
|
||||
main_ui_->actionAnalyzeFollowSSLStream->setEnabled(true);
|
||||
}
|
||||
|
@ -1650,7 +1653,7 @@ void MainWindow::setMenusForFollowStream()
|
|||
and whether it could be saved except by copying the raw packet data. */
|
||||
void MainWindow::setMenusForCaptureFile(bool force_disable)
|
||||
{
|
||||
if (force_disable || cap_file_ == NULL || cap_file_->state == FILE_READ_IN_PROGRESS) {
|
||||
if (force_disable || capture_file_.capFile() == NULL || capture_file_.capFile()->state == FILE_READ_IN_PROGRESS) {
|
||||
/* We have no capture file or we're currently reading a file */
|
||||
main_ui_->actionFileMerge->setEnabled(false);
|
||||
main_ui_->actionFileClose->setEnabled(false);
|
||||
|
@ -1665,17 +1668,17 @@ void MainWindow::setMenusForCaptureFile(bool force_disable)
|
|||
main_ui_->menuFileExportObjects->setEnabled(false);
|
||||
main_ui_->actionViewReload->setEnabled(false);
|
||||
} else {
|
||||
main_ui_->actionFileMerge->setEnabled(cf_can_write_with_wiretap(cap_file_));
|
||||
main_ui_->actionFileMerge->setEnabled(cf_can_write_with_wiretap(capture_file_.capFile()));
|
||||
|
||||
main_ui_->actionFileClose->setEnabled(true);
|
||||
main_ui_->actionFileSave->setEnabled(cf_can_save(cap_file_));
|
||||
main_ui_->actionFileSaveAs->setEnabled(cf_can_save_as(cap_file_));
|
||||
main_ui_->actionFileSave->setEnabled(cf_can_save(capture_file_.capFile()));
|
||||
main_ui_->actionFileSaveAs->setEnabled(cf_can_save_as(capture_file_.capFile()));
|
||||
main_ui_->actionStatisticsCaptureFileProperties->setEnabled(true);
|
||||
/*
|
||||
* "Export Specified Packets..." should be available only if
|
||||
* we can write the file out in at least one format.
|
||||
*/
|
||||
main_ui_->actionFileExportPackets->setEnabled(cf_can_write_with_wiretap(cap_file_));
|
||||
main_ui_->actionFileExportPackets->setEnabled(cf_can_write_with_wiretap(capture_file_.capFile()));
|
||||
main_ui_->menuFileExportPacketDissections->setEnabled(true);
|
||||
main_ui_->actionFileExportPacketBytes->setEnabled(true);
|
||||
main_ui_->actionFileExportPDU->setEnabled(true);
|
||||
|
|
|
@ -48,16 +48,18 @@
|
|||
# include <QSocketNotifier>
|
||||
#endif
|
||||
|
||||
#include "main_welcome.h"
|
||||
#include "packet_list.h"
|
||||
#include "about_dialog.h"
|
||||
#include "capture_file.h"
|
||||
#include "capture_file_dialog.h"
|
||||
#include "capture_file_properties_dialog.h"
|
||||
#include "capture_interfaces_dialog.h"
|
||||
#include "display_filter_combo.h"
|
||||
#include "progress_bar.h"
|
||||
#include "file_set_dialog.h"
|
||||
#include "filter_action.h"
|
||||
#include "capture_file_dialog.h"
|
||||
#include "follow_stream_dialog.h"
|
||||
#include "capture_interfaces_dialog.h"
|
||||
#include "about_dialog.h"
|
||||
#include "main_welcome.h"
|
||||
#include "packet_list.h"
|
||||
#include "progress_bar.h"
|
||||
|
||||
class QAction;
|
||||
class QActionGroup;
|
||||
|
@ -108,7 +110,7 @@ private:
|
|||
QSplitter extra_split_;
|
||||
MainWelcome *main_welcome_;
|
||||
DisplayFilterCombo *df_combo_box_;
|
||||
capture_file *cap_file_;
|
||||
CaptureFile capture_file_;
|
||||
QFont mono_font_;
|
||||
// XXX - packet_list_, proto_tree_, and byte_view_tab_ should
|
||||
// probably be full-on values instead of pointers.
|
||||
|
@ -186,7 +188,7 @@ public slots:
|
|||
void layoutToolbars();
|
||||
void updateNameResolutionActions();
|
||||
|
||||
void captureCapturePrepared(capture_session *cap_session);
|
||||
void captureCapturePrepared(capture_session *);
|
||||
void captureCaptureUpdateStarted(capture_session *cap_session);
|
||||
void captureCaptureUpdateFinished(capture_session *cap_session);
|
||||
void captureCaptureFixedStarted(capture_session *cap_session);
|
||||
|
@ -194,11 +196,11 @@ public slots:
|
|||
void captureCaptureStopping(capture_session *cap_session);
|
||||
void captureCaptureFailed(capture_session *cap_session);
|
||||
|
||||
void captureFileOpened(const capture_file *cf);
|
||||
void captureFileReadStarted(const capture_file *cf);
|
||||
void captureFileReadFinished(const capture_file *cf);
|
||||
void captureFileClosing(const capture_file *cf);
|
||||
void captureFileClosed(const capture_file *cf);
|
||||
void captureFileOpened();
|
||||
void captureFileReadStarted();
|
||||
void captureFileReadFinished();
|
||||
void captureFileClosing();
|
||||
void captureFileClosed();
|
||||
|
||||
void configurationProfileChanged(const gchar *profile_name);
|
||||
void filterExpressionsChanged();
|
||||
|
|
|
@ -32,8 +32,6 @@
|
|||
#include "main_window.h"
|
||||
#include "ui_main_window.h"
|
||||
|
||||
#include "globals.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#include <io.h>
|
||||
|
@ -128,7 +126,7 @@ void MainWindow::openCaptureFile(QString& cf_path, QString& read_filter, unsigne
|
|||
for (;;) {
|
||||
|
||||
if (cf_path.isEmpty()) {
|
||||
CaptureFileDialog open_dlg(this, cap_file_, read_filter);
|
||||
CaptureFileDialog open_dlg(this, capture_file_.capFile(), read_filter);
|
||||
|
||||
switch (prefs.gui_fileopen_style) {
|
||||
|
||||
|
@ -158,7 +156,7 @@ void MainWindow::openCaptureFile(QString& cf_path, QString& read_filter, unsigne
|
|||
}
|
||||
|
||||
if (dfilter_compile(read_filter.toUtf8().constData(), &rfcode)) {
|
||||
cf_set_rfcode(&cfile, rfcode);
|
||||
cf_set_rfcode(CaptureFile::globalCapFile(), rfcode);
|
||||
} else {
|
||||
/* Not valid. Tell the user, and go back and run the file
|
||||
selection box again once they dismiss the alert. */
|
||||
|
@ -179,20 +177,20 @@ void MainWindow::openCaptureFile(QString& cf_path, QString& read_filter, unsigne
|
|||
}
|
||||
|
||||
/* Try to open the capture file. This closes the current file if it succeeds. */
|
||||
cfile.window = this;
|
||||
if (cf_open(&cfile, cf_path.toUtf8().constData(), type, FALSE, &err) != CF_OK) {
|
||||
CaptureFile::globalCapFile()->window = this;
|
||||
if (cf_open(CaptureFile::globalCapFile(), cf_path.toUtf8().constData(), type, FALSE, &err) != CF_OK) {
|
||||
/* We couldn't open it; don't dismiss the open dialog box,
|
||||
just leave it around so that the user can, after they
|
||||
dismiss the alert box popped up for the open error,
|
||||
try again. */
|
||||
cfile.window = NULL;
|
||||
CaptureFile::globalCapFile()->window = NULL;
|
||||
if (rfcode != NULL)
|
||||
dfilter_free(rfcode);
|
||||
cf_path.clear();
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (cf_read(&cfile, FALSE)) {
|
||||
switch (cf_read(CaptureFile::globalCapFile(), FALSE)) {
|
||||
|
||||
case CF_READ_OK:
|
||||
case CF_READ_ERROR:
|
||||
|
@ -206,7 +204,7 @@ void MainWindow::openCaptureFile(QString& cf_path, QString& read_filter, unsigne
|
|||
capture file has been closed - just free the capture file name
|
||||
string and return (without changing the last containing
|
||||
directory). */
|
||||
cap_file_ = NULL;
|
||||
capture_file_.setCapFile(NULL);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
@ -221,7 +219,7 @@ void MainWindow::filterPackets(QString& new_filter, bool force)
|
|||
{
|
||||
cf_status_t cf_status;
|
||||
|
||||
cf_status = cf_filter_packets(&cfile, new_filter.toUtf8().data(), force);
|
||||
cf_status = cf_filter_packets(CaptureFile::globalCapFile(), new_filter.toUtf8().data(), force);
|
||||
|
||||
if (cf_status == CF_OK) {
|
||||
emit displayFilterSuccess(true);
|
||||
|
@ -415,7 +413,7 @@ void MainWindow::filterAction(QString &action_filter, FilterAction::Action actio
|
|||
|
||||
// Capture callbacks
|
||||
|
||||
void MainWindow::captureCapturePrepared(capture_session *cap_session) {
|
||||
void MainWindow::captureCapturePrepared(capture_session *) {
|
||||
#ifdef HAVE_LIBPCAP
|
||||
setTitlebarForCaptureInProgress();
|
||||
|
||||
|
@ -429,11 +427,9 @@ void MainWindow::captureCapturePrepared(capture_session *cap_session) {
|
|||
// /* Don't set up main window for a capture file. */
|
||||
// main_set_for_capture_file(FALSE);
|
||||
main_ui_->mainStack->setCurrentWidget(&master_split_);
|
||||
cap_file_ = (capture_file *) cap_session->cf;
|
||||
#else
|
||||
Q_UNUSED(cap_session)
|
||||
#endif // HAVE_LIBPCAP
|
||||
}
|
||||
|
||||
void MainWindow::captureCaptureUpdateStarted(capture_session *cap_session) {
|
||||
Q_UNUSED(cap_session);
|
||||
#ifdef HAVE_LIBPCAP
|
||||
|
@ -523,42 +519,38 @@ void MainWindow::captureCaptureFailed(capture_session *cap_session) {
|
|||
}
|
||||
|
||||
|
||||
// Callbacks from cfile.c via WiresharkApplication::captureFileCallback
|
||||
// Callbacks from cfile.c and file.c via CaptureFile::captureFileCallback
|
||||
|
||||
void MainWindow::captureFileOpened(const capture_file *cf) {
|
||||
if (cf->window != this) return;
|
||||
cap_file_ = (capture_file *) cf;
|
||||
void MainWindow::captureFileOpened() {
|
||||
if (capture_file_.window() != this) return;
|
||||
|
||||
file_set_dialog_.fileOpened(cf);
|
||||
file_set_dialog_.fileOpened(capture_file_.capFile());
|
||||
setMenusForFileSet(true);
|
||||
emit setCaptureFile(cap_file_);
|
||||
emit setCaptureFile(capture_file_.capFile());
|
||||
}
|
||||
|
||||
void MainWindow::captureFileReadStarted(const capture_file *cf) {
|
||||
if (cf != cap_file_) return;
|
||||
void MainWindow::captureFileReadStarted() {
|
||||
// tap_param_dlg_update();
|
||||
|
||||
/* Set up main window for a capture file. */
|
||||
// main_set_for_capture_file(TRUE);
|
||||
|
||||
main_ui_->statusBar->popFileStatus();
|
||||
QString msg = QString(tr("Loading: %1")).arg(get_basename(cf->filename));
|
||||
QString msg = QString(tr("Loading: %1")).arg(get_basename(capture_file_.capFile()->filename));
|
||||
main_ui_->statusBar->pushFileStatus(msg);
|
||||
main_ui_->mainStack->setCurrentWidget(&master_split_);
|
||||
WiresharkApplication::processEvents();
|
||||
}
|
||||
|
||||
void MainWindow::captureFileReadFinished(const capture_file *cf) {
|
||||
if (cf != cap_file_) return;
|
||||
|
||||
void MainWindow::captureFileReadFinished() {
|
||||
gchar *dir_path;
|
||||
|
||||
if (!cf->is_tempfile && cf->filename) {
|
||||
if (!capture_file_.capFile()->is_tempfile && capture_file_.capFile()->filename) {
|
||||
/* Add this filename to the list of recent files in the "Recent Files" submenu */
|
||||
add_menu_recent_capture_file(cf->filename);
|
||||
add_menu_recent_capture_file(capture_file_.capFile()->filename);
|
||||
|
||||
/* Remember folder for next Open dialog and save it in recent */
|
||||
dir_path = get_dirname(g_strdup(cf->filename));
|
||||
dir_path = get_dirname(g_strdup(capture_file_.capFile()->filename));
|
||||
wsApp->setLastOpenDir(dir_path);
|
||||
g_free(dir_path);
|
||||
}
|
||||
|
@ -570,14 +562,12 @@ void MainWindow::captureFileReadFinished(const capture_file *cf) {
|
|||
setForCapturedPackets(true);
|
||||
|
||||
main_ui_->statusBar->popFileStatus();
|
||||
QString msg = QString().sprintf("%s", get_basename(cf->filename));
|
||||
QString msg = QString().sprintf("%s", get_basename(capture_file_.capFile()->filename));
|
||||
main_ui_->statusBar->pushFileStatus(msg);
|
||||
emit setDissectedCaptureFile(cap_file_);
|
||||
emit setDissectedCaptureFile(capture_file_.capFile());
|
||||
}
|
||||
|
||||
void MainWindow::captureFileClosing(const capture_file *cf) {
|
||||
if (cf != cap_file_) return;
|
||||
|
||||
void MainWindow::captureFileClosing() {
|
||||
setMenusForCaptureFile(true);
|
||||
setForCapturedPackets(false);
|
||||
setMenusForSelectedPacket();
|
||||
|
@ -591,8 +581,7 @@ void MainWindow::captureFileClosing(const capture_file *cf) {
|
|||
emit setDissectedCaptureFile(NULL);
|
||||
}
|
||||
|
||||
void MainWindow::captureFileClosed(const capture_file *cf) {
|
||||
if (cf != cap_file_) return;
|
||||
void MainWindow::captureFileClosed() {
|
||||
packets_bar_update();
|
||||
|
||||
file_set_dialog_.fileClosed();
|
||||
|
@ -602,7 +591,6 @@ void MainWindow::captureFileClosed(const capture_file *cf) {
|
|||
main_ui_->statusBar->hideExpert();
|
||||
|
||||
main_ui_->statusBar->popFileStatus();
|
||||
cap_file_ = NULL;
|
||||
|
||||
if (df_combo_box_)
|
||||
{
|
||||
|
@ -694,7 +682,7 @@ void MainWindow::startCapture() {
|
|||
this capture. */
|
||||
collect_ifaces(&global_capture_opts);
|
||||
|
||||
cfile.window = this;
|
||||
CaptureFile::globalCapFile()->window = this;
|
||||
if (capture_start(&global_capture_opts, &cap_session_, main_window_update)) {
|
||||
/* The capture succeeded, which means the capture filter syntax is
|
||||
valid; add this capture filter to the recent capture filter list. */
|
||||
|
@ -705,7 +693,7 @@ void MainWindow::startCapture() {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
cfile.window = NULL;
|
||||
CaptureFile::globalCapFile()->window = NULL;
|
||||
}
|
||||
#endif // HAVE_LIBPCAP
|
||||
}
|
||||
|
@ -896,21 +884,21 @@ void MainWindow::setMenusForSelectedPacket()
|
|||
time reference frame). (XXX - why check frame_selected?) */
|
||||
gboolean another_is_time_ref = FALSE;
|
||||
|
||||
if (cap_file_) {
|
||||
frame_selected = cap_file_->current_frame != NULL;
|
||||
have_frames = cap_file_->count > 0;
|
||||
have_marked = frame_selected && cap_file_->marked_count > 0;
|
||||
if (capture_file_.capFile()) {
|
||||
frame_selected = capture_file_.capFile()->current_frame != NULL;
|
||||
have_frames = capture_file_.capFile()->count > 0;
|
||||
have_marked = frame_selected && capture_file_.capFile()->marked_count > 0;
|
||||
another_is_marked = have_marked &&
|
||||
!(cap_file_->marked_count == 1 && cap_file_->current_frame->flags.marked);
|
||||
have_filtered = cap_file_->displayed_count > 0 && cap_file_->displayed_count != cap_file_->count;
|
||||
have_ignored = cap_file_->ignored_count > 0;
|
||||
have_time_ref = cap_file_->ref_time_count > 0;
|
||||
!(capture_file_.capFile()->marked_count == 1 && capture_file_.capFile()->current_frame->flags.marked);
|
||||
have_filtered = capture_file_.capFile()->displayed_count > 0 && capture_file_.capFile()->displayed_count != capture_file_.capFile()->count;
|
||||
have_ignored = capture_file_.capFile()->ignored_count > 0;
|
||||
have_time_ref = capture_file_.capFile()->ref_time_count > 0;
|
||||
another_is_time_ref = frame_selected && have_time_ref &&
|
||||
!(cap_file_->ref_time_count == 1 && cap_file_->current_frame->flags.ref_time);
|
||||
!(capture_file_.capFile()->ref_time_count == 1 && capture_file_.capFile()->current_frame->flags.ref_time);
|
||||
|
||||
if (cap_file_->edt)
|
||||
if (capture_file_.capFile()->edt)
|
||||
{
|
||||
proto_get_frame_protocols(cap_file_->edt->pi.layers, NULL, &is_tcp, NULL, &is_sctp, NULL);
|
||||
proto_get_frame_protocols(capture_file_.capFile()->edt->pi.layers, NULL, &is_tcp, NULL, &is_sctp, NULL);
|
||||
}
|
||||
}
|
||||
// if (cfile.edt && cfile.edt->tree) {
|
||||
|
@ -952,7 +940,7 @@ void MainWindow::setMenusForSelectedPacket()
|
|||
// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/EditPacket",
|
||||
// frame_selected);
|
||||
//#endif /* WANT_PACKET_EDITOR */
|
||||
main_ui_->actionEditPacketComment->setEnabled(frame_selected && wtap_dump_can_write(cap_file_->linktypes, WTAP_COMMENT_PER_PACKET));
|
||||
main_ui_->actionEditPacketComment->setEnabled(frame_selected && wtap_dump_can_write(capture_file_.capFile()->linktypes, WTAP_COMMENT_PER_PACKET));
|
||||
|
||||
main_ui_->actionEditIgnorePacket->setEnabled(frame_selected);
|
||||
main_ui_->actionEditIgnoreAllDisplayed->setEnabled(have_filtered);
|
||||
|
@ -1085,11 +1073,11 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) {
|
|||
|
||||
// XXX Add commented items below
|
||||
|
||||
if (cap_file_) {
|
||||
cap_file_->finfo_selected = fi;
|
||||
if (capture_file_.capFile()) {
|
||||
capture_file_.capFile()->finfo_selected = fi;
|
||||
}
|
||||
|
||||
if (cap_file_ != NULL && fi != NULL) {
|
||||
if (capture_file_.capFile() != NULL && fi != NULL) {
|
||||
/*
|
||||
header_field_info *hfinfo = fi->hfinfo;
|
||||
const char *abbrev;
|
||||
|
@ -1104,7 +1092,7 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) {
|
|||
}
|
||||
properties = prefs_is_registered_protocol(abbrev);
|
||||
*/
|
||||
bool can_match_selected = proto_can_match_selected(cap_file_->finfo_selected, cap_file_->edt);
|
||||
bool can_match_selected = proto_can_match_selected(capture_file_.capFile()->finfo_selected, capture_file_.capFile()->edt);
|
||||
// set_menu_sensitivity(ui_manager_tree_view_menu,
|
||||
// "/TreeViewPopup/GotoCorrespondingPacket", hfinfo->type == FT_FRAMENUM);
|
||||
// set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/Copy",
|
||||
|
@ -1159,7 +1147,7 @@ void MainWindow::setMenusForSelectedTreeRow(field_info *fi) {
|
|||
main_ui_->actionAnalyzePAFAndNotSelected->setEnabled(can_match_selected);
|
||||
main_ui_->actionAnalyzePAFOrNotSelected->setEnabled(can_match_selected);
|
||||
|
||||
main_ui_->actionViewExpandSubtrees->setEnabled(cap_file_->finfo_selected->tree_type != -1);
|
||||
main_ui_->actionViewExpandSubtrees->setEnabled(capture_file_.capFile()->finfo_selected->tree_type != -1);
|
||||
// prev_abbrev = g_object_get_data(G_OBJECT(ui_manager_tree_view_menu), "menu_abbrev");
|
||||
// if (!prev_abbrev || (strcmp (prev_abbrev, abbrev) != 0)) {
|
||||
// /* No previous protocol or protocol changed - update Protocol Preferences menu */
|
||||
|
@ -1239,8 +1227,8 @@ void MainWindow::startInterfaceCapture(bool valid)
|
|||
|
||||
void MainWindow::redissectPackets()
|
||||
{
|
||||
if (cap_file_)
|
||||
cf_redissect_packets(cap_file_);
|
||||
if (capture_file_.capFile())
|
||||
cf_redissect_packets(capture_file_.capFile());
|
||||
main_ui_->statusBar->expertUpdate();
|
||||
}
|
||||
|
||||
|
@ -1248,14 +1236,14 @@ void MainWindow::recreatePacketList()
|
|||
{
|
||||
prefs.num_cols = g_list_length(prefs.col_list);
|
||||
|
||||
col_cleanup(&cfile.cinfo);
|
||||
build_column_format_array(&cfile.cinfo, prefs.num_cols, FALSE);
|
||||
col_cleanup(&CaptureFile::globalCapFile()->cinfo);
|
||||
build_column_format_array(&CaptureFile::globalCapFile()->cinfo, prefs.num_cols, FALSE);
|
||||
|
||||
packet_list_->redrawVisiblePackets();
|
||||
packet_list_->hide();
|
||||
packet_list_->show();
|
||||
|
||||
cfile.columns_changed = FALSE; /* Reset value */
|
||||
CaptureFile::globalCapFile()->columns_changed = FALSE; /* Reset value */
|
||||
}
|
||||
|
||||
void MainWindow::fieldsChanged()
|
||||
|
@ -1266,21 +1254,21 @@ void MainWindow::fieldsChanged()
|
|||
// Syntax check filter
|
||||
// TODO: Check if syntax filter is still valid after fields have changed
|
||||
// and update background color.
|
||||
if (cfile.dfilter) {
|
||||
if (CaptureFile::globalCapFile()->dfilter) {
|
||||
// Check if filter is still valid
|
||||
dfilter_t *dfp = NULL;
|
||||
if (!dfilter_compile(cfile.dfilter, &dfp)) {
|
||||
if (!dfilter_compile(CaptureFile::globalCapFile()->dfilter, &dfp)) {
|
||||
// TODO: Not valid, enable "Apply" button.
|
||||
g_free(cfile.dfilter);
|
||||
cfile.dfilter = NULL;
|
||||
g_free(CaptureFile::globalCapFile()->dfilter);
|
||||
CaptureFile::globalCapFile()->dfilter = NULL;
|
||||
}
|
||||
dfilter_free(dfp);
|
||||
}
|
||||
|
||||
if (have_custom_cols(&cfile.cinfo)) {
|
||||
if (have_custom_cols(&CaptureFile::globalCapFile()->cinfo)) {
|
||||
/* Recreate packet list according to new/changed/deleted fields */
|
||||
recreatePacketList();
|
||||
} else if (cfile.state != FILE_CLOSED) {
|
||||
} else if (CaptureFile::globalCapFile()->state != FILE_CLOSED) {
|
||||
/* Redissect packets if we have any */
|
||||
redissectPackets();
|
||||
}
|
||||
|
@ -1374,12 +1362,12 @@ void MainWindow::on_actionFileClose_triggered() {
|
|||
|
||||
void MainWindow::on_actionFileSave_triggered()
|
||||
{
|
||||
saveCaptureFile(cap_file_, FALSE);
|
||||
saveCaptureFile(capture_file_.capFile(), FALSE);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFileSaveAs_triggered()
|
||||
{
|
||||
saveAsCaptureFile(cap_file_, FALSE, TRUE);
|
||||
saveAsCaptureFile(capture_file_.capFile(), FALSE, TRUE);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFileSetListFiles_triggered()
|
||||
|
@ -1441,7 +1429,7 @@ void MainWindow::on_actionFileExportPacketBytes_triggered()
|
|||
{
|
||||
QString file_name;
|
||||
|
||||
if (!cap_file_ || !cap_file_->finfo_selected) return;
|
||||
if (!capture_file_.capFile() || !capture_file_.capFile()->finfo_selected) return;
|
||||
|
||||
file_name = QFileDialog::getSaveFileName(this,
|
||||
tr("Wireshark: Export Selected Packet Bytes"),
|
||||
|
@ -1453,14 +1441,14 @@ void MainWindow::on_actionFileExportPacketBytes_triggered()
|
|||
const guint8 *data_p;
|
||||
int fd;
|
||||
|
||||
data_p = tvb_get_ptr(cap_file_->finfo_selected->ds_tvb, 0, -1) +
|
||||
cap_file_->finfo_selected->start;
|
||||
data_p = tvb_get_ptr(capture_file_.capFile()->finfo_selected->ds_tvb, 0, -1) +
|
||||
capture_file_.capFile()->finfo_selected->start;
|
||||
fd = ws_open(file_name.toUtf8().constData(), O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0666);
|
||||
if (fd == -1) {
|
||||
open_failure_alert_box(file_name.toUtf8().constData(), errno, TRUE);
|
||||
return;
|
||||
}
|
||||
if (write(fd, data_p, cfile.finfo_selected->length) < 0) {
|
||||
if (write(fd, data_p, capture_file_.capFile()->finfo_selected->length) < 0) {
|
||||
write_failure_alert_box(file_name.toUtf8().constData(), errno);
|
||||
::close(fd);
|
||||
return;
|
||||
|
@ -1552,27 +1540,27 @@ void MainWindow::on_actionFileExportSSLSessionKeys_triggered()
|
|||
|
||||
void MainWindow::on_actionFileExportObjectsDICOM_triggered()
|
||||
{
|
||||
new ExportObjectDialog(this, cap_file_, ExportObjectDialog::Dicom);
|
||||
new ExportObjectDialog(this, capture_file_.capFile(), ExportObjectDialog::Dicom);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFileExportObjectsHTTP_triggered()
|
||||
{
|
||||
new ExportObjectDialog(this, cap_file_, ExportObjectDialog::Http);
|
||||
new ExportObjectDialog(this, capture_file_.capFile(), ExportObjectDialog::Http);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFileExportObjectsSMB_triggered()
|
||||
{
|
||||
new ExportObjectDialog(this, cap_file_, ExportObjectDialog::Smb);
|
||||
new ExportObjectDialog(this, capture_file_.capFile(), ExportObjectDialog::Smb);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFileExportObjectsTFTP_triggered()
|
||||
{
|
||||
new ExportObjectDialog(this, cap_file_, ExportObjectDialog::Tftp);
|
||||
new ExportObjectDialog(this, capture_file_.capFile(), ExportObjectDialog::Tftp);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionFilePrint_triggered()
|
||||
{
|
||||
PrintDialog pdlg(this, cap_file_);
|
||||
PrintDialog pdlg(this, capture_file_.capFile());
|
||||
|
||||
pdlg.exec();
|
||||
}
|
||||
|
@ -1585,23 +1573,23 @@ void MainWindow::actionEditCopyTriggered(MainWindow::CopySelected selection_type
|
|||
char label_str[ITEM_LABEL_LENGTH];
|
||||
QString clip;
|
||||
|
||||
if (!cap_file_) return;
|
||||
if (!capture_file_.capFile()) return;
|
||||
|
||||
switch(selection_type) {
|
||||
case CopySelectedDescription:
|
||||
if (cap_file_->finfo_selected->rep &&
|
||||
strlen (cap_file_->finfo_selected->rep->representation) > 0) {
|
||||
clip.append(cap_file_->finfo_selected->rep->representation);
|
||||
if (capture_file_.capFile()->finfo_selected->rep &&
|
||||
strlen (capture_file_.capFile()->finfo_selected->rep->representation) > 0) {
|
||||
clip.append(capture_file_.capFile()->finfo_selected->rep->representation);
|
||||
}
|
||||
break;
|
||||
case CopySelectedFieldName:
|
||||
if (cap_file_->finfo_selected->hfinfo->abbrev != 0) {
|
||||
clip.append(cap_file_->finfo_selected->hfinfo->abbrev);
|
||||
if (capture_file_.capFile()->finfo_selected->hfinfo->abbrev != 0) {
|
||||
clip.append(capture_file_.capFile()->finfo_selected->hfinfo->abbrev);
|
||||
}
|
||||
break;
|
||||
case CopySelectedValue:
|
||||
if (cap_file_->edt != 0) {
|
||||
gchar* field_str = get_node_field_value(cap_file_->finfo_selected, cap_file_->edt);
|
||||
if (capture_file_.capFile()->edt != 0) {
|
||||
gchar* field_str = get_node_field_value(capture_file_.capFile()->finfo_selected, capture_file_.capFile()->edt);
|
||||
clip.append(field_str);
|
||||
g_free(field_str);
|
||||
}
|
||||
|
@ -1610,7 +1598,7 @@ void MainWindow::actionEditCopyTriggered(MainWindow::CopySelected selection_type
|
|||
|
||||
if (clip.length() == 0) {
|
||||
/* If no representation then... Try to read the value */
|
||||
proto_item_fill_label(cap_file_->finfo_selected, label_str);
|
||||
proto_item_fill_label(capture_file_.capFile()->finfo_selected, label_str);
|
||||
clip.append(label_str);
|
||||
}
|
||||
|
||||
|
@ -1684,14 +1672,14 @@ void MainWindow::on_actionEditUnmarkAllDisplayed_triggered()
|
|||
|
||||
void MainWindow::on_actionEditNextMark_triggered()
|
||||
{
|
||||
if (cap_file_)
|
||||
cf_find_packet_marked(cap_file_, SD_FORWARD);
|
||||
if (capture_file_.capFile())
|
||||
cf_find_packet_marked(capture_file_.capFile(), SD_FORWARD);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionEditPreviousMark_triggered()
|
||||
{
|
||||
if (cap_file_)
|
||||
cf_find_packet_marked(cap_file_, SD_BACKWARD);
|
||||
if (capture_file_.capFile())
|
||||
cf_find_packet_marked(capture_file_.capFile(), SD_BACKWARD);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionEditIgnorePacket_triggered()
|
||||
|
@ -1721,19 +1709,19 @@ void MainWindow::on_actionEditUnsetAllTimeReferences_triggered()
|
|||
|
||||
void MainWindow::on_actionEditNextTimeReference_triggered()
|
||||
{
|
||||
if (!cap_file_) return;
|
||||
cf_find_packet_time_reference(cap_file_, SD_FORWARD);
|
||||
if (!capture_file_.capFile()) return;
|
||||
cf_find_packet_time_reference(capture_file_.capFile(), SD_FORWARD);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionEditPreviousTimeReference_triggered()
|
||||
{
|
||||
if (!cap_file_) return;
|
||||
cf_find_packet_time_reference(cap_file_, SD_BACKWARD);
|
||||
if (!capture_file_.capFile()) return;
|
||||
cf_find_packet_time_reference(capture_file_.capFile(), SD_BACKWARD);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionEditTimeShift_triggered()
|
||||
{
|
||||
TimeShiftDialog ts_dialog(this, cap_file_);
|
||||
TimeShiftDialog ts_dialog(this, capture_file_.capFile());
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
&ts_dialog, SLOT(setCaptureFile(capture_file*)));
|
||||
ts_dialog.exec();
|
||||
|
@ -1810,9 +1798,9 @@ void MainWindow::setTimestampFormat(QAction *action)
|
|||
if (recent.gui_time_format != tsf) {
|
||||
timestamp_set_type(tsf);
|
||||
recent.gui_time_format = tsf;
|
||||
if (cap_file_) {
|
||||
if (capture_file_.capFile()) {
|
||||
/* This call adjusts column width */
|
||||
cf_timestamp_auto_precision(cap_file_);
|
||||
cf_timestamp_auto_precision(capture_file_.capFile());
|
||||
}
|
||||
if (packet_list_) {
|
||||
packet_list_->redrawVisiblePackets();
|
||||
|
@ -1832,9 +1820,9 @@ void MainWindow::setTimestampPrecision(QAction *action)
|
|||
/* the actual precision will be set in packet_list_queue_draw() below */
|
||||
timestamp_set_precision(tsp);
|
||||
recent.gui_time_precision = tsp;
|
||||
if (cap_file_) {
|
||||
if (capture_file_.capFile()) {
|
||||
/* This call adjusts column width */
|
||||
cf_timestamp_auto_precision(cap_file_);
|
||||
cf_timestamp_auto_precision(capture_file_.capFile());
|
||||
}
|
||||
if (packet_list_) {
|
||||
packet_list_->redrawVisiblePackets();
|
||||
|
@ -1851,9 +1839,9 @@ void MainWindow::on_actionViewTimeDisplaySecondsWithHoursAndMinutes_triggered(bo
|
|||
}
|
||||
timestamp_set_seconds_type(recent.gui_seconds_format);
|
||||
|
||||
if (cap_file_) {
|
||||
if (capture_file_.capFile()) {
|
||||
/* This call adjusts column width */
|
||||
cf_timestamp_auto_precision(cap_file_);
|
||||
cf_timestamp_auto_precision(capture_file_.capFile());
|
||||
}
|
||||
if (packet_list_) {
|
||||
packet_list_->redrawVisiblePackets();
|
||||
|
@ -1932,7 +1920,7 @@ void MainWindow::on_actionViewResizeColumns_triggered()
|
|||
|
||||
void MainWindow::on_actionViewReload_triggered()
|
||||
{
|
||||
cf_reload(&cfile);
|
||||
cf_reload(CaptureFile::globalCapFile());
|
||||
}
|
||||
|
||||
// Expand / collapse slots in proto_tree
|
||||
|
@ -1948,9 +1936,9 @@ void MainWindow::matchFieldFilter(FilterAction::Action action, FilterAction::Act
|
|||
|
||||
if (packet_list_->contextMenuActive()) {
|
||||
field_filter = packet_list_->getFilterFromRowAndColumn();
|
||||
} else if (cap_file_ && cap_file_->finfo_selected) {
|
||||
field_filter = proto_construct_match_selected_string(cap_file_->finfo_selected,
|
||||
cap_file_->edt);
|
||||
} else if (capture_file_.capFile() && capture_file_.capFile()->finfo_selected) {
|
||||
field_filter = proto_construct_match_selected_string(capture_file_.capFile()->finfo_selected,
|
||||
capture_file_.capFile()->edt);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
@ -2037,14 +2025,14 @@ void MainWindow::on_actionAnalyzeDecodeAs_triggered()
|
|||
create_new = true;
|
||||
}
|
||||
|
||||
DecodeAsDialog da_dialog(this, cap_file_, create_new);
|
||||
DecodeAsDialog da_dialog(this, capture_file_.capFile(), create_new);
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
&da_dialog, SLOT(setCaptureFile(capture_file*)));
|
||||
da_dialog.exec();
|
||||
}
|
||||
|
||||
void MainWindow::openFollowStreamDialog(follow_type_t type) {
|
||||
FollowStreamDialog *fsd = new FollowStreamDialog(this, type, cap_file_);
|
||||
FollowStreamDialog *fsd = new FollowStreamDialog(this, type, capture_file_.capFile());
|
||||
connect(fsd, SIGNAL(updateFilter(QString&, bool)), this, SLOT(filterPackets(QString&, bool)));
|
||||
connect(fsd, SIGNAL(goToPacket(int)), packet_list_, SLOT(goToPacket(int)));
|
||||
|
||||
|
@ -2069,7 +2057,7 @@ void MainWindow::on_actionAnalyzeFollowSSLStream_triggered()
|
|||
|
||||
void MainWindow::openSCTPAllAssocsDialog()
|
||||
{
|
||||
SCTPAllAssocsDialog *sctp_dialog = new SCTPAllAssocsDialog(this, cap_file_);
|
||||
SCTPAllAssocsDialog *sctp_dialog = new SCTPAllAssocsDialog(this, capture_file_.capFile());
|
||||
connect(sctp_dialog, SIGNAL(filterPackets(QString&,bool)),
|
||||
this, SLOT(filterPackets(QString&,bool)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2096,7 +2084,7 @@ void MainWindow::on_actionSCTPShowAllAssociations_triggered()
|
|||
|
||||
void MainWindow::on_actionSCTPAnalyseThisAssociation_triggered()
|
||||
{
|
||||
SCTPAssocAnalyseDialog *sctp_analyse = new SCTPAssocAnalyseDialog(this, NULL, cap_file_);
|
||||
SCTPAssocAnalyseDialog *sctp_analyse = new SCTPAssocAnalyseDialog(this, NULL, capture_file_.capFile());
|
||||
connect(sctp_analyse, SIGNAL(filterPackets(QString&,bool)),
|
||||
this, SLOT(filterPackets(QString&,bool)));
|
||||
|
||||
|
@ -2115,7 +2103,7 @@ void MainWindow::on_actionSCTPAnalyseThisAssociation_triggered()
|
|||
|
||||
void MainWindow::on_actionSCTPFilterThisAssociation_triggered()
|
||||
{
|
||||
sctp_assoc_info_t* assoc = SCTPAssocAnalyseDialog::findAssocForPacket(cap_file_);
|
||||
sctp_assoc_info_t* assoc = SCTPAssocAnalyseDialog::findAssocForPacket(capture_file_.capFile());
|
||||
if (assoc) {
|
||||
QString newFilter = QString("sctp.assoc_index==%1").arg(assoc->assoc_id);
|
||||
assoc = NULL;
|
||||
|
@ -2130,7 +2118,7 @@ void MainWindow::on_actionSCTPFilterThisAssociation_triggered()
|
|||
|
||||
void MainWindow::on_actionStatisticsFlowGraph_triggered()
|
||||
{
|
||||
SequenceDialog *sequence_dialog = new SequenceDialog(this, cap_file_);
|
||||
SequenceDialog *sequence_dialog = new SequenceDialog(this, capture_file_.capFile());
|
||||
connect(sequence_dialog, SIGNAL(goToPacket(int)),
|
||||
packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2140,7 +2128,7 @@ void MainWindow::on_actionStatisticsFlowGraph_triggered()
|
|||
|
||||
void MainWindow::openTcpStreamDialog(int graph_type)
|
||||
{
|
||||
TCPStreamDialog *stream_dialog = new TCPStreamDialog(this, cap_file_, (tcp_graph_type)graph_type);
|
||||
TCPStreamDialog *stream_dialog = new TCPStreamDialog(this, capture_file_.capFile(), (tcp_graph_type)graph_type);
|
||||
connect(stream_dialog, SIGNAL(goToPacket(int)),
|
||||
packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2175,7 +2163,7 @@ void MainWindow::on_actionStatisticsTcpStreamWindowScaling_triggered()
|
|||
|
||||
void MainWindow::openStatisticsTreeDialog(const gchar *abbr)
|
||||
{
|
||||
StatsTreeDialog *st_dialog = new StatsTreeDialog(this, cap_file_, abbr);
|
||||
StatsTreeDialog *st_dialog = new StatsTreeDialog(this, capture_file_.capFile(), abbr);
|
||||
// connect(st_dialog, SIGNAL(goToPacket(int)),
|
||||
// packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2240,7 +2228,7 @@ void MainWindow::on_actionStatistics29WestQueues_Queries_by_Receiver_triggered()
|
|||
|
||||
void MainWindow::on_actionStatistics29WestUIM_Streams_triggered()
|
||||
{
|
||||
LBMStreamDialog *stream_dialog = new LBMStreamDialog(this, cap_file_);
|
||||
LBMStreamDialog *stream_dialog = new LBMStreamDialog(this, capture_file_.capFile());
|
||||
// connect(stream_dialog, SIGNAL(goToPacket(int)),
|
||||
// packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2250,7 +2238,7 @@ void MainWindow::on_actionStatistics29WestUIM_Streams_triggered()
|
|||
|
||||
void MainWindow::on_actionStatistics29WestUIM_Stream_Flow_Graph_triggered()
|
||||
{
|
||||
LBMUIMFlowDialog * uimflow_dialog = new LBMUIMFlowDialog(this, cap_file_);
|
||||
LBMUIMFlowDialog * uimflow_dialog = new LBMUIMFlowDialog(this, capture_file_.capFile());
|
||||
connect(uimflow_dialog, SIGNAL(goToPacket(int)),
|
||||
packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2260,7 +2248,7 @@ void MainWindow::on_actionStatistics29WestUIM_Stream_Flow_Graph_triggered()
|
|||
|
||||
void MainWindow::on_actionStatistics29WestLBTRM_triggered()
|
||||
{
|
||||
LBMLBTRMTransportDialog * lbtrm_dialog = new LBMLBTRMTransportDialog(this, cap_file_);
|
||||
LBMLBTRMTransportDialog * lbtrm_dialog = new LBMLBTRMTransportDialog(this, capture_file_.capFile());
|
||||
connect(lbtrm_dialog, SIGNAL(goToPacket(int)),
|
||||
packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2269,7 +2257,7 @@ void MainWindow::on_actionStatistics29WestLBTRM_triggered()
|
|||
}
|
||||
void MainWindow::on_actionStatistics29WestLBTRU_triggered()
|
||||
{
|
||||
LBMLBTRUTransportDialog * lbtru_dialog = new LBMLBTRUTransportDialog(this, cap_file_);
|
||||
LBMLBTRUTransportDialog * lbtru_dialog = new LBMLBTRUTransportDialog(this, capture_file_.capFile());
|
||||
connect(lbtru_dialog, SIGNAL(goToPacket(int)),
|
||||
packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
@ -2309,7 +2297,7 @@ void MainWindow::on_actionStatisticsCollectd_triggered()
|
|||
|
||||
void MainWindow::statCommandConversations(const char *arg, void *userdata)
|
||||
{
|
||||
ConversationDialog *conv_dialog = new ConversationDialog(this, cap_file_, GPOINTER_TO_INT(userdata), arg);
|
||||
ConversationDialog *conv_dialog = new ConversationDialog(this, capture_file_.capFile(), GPOINTER_TO_INT(userdata), arg);
|
||||
connect(conv_dialog, SIGNAL(filterAction(QString&,FilterAction::Action,FilterAction::ActionType)),
|
||||
this, SLOT(filterAction(QString&,FilterAction::Action,FilterAction::ActionType)));
|
||||
connect(conv_dialog, SIGNAL(openFollowStreamDialog(follow_type_t)),
|
||||
|
@ -2328,7 +2316,7 @@ void MainWindow::on_actionStatisticsConversations_triggered()
|
|||
|
||||
void MainWindow::statCommandEndpoints(const char *arg, void *userdata)
|
||||
{
|
||||
EndpointDialog *endp_dialog = new EndpointDialog(this, cap_file_, GPOINTER_TO_INT(userdata), arg);
|
||||
EndpointDialog *endp_dialog = new EndpointDialog(this, capture_file_.capFile(), GPOINTER_TO_INT(userdata), arg);
|
||||
connect(endp_dialog, SIGNAL(filterAction(QString&,FilterAction::Action,FilterAction::ActionType)),
|
||||
this, SLOT(filterAction(QString&,FilterAction::Action,FilterAction::ActionType)));
|
||||
connect(endp_dialog, SIGNAL(openFollowStreamDialog(follow_type_t)),
|
||||
|
@ -2374,7 +2362,7 @@ void MainWindow::statCommandIOGraph(const char *arg, void *userdata)
|
|||
{
|
||||
Q_UNUSED(arg);
|
||||
Q_UNUSED(userdata);
|
||||
IOGraphDialog *iog_dialog = new IOGraphDialog(this, cap_file_);
|
||||
IOGraphDialog *iog_dialog = new IOGraphDialog(this, capture_file_.capFile());
|
||||
connect(iog_dialog, SIGNAL(goToPacket(int)), packet_list_, SLOT(goToPacket(int)));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
iog_dialog, SLOT(setCaptureFile(capture_file*)));
|
||||
|
@ -2394,7 +2382,7 @@ void MainWindow::on_actionStatisticsSametime_triggered()
|
|||
|
||||
void MainWindow::openVoipCallsDialog(bool all_flows)
|
||||
{
|
||||
VoipCallsDialog *voip_calls_dialog = new VoipCallsDialog(this, cap_file_, all_flows);
|
||||
VoipCallsDialog *voip_calls_dialog = new VoipCallsDialog(this, capture_file_.capFile(), all_flows);
|
||||
connect(voip_calls_dialog, SIGNAL(goToPacket(int)),
|
||||
packet_list_, SLOT(goToPacket(int)));
|
||||
connect(voip_calls_dialog, SIGNAL(updateFilter(QString&, bool)),
|
||||
|
@ -2629,7 +2617,7 @@ void MainWindow::on_actionCaptureStop_triggered()
|
|||
|
||||
void MainWindow::on_actionStatisticsCaptureFileProperties_triggered()
|
||||
{
|
||||
CaptureFilePropertiesDialog *capture_file_properties_dialog = new CaptureFilePropertiesDialog(this, cap_file_);
|
||||
CaptureFilePropertiesDialog *capture_file_properties_dialog = new CaptureFilePropertiesDialog(this, capture_file_.capFile());
|
||||
connect(capture_file_properties_dialog, SIGNAL(captureCommentChanged()),
|
||||
this, SLOT(updateForUnsavedChanges()));
|
||||
connect(this, SIGNAL(setCaptureFile(capture_file*)),
|
||||
|
|
|
@ -206,114 +206,6 @@ void WiresharkApplication::updateTaps()
|
|||
draw_tap_listeners(FALSE);
|
||||
}
|
||||
|
||||
void WiresharkApplication::captureCallback(int event _U_, capture_session *cap_session _U_)
|
||||
{
|
||||
#ifdef HAVE_LIBPCAP
|
||||
switch(event) {
|
||||
case(capture_cb_capture_prepared):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture prepared");
|
||||
emit captureCapturePrepared(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_update_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture update started");
|
||||
emit captureCaptureUpdateStarted(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_update_continue):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture update continue");
|
||||
emit captureCaptureUpdateContinue(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_update_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture update finished");
|
||||
emit captureCaptureUpdateFinished(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_fixed_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture fixed started");
|
||||
emit captureCaptureFixedStarted(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_fixed_continue):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture fixed continue");
|
||||
break;
|
||||
case(capture_cb_capture_fixed_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture fixed finished");
|
||||
emit captureCaptureFixedFinished(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_stopping):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture stopping");
|
||||
/* Beware: this state won't be called, if the capture child
|
||||
* closes the capturing on it's own! */
|
||||
emit captureCaptureStopping(cap_session);
|
||||
break;
|
||||
case(capture_cb_capture_failed):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: capture failed");
|
||||
emit captureCaptureFailed(cap_session);
|
||||
break;
|
||||
default:
|
||||
g_warning("main_capture_callback: event %u unknown", event);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
#endif // HAVE_LIBPCAP
|
||||
}
|
||||
|
||||
void WiresharkApplication::captureFileCallback(int event, void * data)
|
||||
{
|
||||
capture_file *cf = (capture_file *) data;
|
||||
|
||||
switch(event) {
|
||||
|
||||
case(cf_cb_file_opened):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Opened");
|
||||
emit captureFileOpened(cf);
|
||||
break;
|
||||
case(cf_cb_file_closing):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Closing");
|
||||
emit captureFileClosing(cf);
|
||||
break;
|
||||
case(cf_cb_file_closed):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Closed");
|
||||
emit captureFileClosed(cf);
|
||||
break;
|
||||
case(cf_cb_file_read_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read started");
|
||||
emit captureFileReadStarted(cf);
|
||||
QTimer::singleShot(TAP_UPDATE_DEFAULT_INTERVAL / 5, this, SLOT(updateTaps()));
|
||||
QTimer::singleShot(TAP_UPDATE_DEFAULT_INTERVAL / 2, this, SLOT(updateTaps()));
|
||||
break;
|
||||
case(cf_cb_file_read_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read finished");
|
||||
emit captureFileReadFinished(cf);
|
||||
updateTaps();
|
||||
break;
|
||||
case(cf_cb_file_reload_started):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload started");
|
||||
emit captureFileReadStarted(cf);
|
||||
break;
|
||||
case(cf_cb_file_reload_finished):
|
||||
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload finished");
|
||||
emit captureFileReadFinished(cf);
|
||||
break;
|
||||
|
||||
case(cf_cb_packet_selected):
|
||||
case(cf_cb_packet_unselected):
|
||||
case(cf_cb_field_unselected):
|
||||
// Pure signals and slots
|
||||
break;
|
||||
|
||||
// case(cf_cb_file_save_started): // data = string
|
||||
// g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save started");
|
||||
// break;
|
||||
// case(cf_cb_file_save_finished):
|
||||
// g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save finished");
|
||||
// break;
|
||||
// case(cf_cb_file_save_failed):
|
||||
// g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save failed");
|
||||
// break;
|
||||
default:
|
||||
g_log(NULL, G_LOG_LEVEL_DEBUG, "FIX: main_cf_callback %d %p", event, data);
|
||||
// g_warning("main_cf_callback: event %u unknown", event);
|
||||
// g_assert_not_reached();
|
||||
}
|
||||
}
|
||||
|
||||
QDir WiresharkApplication::lastOpenDir() {
|
||||
return QDir(last_open_dir);
|
||||
}
|
||||
|
@ -532,6 +424,13 @@ void WiresharkApplication::clearRecentItems() {
|
|||
emit updateRecentItemStatus(NULL, 0, false);
|
||||
}
|
||||
|
||||
void WiresharkApplication::captureFileReadStarted()
|
||||
{
|
||||
// Doesn't appear to do anything. Logic probably needs to be in file.c.
|
||||
QTimer::singleShot(TAP_UPDATE_DEFAULT_INTERVAL / 5, this, SLOT(updateTaps()));
|
||||
QTimer::singleShot(TAP_UPDATE_DEFAULT_INTERVAL / 2, this, SLOT(updateTaps()));
|
||||
}
|
||||
|
||||
void WiresharkApplication::cleanup()
|
||||
{
|
||||
software_update_cleanup();
|
||||
|
|
|
@ -82,8 +82,6 @@ public:
|
|||
e_prefs * readConfigurationFiles(char **gdp_path, char **dp_path);
|
||||
QList<recent_item_status *> recentItems() const;
|
||||
void addRecentItem(const QString &filename, qint64 size, bool accessible);
|
||||
void captureCallback(int event, capture_session * cap_session);
|
||||
void captureFileCallback(int event, void * data);
|
||||
QDir lastOpenDir();
|
||||
void setLastOpenDir(const char *dir_name);
|
||||
void setLastOpenDir(QString *dir_str);
|
||||
|
@ -130,7 +128,7 @@ signals:
|
|||
void addressResolutionChanged();
|
||||
void fieldsChanged();
|
||||
|
||||
// XXX It might make more sense to move these to main.cpp or main_window.cpp or their own class.
|
||||
#if 0
|
||||
void captureCapturePrepared(capture_session *cap_session);
|
||||
void captureCaptureUpdateStarted(capture_session *cap_session);
|
||||
void captureCaptureUpdateContinue(capture_session *cap_session);
|
||||
|
@ -139,17 +137,22 @@ signals:
|
|||
void captureCaptureFixedFinished(capture_session *cap_session);
|
||||
void captureCaptureStopping(capture_session *cap_session);
|
||||
void captureCaptureFailed(capture_session *cap_session);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
void captureFileOpened(const capture_file *cf);
|
||||
void captureFileReadStarted(const capture_file *cf);
|
||||
void captureFileReadFinished(const capture_file *cf);
|
||||
void captureFileClosing(const capture_file *cf);
|
||||
void captureFileClosed(const capture_file *cf);
|
||||
#endif
|
||||
|
||||
void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
|
||||
|
||||
public slots:
|
||||
void clearRecentItems();
|
||||
void captureFileReadStarted();
|
||||
void updateTaps();
|
||||
|
||||
private slots:
|
||||
void cleanup();
|
||||
|
@ -157,7 +160,6 @@ private slots:
|
|||
void itemStatusFinished(const QString filename = "", qint64 size = 0, bool accessible = false);
|
||||
void refreshRecentFiles(void);
|
||||
void refreshAddressResolution(void);
|
||||
void updateTaps();
|
||||
};
|
||||
|
||||
extern WiresharkApplication *wsApp;
|
||||
|
|
Loading…
Reference in New Issue