aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-h323.c
diff options
context:
space:
mode:
authorTomas Kukosa <tomas.kukosa@siemens.com>2007-10-17 10:25:21 +0000
committerTomas Kukosa <tomas.kukosa@siemens.com>2007-10-17 10:25:21 +0000
commit286f231eb9237bd800aa339aff2413f147300552 (patch)
treedc35a85051ba45f75c10bf12071155666b5d1f96 /epan/dissectors/packet-h323.c
parent5fa636334baa7c78115a6626f140c6c386725197 (diff)
new H.323 dissector
- Generic Extensible Framework helper - Annex M1 (QSIG over H.323) - Annex M4 - Annex R H.225/H.245 support for Generic Extensible Framework (GEF) H.235 register MIKEY into new H.225/H.245 GEF tables regenerate H.225,H.245,H.235,H.450,H.450-ROS,T.35 from new makefiles svn path=/trunk/; revision=23216
Diffstat (limited to 'epan/dissectors/packet-h323.c')
-rw-r--r--epan/dissectors/packet-h323.c628
1 files changed, 628 insertions, 0 deletions
diff --git a/epan/dissectors/packet-h323.c b/epan/dissectors/packet-h323.c
new file mode 100644
index 0000000000..c91833eb2d
--- /dev/null
+++ b/epan/dissectors/packet-h323.c
@@ -0,0 +1,628 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
+/* packet-h323.c */
+/* ../../tools/asn2wrs.py -p h323 -c h323.cnf -s packet-h323-template RAS-PROTOCOL-TUNNEL.asn ROBUSTNESS-DATA.asn */
+
+/* Input file: packet-h323-template.c */
+
+#line 1 "packet-h323-template.c"
+/* packet-h323.c
+ * Routines for H.323 packet dissection
+ * 2007 Tomas Kukosa
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-per.h"
+#include "packet-h225.h"
+#include "packet-h323.h"
+
+#define PNAME "H.323"
+#define PSNAME "H.323"
+#define PFNAME "h323"
+
+
+/* Generic Extensible Framework */
+gef_ctx_t* gef_ctx_alloc(gef_ctx_t *parent, const gchar *type) {
+ gef_ctx_t *gefx;
+
+ gefx = ep_alloc0(sizeof(gef_ctx_t));
+ gefx->signature = GEF_CTX_SIGNATURE;
+ gefx->parent = parent;
+ gefx->type = type;
+ return gefx;
+}
+
+gboolean gef_ctx_check_signature(gef_ctx_t *gefx) {
+ return gefx && (gefx->signature == GEF_CTX_SIGNATURE);
+}
+
+gef_ctx_t* gef_ctx_get(void *ptr) {
+ gef_ctx_t *gefx = (gef_ctx_t*)ptr;
+ asn1_ctx_t *actx = (asn1_ctx_t*)ptr;
+
+ if (!asn1_ctx_check_signature(actx))
+ actx = NULL;
+
+ if (actx)
+ gefx = actx->private_data;
+
+ if (!gef_ctx_check_signature(gefx))
+ gefx = NULL;
+
+ return gefx;
+}
+
+void gef_ctx_update_key(gef_ctx_t *gefx) {
+ const gchar *parent_key;
+
+ if (!gefx) return;
+ parent_key = (gefx->parent) ? gefx->parent->key : NULL;
+ gefx->key = ep_strdup_printf(
+ "%s%s" /* parent prefix */
+ "%s%s%s" /* type, id */
+ "%s%s" /* subid */,
+ (parent_key) ? parent_key : "", (parent_key) ? "/" : "",
+ (gefx->type) ? gefx->type : "", (gefx->type && (gefx->id || gefx->subid)) ? "/" : "", (gefx->id) ? gefx->id : "",
+ (gefx->subid) ? "-" : "", (gefx->subid) ? gefx->subid : ""
+ );
+}
+
+/* Subdissectors */
+static dissector_handle_t q931_handle = NULL;
+
+/* Initialize the protocol and registered fields */
+int proto_h323 = -1;
+
+/*--- Included file: packet-h323-hf.c ---*/
+#line 1 "packet-h323-hf.c"
+static int hf_h323_RasTunnelledSignallingMessage_PDU = -1; /* RasTunnelledSignallingMessage */
+static int hf_h323_RobustnessData_PDU = -1; /* RobustnessData */
+static int hf_h323_tunnelledProtocolID = -1; /* TunnelledProtocol */
+static int hf_h323_messageContent = -1; /* T_messageContent */
+static int hf_h323_messageContent_item = -1; /* OCTET_STRING */
+static int hf_h323_tunnellingRequired = -1; /* NULL */
+static int hf_h323_nonStandardData = -1; /* NonStandardParameter */
+static int hf_h323_versionID = -1; /* INTEGER_1_256 */
+static int hf_h323_robustnessData = -1; /* T_robustnessData */
+static int hf_h323_rrqData = -1; /* Rrq_RD */
+static int hf_h323_rcfData = -1; /* Rcf_RD */
+static int hf_h323_setupData = -1; /* Setup_RD */
+static int hf_h323_connectData = -1; /* Connect_RD */
+static int hf_h323_statusData = -1; /* Status_RD */
+static int hf_h323_statusInquiryData = -1; /* StatusInquiry_RD */
+static int hf_h323_BackupCallSignalAddresses_item = -1; /* BackupCallSignalAddresses_item */
+static int hf_h323_tcp = -1; /* TransportAddress */
+static int hf_h323_alternateTransport = -1; /* AlternateTransportAddresses */
+static int hf_h323_backupCallSignalAddresses = -1; /* BackupCallSignalAddresses */
+static int hf_h323_hasSharedRepository = -1; /* NULL */
+static int hf_h323_irrFrequency = -1; /* INTEGER_1_65535 */
+static int hf_h323_endpointGuid = -1; /* GloballyUniqueIdentifier */
+static int hf_h323_h245Address = -1; /* TransportAddress */
+static int hf_h323_fastStart = -1; /* T_fastStart */
+static int hf_h323_fastStart_item = -1; /* OCTET_STRING */
+static int hf_h323_resetH245 = -1; /* NULL */
+static int hf_h323_timeToLive = -1; /* TimeToLive */
+static int hf_h323_includeFastStart = -1; /* NULL */
+
+/*--- End of included file: packet-h323-hf.c ---*/
+#line 100 "packet-h323-template.c"
+
+/* Initialize the subtree pointers */
+
+/*--- Included file: packet-h323-ett.c ---*/
+#line 1 "packet-h323-ett.c"
+static gint ett_h323_RasTunnelledSignallingMessage = -1;
+static gint ett_h323_T_messageContent = -1;
+static gint ett_h323_RobustnessData = -1;
+static gint ett_h323_T_robustnessData = -1;
+static gint ett_h323_BackupCallSignalAddresses = -1;
+static gint ett_h323_BackupCallSignalAddresses_item = -1;
+static gint ett_h323_Rrq_RD = -1;
+static gint ett_h323_Rcf_RD = -1;
+static gint ett_h323_Setup_RD = -1;
+static gint ett_h323_Connect_RD = -1;
+static gint ett_h323_Status_RD = -1;
+static gint ett_h323_T_fastStart = -1;
+static gint ett_h323_StatusInquiry_RD = -1;
+
+/*--- End of included file: packet-h323-ett.c ---*/
+#line 103 "packet-h323-template.c"
+
+
+/*--- Included file: packet-h323-fn.c ---*/
+#line 1 "packet-h323-fn.c"
+
+
+static int
+dissect_h323_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_messageContent_sequence_of[1] = {
+ { &hf_h323_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
+};
+
+static int
+dissect_h323_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h323_T_messageContent, T_messageContent_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h323_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t RasTunnelledSignallingMessage_sequence[] = {
+ { &hf_h323_tunnelledProtocolID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol },
+ { &hf_h323_messageContent , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_messageContent },
+ { &hf_h323_tunnellingRequired, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
+ { &hf_h323_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_RasTunnelledSignallingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_RasTunnelledSignallingMessage, RasTunnelledSignallingMessage_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h323_INTEGER_1_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 256U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string h323_BackupCallSignalAddresses_item_vals[] = {
+ { 0, "tcp" },
+ { 1, "alternateTransport" },
+ { 0, NULL }
+};
+
+static const per_choice_t BackupCallSignalAddresses_item_choice[] = {
+ { 0, &hf_h323_tcp , ASN1_EXTENSION_ROOT , dissect_h225_TransportAddress },
+ { 1, &hf_h323_alternateTransport, ASN1_EXTENSION_ROOT , dissect_h225_AlternateTransportAddresses },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h323_BackupCallSignalAddresses_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h323_BackupCallSignalAddresses_item, BackupCallSignalAddresses_item_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t BackupCallSignalAddresses_sequence_of[1] = {
+ { &hf_h323_BackupCallSignalAddresses_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses_item },
+};
+
+static int
+dissect_h323_BackupCallSignalAddresses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h323_BackupCallSignalAddresses, BackupCallSignalAddresses_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t Rrq_RD_sequence[] = {
+ { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
+ { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_Rrq_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_Rrq_RD, Rrq_RD_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h323_INTEGER_1_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 65535U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t Rcf_RD_sequence[] = {
+ { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
+ { &hf_h323_irrFrequency , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_INTEGER_1_65535 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_Rcf_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_Rcf_RD, Rcf_RD_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h323_GloballyUniqueIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t Setup_RD_sequence[] = {
+ { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
+ { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
+ { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_Setup_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_Setup_RD, Setup_RD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t Connect_RD_sequence[] = {
+ { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
+ { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
+ { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_Connect_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_Connect_RD, Connect_RD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_fastStart_sequence_of[1] = {
+ { &hf_h323_fastStart_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
+};
+
+static int
+dissect_h323_T_fastStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h323_T_fastStart, T_fastStart_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t Status_RD_sequence[] = {
+ { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h323_fastStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_T_fastStart },
+ { &hf_h323_resetH245 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_Status_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_Status_RD, Status_RD_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t StatusInquiry_RD_sequence[] = {
+ { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h323_timeToLive , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TimeToLive },
+ { &hf_h323_includeFastStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_StatusInquiry_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_StatusInquiry_RD, StatusInquiry_RD_sequence);
+
+ return offset;
+}
+
+
+static const value_string h323_T_robustnessData_vals[] = {
+ { 0, "rrqData" },
+ { 1, "rcfData" },
+ { 2, "setupData" },
+ { 3, "connectData" },
+ { 4, "statusData" },
+ { 5, "statusInquiryData" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_robustnessData_choice[] = {
+ { 0, &hf_h323_rrqData , ASN1_EXTENSION_ROOT , dissect_h323_Rrq_RD },
+ { 1, &hf_h323_rcfData , ASN1_EXTENSION_ROOT , dissect_h323_Rcf_RD },
+ { 2, &hf_h323_setupData , ASN1_EXTENSION_ROOT , dissect_h323_Setup_RD },
+ { 3, &hf_h323_connectData , ASN1_EXTENSION_ROOT , dissect_h323_Connect_RD },
+ { 4, &hf_h323_statusData , ASN1_EXTENSION_ROOT , dissect_h323_Status_RD },
+ { 5, &hf_h323_statusInquiryData, ASN1_EXTENSION_ROOT , dissect_h323_StatusInquiry_RD },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h323_T_robustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h323_T_robustnessData, T_robustnessData_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RobustnessData_sequence[] = {
+ { &hf_h323_versionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_INTEGER_1_256 },
+ { &hf_h323_robustnessData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_robustnessData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h323_RobustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h323_RobustnessData, RobustnessData_sequence);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static int dissect_RasTunnelledSignallingMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_h323_RasTunnelledSignallingMessage(tvb, offset, &asn1_ctx, tree, hf_h323_RasTunnelledSignallingMessage_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+static int dissect_RobustnessData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_h323_RobustnessData(tvb, offset, &asn1_ctx, tree, hf_h323_RobustnessData_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+
+
+/*--- End of included file: packet-h323-fn.c ---*/
+#line 105 "packet-h323-template.c"
+
+/*--- proto_register_h323 ----------------------------------------------*/
+void proto_register_h323(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+/*--- Included file: packet-h323-hfarr.c ---*/
+#line 1 "packet-h323-hfarr.c"
+ { &hf_h323_RasTunnelledSignallingMessage_PDU,
+ { "RasTunnelledSignallingMessage", "h323.RasTunnelledSignallingMessage",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.RasTunnelledSignallingMessage", HFILL }},
+ { &hf_h323_RobustnessData_PDU,
+ { "RobustnessData", "h323.RobustnessData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.RobustnessData", HFILL }},
+ { &hf_h323_tunnelledProtocolID,
+ { "tunnelledProtocolID", "h323.tunnelledProtocolID",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h225.TunnelledProtocol", HFILL }},
+ { &hf_h323_messageContent,
+ { "messageContent", "h323.messageContent",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "h323.T_messageContent", HFILL }},
+ { &hf_h323_messageContent_item,
+ { "Item", "h323.messageContent_item",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "h323.OCTET_STRING", HFILL }},
+ { &hf_h323_tunnellingRequired,
+ { "tunnellingRequired", "h323.tunnellingRequired",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.NULL", HFILL }},
+ { &hf_h323_nonStandardData,
+ { "nonStandardData", "h323.nonStandardData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h225.NonStandardParameter", HFILL }},
+ { &hf_h323_versionID,
+ { "versionID", "h323.versionID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "h323.INTEGER_1_256", HFILL }},
+ { &hf_h323_robustnessData,
+ { "robustnessData", "h323.robustnessData",
+ FT_UINT32, BASE_DEC, VALS(h323_T_robustnessData_vals), 0,
+ "h323.T_robustnessData", HFILL }},
+ { &hf_h323_rrqData,
+ { "rrqData", "h323.rrqData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.Rrq_RD", HFILL }},
+ { &hf_h323_rcfData,
+ { "rcfData", "h323.rcfData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.Rcf_RD", HFILL }},
+ { &hf_h323_setupData,
+ { "setupData", "h323.setupData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.Setup_RD", HFILL }},
+ { &hf_h323_connectData,
+ { "connectData", "h323.connectData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.Connect_RD", HFILL }},
+ { &hf_h323_statusData,
+ { "statusData", "h323.statusData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.Status_RD", HFILL }},
+ { &hf_h323_statusInquiryData,
+ { "statusInquiryData", "h323.statusInquiryData",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.StatusInquiry_RD", HFILL }},
+ { &hf_h323_BackupCallSignalAddresses_item,
+ { "Item", "h323.BackupCallSignalAddresses_item",
+ FT_UINT32, BASE_DEC, VALS(h323_BackupCallSignalAddresses_item_vals), 0,
+ "h323.BackupCallSignalAddresses_item", HFILL }},
+ { &hf_h323_tcp,
+ { "tcp", "h323.tcp",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "h225.TransportAddress", HFILL }},
+ { &hf_h323_alternateTransport,
+ { "alternateTransport", "h323.alternateTransport",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h225.AlternateTransportAddresses", HFILL }},
+ { &hf_h323_backupCallSignalAddresses,
+ { "backupCallSignalAddresses", "h323.backupCallSignalAddresses",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "h323.BackupCallSignalAddresses", HFILL }},
+ { &hf_h323_hasSharedRepository,
+ { "hasSharedRepository", "h323.hasSharedRepository",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.NULL", HFILL }},
+ { &hf_h323_irrFrequency,
+ { "irrFrequency", "h323.irrFrequency",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "h323.INTEGER_1_65535", HFILL }},
+ { &hf_h323_endpointGuid,
+ { "endpointGuid", "h323.endpointGuid",
+ FT_GUID, BASE_NONE, NULL, 0,
+ "h323.GloballyUniqueIdentifier", HFILL }},
+ { &hf_h323_h245Address,
+ { "h245Address", "h323.h245Address",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "h225.TransportAddress", HFILL }},
+ { &hf_h323_fastStart,
+ { "fastStart", "h323.fastStart",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "h323.T_fastStart", HFILL }},
+ { &hf_h323_fastStart_item,
+ { "Item", "h323.fastStart_item",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "h323.OCTET_STRING", HFILL }},
+ { &hf_h323_resetH245,
+ { "resetH245", "h323.resetH245",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.NULL", HFILL }},
+ { &hf_h323_timeToLive,
+ { "timeToLive", "h323.timeToLive",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "h225.TimeToLive", HFILL }},
+ { &hf_h323_includeFastStart,
+ { "includeFastStart", "h323.includeFastStart",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "h323.NULL", HFILL }},
+
+/*--- End of included file: packet-h323-hfarr.c ---*/
+#line 112 "packet-h323-template.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+
+/*--- Included file: packet-h323-ettarr.c ---*/
+#line 1 "packet-h323-ettarr.c"
+ &ett_h323_RasTunnelledSignallingMessage,
+ &ett_h323_T_messageContent,
+ &ett_h323_RobustnessData,
+ &ett_h323_T_robustnessData,
+ &ett_h323_BackupCallSignalAddresses,
+ &ett_h323_BackupCallSignalAddresses_item,
+ &ett_h323_Rrq_RD,
+ &ett_h323_Rcf_RD,
+ &ett_h323_Setup_RD,
+ &ett_h323_Connect_RD,
+ &ett_h323_Status_RD,
+ &ett_h323_T_fastStart,
+ &ett_h323_StatusInquiry_RD,
+
+/*--- End of included file: packet-h323-ettarr.c ---*/
+#line 117 "packet-h323-template.c"
+ };
+
+ /* Register protocol */
+ proto_h323 = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_h323, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+}
+
+
+/*--- proto_reg_handoff_h323 -------------------------------------------*/
+void proto_reg_handoff_h323(void)
+{
+ q931_handle = find_dissector("q931");
+
+ /* H.323, Annex M1, Tunnelling of signalling protocols (QSIG) in H.323 */
+ dissector_add_string("h225.tp", "1.3.12.9", q931_handle);
+
+ /* H.323, Annex M4, Tunnelling of narrow-band signalling syntax (NSS) for H.323 */
+ dissector_add_string("h225.gef.content", "GenericData/1000/1",
+ new_create_dissector_handle(dissect_RasTunnelledSignallingMessage_PDU, proto_h323));
+
+ /* H.323, Annex R, Robustness methods for H.323 entities */
+ dissector_add_string("h225.gef.content", "GenericData/1/1",
+ new_create_dissector_handle(dissect_RobustnessData_PDU, proto_h323));
+}
+