1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -p h323 -c ./h323.cnf -s ./packet-h323-template -D . -O ../../epan/dissectors RAS-PROTOCOL-TUNNEL.asn ROBUSTNESS-DATA.asn */
6 /* Input file: packet-h323-template.c */
8 #line 1 "../../asn1/h323/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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
37 #include <epan/packet.h>
38 #include <epan/oids.h>
39 #include <epan/asn1.h>
41 #include "packet-per.h"
42 #include "packet-h225.h"
43 #include "packet-h323.h"
46 #define PSNAME "H.323"
50 /* Generic Extensible Framework */
51 gef_ctx_t* gef_ctx_alloc(gef_ctx_t *parent, const gchar *type) {
54 gefx = ep_new0(gef_ctx_t);
55 gefx->signature = GEF_CTX_SIGNATURE;
56 gefx->parent = parent;
61 gboolean gef_ctx_check_signature(gef_ctx_t *gefx) {
62 return gefx && (gefx->signature == GEF_CTX_SIGNATURE);
65 gef_ctx_t* gef_ctx_get(void *ptr) {
66 gef_ctx_t *gefx = (gef_ctx_t*)ptr;
67 asn1_ctx_t *actx = (asn1_ctx_t*)ptr;
69 if (!asn1_ctx_check_signature(actx))
73 gefx = (gef_ctx_t *)actx->private_data;
75 if (!gef_ctx_check_signature(gefx))
81 void gef_ctx_update_key(gef_ctx_t *gefx) {
82 const gchar *parent_key;
85 parent_key = (gefx->parent) ? gefx->parent->key : NULL;
86 gefx->key = ep_strdup_printf(
87 "%s%s" /* parent prefix */
88 "%s%s%s" /* type, id */
90 (parent_key) ? parent_key : "", (parent_key) ? "/" : "",
91 (gefx->type) ? gefx->type : "", (gefx->type && (gefx->id || gefx->subid)) ? "/" : "", (gefx->id) ? gefx->id : "",
92 (gefx->subid) ? "-" : "", (gefx->subid) ? gefx->subid : ""
96 /* Initialize the protocol and registered fields */
97 static int proto_h323 = -1;
99 /*--- Included file: packet-h323-hf.c ---*/
100 #line 1 "../../asn1/h323/packet-h323-hf.c"
101 static int hf_h323_RasTunnelledSignallingMessage_PDU = -1; /* RasTunnelledSignallingMessage */
102 static int hf_h323_RobustnessData_PDU = -1; /* RobustnessData */
103 static int hf_h323_tunnelledProtocolID = -1; /* TunnelledProtocol */
104 static int hf_h323_messageContent = -1; /* T_messageContent */
105 static int hf_h323_messageContent_item = -1; /* OCTET_STRING */
106 static int hf_h323_tunnellingRequired = -1; /* NULL */
107 static int hf_h323_nonStandardData = -1; /* NonStandardParameter */
108 static int hf_h323_versionID = -1; /* INTEGER_1_256 */
109 static int hf_h323_robustnessData = -1; /* T_robustnessData */
110 static int hf_h323_rrqData = -1; /* Rrq_RD */
111 static int hf_h323_rcfData = -1; /* Rcf_RD */
112 static int hf_h323_setupData = -1; /* Setup_RD */
113 static int hf_h323_connectData = -1; /* Connect_RD */
114 static int hf_h323_statusData = -1; /* Status_RD */
115 static int hf_h323_statusInquiryData = -1; /* StatusInquiry_RD */
116 static int hf_h323_BackupCallSignalAddresses_item = -1; /* BackupCallSignalAddresses_item */
117 static int hf_h323_tcp = -1; /* TransportAddress */
118 static int hf_h323_alternateTransport = -1; /* AlternateTransportAddresses */
119 static int hf_h323_backupCallSignalAddresses = -1; /* BackupCallSignalAddresses */
120 static int hf_h323_hasSharedRepository = -1; /* NULL */
121 static int hf_h323_irrFrequency = -1; /* INTEGER_1_65535 */
122 static int hf_h323_endpointGuid = -1; /* GloballyUniqueIdentifier */
123 static int hf_h323_h245Address = -1; /* TransportAddress */
124 static int hf_h323_fastStart = -1; /* T_fastStart */
125 static int hf_h323_fastStart_item = -1; /* OCTET_STRING */
126 static int hf_h323_resetH245 = -1; /* NULL */
127 static int hf_h323_timeToLive = -1; /* TimeToLive */
128 static int hf_h323_includeFastStart = -1; /* NULL */
130 /*--- End of included file: packet-h323-hf.c ---*/
131 #line 91 "../../asn1/h323/packet-h323-template.c"
133 /* Initialize the subtree pointers */
135 /*--- Included file: packet-h323-ett.c ---*/
136 #line 1 "../../asn1/h323/packet-h323-ett.c"
137 static gint ett_h323_RasTunnelledSignallingMessage = -1;
138 static gint ett_h323_T_messageContent = -1;
139 static gint ett_h323_RobustnessData = -1;
140 static gint ett_h323_T_robustnessData = -1;
141 static gint ett_h323_BackupCallSignalAddresses = -1;
142 static gint ett_h323_BackupCallSignalAddresses_item = -1;
143 static gint ett_h323_Rrq_RD = -1;
144 static gint ett_h323_Rcf_RD = -1;
145 static gint ett_h323_Setup_RD = -1;
146 static gint ett_h323_Connect_RD = -1;
147 static gint ett_h323_Status_RD = -1;
148 static gint ett_h323_T_fastStart = -1;
149 static gint ett_h323_StatusInquiry_RD = -1;
151 /*--- End of included file: packet-h323-ett.c ---*/
152 #line 94 "../../asn1/h323/packet-h323-template.c"
155 /*--- Included file: packet-h323-fn.c ---*/
156 #line 1 "../../asn1/h323/packet-h323-fn.c"
160 dissect_h323_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
161 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
162 NO_BOUND, NO_BOUND, FALSE, NULL);
168 static const per_sequence_t T_messageContent_sequence_of[1] = {
169 { &hf_h323_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
173 dissect_h323_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
174 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
175 ett_h323_T_messageContent, T_messageContent_sequence_of);
183 dissect_h323_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
184 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
190 static const per_sequence_t RasTunnelledSignallingMessage_sequence[] = {
191 { &hf_h323_tunnelledProtocolID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol },
192 { &hf_h323_messageContent , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_messageContent },
193 { &hf_h323_tunnellingRequired, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
194 { &hf_h323_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
199 dissect_h323_RasTunnelledSignallingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
200 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
201 ett_h323_RasTunnelledSignallingMessage, RasTunnelledSignallingMessage_sequence);
209 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_) {
210 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
211 1U, 256U, NULL, FALSE);
217 static const value_string h323_BackupCallSignalAddresses_item_vals[] = {
219 { 1, "alternateTransport" },
223 static const per_choice_t BackupCallSignalAddresses_item_choice[] = {
224 { 0, &hf_h323_tcp , ASN1_EXTENSION_ROOT , dissect_h225_TransportAddress },
225 { 1, &hf_h323_alternateTransport, ASN1_EXTENSION_ROOT , dissect_h225_AlternateTransportAddresses },
230 dissect_h323_BackupCallSignalAddresses_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
231 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
232 ett_h323_BackupCallSignalAddresses_item, BackupCallSignalAddresses_item_choice,
239 static const per_sequence_t BackupCallSignalAddresses_sequence_of[1] = {
240 { &hf_h323_BackupCallSignalAddresses_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses_item },
244 dissect_h323_BackupCallSignalAddresses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
245 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
246 ett_h323_BackupCallSignalAddresses, BackupCallSignalAddresses_sequence_of);
252 static const per_sequence_t Rrq_RD_sequence[] = {
253 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
254 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
259 dissect_h323_Rrq_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
260 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
261 ett_h323_Rrq_RD, Rrq_RD_sequence);
269 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_) {
270 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
271 1U, 65535U, NULL, FALSE);
277 static const per_sequence_t Rcf_RD_sequence[] = {
278 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
279 { &hf_h323_irrFrequency , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_INTEGER_1_65535 },
284 dissect_h323_Rcf_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
285 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
286 ett_h323_Rcf_RD, Rcf_RD_sequence);
294 dissect_h323_GloballyUniqueIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
295 offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
301 static const per_sequence_t Setup_RD_sequence[] = {
302 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
303 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
304 { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
309 dissect_h323_Setup_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
310 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
311 ett_h323_Setup_RD, Setup_RD_sequence);
317 static const per_sequence_t Connect_RD_sequence[] = {
318 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
319 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
320 { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
325 dissect_h323_Connect_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
326 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
327 ett_h323_Connect_RD, Connect_RD_sequence);
333 static const per_sequence_t T_fastStart_sequence_of[1] = {
334 { &hf_h323_fastStart_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
338 dissect_h323_T_fastStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
339 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
340 ett_h323_T_fastStart, T_fastStart_sequence_of);
346 static const per_sequence_t Status_RD_sequence[] = {
347 { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
348 { &hf_h323_fastStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_T_fastStart },
349 { &hf_h323_resetH245 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_NULL },
354 dissect_h323_Status_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
355 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
356 ett_h323_Status_RD, Status_RD_sequence);
362 static const per_sequence_t StatusInquiry_RD_sequence[] = {
363 { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
364 { &hf_h323_timeToLive , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TimeToLive },
365 { &hf_h323_includeFastStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
370 dissect_h323_StatusInquiry_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
371 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
372 ett_h323_StatusInquiry_RD, StatusInquiry_RD_sequence);
378 static const value_string h323_T_robustnessData_vals[] = {
382 { 3, "connectData" },
384 { 5, "statusInquiryData" },
388 static const per_choice_t T_robustnessData_choice[] = {
389 { 0, &hf_h323_rrqData , ASN1_EXTENSION_ROOT , dissect_h323_Rrq_RD },
390 { 1, &hf_h323_rcfData , ASN1_EXTENSION_ROOT , dissect_h323_Rcf_RD },
391 { 2, &hf_h323_setupData , ASN1_EXTENSION_ROOT , dissect_h323_Setup_RD },
392 { 3, &hf_h323_connectData , ASN1_EXTENSION_ROOT , dissect_h323_Connect_RD },
393 { 4, &hf_h323_statusData , ASN1_EXTENSION_ROOT , dissect_h323_Status_RD },
394 { 5, &hf_h323_statusInquiryData, ASN1_EXTENSION_ROOT , dissect_h323_StatusInquiry_RD },
399 dissect_h323_T_robustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
400 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
401 ett_h323_T_robustnessData, T_robustnessData_choice,
408 static const per_sequence_t RobustnessData_sequence[] = {
409 { &hf_h323_versionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_INTEGER_1_256 },
410 { &hf_h323_robustnessData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_robustnessData },
415 dissect_h323_RobustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
416 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
417 ett_h323_RobustnessData, RobustnessData_sequence);
424 static int dissect_RasTunnelledSignallingMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
427 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
428 offset = dissect_h323_RasTunnelledSignallingMessage(tvb, offset, &asn1_ctx, tree, hf_h323_RasTunnelledSignallingMessage_PDU);
429 offset += 7; offset >>= 3;
432 static int dissect_RobustnessData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
435 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
436 offset = dissect_h323_RobustnessData(tvb, offset, &asn1_ctx, tree, hf_h323_RobustnessData_PDU);
437 offset += 7; offset >>= 3;
442 /*--- End of included file: packet-h323-fn.c ---*/
443 #line 96 "../../asn1/h323/packet-h323-template.c"
445 /*--- proto_register_h323 ----------------------------------------------*/
446 void proto_register_h323(void) {
449 static hf_register_info hf[] = {
451 /*--- Included file: packet-h323-hfarr.c ---*/
452 #line 1 "../../asn1/h323/packet-h323-hfarr.c"
453 { &hf_h323_RasTunnelledSignallingMessage_PDU,
454 { "RasTunnelledSignallingMessage", "h323.RasTunnelledSignallingMessage_element",
455 FT_NONE, BASE_NONE, NULL, 0,
457 { &hf_h323_RobustnessData_PDU,
458 { "RobustnessData", "h323.RobustnessData_element",
459 FT_NONE, BASE_NONE, NULL, 0,
461 { &hf_h323_tunnelledProtocolID,
462 { "tunnelledProtocolID", "h323.tunnelledProtocolID_element",
463 FT_NONE, BASE_NONE, NULL, 0,
464 "TunnelledProtocol", HFILL }},
465 { &hf_h323_messageContent,
466 { "messageContent", "h323.messageContent",
467 FT_UINT32, BASE_DEC, NULL, 0,
469 { &hf_h323_messageContent_item,
470 { "messageContent item", "h323.messageContent_item",
471 FT_BYTES, BASE_NONE, NULL, 0,
472 "OCTET_STRING", HFILL }},
473 { &hf_h323_tunnellingRequired,
474 { "tunnellingRequired", "h323.tunnellingRequired_element",
475 FT_NONE, BASE_NONE, NULL, 0,
477 { &hf_h323_nonStandardData,
478 { "nonStandardData", "h323.nonStandardData_element",
479 FT_NONE, BASE_NONE, NULL, 0,
480 "NonStandardParameter", HFILL }},
481 { &hf_h323_versionID,
482 { "versionID", "h323.versionID",
483 FT_UINT32, BASE_DEC, NULL, 0,
484 "INTEGER_1_256", HFILL }},
485 { &hf_h323_robustnessData,
486 { "robustnessData", "h323.robustnessData",
487 FT_UINT32, BASE_DEC, VALS(h323_T_robustnessData_vals), 0,
490 { "rrqData", "h323.rrqData_element",
491 FT_NONE, BASE_NONE, NULL, 0,
494 { "rcfData", "h323.rcfData_element",
495 FT_NONE, BASE_NONE, NULL, 0,
497 { &hf_h323_setupData,
498 { "setupData", "h323.setupData_element",
499 FT_NONE, BASE_NONE, NULL, 0,
500 "Setup_RD", HFILL }},
501 { &hf_h323_connectData,
502 { "connectData", "h323.connectData_element",
503 FT_NONE, BASE_NONE, NULL, 0,
504 "Connect_RD", HFILL }},
505 { &hf_h323_statusData,
506 { "statusData", "h323.statusData_element",
507 FT_NONE, BASE_NONE, NULL, 0,
508 "Status_RD", HFILL }},
509 { &hf_h323_statusInquiryData,
510 { "statusInquiryData", "h323.statusInquiryData_element",
511 FT_NONE, BASE_NONE, NULL, 0,
512 "StatusInquiry_RD", HFILL }},
513 { &hf_h323_BackupCallSignalAddresses_item,
514 { "BackupCallSignalAddresses item", "h323.BackupCallSignalAddresses_item",
515 FT_UINT32, BASE_DEC, VALS(h323_BackupCallSignalAddresses_item_vals), 0,
519 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
520 "TransportAddress", HFILL }},
521 { &hf_h323_alternateTransport,
522 { "alternateTransport", "h323.alternateTransport_element",
523 FT_NONE, BASE_NONE, NULL, 0,
524 "AlternateTransportAddresses", HFILL }},
525 { &hf_h323_backupCallSignalAddresses,
526 { "backupCallSignalAddresses", "h323.backupCallSignalAddresses",
527 FT_UINT32, BASE_DEC, NULL, 0,
529 { &hf_h323_hasSharedRepository,
530 { "hasSharedRepository", "h323.hasSharedRepository_element",
531 FT_NONE, BASE_NONE, NULL, 0,
533 { &hf_h323_irrFrequency,
534 { "irrFrequency", "h323.irrFrequency",
535 FT_UINT32, BASE_DEC, NULL, 0,
536 "INTEGER_1_65535", HFILL }},
537 { &hf_h323_endpointGuid,
538 { "endpointGuid", "h323.endpointGuid",
539 FT_GUID, BASE_NONE, NULL, 0,
540 "GloballyUniqueIdentifier", HFILL }},
541 { &hf_h323_h245Address,
542 { "h245Address", "h323.h245Address",
543 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
544 "TransportAddress", HFILL }},
545 { &hf_h323_fastStart,
546 { "fastStart", "h323.fastStart",
547 FT_UINT32, BASE_DEC, NULL, 0,
549 { &hf_h323_fastStart_item,
550 { "fastStart item", "h323.fastStart_item",
551 FT_BYTES, BASE_NONE, NULL, 0,
552 "OCTET_STRING", HFILL }},
553 { &hf_h323_resetH245,
554 { "resetH245", "h323.resetH245_element",
555 FT_NONE, BASE_NONE, NULL, 0,
557 { &hf_h323_timeToLive,
558 { "timeToLive", "h323.timeToLive",
559 FT_UINT32, BASE_DEC, NULL, 0,
561 { &hf_h323_includeFastStart,
562 { "includeFastStart", "h323.includeFastStart_element",
563 FT_NONE, BASE_NONE, NULL, 0,
566 /*--- End of included file: packet-h323-hfarr.c ---*/
567 #line 103 "../../asn1/h323/packet-h323-template.c"
570 /* List of subtrees */
571 static gint *ett[] = {
573 /*--- Included file: packet-h323-ettarr.c ---*/
574 #line 1 "../../asn1/h323/packet-h323-ettarr.c"
575 &ett_h323_RasTunnelledSignallingMessage,
576 &ett_h323_T_messageContent,
577 &ett_h323_RobustnessData,
578 &ett_h323_T_robustnessData,
579 &ett_h323_BackupCallSignalAddresses,
580 &ett_h323_BackupCallSignalAddresses_item,
584 &ett_h323_Connect_RD,
586 &ett_h323_T_fastStart,
587 &ett_h323_StatusInquiry_RD,
589 /*--- End of included file: packet-h323-ettarr.c ---*/
590 #line 108 "../../asn1/h323/packet-h323-template.c"
593 /* Register protocol */
594 proto_h323 = proto_register_protocol(PNAME, PSNAME, PFNAME);
596 /* Register fields and subtrees */
597 proto_register_field_array(proto_h323, hf, array_length(hf));
598 proto_register_subtree_array(ett, array_length(ett));
603 /*--- proto_reg_handoff_h323 -------------------------------------------*/
604 void proto_reg_handoff_h323(void)
606 dissector_handle_t q931_handle;
608 q931_handle = find_dissector("q931");
610 /* H.323, Annex M1, Tunnelling of signalling protocols (QSIG) in H.323 */
611 dissector_add_string("h225.tp", "1.3.12.9", q931_handle);
613 /* H.323, Annex M4, Tunnelling of narrow-band signalling syntax (NSS) for H.323 */
614 dissector_add_string("h225.gef.content", "GenericData/1000/1",
615 new_create_dissector_handle(dissect_RasTunnelledSignallingMessage_PDU, proto_h323));
617 /* H.323, Annex R, Robustness methods for H.323 entities */
618 dissector_add_string("h225.gef.content", "GenericData/1/1",
619 new_create_dissector_handle(dissect_RobustnessData_PDU, proto_h323));