Postfix FT_NONE fields with "_element" string to reduce number of incompatible filter...
[metze/wireshark/wip.git] / epan / dissectors / packet-h323.c
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 */
5
6 /* Input file: packet-h323-template.c */
7
8 #line 1 "../../asn1/h323/packet-h323-template.c"
9 /* packet-h323.c
10  * Routines for H.323 packet dissection
11  * 2007  Tomas Kukosa
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
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.
23  *
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.
28  *
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.
32  */
33
34 #include "config.h"
35
36 #include <glib.h>
37 #include <epan/packet.h>
38 #include <epan/oids.h>
39 #include <epan/asn1.h>
40
41 #include "packet-per.h"
42 #include "packet-h225.h"
43 #include "packet-h323.h"
44
45 #define PNAME  "H.323"
46 #define PSNAME "H.323"
47 #define PFNAME "h323"
48
49
50 /* Generic Extensible Framework */
51 gef_ctx_t* gef_ctx_alloc(gef_ctx_t *parent, const gchar *type) {
52   gef_ctx_t *gefx;
53
54   gefx = ep_new0(gef_ctx_t);
55   gefx->signature = GEF_CTX_SIGNATURE;
56   gefx->parent = parent;
57   gefx->type = type;
58   return gefx;
59 }
60
61 gboolean gef_ctx_check_signature(gef_ctx_t *gefx) {
62   return gefx && (gefx->signature == GEF_CTX_SIGNATURE);
63 }
64
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;
68
69   if (!asn1_ctx_check_signature(actx)) 
70     actx = NULL;
71
72   if (actx)
73     gefx = (gef_ctx_t *)actx->private_data;
74
75   if (!gef_ctx_check_signature(gefx)) 
76     gefx = NULL;
77
78   return gefx;
79 }
80
81 void gef_ctx_update_key(gef_ctx_t *gefx) {
82   const gchar *parent_key;
83
84   if (!gefx) return;
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 */
89     "%s%s"    /* subid */,
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 : ""
93   );
94 }
95
96 /* Initialize the protocol and registered fields */
97 static int proto_h323 = -1;
98
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 */
129
130 /*--- End of included file: packet-h323-hf.c ---*/
131 #line 91 "../../asn1/h323/packet-h323-template.c"
132
133 /* Initialize the subtree pointers */
134
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;
150
151 /*--- End of included file: packet-h323-ett.c ---*/
152 #line 94 "../../asn1/h323/packet-h323-template.c"
153
154
155 /*--- Included file: packet-h323-fn.c ---*/
156 #line 1 "../../asn1/h323/packet-h323-fn.c"
157
158
159 static int
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);
163
164   return offset;
165 }
166
167
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 },
170 };
171
172 static int
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);
176
177   return offset;
178 }
179
180
181
182 static int
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);
185
186   return offset;
187 }
188
189
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 },
195   { NULL, 0, 0, NULL }
196 };
197
198 static int
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);
202
203   return offset;
204 }
205
206
207
208 static int
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);
212
213   return offset;
214 }
215
216
217 static const value_string h323_BackupCallSignalAddresses_item_vals[] = {
218   {   0, "tcp" },
219   {   1, "alternateTransport" },
220   { 0, NULL }
221 };
222
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 },
226   { 0, NULL, 0, NULL }
227 };
228
229 static int
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,
233                                  NULL);
234
235   return offset;
236 }
237
238
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 },
241 };
242
243 static int
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);
247
248   return offset;
249 }
250
251
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 },
255   { NULL, 0, 0, NULL }
256 };
257
258 static int
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);
262
263   return offset;
264 }
265
266
267
268 static int
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);
272
273   return offset;
274 }
275
276
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 },
280   { NULL, 0, 0, NULL }
281 };
282
283 static int
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);
287
288   return offset;
289 }
290
291
292
293 static int
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);
296
297   return offset;
298 }
299
300
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 },
305   { NULL, 0, 0, NULL }
306 };
307
308 static int
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);
312
313   return offset;
314 }
315
316
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 },
321   { NULL, 0, 0, NULL }
322 };
323
324 static int
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);
328
329   return offset;
330 }
331
332
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 },
335 };
336
337 static int
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);
341
342   return offset;
343 }
344
345
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 },
350   { NULL, 0, 0, NULL }
351 };
352
353 static int
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);
357
358   return offset;
359 }
360
361
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 },
366   { NULL, 0, 0, NULL }
367 };
368
369 static int
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);
373
374   return offset;
375 }
376
377
378 static const value_string h323_T_robustnessData_vals[] = {
379   {   0, "rrqData" },
380   {   1, "rcfData" },
381   {   2, "setupData" },
382   {   3, "connectData" },
383   {   4, "statusData" },
384   {   5, "statusInquiryData" },
385   { 0, NULL }
386 };
387
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 },
395   { 0, NULL, 0, NULL }
396 };
397
398 static int
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,
402                                  NULL);
403
404   return offset;
405 }
406
407
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 },
411   { NULL, 0, 0, NULL }
412 };
413
414 static int
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);
418
419   return offset;
420 }
421
422 /*--- PDUs ---*/
423
424 static int dissect_RasTunnelledSignallingMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
425   int offset = 0;
426   asn1_ctx_t asn1_ctx;
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;
430   return offset;
431 }
432 static int dissect_RobustnessData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
433   int offset = 0;
434   asn1_ctx_t asn1_ctx;
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;
438   return offset;
439 }
440
441
442 /*--- End of included file: packet-h323-fn.c ---*/
443 #line 96 "../../asn1/h323/packet-h323-template.c"
444
445 /*--- proto_register_h323 ----------------------------------------------*/
446 void proto_register_h323(void) {
447
448   /* List of fields */
449   static hf_register_info hf[] = {
450
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,
456         NULL, HFILL }},
457     { &hf_h323_RobustnessData_PDU,
458       { "RobustnessData", "h323.RobustnessData_element",
459         FT_NONE, BASE_NONE, NULL, 0,
460         NULL, HFILL }},
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,
468         NULL, HFILL }},
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,
476         NULL, HFILL }},
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,
488         NULL, HFILL }},
489     { &hf_h323_rrqData,
490       { "rrqData", "h323.rrqData_element",
491         FT_NONE, BASE_NONE, NULL, 0,
492         "Rrq_RD", HFILL }},
493     { &hf_h323_rcfData,
494       { "rcfData", "h323.rcfData_element",
495         FT_NONE, BASE_NONE, NULL, 0,
496         "Rcf_RD", HFILL }},
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,
516         NULL, HFILL }},
517     { &hf_h323_tcp,
518       { "tcp", "h323.tcp",
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,
528         NULL, HFILL }},
529     { &hf_h323_hasSharedRepository,
530       { "hasSharedRepository", "h323.hasSharedRepository_element",
531         FT_NONE, BASE_NONE, NULL, 0,
532         NULL, HFILL }},
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,
548         NULL, HFILL }},
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,
556         NULL, HFILL }},
557     { &hf_h323_timeToLive,
558       { "timeToLive", "h323.timeToLive",
559         FT_UINT32, BASE_DEC, NULL, 0,
560         NULL, HFILL }},
561     { &hf_h323_includeFastStart,
562       { "includeFastStart", "h323.includeFastStart_element",
563         FT_NONE, BASE_NONE, NULL, 0,
564         NULL, HFILL }},
565
566 /*--- End of included file: packet-h323-hfarr.c ---*/
567 #line 103 "../../asn1/h323/packet-h323-template.c"
568   };
569
570   /* List of subtrees */
571   static gint *ett[] = {
572
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,
581     &ett_h323_Rrq_RD,
582     &ett_h323_Rcf_RD,
583     &ett_h323_Setup_RD,
584     &ett_h323_Connect_RD,
585     &ett_h323_Status_RD,
586     &ett_h323_T_fastStart,
587     &ett_h323_StatusInquiry_RD,
588
589 /*--- End of included file: packet-h323-ettarr.c ---*/
590 #line 108 "../../asn1/h323/packet-h323-template.c"
591   };
592
593   /* Register protocol */
594   proto_h323 = proto_register_protocol(PNAME, PSNAME, PFNAME);
595
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));
599
600 }
601
602
603 /*--- proto_reg_handoff_h323 -------------------------------------------*/
604 void proto_reg_handoff_h323(void) 
605 {
606   dissector_handle_t q931_handle; 
607
608   q931_handle = find_dissector("q931");
609
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);
612
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));
616
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));
620 }
621