MSWSP: fix dissect_mswsp_smb()
[wireshark-wip.git] / epan / dissectors / packet-h323.c
blob0e123c20a143382fd852eebfeb3976c1a3493b0c
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-h323.c */
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"
9 /* packet-h323.c
10 * Routines for H.323 packet dissection
11 * 2007 Tomas Kukosa
13 * $Id$
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.
34 #include "config.h"
36 #include <glib.h>
37 #include <epan/packet.h>
38 #include <epan/oids.h>
39 #include <epan/asn1.h>
40 #include <epan/wmem/wmem.h>
42 #include "packet-per.h"
43 #include "packet-h225.h"
44 #include "packet-h323.h"
46 #define PNAME "H.323"
47 #define PSNAME "H.323"
48 #define PFNAME "h323"
51 /* Generic Extensible Framework */
52 gef_ctx_t* gef_ctx_alloc(gef_ctx_t *parent, const gchar *type) {
53 gef_ctx_t *gefx;
55 gefx = wmem_new0(wmem_packet_scope(), gef_ctx_t);
56 gefx->signature = GEF_CTX_SIGNATURE;
57 gefx->parent = parent;
58 gefx->type = type;
59 return gefx;
62 gboolean gef_ctx_check_signature(gef_ctx_t *gefx) {
63 return gefx && (gefx->signature == GEF_CTX_SIGNATURE);
66 gef_ctx_t* gef_ctx_get(void *ptr) {
67 gef_ctx_t *gefx = (gef_ctx_t*)ptr;
68 asn1_ctx_t *actx = (asn1_ctx_t*)ptr;
70 if (!asn1_ctx_check_signature(actx))
71 actx = NULL;
73 if (actx)
74 gefx = (gef_ctx_t *)actx->private_data;
76 if (!gef_ctx_check_signature(gefx))
77 gefx = NULL;
79 return gefx;
82 void gef_ctx_update_key(gef_ctx_t *gefx) {
83 const gchar *parent_key;
85 if (!gefx) return;
86 parent_key = (gefx->parent) ? gefx->parent->key : NULL;
87 gefx->key = wmem_strdup_printf(wmem_packet_scope(),
88 "%s%s" /* parent prefix */
89 "%s%s%s" /* type, id */
90 "%s%s" /* subid */,
91 (parent_key) ? parent_key : "", (parent_key) ? "/" : "",
92 (gefx->type) ? gefx->type : "", (gefx->type && (gefx->id || gefx->subid)) ? "/" : "", (gefx->id) ? gefx->id : "",
93 (gefx->subid) ? "-" : "", (gefx->subid) ? gefx->subid : ""
97 /* Initialize the protocol and registered fields */
98 static int proto_h323 = -1;
100 /*--- Included file: packet-h323-hf.c ---*/
101 #line 1 "../../asn1/h323/packet-h323-hf.c"
102 static int hf_h323_RasTunnelledSignallingMessage_PDU = -1; /* RasTunnelledSignallingMessage */
103 static int hf_h323_RobustnessData_PDU = -1; /* RobustnessData */
104 static int hf_h323_tunnelledProtocolID = -1; /* TunnelledProtocol */
105 static int hf_h323_messageContent = -1; /* T_messageContent */
106 static int hf_h323_messageContent_item = -1; /* OCTET_STRING */
107 static int hf_h323_tunnellingRequired = -1; /* NULL */
108 static int hf_h323_nonStandardData = -1; /* NonStandardParameter */
109 static int hf_h323_versionID = -1; /* INTEGER_1_256 */
110 static int hf_h323_robustnessData = -1; /* T_robustnessData */
111 static int hf_h323_rrqData = -1; /* Rrq_RD */
112 static int hf_h323_rcfData = -1; /* Rcf_RD */
113 static int hf_h323_setupData = -1; /* Setup_RD */
114 static int hf_h323_connectData = -1; /* Connect_RD */
115 static int hf_h323_statusData = -1; /* Status_RD */
116 static int hf_h323_statusInquiryData = -1; /* StatusInquiry_RD */
117 static int hf_h323_BackupCallSignalAddresses_item = -1; /* BackupCallSignalAddresses_item */
118 static int hf_h323_tcp = -1; /* TransportAddress */
119 static int hf_h323_alternateTransport = -1; /* AlternateTransportAddresses */
120 static int hf_h323_backupCallSignalAddresses = -1; /* BackupCallSignalAddresses */
121 static int hf_h323_hasSharedRepository = -1; /* NULL */
122 static int hf_h323_irrFrequency = -1; /* INTEGER_1_65535 */
123 static int hf_h323_endpointGuid = -1; /* GloballyUniqueIdentifier */
124 static int hf_h323_h245Address = -1; /* TransportAddress */
125 static int hf_h323_fastStart = -1; /* T_fastStart */
126 static int hf_h323_fastStart_item = -1; /* OCTET_STRING */
127 static int hf_h323_resetH245 = -1; /* NULL */
128 static int hf_h323_timeToLive = -1; /* TimeToLive */
129 static int hf_h323_includeFastStart = -1; /* NULL */
131 /*--- End of included file: packet-h323-hf.c ---*/
132 #line 92 "../../asn1/h323/packet-h323-template.c"
134 /* Initialize the subtree pointers */
136 /*--- Included file: packet-h323-ett.c ---*/
137 #line 1 "../../asn1/h323/packet-h323-ett.c"
138 static gint ett_h323_RasTunnelledSignallingMessage = -1;
139 static gint ett_h323_T_messageContent = -1;
140 static gint ett_h323_RobustnessData = -1;
141 static gint ett_h323_T_robustnessData = -1;
142 static gint ett_h323_BackupCallSignalAddresses = -1;
143 static gint ett_h323_BackupCallSignalAddresses_item = -1;
144 static gint ett_h323_Rrq_RD = -1;
145 static gint ett_h323_Rcf_RD = -1;
146 static gint ett_h323_Setup_RD = -1;
147 static gint ett_h323_Connect_RD = -1;
148 static gint ett_h323_Status_RD = -1;
149 static gint ett_h323_T_fastStart = -1;
150 static gint ett_h323_StatusInquiry_RD = -1;
152 /*--- End of included file: packet-h323-ett.c ---*/
153 #line 95 "../../asn1/h323/packet-h323-template.c"
156 /*--- Included file: packet-h323-fn.c ---*/
157 #line 1 "../../asn1/h323/packet-h323-fn.c"
160 static int
161 dissect_h323_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
162 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
163 NO_BOUND, NO_BOUND, FALSE, NULL);
165 return offset;
169 static const per_sequence_t T_messageContent_sequence_of[1] = {
170 { &hf_h323_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
173 static int
174 dissect_h323_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
175 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
176 ett_h323_T_messageContent, T_messageContent_sequence_of);
178 return offset;
183 static int
184 dissect_h323_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
185 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
187 return offset;
191 static const per_sequence_t RasTunnelledSignallingMessage_sequence[] = {
192 { &hf_h323_tunnelledProtocolID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol },
193 { &hf_h323_messageContent , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_messageContent },
194 { &hf_h323_tunnellingRequired, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
195 { &hf_h323_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
196 { NULL, 0, 0, NULL }
199 static int
200 dissect_h323_RasTunnelledSignallingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
201 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
202 ett_h323_RasTunnelledSignallingMessage, RasTunnelledSignallingMessage_sequence);
204 return offset;
209 static int
210 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_) {
211 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
212 1U, 256U, NULL, FALSE);
214 return offset;
218 static const value_string h323_BackupCallSignalAddresses_item_vals[] = {
219 { 0, "tcp" },
220 { 1, "alternateTransport" },
221 { 0, NULL }
224 static const per_choice_t BackupCallSignalAddresses_item_choice[] = {
225 { 0, &hf_h323_tcp , ASN1_EXTENSION_ROOT , dissect_h225_TransportAddress },
226 { 1, &hf_h323_alternateTransport, ASN1_EXTENSION_ROOT , dissect_h225_AlternateTransportAddresses },
227 { 0, NULL, 0, NULL }
230 static int
231 dissect_h323_BackupCallSignalAddresses_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
232 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
233 ett_h323_BackupCallSignalAddresses_item, BackupCallSignalAddresses_item_choice,
234 NULL);
236 return offset;
240 static const per_sequence_t BackupCallSignalAddresses_sequence_of[1] = {
241 { &hf_h323_BackupCallSignalAddresses_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses_item },
244 static int
245 dissect_h323_BackupCallSignalAddresses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
246 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
247 ett_h323_BackupCallSignalAddresses, BackupCallSignalAddresses_sequence_of);
249 return offset;
253 static const per_sequence_t Rrq_RD_sequence[] = {
254 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
255 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
256 { NULL, 0, 0, NULL }
259 static int
260 dissect_h323_Rrq_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
261 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
262 ett_h323_Rrq_RD, Rrq_RD_sequence);
264 return offset;
269 static int
270 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_) {
271 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
272 1U, 65535U, NULL, FALSE);
274 return offset;
278 static const per_sequence_t Rcf_RD_sequence[] = {
279 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
280 { &hf_h323_irrFrequency , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_INTEGER_1_65535 },
281 { NULL, 0, 0, NULL }
284 static int
285 dissect_h323_Rcf_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
286 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
287 ett_h323_Rcf_RD, Rcf_RD_sequence);
289 return offset;
294 static int
295 dissect_h323_GloballyUniqueIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
296 offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
298 return offset;
302 static const per_sequence_t Setup_RD_sequence[] = {
303 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
304 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
305 { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
306 { NULL, 0, 0, NULL }
309 static int
310 dissect_h323_Setup_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
311 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
312 ett_h323_Setup_RD, Setup_RD_sequence);
314 return offset;
318 static const per_sequence_t Connect_RD_sequence[] = {
319 { &hf_h323_backupCallSignalAddresses, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_BackupCallSignalAddresses },
320 { &hf_h323_hasSharedRepository, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
321 { &hf_h323_endpointGuid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_GloballyUniqueIdentifier },
322 { NULL, 0, 0, NULL }
325 static int
326 dissect_h323_Connect_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
327 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
328 ett_h323_Connect_RD, Connect_RD_sequence);
330 return offset;
334 static const per_sequence_t T_fastStart_sequence_of[1] = {
335 { &hf_h323_fastStart_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h323_OCTET_STRING },
338 static int
339 dissect_h323_T_fastStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
340 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
341 ett_h323_T_fastStart, T_fastStart_sequence_of);
343 return offset;
347 static const per_sequence_t Status_RD_sequence[] = {
348 { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
349 { &hf_h323_fastStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_T_fastStart },
350 { &hf_h323_resetH245 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h323_NULL },
351 { NULL, 0, 0, NULL }
354 static int
355 dissect_h323_Status_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
356 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
357 ett_h323_Status_RD, Status_RD_sequence);
359 return offset;
363 static const per_sequence_t StatusInquiry_RD_sequence[] = {
364 { &hf_h323_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
365 { &hf_h323_timeToLive , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TimeToLive },
366 { &hf_h323_includeFastStart, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h323_NULL },
367 { NULL, 0, 0, NULL }
370 static int
371 dissect_h323_StatusInquiry_RD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
372 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
373 ett_h323_StatusInquiry_RD, StatusInquiry_RD_sequence);
375 return offset;
379 static const value_string h323_T_robustnessData_vals[] = {
380 { 0, "rrqData" },
381 { 1, "rcfData" },
382 { 2, "setupData" },
383 { 3, "connectData" },
384 { 4, "statusData" },
385 { 5, "statusInquiryData" },
386 { 0, NULL }
389 static const per_choice_t T_robustnessData_choice[] = {
390 { 0, &hf_h323_rrqData , ASN1_EXTENSION_ROOT , dissect_h323_Rrq_RD },
391 { 1, &hf_h323_rcfData , ASN1_EXTENSION_ROOT , dissect_h323_Rcf_RD },
392 { 2, &hf_h323_setupData , ASN1_EXTENSION_ROOT , dissect_h323_Setup_RD },
393 { 3, &hf_h323_connectData , ASN1_EXTENSION_ROOT , dissect_h323_Connect_RD },
394 { 4, &hf_h323_statusData , ASN1_EXTENSION_ROOT , dissect_h323_Status_RD },
395 { 5, &hf_h323_statusInquiryData, ASN1_EXTENSION_ROOT , dissect_h323_StatusInquiry_RD },
396 { 0, NULL, 0, NULL }
399 static int
400 dissect_h323_T_robustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
401 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
402 ett_h323_T_robustnessData, T_robustnessData_choice,
403 NULL);
405 return offset;
409 static const per_sequence_t RobustnessData_sequence[] = {
410 { &hf_h323_versionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_INTEGER_1_256 },
411 { &hf_h323_robustnessData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h323_T_robustnessData },
412 { NULL, 0, 0, NULL }
415 static int
416 dissect_h323_RobustnessData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
417 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
418 ett_h323_RobustnessData, RobustnessData_sequence);
420 return offset;
423 /*--- PDUs ---*/
425 static int dissect_RasTunnelledSignallingMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
426 int offset = 0;
427 asn1_ctx_t asn1_ctx;
428 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
429 offset = dissect_h323_RasTunnelledSignallingMessage(tvb, offset, &asn1_ctx, tree, hf_h323_RasTunnelledSignallingMessage_PDU);
430 offset += 7; offset >>= 3;
431 return offset;
433 static int dissect_RobustnessData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
434 int offset = 0;
435 asn1_ctx_t asn1_ctx;
436 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
437 offset = dissect_h323_RobustnessData(tvb, offset, &asn1_ctx, tree, hf_h323_RobustnessData_PDU);
438 offset += 7; offset >>= 3;
439 return offset;
443 /*--- End of included file: packet-h323-fn.c ---*/
444 #line 97 "../../asn1/h323/packet-h323-template.c"
446 /*--- proto_register_h323 ----------------------------------------------*/
447 void proto_register_h323(void) {
449 /* List of fields */
450 static hf_register_info hf[] = {
452 /*--- Included file: packet-h323-hfarr.c ---*/
453 #line 1 "../../asn1/h323/packet-h323-hfarr.c"
454 { &hf_h323_RasTunnelledSignallingMessage_PDU,
455 { "RasTunnelledSignallingMessage", "h323.RasTunnelledSignallingMessage_element",
456 FT_NONE, BASE_NONE, NULL, 0,
457 NULL, HFILL }},
458 { &hf_h323_RobustnessData_PDU,
459 { "RobustnessData", "h323.RobustnessData_element",
460 FT_NONE, BASE_NONE, NULL, 0,
461 NULL, HFILL }},
462 { &hf_h323_tunnelledProtocolID,
463 { "tunnelledProtocolID", "h323.tunnelledProtocolID_element",
464 FT_NONE, BASE_NONE, NULL, 0,
465 "TunnelledProtocol", HFILL }},
466 { &hf_h323_messageContent,
467 { "messageContent", "h323.messageContent",
468 FT_UINT32, BASE_DEC, NULL, 0,
469 NULL, HFILL }},
470 { &hf_h323_messageContent_item,
471 { "messageContent item", "h323.messageContent_item",
472 FT_BYTES, BASE_NONE, NULL, 0,
473 "OCTET_STRING", HFILL }},
474 { &hf_h323_tunnellingRequired,
475 { "tunnellingRequired", "h323.tunnellingRequired_element",
476 FT_NONE, BASE_NONE, NULL, 0,
477 NULL, HFILL }},
478 { &hf_h323_nonStandardData,
479 { "nonStandardData", "h323.nonStandardData_element",
480 FT_NONE, BASE_NONE, NULL, 0,
481 "NonStandardParameter", HFILL }},
482 { &hf_h323_versionID,
483 { "versionID", "h323.versionID",
484 FT_UINT32, BASE_DEC, NULL, 0,
485 "INTEGER_1_256", HFILL }},
486 { &hf_h323_robustnessData,
487 { "robustnessData", "h323.robustnessData",
488 FT_UINT32, BASE_DEC, VALS(h323_T_robustnessData_vals), 0,
489 NULL, HFILL }},
490 { &hf_h323_rrqData,
491 { "rrqData", "h323.rrqData_element",
492 FT_NONE, BASE_NONE, NULL, 0,
493 "Rrq_RD", HFILL }},
494 { &hf_h323_rcfData,
495 { "rcfData", "h323.rcfData_element",
496 FT_NONE, BASE_NONE, NULL, 0,
497 "Rcf_RD", HFILL }},
498 { &hf_h323_setupData,
499 { "setupData", "h323.setupData_element",
500 FT_NONE, BASE_NONE, NULL, 0,
501 "Setup_RD", HFILL }},
502 { &hf_h323_connectData,
503 { "connectData", "h323.connectData_element",
504 FT_NONE, BASE_NONE, NULL, 0,
505 "Connect_RD", HFILL }},
506 { &hf_h323_statusData,
507 { "statusData", "h323.statusData_element",
508 FT_NONE, BASE_NONE, NULL, 0,
509 "Status_RD", HFILL }},
510 { &hf_h323_statusInquiryData,
511 { "statusInquiryData", "h323.statusInquiryData_element",
512 FT_NONE, BASE_NONE, NULL, 0,
513 "StatusInquiry_RD", HFILL }},
514 { &hf_h323_BackupCallSignalAddresses_item,
515 { "BackupCallSignalAddresses item", "h323.BackupCallSignalAddresses_item",
516 FT_UINT32, BASE_DEC, VALS(h323_BackupCallSignalAddresses_item_vals), 0,
517 NULL, HFILL }},
518 { &hf_h323_tcp,
519 { "tcp", "h323.tcp",
520 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
521 "TransportAddress", HFILL }},
522 { &hf_h323_alternateTransport,
523 { "alternateTransport", "h323.alternateTransport_element",
524 FT_NONE, BASE_NONE, NULL, 0,
525 "AlternateTransportAddresses", HFILL }},
526 { &hf_h323_backupCallSignalAddresses,
527 { "backupCallSignalAddresses", "h323.backupCallSignalAddresses",
528 FT_UINT32, BASE_DEC, NULL, 0,
529 NULL, HFILL }},
530 { &hf_h323_hasSharedRepository,
531 { "hasSharedRepository", "h323.hasSharedRepository_element",
532 FT_NONE, BASE_NONE, NULL, 0,
533 NULL, HFILL }},
534 { &hf_h323_irrFrequency,
535 { "irrFrequency", "h323.irrFrequency",
536 FT_UINT32, BASE_DEC, NULL, 0,
537 "INTEGER_1_65535", HFILL }},
538 { &hf_h323_endpointGuid,
539 { "endpointGuid", "h323.endpointGuid",
540 FT_GUID, BASE_NONE, NULL, 0,
541 "GloballyUniqueIdentifier", HFILL }},
542 { &hf_h323_h245Address,
543 { "h245Address", "h323.h245Address",
544 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
545 "TransportAddress", HFILL }},
546 { &hf_h323_fastStart,
547 { "fastStart", "h323.fastStart",
548 FT_UINT32, BASE_DEC, NULL, 0,
549 NULL, HFILL }},
550 { &hf_h323_fastStart_item,
551 { "fastStart item", "h323.fastStart_item",
552 FT_BYTES, BASE_NONE, NULL, 0,
553 "OCTET_STRING", HFILL }},
554 { &hf_h323_resetH245,
555 { "resetH245", "h323.resetH245_element",
556 FT_NONE, BASE_NONE, NULL, 0,
557 NULL, HFILL }},
558 { &hf_h323_timeToLive,
559 { "timeToLive", "h323.timeToLive",
560 FT_UINT32, BASE_DEC, NULL, 0,
561 NULL, HFILL }},
562 { &hf_h323_includeFastStart,
563 { "includeFastStart", "h323.includeFastStart_element",
564 FT_NONE, BASE_NONE, NULL, 0,
565 NULL, HFILL }},
567 /*--- End of included file: packet-h323-hfarr.c ---*/
568 #line 104 "../../asn1/h323/packet-h323-template.c"
571 /* List of subtrees */
572 static gint *ett[] = {
574 /*--- Included file: packet-h323-ettarr.c ---*/
575 #line 1 "../../asn1/h323/packet-h323-ettarr.c"
576 &ett_h323_RasTunnelledSignallingMessage,
577 &ett_h323_T_messageContent,
578 &ett_h323_RobustnessData,
579 &ett_h323_T_robustnessData,
580 &ett_h323_BackupCallSignalAddresses,
581 &ett_h323_BackupCallSignalAddresses_item,
582 &ett_h323_Rrq_RD,
583 &ett_h323_Rcf_RD,
584 &ett_h323_Setup_RD,
585 &ett_h323_Connect_RD,
586 &ett_h323_Status_RD,
587 &ett_h323_T_fastStart,
588 &ett_h323_StatusInquiry_RD,
590 /*--- End of included file: packet-h323-ettarr.c ---*/
591 #line 109 "../../asn1/h323/packet-h323-template.c"
594 /* Register protocol */
595 proto_h323 = proto_register_protocol(PNAME, PSNAME, PFNAME);
597 /* Register fields and subtrees */
598 proto_register_field_array(proto_h323, hf, array_length(hf));
599 proto_register_subtree_array(ett, array_length(ett));
604 /*--- proto_reg_handoff_h323 -------------------------------------------*/
605 void proto_reg_handoff_h323(void)
607 dissector_handle_t q931_handle;
609 q931_handle = find_dissector("q931");
611 /* H.323, Annex M1, Tunnelling of signalling protocols (QSIG) in H.323 */
612 dissector_add_string("h225.tp", "1.3.12.9", q931_handle);
614 /* H.323, Annex M4, Tunnelling of narrow-band signalling syntax (NSS) for H.323 */
615 dissector_add_string("h225.gef.content", "GenericData/1000/1",
616 new_create_dissector_handle(dissect_RasTunnelledSignallingMessage_PDU, proto_h323));
618 /* H.323, Annex R, Robustness methods for H.323 entities */
619 dissector_add_string("h225.gef.content", "GenericData/1/1",
620 new_create_dissector_handle(dissect_RobustnessData_PDU, proto_h323));