summaryrefslogtreecommitdiffstats
path: root/ui/text_import.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/text_import.h')
-rw-r--r--ui/text_import.h136
1 files changed, 136 insertions, 0 deletions
diff --git a/ui/text_import.h b/ui/text_import.h
new file mode 100644
index 00000000..dae7db98
--- /dev/null
+++ b/ui/text_import.h
@@ -0,0 +1,136 @@
+/** @file
+ *
+ * text_import.h
+ * State machine for text import
+ * November 2010, Jaap Keuter <jaap.keuter@xs4all.nl>
+ * Modified February 2021, Paul Weiß
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * Based on text2pcap.h by Ashok Narayanan <ashokn@cisco.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later*
+ *******************************************************************************/
+
+
+#ifndef __TEXT_IMPORT_H__
+#define __TEXT_IMPORT_H__
+
+#include <stdio.h>
+#include <wireshark.h>
+
+#include <wiretap/wtap.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* The parameter interface */
+
+enum offset_type
+{
+ OFFSET_NONE = 0,
+ OFFSET_HEX,
+ OFFSET_OCT,
+ OFFSET_DEC
+};
+
+enum data_encoding {
+ ENCODING_PLAIN_HEX,
+ ENCODING_PLAIN_OCT,
+ ENCODING_PLAIN_BIN,
+ ENCODING_BASE64
+};
+
+enum dummy_header_type
+{
+ HEADER_NONE,
+ HEADER_ETH,
+ HEADER_IPV4,
+ HEADER_UDP,
+ HEADER_TCP,
+ HEADER_SCTP,
+ HEADER_SCTP_DATA,
+ HEADER_EXPORT_PDU
+};
+
+enum text_import_mode {
+ TEXT_IMPORT_HEXDUMP,
+ TEXT_IMPORT_REGEX
+};
+
+typedef struct
+{
+ /* Input info */
+ // TODO: add const, as this way string constants can't be used
+ // BUT: the other way clang-check complaines when you free them
+ /* const */ char *import_text_filename;
+ char *output_filename;
+ enum text_import_mode mode;
+
+ struct {
+ FILE *import_text_FILE;
+ enum offset_type offset_type;
+ gboolean has_direction;
+ gboolean identify_ascii;
+ } hexdump;
+ struct {
+ GMappedFile* import_text_GMappedFile;
+ /* const */ GRegex* format;
+ enum data_encoding encoding;
+ /* const */ gchar* in_indication;
+ /* const */ gchar* out_indication;
+ } regex;
+ const char* timestamp_format;
+
+ /* Import info */
+ /* Wiretap encapsulation type; see wiretap/wtap.h for details */
+ guint encapsulation;
+ wtap_dumper* wdh;
+
+ /* Dummy header info (if encapsulation == 1) */
+ enum dummy_header_type dummy_header_type;
+ guint pid;
+ gboolean ipv6;
+ union {
+ ws_in4_addr ipv4;
+ ws_in6_addr ipv6;
+ } ip_src_addr;
+ union {
+ ws_in4_addr ipv4;
+ ws_in6_addr ipv6;
+ } ip_dest_addr;
+ guint protocol;
+ guint src_port;
+ guint dst_port;
+ guint tag;
+ guint ppi;
+ /* const */ gchar* payload;
+
+ guint max_frame_length;
+
+ /* Output info */
+ guint num_packets_read;
+ guint num_packets_written;
+} text_import_info_t;
+
+int text_import(text_import_info_t * const info);
+
+/* Write the SHB and IDB to the wtap_dump_params before opening the wtap dump
+ * file. While dummy headers can be written automatically, this writes out
+ * some extra information including an optional interface name.
+ *
+ * NOTE: The caller will be responsible for freeing params->idb_inf after
+ * finished with the wtap_dumper to avoid a memory leak. wtap_dump_close
+ * does not free it.
+ */
+int
+text_import_pre_open(wtap_dump_params * const params, int file_type_subtype, const char* const input_filename, const char* const interface_name);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __TEXT_IMPORT_H__ */