summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sctp.h
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-sctp.h')
-rw-r--r--epan/dissectors/packet-sctp.h130
1 files changed, 130 insertions, 0 deletions
diff --git a/epan/dissectors/packet-sctp.h b/epan/dissectors/packet-sctp.h
new file mode 100644
index 00000000..161ace9a
--- /dev/null
+++ b/epan/dissectors/packet-sctp.h
@@ -0,0 +1,130 @@
+/* packet-sctp.h
+ *
+ * Defintion of SCTP specific structures used by tap listeners.
+ *
+ * Copyright 2004 Michael Tuexen <tuexen [AT] fh-muenster.de>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef __PACKET_SCTP_H__
+#define __PACKET_SCTP_H__
+
+#include "ws_symbol_export.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define MAXIMUM_NUMBER_OF_TVBS 2048
+
+struct _sctp_info {
+ gboolean incomplete;
+ gboolean adler32_calculated;
+ gboolean adler32_correct;
+ gboolean crc32c_calculated;
+ gboolean crc32c_correct;
+ gboolean checksum_zero;
+ gboolean vtag_reflected;
+ guint16 sport;
+ guint16 dport;
+ address ip_src;
+ address ip_dst;
+ guint32 verification_tag;
+ guint16 assoc_index;
+ guint16 direction;
+ guint32 number_of_tvbs;
+ tvbuff_t *tvb[MAXIMUM_NUMBER_OF_TVBS];
+};
+
+typedef struct _sctp_fragment {
+ guint32 frame_num;
+ guint32 tsn;
+ guint32 len;
+ guint32 ppi;
+ unsigned char *data;
+ struct _sctp_fragment *next;
+} sctp_fragment;
+
+typedef struct _sctp_frag_be {
+ sctp_fragment* fragment;
+ struct _sctp_frag_be *next;
+} sctp_frag_be;
+
+typedef struct _sctp_complete_msg {
+ guint32 begin;
+ guint32 end;
+ sctp_fragment* reassembled_in;
+ guint32 len;
+ unsigned char *data;
+ struct _sctp_complete_msg *next;
+} sctp_complete_msg;
+
+typedef struct _sctp_frag_msg {
+ sctp_frag_be* begins;
+ sctp_frag_be* ends;
+ sctp_fragment* fragments;
+ sctp_complete_msg* messages;
+ guint32 ppi;
+ struct _sctp_frag_msg* next;
+} sctp_frag_msg;
+
+#define SCTP_DATA_CHUNK_ID 0
+#define SCTP_INIT_CHUNK_ID 1
+#define SCTP_INIT_ACK_CHUNK_ID 2
+#define SCTP_SACK_CHUNK_ID 3
+#define SCTP_HEARTBEAT_CHUNK_ID 4
+#define SCTP_HEARTBEAT_ACK_CHUNK_ID 5
+#define SCTP_ABORT_CHUNK_ID 6
+#define SCTP_SHUTDOWN_CHUNK_ID 7
+#define SCTP_SHUTDOWN_ACK_CHUNK_ID 8
+#define SCTP_ERROR_CHUNK_ID 9
+#define SCTP_COOKIE_ECHO_CHUNK_ID 10
+#define SCTP_COOKIE_ACK_CHUNK_ID 11
+#define SCTP_ECNE_CHUNK_ID 12
+#define SCTP_CWR_CHUNK_ID 13
+#define SCTP_SHUTDOWN_COMPLETE_CHUNK_ID 14
+#define SCTP_AUTH_CHUNK_ID 15
+#define SCTP_NR_SACK_CHUNK_ID 16
+#define SCTP_I_DATA_CHUNK_ID 0x40
+#define SCTP_ASCONF_ACK_CHUNK_ID 0x80
+#define SCTP_PKTDROP_CHUNK_ID 0x81
+#define SCTP_RE_CONFIG_CHUNK_ID 0x82
+#define SCTP_PAD_CHUNK_ID 0x84
+#define SCTP_FORWARD_TSN_CHUNK_ID 0xC0
+#define SCTP_ASCONF_CHUNK_ID 0xC1
+#define SCTP_I_FORWARD_TSN_CHUNK_ID 0xC2
+#define SCTP_IETF_EXT 0xFF
+
+#define IS_SCTP_CHUNK_TYPE(t) \
+ (((t) <= SCTP_NR_SACK_CHUNK_ID) || \
+ ((t) == SCTP_I_DATA_CHUNK_ID) || \
+ ((t) == SCTP_FORWARD_TSN_CHUNK_ID) || \
+ ((t) == SCTP_ASCONF_CHUNK_ID) || \
+ ((t) == SCTP_ASCONF_ACK_CHUNK_ID) || \
+ ((t) == SCTP_PKTDROP_CHUNK_ID))
+
+WS_DLL_PUBLIC const value_string chunk_type_values[];
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
+
+/*
+ * Editor modelines - https://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:
+ */