1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -p h323 -c h323.cnf -s packet-h323-template RAS-PROTOCOL-TUNNEL.asn ROBUSTNESS-DATA.asn */
6 /* Input file: packet-h323-template.c */
8 #line 1 "packet-h323-template.c"
10 * Routines for H.323 packet dissection
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
17 * Copyright 1998 Gerald Combs
19 * This program is free software; you can redistribute it and/or
20 * modify it under the terms of the GNU General Public License
21 * as published by the Free Software Foundation; either version 2
22 * of the License, or (at your option) any later version.
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 * GNU General Public License for more details.
29 * You should have received a copy of the GNU General Public License
30 * along with this program; if not, write to the Free Software
31 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
39 #include <epan/packet.h>
40 #include <epan/oids.h>
41 #include <epan/asn1.h>
46 #include "packet-per.h"
47 #include "packet-h225.h"
48 #include "packet-h323.h"
51 #define PSNAME "H.323"
55 /* Generic Extensible Framework */
56 gef_ctx_t* gef_ctx_alloc(gef_ctx_t *parent, const gchar *type) {
59 gefx = ep_alloc0(sizeof(gef_ctx_t));
60 gefx->signature = GEF_CTX_SIGNATURE;
61 gefx->parent = parent;
66 gboolean gef_ctx_check_signature(gef_ctx_t *gefx) {
67 return gefx && (gefx->signature == GEF_CTX_SIGNATURE);
70 gef_ctx_t* gef_ctx_get(void *ptr) {
71 gef_ctx_t *gefx = (gef_ctx_t*)ptr;
72 asn1_ctx_t *actx = (asn1_ctx_t*)ptr;
74 if (!asn1_ctx_check_signature(actx))
78 gefx = actx->private_data;
80 if (!gef_ctx_check_signature(gefx))
86 void gef_ctx_update_key(gef_ctx_t *gefx) {
87 const gchar *parent_key;
90 parent_key = (gefx->parent) ? gefx->parent->key : NULL;
91 gefx->key = ep_strdup_printf(
92 "%s%s" /* parent prefix */
93 "%s%s%s" /* type, id */
95 (parent_key) ? parent_key : "", (parent_key) ? "/" : "",
96 (gefx->type) ? gefx->type : "", (gefx->type && (gefx->id || gefx->subid)) ? "/" : "", (gefx->id) ? gefx->id : "",
97 (gefx->subid) ? "-" : "", (gefx->subid) ? gefx->subid : ""
101 /* Initialize the protocol and registered fields */
104 /*--- Included file: packet-h323-hf.c ---*/
105 #line 1 "packet-h323-hf.c"
106 static int hf_h323_RasTunnelledSignallingMessage_PDU = -1; /* RasTunnelledSignallingMessage */
107 static int hf_h323_RobustnessData_PDU = -1; /* RobustnessData */
108 static int hf_h323_tunnelledProtocolID = -1; /* TunnelledProtocol */
109 static int hf_h323_messageContent = -1; /* T_messageContent */
110 static int hf_h323_messageContent_item = -1; /* OCTET_STRING */
111 static int hf_h323_tunnellingRequired = -1; /* NULL */
112 static int hf_h323_nonStandardData = -1; /* NonStandardParameter */
113 static int hf_h323_versionID = -1; /* INTEGER_1_256 */
114 static int hf_h323_robustnessData = -1; /* T_robustnessData */
115 static int hf_h323_rrqData = -1; /* Rrq_RD */
116 static int hf_h323_rcfData = -1; /* Rcf_RD */
117 static int hf_h323_setupData = -1; /* Setup_RD */
118 static int hf_h323_connectData = -1; /* Connect_RD */
119 static int hf_h323_statusData = -1; /* Status_RD */
120 static int hf_h323_statusInquiryData = -1; /* StatusInquiry_RD */
121 static int hf_h323_BackupCallSignalAddresses_item = -1; /* BackupCallSignalAddresses_item */
122 static int hf_h323_tcp = -1; /* TransportAddress */
123 static int hf_h323_alternateTransport = -1; /* AlternateTransportAddresses */
124 static int hf_h323_backupCallSignalAddresses = -1; /* BackupCallSignalAddresses */
125 static int hf_h323_hasSharedRepository = -1; /* NULL */
126 static int hf_h323_irrFrequency = -1; /* INTEGER_1_65535 */
127 static int hf_h323_endpointGuid = -1; /* GloballyUniqueIdentifier */
128 static int hf_h323_h245Address = -1; /* TransportAddress */
129 static int hf_h323_fastStart = -1; /* T_fastStart */
130 static int hf_h323_fastStart_item = -1; /* OCTET_STRING */
131 static int hf_h323_resetH245 = -1; /* NULL */
132 static int hf_h323_timeToLive = -1; /* TimeToLive */
133 static int hf_h323_includeFastStart = -1; /* NULL */
135 /*--- End of included file: packet-h323-hf.c ---*/
136 #line 96 "packet-h323-template.c"
138 /* Initialize the subtree pointers */
140 /*--- Included file: packet-h323-ett.c ---*/
141 #line 1 "packet-h323-ett.c"
142 static gint ett_h323_RasTunnelledSignallingMessage = -1;
143 static gint ett_h323_T_messageContent = -1;
144 static gint ett_h323_RobustnessData = -1;
145 static gint ett_h323_T_robustnessData = -1;
146 static gint ett_h323_BackupCallSignalAddresses = -1;
147 static gint ett_h323_BackupCallSignalAddresses_item = -1;
148 static gint ett_h323_Rrq_RD = -1;
149 static gint ett_h323_Rcf_RD = -1;
150 static gint ett_h323_Setup_RD = -1;
151 static gint ett_h323_Connect_RD = -1;
152 static gint ett_h323_Status_RD = -1;
153 static gint ett_h323_T_fastStart = -1;
154 static gint ett_h323_StatusInquiry_RD = -1;
156 /*--- End of included file: packet-h323-ett.c ---*/
157 #line 99 "packet-h323-template.c"
160 /*--- Included file: packet-h323-fn.c ---*/
161 #line 1 "packet-h323-fn.c"
165 dissect_h323_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
166 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
167 NO_BOUND, NO_BOUND, FALSE, NULL);
173 static const per_sequence_t T_messageContent_sequence_of[1] = {
174 { &hf_h323_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
178 dissect_h323_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
179 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
180 ett_h323_T_messageContent, T_messageContent_sequence_of);
188 dissect_h323_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
189 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
195 static const per_sequence_t RasTunnelledSignallingMessage_sequence[] = {
196 { &hf_h323_tunnelledProtocolID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol },
197 { &hf_h323_messageContent , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_messageContent },
198 { &hf_h323_tunnellingRequired, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
199 { &hf_h323_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
204 dissect_h323_RasTunnelledSignallingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
205 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
206 ett_h323_RasTunnelledSignallingMessage, RasTunnelledSignallingMessage_sequence);
214 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_) {
215 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
216 1U, 256U, NULL, FALSE);
222 static const value_string h323_BackupCallSignalAddresses_item_vals[] = {
224 { 1, "alternateTransport" },
228 static const per_choice_t BackupCallSignalAddresses_item_choice[] = {
229 { 0, &hf_h323_tcp , ASN1_EXTENSION_ROOT , dissect_h225_TransportAddress },
230 { 1, &hf_h323_alternateTransport, ASN1_EXTENSION_ROOT , dissect_h225_AlternateTransportAddresses },
235 dissect_h323_BackupCallSignalAddresses_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
236 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
237 ett_h323_BackupCallSignalAddresses_item, BackupCallSignalAddresses_item_choice,
244 static const per_sequence_t BackupCallSignalAddresses_sequence_of[1] = {
245 { &hf_h323_BackupCallSignalAddresses_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses_item },
249 dissect_h323_BackupCallSignalAddresses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
250 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
251 ett_h323_BackupCallSignalAddresses, BackupCallSignalAddresses_sequence_of);
257 static const per_sequence_t Rrq_RD_sequence[] = {
258 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
259 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
264 dissect_h323_Rrq_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
265 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
266 ett_h323_Rrq_RD, Rrq_RD_sequence);
274 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_) {
275 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
276 1U, 65535U, NULL, FALSE);
282 static const per_sequence_t Rcf_RD_sequence[] = {
283 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
284 { &hf_h323_irrFrequency , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_INTEGER_1_65535 },
289 dissect_h323_Rcf_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
290 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
291 ett_h323_Rcf_RD, Rcf_RD_sequence);
299 dissect_h323_GloballyUniqueIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
300 offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
306 static const per_sequence_t Setup_RD_sequence[] = {
307 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
308 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
309 { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
314 dissect_h323_Setup_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
315 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
316 ett_h323_Setup_RD, Setup_RD_sequence);
322 static const per_sequence_t Connect_RD_sequence[] = {
323 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
324 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
325 { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
330 dissect_h323_Connect_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
331 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
332 ett_h323_Connect_RD, Connect_RD_sequence);
338 static const per_sequence_t T_fastStart_sequence_of[1] = {
339 { &hf_h323_fastStart_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
343 dissect_h323_T_fastStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
344 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
345 ett_h323_T_fastStart, T_fastStart_sequence_of);
351 static const per_sequence_t Status_RD_sequence[] = {
352 { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
353 { &hf_h323_fastStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_T_fastStart },
354 { &hf_h323_resetH245 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_NULL },
359 dissect_h323_Status_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
360 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
361 ett_h323_Status_RD, Status_RD_sequence);
367 static const per_sequence_t StatusInquiry_RD_sequence[] = {
368 { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
369 { &hf_h323_timeToLive , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TimeToLive },
370 { &hf_h323_includeFastStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
375 dissect_h323_StatusInquiry_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
376 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
377 ett_h323_StatusInquiry_RD, StatusInquiry_RD_sequence);
383 static const value_string h323_T_robustnessData_vals[] = {
387 { 3, "connectData" },
389 { 5, "statusInquiryData" },
393 static const per_choice_t T_robustnessData_choice[] = {
394 { 0, &hf_h323_rrqData , ASN1_EXTENSION_ROOT , dissect_h323_Rrq_RD },
395 { 1, &hf_h323_rcfData , ASN1_EXTENSION_ROOT , dissect_h323_Rcf_RD },
396 { 2, &hf_h323_setupData , ASN1_EXTENSION_ROOT , dissect_h323_Setup_RD },
397 { 3, &hf_h323_connectData , ASN1_EXTENSION_ROOT , dissect_h323_Connect_RD },
398 { 4, &hf_h323_statusData , ASN1_EXTENSION_ROOT , dissect_h323_Status_RD },
399 { 5, &hf_h323_statusInquiryData, ASN1_EXTENSION_ROOT , dissect_h323_StatusInquiry_RD },
404 dissect_h323_T_robustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
405 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
406 ett_h323_T_robustnessData, T_robustnessData_choice,
413 static const per_sequence_t RobustnessData_sequence[] = {
414 { &hf_h323_versionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_INTEGER_1_256 },
415 { &hf_h323_robustnessData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_robustnessData },
420 dissect_h323_RobustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
421 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
422 ett_h323_RobustnessData, RobustnessData_sequence);
429 static int dissect_RasTunnelledSignallingMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
432 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
433 offset = dissect_h323_RasTunnelledSignallingMessage(tvb, offset, &asn1_ctx, tree, hf_h323_RasTunnelledSignallingMessage_PDU);
434 offset += 7; offset >>= 3;
437 static int dissect_RobustnessData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
440 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
441 offset = dissect_h323_RobustnessData(tvb, offset, &asn1_ctx, tree, hf_h323_RobustnessData_PDU);
442 offset += 7; offset >>= 3;
447 /*--- End of included file: packet-h323-fn.c ---*/
448 #line 101 "packet-h323-template.c"
450 /*--- proto_register_h323 ----------------------------------------------*/
451 void proto_register_h323(void) {
454 static hf_register_info hf[] = {
456 /*--- Included file: packet-h323-hfarr.c ---*/
457 #line 1 "packet-h323-hfarr.c"
458 { &hf_h323_RasTunnelledSignallingMessage_PDU,
459 { "RasTunnelledSignallingMessage", "h323.RasTunnelledSignallingMessage",
460 FT_NONE, BASE_NONE, NULL, 0,
461 "h323.RasTunnelledSignallingMessage", HFILL }},
462 { &hf_h323_RobustnessData_PDU,
463 { "RobustnessData", "h323.RobustnessData",
464 FT_NONE, BASE_NONE, NULL, 0,
465 "h323.RobustnessData", HFILL }},
466 { &hf_h323_tunnelledProtocolID,
467 { "tunnelledProtocolID", "h323.tunnelledProtocolID",
468 FT_NONE, BASE_NONE, NULL, 0,
469 "h225.TunnelledProtocol", HFILL }},
470 { &hf_h323_messageContent,
471 { "messageContent", "h323.messageContent",
472 FT_UINT32, BASE_DEC, NULL, 0,
473 "h323.T_messageContent", HFILL }},
474 { &hf_h323_messageContent_item,
475 { "messageContent", "h323.messageContent_item",
476 FT_BYTES, BASE_HEX, NULL, 0,
477 "h323.OCTET_STRING", HFILL }},
478 { &hf_h323_tunnellingRequired,
479 { "tunnellingRequired", "h323.tunnellingRequired",
480 FT_NONE, BASE_NONE, NULL, 0,
481 "h323.NULL", HFILL }},
482 { &hf_h323_nonStandardData,
483 { "nonStandardData", "h323.nonStandardData",
484 FT_NONE, BASE_NONE, NULL, 0,
485 "h225.NonStandardParameter", HFILL }},
486 { &hf_h323_versionID,
487 { "versionID", "h323.versionID",
488 FT_UINT32, BASE_DEC, NULL, 0,
489 "h323.INTEGER_1_256", HFILL }},
490 { &hf_h323_robustnessData,
491 { "robustnessData", "h323.robustnessData",
492 FT_UINT32, BASE_DEC, VALS(h323_T_robustnessData_vals), 0,
493 "h323.T_robustnessData", HFILL }},
495 { "rrqData", "h323.rrqData",
496 FT_NONE, BASE_NONE, NULL, 0,
497 "h323.Rrq_RD", HFILL }},
499 { "rcfData", "h323.rcfData",
500 FT_NONE, BASE_NONE, NULL, 0,
501 "h323.Rcf_RD", HFILL }},
502 { &hf_h323_setupData,
503 { "setupData", "h323.setupData",
504 FT_NONE, BASE_NONE, NULL, 0,
505 "h323.Setup_RD", HFILL }},
506 { &hf_h323_connectData,
507 { "connectData", "h323.connectData",
508 FT_NONE, BASE_NONE, NULL, 0,
509 "h323.Connect_RD", HFILL }},
510 { &hf_h323_statusData,
511 { "statusData", "h323.statusData",
512 FT_NONE, BASE_NONE, NULL, 0,
513 "h323.Status_RD", HFILL }},
514 { &hf_h323_statusInquiryData,
515 { "statusInquiryData", "h323.statusInquiryData",
516 FT_NONE, BASE_NONE, NULL, 0,
517 "h323.StatusInquiry_RD", HFILL }},
518 { &hf_h323_BackupCallSignalAddresses_item,
519 { "BackupCallSignalAddresses", "h323.BackupCallSignalAddresses_item",
520 FT_UINT32, BASE_DEC, VALS(h323_BackupCallSignalAddresses_item_vals), 0,
521 "h323.BackupCallSignalAddresses_item", HFILL }},
524 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
525 "h225.TransportAddress", HFILL }},
526 { &hf_h323_alternateTransport,
527 { "alternateTransport", "h323.alternateTransport",
528 FT_NONE, BASE_NONE, NULL, 0,
529 "h225.AlternateTransportAddresses", HFILL }},
530 { &hf_h323_backupCallSignalAddresses,
531 { "backupCallSignalAddresses", "h323.backupCallSignalAddresses",
532 FT_UINT32, BASE_DEC, NULL, 0,
533 "h323.BackupCallSignalAddresses", HFILL }},
534 { &hf_h323_hasSharedRepository,
535 { "hasSharedRepository", "h323.hasSharedRepository",
536 FT_NONE, BASE_NONE, NULL, 0,
537 "h323.NULL", HFILL }},
538 { &hf_h323_irrFrequency,
539 { "irrFrequency", "h323.irrFrequency",
540 FT_UINT32, BASE_DEC, NULL, 0,
541 "h323.INTEGER_1_65535", HFILL }},
542 { &hf_h323_endpointGuid,
543 { "endpointGuid", "h323.endpointGuid",
544 FT_GUID, BASE_NONE, NULL, 0,
545 "h323.GloballyUniqueIdentifier", HFILL }},
546 { &hf_h323_h245Address,
547 { "h245Address", "h323.h245Address",
548 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
549 "h225.TransportAddress", HFILL }},
550 { &hf_h323_fastStart,
551 { "fastStart", "h323.fastStart",
552 FT_UINT32, BASE_DEC, NULL, 0,
553 "h323.T_fastStart", HFILL }},
554 { &hf_h323_fastStart_item,
555 { "fastStart", "h323.fastStart_item",
556 FT_BYTES, BASE_HEX, NULL, 0,
557 "h323.OCTET_STRING", HFILL }},
558 { &hf_h323_resetH245,
559 { "resetH245", "h323.resetH245",
560 FT_NONE, BASE_NONE, NULL, 0,
561 "h323.NULL", HFILL }},
562 { &hf_h323_timeToLive,
563 { "timeToLive", "h323.timeToLive",
564 FT_UINT32, BASE_DEC, NULL, 0,
565 "h225.TimeToLive", HFILL }},
566 { &hf_h323_includeFastStart,
567 { "includeFastStart", "h323.includeFastStart",
568 FT_NONE, BASE_NONE, NULL, 0,
569 "h323.NULL", HFILL }},
571 /*--- End of included file: packet-h323-hfarr.c ---*/
572 #line 108 "packet-h323-template.c"
575 /* List of subtrees */
576 static gint *ett[] = {
578 /*--- Included file: packet-h323-ettarr.c ---*/
579 #line 1 "packet-h323-ettarr.c"
580 &ett_h323_RasTunnelledSignallingMessage,
581 &ett_h323_T_messageContent,
582 &ett_h323_RobustnessData,
583 &ett_h323_T_robustnessData,
584 &ett_h323_BackupCallSignalAddresses,
585 &ett_h323_BackupCallSignalAddresses_item,
589 &ett_h323_Connect_RD,
591 &ett_h323_T_fastStart,
592 &ett_h323_StatusInquiry_RD,
594 /*--- End of included file: packet-h323-ettarr.c ---*/
595 #line 113 "packet-h323-template.c"
598 /* Register protocol */
599 proto_h323 = proto_register_protocol(PNAME, PSNAME, PFNAME);
601 /* Register fields and subtrees */
602 proto_register_field_array(proto_h323, hf, array_length(hf));
603 proto_register_subtree_array(ett, array_length(ett));
608 /*--- proto_reg_handoff_h323 -------------------------------------------*/
609 void proto_reg_handoff_h323(void)
611 dissector_handle_t q931_handle;
613 q931_handle = find_dissector("q931");
615 /* H.323, Annex M1, Tunnelling of signalling protocols (QSIG) in H.323 */
616 dissector_add_string("h225.tp", "1.3.12.9", q931_handle);
618 /* H.323, Annex M4, Tunnelling of narrow-band signalling syntax (NSS) for H.323 */
619 dissector_add_string("h225.gef.content", "GenericData/1000/1",
620 new_create_dissector_handle(dissect_RasTunnelledSignallingMessage_PDU, proto_h323));
622 /* H.323, Annex R, Robustness methods for H.323 entities */
623 dissector_add_string("h225.gef.content", "GenericData/1/1",
624 new_create_dissector_handle(dissect_RobustnessData_PDU, proto_h323));