X-Git-Url: http://git.samba.org/?p=metze%2Fwireshark%2Fwip.git;a=blobdiff_plain;f=cfile.h;h=3c9296ba43788dc4a0d498b5be9c53231057122f;hp=f4f0890637f3d06fe47d4d6ea56c0d26d6e8eef4;hb=d943fce8a23717a5ae3462321cd6738d01999e5b;hpb=45449ce1a8f3d287dc4afe1106e5ad05608487fe;ds=sidebyside diff --git a/cfile.h b/cfile.h index f4f0890637..3c9296ba43 100644 --- a/cfile.h +++ b/cfile.h @@ -1,33 +1,22 @@ /* cfile.h * capture_file definition & GUI-independent manipulation * - * $Id$ - * * Wireshark - Network traffic analyzer * By Gerald Combs * 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. + * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef __CFILE_H__ #define __CFILE_H__ +#include +#include #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -35,12 +24,19 @@ extern "C" { /* Current state of file. */ typedef enum { - FILE_CLOSED, /* No file open */ + FILE_CLOSED, /* No file open */ FILE_READ_IN_PROGRESS, /* Reading a file we've opened */ FILE_READ_ABORTED, /* Read aborted by user */ FILE_READ_DONE /* Read completed */ } file_state; +/* Requested packets rescan action. */ +typedef enum { + RESCAN_NONE = 0, /* No rescan requested */ + RESCAN_SCAN, /* Request rescan without full redissection. */ + RESCAN_REDISSECT /* Request full redissection. */ +} rescan_type; + /* Character set for text search. */ typedef enum { SCS_NARROW_AND_WIDE, @@ -55,80 +51,103 @@ typedef enum { } search_direction; /* - * We store the frame_data structures in a radix tree, with 1024 - * elements per level. The leaf nodes are arrays of 1024 frame_data - * structures; the nodes above them are arrays of 1024 pointers to - * the nodes below them. The capture_file structure has a pointer - * to the root node. - * - * As frame numbers are 32 bits, and as 1024 is 2^10, that gives us - * up to 4 levels of tree. + * Packet provider for programs using a capture file. */ -#define LOG2_NODES_PER_LEVEL 10 -#define NODES_PER_LEVEL (1<1 per frame... */ - guint32 displayed_count; /* Number of displayed frames */ - guint32 marked_count; /* Number of marked frames */ - guint32 ignored_count; /* Number of ignored frames */ - guint32 ref_time_count; /* Number of time referenced frames */ - gboolean drops_known; /* TRUE if we know how many packets were dropped */ - guint32 drops; /* Dropped packets */ - nstime_t elapsed_time; /* Elapsed time */ - gboolean has_snap; /* TRUE if maximum capture packet length is known */ - int snap; /* Maximum captured packet length */ - wtap *wth; /* Wiretap session */ - dfilter_t *rfcode; /* Compiled read filter program */ - dfilter_t *dfcode; /* Compiled display filter program */ - gchar *dfilter; /* Display filter string */ - gboolean redissecting; /* TRUE if currently redissecting (cf_redissect_packets) */ + epan_t *epan; + file_state state; /* Current state of capture file */ + gchar *filename; /* Name of capture file */ + gchar *source; /* Temp file source, e.g. "Pipe from elsewhere" */ + gboolean is_tempfile; /* Is capture file a temporary file? */ + gboolean unsaved_changes; /* Does the capture file have changes that have not been saved? */ + gboolean stop_flag; /* Stop current processing (loading, searching, etc.) */ + + gint64 f_datalen; /* Size of capture file data (uncompressed) */ + guint16 cd_t; /* File type of capture file */ + unsigned int open_type; /* open_routine index+1 used, if selected, or WTAP_TYPE_AUTO */ + wtap_compression_type compression_type; /* Compression type of the file, or uncompressed */ + int lnk_t; /* File link-layer type; could be WTAP_ENCAP_PER_PACKET */ + GArray *linktypes; /* Array of packet link-layer types */ + guint32 count; /* Total number of frames */ + guint64 packet_comment_count; /* Number of comments in frames (could be >1 per frame... */ + guint32 displayed_count; /* Number of displayed frames */ + guint32 marked_count; /* Number of marked frames */ + guint32 ignored_count; /* Number of ignored frames */ + guint32 ref_time_count; /* Number of time referenced frames */ + gboolean drops_known; /* TRUE if we know how many packets were dropped */ + guint32 drops; /* Dropped packets */ + nstime_t elapsed_time; /* Elapsed time */ + int snap; /* Maximum captured packet length; 0 if unknown */ + dfilter_t *rfcode; /* Compiled read filter program */ + dfilter_t *dfcode; /* Compiled display filter program */ + gchar *dfilter; /* Display filter string */ + gboolean redissecting; /* TRUE if currently redissecting (cf_redissect_packets) */ + gboolean read_lock; /* TRUE if currently processing a file (cf_read) */ + rescan_type redissection_queued; /* Queued redissection type. */ /* search */ - gchar *sfilter; /* Filter, hex value, or string being searched */ - gboolean hex; /* TRUE if "Hex value" search was last selected */ - gboolean string; /* TRUE if "String" search was last selected */ - gboolean summary_data; /* TRUE if "String" search in "Packet list" (Info column) was last selected */ - gboolean decode_data; /* TRUE if "String" search in "Packet details" was last selected */ - gboolean packet_data; /* TRUE if "String" search in "Packet data" was last selected */ - guint32 search_pos; /* Byte position of last byte found in a hex search */ - gboolean case_type; /* TRUE if case-insensitive text search */ - search_charset_t scs_type; /* Character set for text search */ - search_direction dir; /* Direction in which to do searches */ - gboolean search_in_progress; /* TRUE if user just clicked OK in the Find dialog or hit N/B */ + gchar *sfilter; /* Filter, hex value, or string being searched */ + gboolean hex; /* TRUE if "Hex value" search was last selected */ + gboolean string; /* TRUE if "String" search was last selected */ + gboolean summary_data; /* TRUE if "String" search in "Packet list" (Info column) was last selected */ + gboolean decode_data; /* TRUE if "String" search in "Packet details" was last selected */ + gboolean packet_data; /* TRUE if "String" search in "Packet data" was last selected */ + guint32 search_pos; /* Byte position of last byte found in a hex search */ + guint32 search_len; /* Length of bytes matching the search */ + gboolean case_type; /* TRUE if case-insensitive text search */ + GRegex *regex; /* Set if regular expression search */ + search_charset_t scs_type; /* Character set for text search */ + search_direction dir; /* Direction in which to do searches */ + gboolean search_in_progress; /* TRUE if user just clicked OK in the Find dialog or hit N/B */ /* packet data */ - struct wtap_pkthdr phdr; /* Packet header */ - Buffer buf; /* Packet data */ + wtap_rec rec; /* Record header */ + Buffer buf; /* Record data */ + /* packet provider */ + struct packet_provider_data provider; /* frames */ - frame_data_sequence *frames; /* Sequence of frames, if we're keeping that information */ - guint32 first_displayed; /* Frame number of first frame displayed */ - guint32 last_displayed; /* Frame number of last frame displayed */ - column_info cinfo; /* Column formatting information */ - gboolean columns_changed; /**< Have the columns been changed in the prefs? */ - frame_data *current_frame; /* Frame data for current frame */ - gint current_row; /* Row number for current frame */ - epan_dissect_t *edt; /* Protocol dissection for currently selected packet */ - field_info *finfo_selected; /* Field info for currently selected field */ -#ifdef WANT_PACKET_EDITOR - GTree *edited_frames; /* BST with modified frames */ -#endif - gpointer window; /* Top-level window associated with file */ + guint32 first_displayed; /* Frame number of first frame displayed */ + guint32 last_displayed; /* Frame number of last frame displayed */ + column_info cinfo; /* Column formatting information */ + frame_data *current_frame; /* Frame data for current frame */ + gint current_row; /* Row number for current frame */ + epan_dissect_t *edt; /* Protocol dissection for currently selected packet */ + field_info *finfo_selected; /* Field info for currently selected field */ + gpointer window; /* Top-level window associated with file */ + gulong computed_elapsed; /* Elapsed time to load the file (in msec). */ + + guint32 cum_bytes; } capture_file; extern void cap_file_init(capture_file *cf); +const char *cap_file_provider_get_interface_name(struct packet_provider_data *prov, guint32 interface_id); +const char *cap_file_provider_get_interface_description(struct packet_provider_data *prov, guint32 interface_id); +const char *cap_file_provider_get_user_comment(struct packet_provider_data *prov, const frame_data *fd); +void cap_file_provider_set_user_comment(struct packet_provider_data *prov, frame_data *fd, const char *new_comment); + #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* cfile.h */ + +/* + * Editor modelines - http://www.wireshark.org/tools/modelines.html + * + * Local Variables: + * c-basic-offset: 2 + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * + * vi: set shiftwidth=2 tabstop=8 expandtab: + * :indentSize=2:tabSize=8:noTabs=true: + */