diff options
author | Guy Harris <guy@alum.mit.edu> | 2019-09-15 09:15:31 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2019-09-15 14:09:41 +0000 |
commit | 6d6376e81f2d799d51bd9e7d936d47a21d69509e (patch) | |
tree | 72a8c899fabb11d9a6235d6128cc1564f4fe51c2 /ui | |
parent | 1f2d36aa0bbb0b089d8d61afe53acc630581f15f (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.c | 54 | ||||
-rw-r--r-- | ui/capture_info.h | 73 | ||||
-rw-r--r-- | ui/qt/capture_info_dialog.cpp | 2 |
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" |