Wireshark 4.5.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Macros | Typedefs | Enumerations | Functions
print.h File Reference
#include <stdio.h>
#include <epan/epan.h>
#include <epan/packet.h>
#include <epan/print_stream.h>
#include <wsutil/json_dumper.h>
#include "ws_symbol_export.h"

Go to the source code of this file.

Macros

#define HEXDUMP_SOURCE_MASK   (0x0004U)
 
#define HEXDUMP_SOURCE_OPTION(option)   ((option) & HEXDUMP_SOURCE_MASK)
 
#define HEXDUMP_SOURCE_MULTI   (0x0000U) /* create hexdumps for all data sources assigned to a frame (legacy tshark behaviour) */
 
#define HEXDUMP_SOURCE_PRIMARY   (0x0004U) /* create hexdumps for only the frame data */
 

Typedefs

typedef struct _output_fields output_fields_t
 
typedef GSList *(* proto_node_children_grouper_func) (proto_node *node)
 

Enumerations

enum  print_format_e { PR_FMT_TEXT , PR_FMT_PS }
 
enum  print_dissections_e { print_dissections_none , print_dissections_collapsed , print_dissections_as_displayed , print_dissections_expanded }
 
enum  fields_format { FORMAT_CSV , FORMAT_JSON , FORMAT_EK , FORMAT_XML }
 
enum  pf_flags { PF_NONE = 0x00 , PF_INCLUDE_CHILDREN = 0x01 }
 

Functions

WS_DLL_PUBLIC output_fields_toutput_fields_new (void)
 
WS_DLL_PUBLIC void output_fields_free (output_fields_t *info)
 
WS_DLL_PUBLIC void output_fields_add (output_fields_t *info, const char *field)
 
WS_DLL_PUBLIC GSList * output_fields_valid (output_fields_t *info)
 
WS_DLL_PUBLIC size_t output_fields_num_fields (output_fields_t *info)
 
WS_DLL_PUBLIC bool output_fields_set_option (output_fields_t *info, char *option)
 
WS_DLL_PUBLIC void output_fields_list_options (FILE *fh)
 
WS_DLL_PUBLIC bool output_fields_add_protocolfilter (output_fields_t *info, const char *field, pf_flags filter_flags)
 
WS_DLL_PUBLIC bool output_fields_has_cols (output_fields_t *info)
 
WS_DLL_PUBLIC void output_fields_prime_edt (struct epan_dissect *edt, output_fields_t *info)
 
WS_DLL_PUBLIC bool proto_tree_print (print_dissections_e print_dissections, bool print_hex_data, epan_dissect_t *edt, GHashTable *output_only_tables, print_stream_t *stream)
 
WS_DLL_PUBLIC bool print_hex_data (print_stream_t *stream, epan_dissect_t *edt, unsigned hexdump_options)
 
WS_DLL_PUBLIC void write_pdml_preamble (FILE *fh, const char *filename)
 
WS_DLL_PUBLIC void write_pdml_proto_tree (output_fields_t *fields, epan_dissect_t *edt, column_info *cinfo, FILE *fh, bool use_color)
 
WS_DLL_PUBLIC void write_pdml_finale (FILE *fh)
 
WS_DLL_PUBLIC GSList * proto_node_group_children_by_unique (proto_node *node)
 
WS_DLL_PUBLIC GSList * proto_node_group_children_by_json_key (proto_node *node)
 
WS_DLL_PUBLIC json_dumper write_json_preamble (FILE *fh)
 
WS_DLL_PUBLIC void write_json_proto_tree (output_fields_t *fields, print_dissections_e print_dissections, bool print_hex_data, epan_dissect_t *edt, column_info *cinfo, proto_node_children_grouper_func node_children_grouper, json_dumper *dumper)
 
WS_DLL_PUBLIC void write_json_finale (json_dumper *dumper)
 
WS_DLL_PUBLIC void write_ek_proto_tree (output_fields_t *fields, bool print_summary, bool print_hex_data, epan_dissect_t *edt, column_info *cinfo, FILE *fh)
 
WS_DLL_PUBLIC void write_psml_preamble (column_info *cinfo, FILE *fh)
 
WS_DLL_PUBLIC void write_psml_columns (epan_dissect_t *edt, FILE *fh, bool use_color)
 
WS_DLL_PUBLIC void write_psml_finale (FILE *fh)
 
WS_DLL_PUBLIC void write_csv_column_titles (column_info *cinfo, FILE *fh)
 
WS_DLL_PUBLIC void write_csv_columns (epan_dissect_t *edt, FILE *fh)
 
WS_DLL_PUBLIC void write_carrays_hex_data (uint32_t num, FILE *fh, epan_dissect_t *edt)
 
WS_DLL_PUBLIC void write_fields_preamble (output_fields_t *fields, FILE *fh)
 
WS_DLL_PUBLIC void write_fields_proto_tree (output_fields_t *fields, epan_dissect_t *edt, column_info *cinfo, FILE *fh)
 
WS_DLL_PUBLIC void write_fields_finale (output_fields_t *fields, FILE *fh)
 
WS_DLL_PUBLIC char * get_node_field_value (field_info *fi, epan_dissect_t *edt)
 
void print_cache_field_handles (void)
 

Detailed Description

Definitions for printing packet analysis trees.

Gilbert Ramirez gram@.nosp@m.alum.nosp@m.ni.ri.nosp@m.ce.e.nosp@m.du

Wireshark - Network traffic analyzer By Gerald Combs geral.nosp@m.d@wi.nosp@m.resha.nosp@m.rk.o.nosp@m.rg Copyright 1998 Gerald Combs

SPDX-License-Identifier: GPL-2.0-or-later

Function Documentation

◆ proto_node_group_children_by_json_key()

WS_DLL_PUBLIC GSList * proto_node_group_children_by_json_key ( proto_node node)

Groups the children of a node by their json key. Children are put in the same group if they have the same json key.

Returns
Linked list where each element is another linked list of nodes associated with the same json key.

For each different json key we store a linked list of values corresponding to that json key. These lists are kept in both a linked list and a hashmap. The hashmap is used to quickly retrieve the values of a json key. The linked list is used to preserve the ordering of keys as they are encountered which is not guaranteed when only using a hashmap.

For each child of the node get the key and get the list of values already associated with that key from the hashmap. If no list exist yet for that key create a new one and add it to both the linked list and hashmap. If a list already exists add the node to that list.

◆ proto_node_group_children_by_unique()

WS_DLL_PUBLIC GSList * proto_node_group_children_by_unique ( proto_node node)

Groups each child of the node separately.

Returns
Linked list where each element is another linked list containing a single node.