X-Git-Url: http://git.samba.org/?p=metze%2Fwireshark%2Fwip.git;a=blobdiff_plain;f=cfile.h;h=3c9296ba43788dc4a0d498b5be9c53231057122f;hp=ced0aa81d815989763881978f497a2e5a4d153ad;hb=d943fce8a23717a5ae3462321cd6738d01999e5b;hpb=8b62ba243b8c25a3ce180fa3d4df112245f1a89b diff --git a/cfile.h b/cfile.h index ced0aa81d8..3c9296ba43 100644 --- a/cfile.h +++ b/cfile.h @@ -1,99 +1,153 @@ /* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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" { +#endif /* __cplusplus */ + /* 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_ASCII_AND_UNICODE, - SCS_ASCII, - SCS_UNICODE + SCS_NARROW_AND_WIDE, + SCS_NARROW, + SCS_WIDE /* add EBCDIC when it's implemented */ } search_charset_t; +typedef enum { + SD_FORWARD, + SD_BACKWARD +} search_direction; + +/* + * Packet provider for programs using a capture file. + */ +struct packet_provider_data { + wtap *wth; /* Wiretap session */ + const frame_data *ref; + frame_data *prev_dis; + frame_data *prev_cap; + frame_data_sequence *frames; /* Sequence of frames, if we're keeping that information */ + GTree *frames_user_comments; /* BST with user comments for frames (key = frame_data) */ +}; + typedef struct _capture_file { - file_state state; /* Current state of capture file */ - gchar *filename; /* Name of capture file */ - gboolean is_tempfile; /* Is capture file a temporary file? */ - gboolean user_saved; /* If capture file is temporary, has it been saved by user yet? */ - gint64 f_datalen; /* Size of capture file data (uncompressed) */ - guint16 cd_t; /* File type of capture file */ - int lnk_t; /* Link-layer type with which to save capture */ - guint32 vers; /* Version. For tcpdump minor is appended to major */ - int count; /* Total number of frames */ - int displayed_count; /* Number of displayed frames */ - int marked_count; /* Number of marked 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 (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; /* Search filter string */ - gboolean sbackward; /* TRUE if search is backward, FALSE if forward */ - gboolean hex; /* TRUE is raw data search is being performed */ - gboolean string; /* TRUE is text search is being performed */ - guint32 search_pos; /* Position of last character found in search */ - search_charset_t scs_type; /* Character set for text search */ - gboolean case_type; /* TRUE if case-insensitive text search */ - gboolean decode_data; /* TRUE if searching protocol tree text */ - gboolean summary_data; /* TRUE if searching Info column text */ + 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 */ - union wtap_pseudo_header pseudo_header; /* Packet pseudo_header */ - guint8 pd[WTAP_MAX_PACKET_SIZE]; /* Packet data */ - /* memory chunks have been deprecated in favor of the slice allocator, - * which has been added in 2.10 - */ -#if GLIB_CHECK_VERSION(2,10,0) - -#else - GMemChunk *plist_chunk; /* Memory chunk for frame_data structures */ -#endif - frame_data *plist_start; /* Packet list */ - frame_data *plist_end; /* Last packet in list */ - frame_data *first_displayed; /* First frame displayed */ - frame_data *last_displayed; /* 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 */ + wtap_rec rec; /* Record header */ + Buffer buf; /* Record data */ + /* packet provider */ + struct packet_provider_data provider; + /* frames */ + 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; -void init_cap_file(capture_file *cf); +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: + */