aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2019-09-15 09:15:31 -0400
committerMichael Mann <mmann78@netscape.net>2019-09-15 14:09:41 +0000
commit6d6376e81f2d799d51bd9e7d936d47a21d69509e (patch)
tree72a8c899fabb11d9a6235d6128cc1564f4fe51c2 /ui
parent1f2d36aa0bbb0b089d8d61afe53acc630581f15f (diff)
Move the last of the routines from capture_info.c into ui/capture.c.
That means the packet-count-during-capture stuff is scattered amongst fewer locations. Move capture_info.h into ui; it's now a header that declares routines whose implementations are GUI-platform-dependent. Change-Id: I475815724a4766f6bc2511e67ebae14865e1a9d1 Reviewed-on: https://code.wireshark.org/review/26249 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui')
-rw-r--r--ui/capture.c54
-rw-r--r--ui/capture_info.h73
-rw-r--r--ui/qt/capture_info_dialog.cpp2
3 files changed, 127 insertions, 2 deletions
diff --git a/ui/capture.c b/ui/capture.c
index 239d8981b6..be462aead4 100644
--- a/ui/capture.c
+++ b/ui/capture.c
@@ -24,7 +24,7 @@
#include "ui/capture.h"
#include "caputils/capture_ifinfo.h"
#include <capchild/capture_sync.h>
-#include "capture_info.h"
+#include "ui/capture_info.h"
#include "ui/capture_ui_utils.h"
#include "ui/util.h"
#include "caputils/capture-pcap-util.h"
@@ -476,6 +476,58 @@ capture_input_new_file(capture_session *cap_session, gchar *new_file)
return TRUE;
}
+static void
+capture_info_packet(info_data_t* cap_info, gint wtap_linktype, const guchar *pd, guint32 caplen, union wtap_pseudo_header *pseudo_header)
+{
+ capture_packet_info_t cpinfo;
+
+ /* Setup the capture packet structure */
+ cpinfo.counts = cap_info->counts.counts_hash;
+
+ cap_info->counts.total++;
+ if (!try_capture_dissector("wtap_encap", wtap_linktype, pd, 0, caplen, &cpinfo, pseudo_header))
+ cap_info->counts.other++;
+}
+
+/* new packets arrived */
+static void capture_info_new_packets(int to_read, wtap *wth, info_data_t* cap_info)
+{
+ int err;
+ gchar *err_info;
+ gint64 data_offset;
+ wtap_rec rec;
+ Buffer buf;
+ union wtap_pseudo_header *pseudo_header;
+ int wtap_linktype;
+
+ cap_info->ui.new_packets = to_read;
+
+ /*g_warning("new packets: %u", to_read);*/
+
+ wtap_rec_init(&rec);
+ ws_buffer_init(&buf, 1514);
+ while (to_read > 0) {
+ wtap_cleareof(wth);
+ if (wtap_read(wth, &rec, &buf, &err, &err_info, &data_offset)) {
+ if (rec.rec_type == REC_TYPE_PACKET) {
+ pseudo_header = &rec.rec_header.packet_header.pseudo_header;
+ wtap_linktype = rec.rec_header.packet_header.pkt_encap;
+
+ capture_info_packet(cap_info, wtap_linktype,
+ ws_buffer_start_ptr(&buf),
+ rec.rec_header.packet_header.caplen,
+ pseudo_header);
+
+ /*g_warning("new packet");*/
+ to_read--;
+ }
+ }
+ }
+ wtap_rec_cleanup(&rec);
+ ws_buffer_free(&buf);
+
+ capture_info_ui_update(&cap_info->ui);
+}
/* capture child tells us we have new packets to read */
void
diff --git a/ui/capture_info.h b/ui/capture_info.h
new file mode 100644
index 0000000000..21b5149d7a
--- /dev/null
+++ b/ui/capture_info.h
@@ -0,0 +1,73 @@
+/* capture_info.h
+ * Declarations of platform-dependent capture info functions.
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+
+/** @file
+ *
+ * Capture info functions.
+ *
+ */
+
+#ifndef __CAPTURE_INFO_H__
+#define __CAPTURE_INFO_H__
+
+#include "capture_opts.h"
+#include <capchild/capture_session.h>
+#include <epan/capture_dissectors.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/** Current Capture info. */
+typedef struct _capture_info {
+ /* handle */
+ gpointer ui; /**< user interface handle */
+
+ /* capture info */
+ packet_counts *counts; /**< protocol specific counters */
+ gint new_packets; /**< packets since last update */
+} capture_info;
+
+typedef struct _info_data {
+ packet_counts counts; /* Packet counting */
+ capture_info ui; /* user interface data */
+} info_data_t;
+
+/** Create the capture info dialog */
+extern void
+capture_info_ui_create(capture_info *cinfo, capture_session *cap_session);
+
+/** Update the capture info counters in the dialog */
+extern void capture_info_ui_update(
+capture_info *cinfo);
+
+/** Destroy the capture info dialog again */
+extern void capture_info_ui_destroy(
+capture_info *cinfo);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* ui/capture_info.h */
+
+/*
+ * Editor modelines - https://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/ui/qt/capture_info_dialog.cpp b/ui/qt/capture_info_dialog.cpp
index 760e762ad7..f8b247ed19 100644
--- a/ui/qt/capture_info_dialog.cpp
+++ b/ui/qt/capture_info_dialog.cpp
@@ -11,7 +11,7 @@
#include <glib.h>
-#include "capture_info.h"
+#include "ui/capture_info.h"
#include "epan/capture_dissectors.h"
#include "epan/proto.h"