MSWSP: add ids for another unknown Property Set
[wireshark-wip.git] / epan / dissectors / packet-h283.c
blob69bc124f506d106faa0d40708f98df70dc89dd35
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-h283.c */
4 /* ../../tools/asn2wrs.py -p h283 -c ./h283.cnf -s ./packet-h283-template -D . -O ../../epan/dissectors LCT-PROTOCOL.asn */
6 /* Input file: packet-h283-template.c */
8 #line 1 "../../asn1/h283/packet-h283-template.c"
9 /* packet-h283.c
10 * Routines for H.283 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>
41 #include "packet-per.h"
43 #define PNAME "H.283 Logical Channel Transport"
44 #define PSNAME "LCT"
45 #define PFNAME "lct"
47 /* Initialize the protocol and registered fields */
48 static int proto_h283 = -1;
50 /*--- Included file: packet-h283-hf.c ---*/
51 #line 1 "../../asn1/h283/packet-h283-hf.c"
52 static int hf_h283_LCTPDU_PDU = -1; /* LCTPDU */
53 static int hf_h283_t35CountryCode = -1; /* INTEGER_0_255 */
54 static int hf_h283_t35Extension = -1; /* INTEGER_0_255 */
55 static int hf_h283_manufacturerCode = -1; /* INTEGER_0_65535 */
56 static int hf_h283_object = -1; /* OBJECT_IDENTIFIER */
57 static int hf_h283_h221NonStandard = -1; /* H221NonStandard */
58 static int hf_h283_nonStandardIdentifier = -1; /* NonStandardIdentifier */
59 static int hf_h283_data = -1; /* OCTET_STRING */
60 static int hf_h283_srcAddr = -1; /* MTAddress */
61 static int hf_h283_dstAddr = -1; /* MTAddress */
62 static int hf_h283_timestamp = -1; /* INTEGER_0_4294967295 */
63 static int hf_h283_seqNumber = -1; /* INTEGER_0_65535 */
64 static int hf_h283_pduType = -1; /* T_pduType */
65 static int hf_h283_ack = -1; /* NULL */
66 static int hf_h283_rdcData = -1; /* RDCData */
67 static int hf_h283_nonStandardParameters = -1; /* SEQUENCE_OF_NonStandardParameter */
68 static int hf_h283_nonStandardParameters_item = -1; /* NonStandardParameter */
69 static int hf_h283_mAddress = -1; /* INTEGER_0_65535 */
70 static int hf_h283_tAddress = -1; /* INTEGER_0_65535 */
71 static int hf_h283_reliable = -1; /* BOOLEAN */
72 static int hf_h283_dataType = -1; /* T_dataType */
73 static int hf_h283_lctMessage = -1; /* LCTMessage */
74 static int hf_h283_rdcPDU = -1; /* T_rdcPDU */
75 static int hf_h283_lctRequest = -1; /* LCTRequest */
76 static int hf_h283_lctResponse = -1; /* LCTResponse */
77 static int hf_h283_lctIndication = -1; /* LCTIndication */
78 static int hf_h283_nonStandardMessage = -1; /* NonStandardMessage */
79 static int hf_h283_announceReq = -1; /* NULL */
80 static int hf_h283_deviceListReq = -1; /* NULL */
81 static int hf_h283_announceResp = -1; /* NULL */
82 static int hf_h283_deviceListResp = -1; /* T_deviceListResp */
83 static int hf_h283_deviceChange = -1; /* NULL */
85 /*--- End of included file: packet-h283-hf.c ---*/
86 #line 42 "../../asn1/h283/packet-h283-template.c"
88 /* Initialize the subtree pointers */
89 static int ett_h283 = -1;
91 /*--- Included file: packet-h283-ett.c ---*/
92 #line 1 "../../asn1/h283/packet-h283-ett.c"
93 static gint ett_h283_H221NonStandard = -1;
94 static gint ett_h283_NonStandardIdentifier = -1;
95 static gint ett_h283_NonStandardParameter = -1;
96 static gint ett_h283_LCTPDU = -1;
97 static gint ett_h283_T_pduType = -1;
98 static gint ett_h283_SEQUENCE_OF_NonStandardParameter = -1;
99 static gint ett_h283_MTAddress = -1;
100 static gint ett_h283_RDCData = -1;
101 static gint ett_h283_T_dataType = -1;
102 static gint ett_h283_LCTMessage = -1;
103 static gint ett_h283_LCTRequest = -1;
104 static gint ett_h283_LCTResponse = -1;
105 static gint ett_h283_LCTIndication = -1;
106 static gint ett_h283_NonStandardMessage = -1;
108 /*--- End of included file: packet-h283-ett.c ---*/
109 #line 46 "../../asn1/h283/packet-h283-template.c"
111 /* Subdissectors */
112 static dissector_handle_t rdc_pdu_handle;
113 static dissector_handle_t rdc_device_list_handle;
114 static dissector_handle_t data_handle;
116 static gboolean info_is_set;
119 /*--- Included file: packet-h283-fn.c ---*/
120 #line 1 "../../asn1/h283/packet-h283-fn.c"
123 static int
124 dissect_h283_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
125 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
126 0U, 255U, NULL, FALSE);
128 return offset;
133 static int
134 dissect_h283_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
135 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
136 0U, 65535U, NULL, FALSE);
138 return offset;
142 static const per_sequence_t H221NonStandard_sequence[] = {
143 { &hf_h283_t35CountryCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_255 },
144 { &hf_h283_t35Extension , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_255 },
145 { &hf_h283_manufacturerCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
146 { NULL, 0, 0, NULL }
149 static int
150 dissect_h283_H221NonStandard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
151 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
152 ett_h283_H221NonStandard, H221NonStandard_sequence);
154 return offset;
159 static int
160 dissect_h283_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
161 offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
163 return offset;
167 static const value_string h283_NonStandardIdentifier_vals[] = {
168 { 0, "object" },
169 { 1, "h221NonStandard" },
170 { 0, NULL }
173 static const per_choice_t NonStandardIdentifier_choice[] = {
174 { 0, &hf_h283_object , ASN1_EXTENSION_ROOT , dissect_h283_OBJECT_IDENTIFIER },
175 { 1, &hf_h283_h221NonStandard, ASN1_EXTENSION_ROOT , dissect_h283_H221NonStandard },
176 { 0, NULL, 0, NULL }
179 static int
180 dissect_h283_NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
181 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
182 ett_h283_NonStandardIdentifier, NonStandardIdentifier_choice,
183 NULL);
185 return offset;
190 static int
191 dissect_h283_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
192 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
193 NO_BOUND, NO_BOUND, FALSE, NULL);
195 return offset;
199 static const per_sequence_t NonStandardParameter_sequence[] = {
200 { &hf_h283_nonStandardIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_NonStandardIdentifier },
201 { &hf_h283_data , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_OCTET_STRING },
202 { NULL, 0, 0, NULL }
205 static int
206 dissect_h283_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
207 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
208 ett_h283_NonStandardParameter, NonStandardParameter_sequence);
210 return offset;
214 static const per_sequence_t MTAddress_sequence[] = {
215 { &hf_h283_mAddress , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
216 { &hf_h283_tAddress , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
217 { NULL, 0, 0, NULL }
220 static int
221 dissect_h283_MTAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
222 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
223 ett_h283_MTAddress, MTAddress_sequence);
225 return offset;
230 static int
231 dissect_h283_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
232 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
233 0U, 4294967295U, NULL, FALSE);
235 return offset;
240 static int
241 dissect_h283_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
242 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
244 return offset;
249 static int
250 dissect_h283_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
251 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
253 return offset;
257 static const value_string h283_LCTRequest_vals[] = {
258 { 0, "announceReq" },
259 { 1, "deviceListReq" },
260 { 0, NULL }
263 static const per_choice_t LCTRequest_choice[] = {
264 { 0, &hf_h283_announceReq , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
265 { 1, &hf_h283_deviceListReq , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
266 { 0, NULL, 0, NULL }
269 static int
270 dissect_h283_LCTRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
271 #line 58 "../../asn1/h283/h283.cnf"
272 gint32 msg_type = -1;
273 const gchar *p = NULL;
275 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
276 ett_h283_LCTRequest, LCTRequest_choice,
277 &msg_type);
279 #line 61 "../../asn1/h283/h283.cnf"
280 p = try_val_to_str(msg_type, VALS(h283_LCTRequest_vals));
281 if (!info_is_set && p ) {
282 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTRequest/%s", p);
283 info_is_set = TRUE;
286 return offset;
291 static int
292 dissect_h283_T_deviceListResp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
293 #line 105 "../../asn1/h283/h283.cnf"
294 tvbuff_t *next_tvb = NULL;
296 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
297 NO_BOUND, NO_BOUND, FALSE, &next_tvb);
299 if (next_tvb && tvb_length(next_tvb)) {
300 call_dissector((rdc_device_list_handle)?rdc_device_list_handle:data_handle, next_tvb, actx->pinfo, tree);
304 return offset;
308 static const value_string h283_LCTResponse_vals[] = {
309 { 0, "announceResp" },
310 { 1, "deviceListResp" },
311 { 0, NULL }
314 static const per_choice_t LCTResponse_choice[] = {
315 { 0, &hf_h283_announceResp , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
316 { 1, &hf_h283_deviceListResp , ASN1_EXTENSION_ROOT , dissect_h283_T_deviceListResp },
317 { 0, NULL, 0, NULL }
320 static int
321 dissect_h283_LCTResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
322 #line 71 "../../asn1/h283/h283.cnf"
323 gint32 msg_type = -1;
324 const gchar *p = NULL;
326 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
327 ett_h283_LCTResponse, LCTResponse_choice,
328 &msg_type);
330 #line 74 "../../asn1/h283/h283.cnf"
331 p = try_val_to_str(msg_type, VALS(h283_LCTResponse_vals));
332 if (!info_is_set && p ) {
333 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTResponse/%s", p);
334 info_is_set = TRUE;
337 return offset;
341 static const value_string h283_LCTIndication_vals[] = {
342 { 0, "deviceChange" },
343 { 0, NULL }
346 static const per_choice_t LCTIndication_choice[] = {
347 { 0, &hf_h283_deviceChange , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
348 { 0, NULL, 0, NULL }
351 static int
352 dissect_h283_LCTIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
353 #line 84 "../../asn1/h283/h283.cnf"
354 gint32 msg_type = -1;
355 const gchar *p = NULL;
357 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
358 ett_h283_LCTIndication, LCTIndication_choice,
359 &msg_type);
361 #line 87 "../../asn1/h283/h283.cnf"
362 p = try_val_to_str(msg_type, VALS(h283_LCTIndication_vals));
363 if (!info_is_set && p ) {
364 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTIndication/%s", p);
365 info_is_set = TRUE;
368 return offset;
372 static const per_sequence_t SEQUENCE_OF_NonStandardParameter_sequence_of[1] = {
373 { &hf_h283_nonStandardParameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_NonStandardParameter },
376 static int
377 dissect_h283_SEQUENCE_OF_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
378 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
379 ett_h283_SEQUENCE_OF_NonStandardParameter, SEQUENCE_OF_NonStandardParameter_sequence_of);
381 return offset;
385 static const per_sequence_t NonStandardMessage_sequence[] = {
386 { &hf_h283_nonStandardParameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h283_SEQUENCE_OF_NonStandardParameter },
387 { NULL, 0, 0, NULL }
390 static int
391 dissect_h283_NonStandardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
392 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
393 ett_h283_NonStandardMessage, NonStandardMessage_sequence);
395 return offset;
399 static const value_string h283_LCTMessage_vals[] = {
400 { 0, "lctRequest" },
401 { 1, "lctResponse" },
402 { 2, "lctIndication" },
403 { 3, "nonStandardMessage" },
404 { 0, NULL }
407 static const per_choice_t LCTMessage_choice[] = {
408 { 0, &hf_h283_lctRequest , ASN1_EXTENSION_ROOT , dissect_h283_LCTRequest },
409 { 1, &hf_h283_lctResponse , ASN1_EXTENSION_ROOT , dissect_h283_LCTResponse },
410 { 2, &hf_h283_lctIndication , ASN1_EXTENSION_ROOT , dissect_h283_LCTIndication },
411 { 3, &hf_h283_nonStandardMessage, ASN1_EXTENSION_ROOT , dissect_h283_NonStandardMessage },
412 { 0, NULL, 0, NULL }
415 static int
416 dissect_h283_LCTMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
417 #line 45 "../../asn1/h283/h283.cnf"
418 gint32 msg_type = -1;
419 const gchar *p = NULL;
421 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
422 ett_h283_LCTMessage, LCTMessage_choice,
423 &msg_type);
425 #line 48 "../../asn1/h283/h283.cnf"
426 p = try_val_to_str(msg_type, VALS(h283_LCTMessage_vals));
427 if (!info_is_set && p ) {
428 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTMessage/%s", p);
429 info_is_set = TRUE;
432 return offset;
437 static int
438 dissect_h283_T_rdcPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
439 #line 95 "../../asn1/h283/h283.cnf"
440 tvbuff_t *next_tvb = NULL;
442 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
443 NO_BOUND, NO_BOUND, FALSE, &next_tvb);
445 if (next_tvb && tvb_length(next_tvb)) {
446 call_dissector((rdc_pdu_handle)?rdc_pdu_handle:data_handle, next_tvb, actx->pinfo, proto_tree_get_root(tree));
448 info_is_set = TRUE;
451 return offset;
455 static const value_string h283_T_dataType_vals[] = {
456 { 0, "lctMessage" },
457 { 1, "rdcPDU" },
458 { 0, NULL }
461 static const per_choice_t T_dataType_choice[] = {
462 { 0, &hf_h283_lctMessage , ASN1_NO_EXTENSIONS , dissect_h283_LCTMessage },
463 { 1, &hf_h283_rdcPDU , ASN1_NO_EXTENSIONS , dissect_h283_T_rdcPDU },
464 { 0, NULL, 0, NULL }
467 static int
468 dissect_h283_T_dataType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
469 #line 32 "../../asn1/h283/h283.cnf"
470 gint32 data_type = -1;
471 const gchar *p = NULL;
473 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
474 ett_h283_T_dataType, T_dataType_choice,
475 &data_type);
477 #line 35 "../../asn1/h283/h283.cnf"
478 p = try_val_to_str(data_type, VALS(h283_T_dataType_vals));
479 if (!info_is_set && p ) {
480 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RDCData/%s", p);
481 info_is_set = TRUE;
484 return offset;
488 static const per_sequence_t RDCData_sequence[] = {
489 { &hf_h283_reliable , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_BOOLEAN },
490 { &hf_h283_dataType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_T_dataType },
491 { NULL, 0, 0, NULL }
494 static int
495 dissect_h283_RDCData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
496 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
497 ett_h283_RDCData, RDCData_sequence);
499 return offset;
503 static const value_string h283_T_pduType_vals[] = {
504 { 0, "ack" },
505 { 1, "rdcData" },
506 { 0, NULL }
509 static const per_choice_t T_pduType_choice[] = {
510 { 0, &hf_h283_ack , ASN1_NO_EXTENSIONS , dissect_h283_NULL },
511 { 1, &hf_h283_rdcData , ASN1_NO_EXTENSIONS , dissect_h283_RDCData },
512 { 0, NULL, 0, NULL }
515 static int
516 dissect_h283_T_pduType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
517 #line 19 "../../asn1/h283/h283.cnf"
518 gint32 pdu_type = -1;
519 const gchar *p = NULL;
521 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
522 ett_h283_T_pduType, T_pduType_choice,
523 &pdu_type);
525 #line 22 "../../asn1/h283/h283.cnf"
526 p = try_val_to_str(pdu_type, VALS(h283_T_pduType_vals));
527 if (!info_is_set && p ) {
528 col_set_str(actx->pinfo->cinfo, COL_INFO, p);
529 info_is_set = TRUE;
532 return offset;
536 static const per_sequence_t LCTPDU_sequence[] = {
537 { &hf_h283_srcAddr , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_MTAddress },
538 { &hf_h283_dstAddr , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_MTAddress },
539 { &hf_h283_timestamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_4294967295 },
540 { &hf_h283_seqNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
541 { &hf_h283_pduType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_T_pduType },
542 { &hf_h283_nonStandardParameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h283_SEQUENCE_OF_NonStandardParameter },
543 { NULL, 0, 0, NULL }
546 static int
547 dissect_h283_LCTPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
548 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
549 ett_h283_LCTPDU, LCTPDU_sequence);
551 return offset;
554 /*--- PDUs ---*/
556 static int dissect_LCTPDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
557 int offset = 0;
558 asn1_ctx_t asn1_ctx;
559 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
560 offset = dissect_h283_LCTPDU(tvb, offset, &asn1_ctx, tree, hf_h283_LCTPDU_PDU);
561 offset += 7; offset >>= 3;
562 return offset;
566 /*--- End of included file: packet-h283-fn.c ---*/
567 #line 55 "../../asn1/h283/packet-h283-template.c"
569 static int
570 dissect_h283_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
572 proto_item *ti = NULL;
573 proto_tree *h283_tree = NULL;
575 col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
577 info_is_set = FALSE;
579 ti = proto_tree_add_item(tree, proto_h283, tvb, 0, -1, ENC_NA);
580 h283_tree = proto_item_add_subtree(ti, ett_h283);
582 return dissect_LCTPDU_PDU(tvb, pinfo, h283_tree, NULL);
585 /*--- proto_register_h283 ----------------------------------------------*/
586 void proto_register_h283(void) {
588 /* List of fields */
589 static hf_register_info hf[] = {
591 /*--- Included file: packet-h283-hfarr.c ---*/
592 #line 1 "../../asn1/h283/packet-h283-hfarr.c"
593 { &hf_h283_LCTPDU_PDU,
594 { "LCTPDU", "h283.LCTPDU_element",
595 FT_NONE, BASE_NONE, NULL, 0,
596 NULL, HFILL }},
597 { &hf_h283_t35CountryCode,
598 { "t35CountryCode", "h283.t35CountryCode",
599 FT_UINT32, BASE_DEC, NULL, 0,
600 "INTEGER_0_255", HFILL }},
601 { &hf_h283_t35Extension,
602 { "t35Extension", "h283.t35Extension",
603 FT_UINT32, BASE_DEC, NULL, 0,
604 "INTEGER_0_255", HFILL }},
605 { &hf_h283_manufacturerCode,
606 { "manufacturerCode", "h283.manufacturerCode",
607 FT_UINT32, BASE_DEC, NULL, 0,
608 "INTEGER_0_65535", HFILL }},
609 { &hf_h283_object,
610 { "object", "h283.object",
611 FT_OID, BASE_NONE, NULL, 0,
612 "OBJECT_IDENTIFIER", HFILL }},
613 { &hf_h283_h221NonStandard,
614 { "h221NonStandard", "h283.h221NonStandard_element",
615 FT_NONE, BASE_NONE, NULL, 0,
616 NULL, HFILL }},
617 { &hf_h283_nonStandardIdentifier,
618 { "nonStandardIdentifier", "h283.nonStandardIdentifier",
619 FT_UINT32, BASE_DEC, VALS(h283_NonStandardIdentifier_vals), 0,
620 NULL, HFILL }},
621 { &hf_h283_data,
622 { "data", "h283.data",
623 FT_BYTES, BASE_NONE, NULL, 0,
624 "OCTET_STRING", HFILL }},
625 { &hf_h283_srcAddr,
626 { "srcAddr", "h283.srcAddr_element",
627 FT_NONE, BASE_NONE, NULL, 0,
628 "MTAddress", HFILL }},
629 { &hf_h283_dstAddr,
630 { "dstAddr", "h283.dstAddr_element",
631 FT_NONE, BASE_NONE, NULL, 0,
632 "MTAddress", HFILL }},
633 { &hf_h283_timestamp,
634 { "timestamp", "h283.timestamp",
635 FT_UINT32, BASE_DEC, NULL, 0,
636 "INTEGER_0_4294967295", HFILL }},
637 { &hf_h283_seqNumber,
638 { "seqNumber", "h283.seqNumber",
639 FT_UINT32, BASE_DEC, NULL, 0,
640 "INTEGER_0_65535", HFILL }},
641 { &hf_h283_pduType,
642 { "pduType", "h283.pduType",
643 FT_UINT32, BASE_DEC, VALS(h283_T_pduType_vals), 0,
644 NULL, HFILL }},
645 { &hf_h283_ack,
646 { "ack", "h283.ack_element",
647 FT_NONE, BASE_NONE, NULL, 0,
648 NULL, HFILL }},
649 { &hf_h283_rdcData,
650 { "rdcData", "h283.rdcData_element",
651 FT_NONE, BASE_NONE, NULL, 0,
652 NULL, HFILL }},
653 { &hf_h283_nonStandardParameters,
654 { "nonStandardParameters", "h283.nonStandardParameters",
655 FT_UINT32, BASE_DEC, NULL, 0,
656 "SEQUENCE_OF_NonStandardParameter", HFILL }},
657 { &hf_h283_nonStandardParameters_item,
658 { "NonStandardParameter", "h283.NonStandardParameter_element",
659 FT_NONE, BASE_NONE, NULL, 0,
660 NULL, HFILL }},
661 { &hf_h283_mAddress,
662 { "mAddress", "h283.mAddress",
663 FT_UINT32, BASE_DEC, NULL, 0,
664 "INTEGER_0_65535", HFILL }},
665 { &hf_h283_tAddress,
666 { "tAddress", "h283.tAddress",
667 FT_UINT32, BASE_DEC, NULL, 0,
668 "INTEGER_0_65535", HFILL }},
669 { &hf_h283_reliable,
670 { "reliable", "h283.reliable",
671 FT_BOOLEAN, BASE_NONE, NULL, 0,
672 "BOOLEAN", HFILL }},
673 { &hf_h283_dataType,
674 { "dataType", "h283.dataType",
675 FT_UINT32, BASE_DEC, VALS(h283_T_dataType_vals), 0,
676 NULL, HFILL }},
677 { &hf_h283_lctMessage,
678 { "lctMessage", "h283.lctMessage",
679 FT_UINT32, BASE_DEC, VALS(h283_LCTMessage_vals), 0,
680 NULL, HFILL }},
681 { &hf_h283_rdcPDU,
682 { "rdcPDU", "h283.rdcPDU",
683 FT_UINT32, BASE_DEC, NULL, 0,
684 NULL, HFILL }},
685 { &hf_h283_lctRequest,
686 { "lctRequest", "h283.lctRequest",
687 FT_UINT32, BASE_DEC, VALS(h283_LCTRequest_vals), 0,
688 NULL, HFILL }},
689 { &hf_h283_lctResponse,
690 { "lctResponse", "h283.lctResponse",
691 FT_UINT32, BASE_DEC, VALS(h283_LCTResponse_vals), 0,
692 NULL, HFILL }},
693 { &hf_h283_lctIndication,
694 { "lctIndication", "h283.lctIndication",
695 FT_UINT32, BASE_DEC, VALS(h283_LCTIndication_vals), 0,
696 NULL, HFILL }},
697 { &hf_h283_nonStandardMessage,
698 { "nonStandardMessage", "h283.nonStandardMessage_element",
699 FT_NONE, BASE_NONE, NULL, 0,
700 NULL, HFILL }},
701 { &hf_h283_announceReq,
702 { "announceReq", "h283.announceReq_element",
703 FT_NONE, BASE_NONE, NULL, 0,
704 NULL, HFILL }},
705 { &hf_h283_deviceListReq,
706 { "deviceListReq", "h283.deviceListReq_element",
707 FT_NONE, BASE_NONE, NULL, 0,
708 NULL, HFILL }},
709 { &hf_h283_announceResp,
710 { "announceResp", "h283.announceResp_element",
711 FT_NONE, BASE_NONE, NULL, 0,
712 NULL, HFILL }},
713 { &hf_h283_deviceListResp,
714 { "deviceListResp", "h283.deviceListResp",
715 FT_UINT32, BASE_DEC, NULL, 0,
716 NULL, HFILL }},
717 { &hf_h283_deviceChange,
718 { "deviceChange", "h283.deviceChange_element",
719 FT_NONE, BASE_NONE, NULL, 0,
720 NULL, HFILL }},
722 /*--- End of included file: packet-h283-hfarr.c ---*/
723 #line 78 "../../asn1/h283/packet-h283-template.c"
726 /* List of subtrees */
727 static gint *ett[] = {
728 &ett_h283,
730 /*--- Included file: packet-h283-ettarr.c ---*/
731 #line 1 "../../asn1/h283/packet-h283-ettarr.c"
732 &ett_h283_H221NonStandard,
733 &ett_h283_NonStandardIdentifier,
734 &ett_h283_NonStandardParameter,
735 &ett_h283_LCTPDU,
736 &ett_h283_T_pduType,
737 &ett_h283_SEQUENCE_OF_NonStandardParameter,
738 &ett_h283_MTAddress,
739 &ett_h283_RDCData,
740 &ett_h283_T_dataType,
741 &ett_h283_LCTMessage,
742 &ett_h283_LCTRequest,
743 &ett_h283_LCTResponse,
744 &ett_h283_LCTIndication,
745 &ett_h283_NonStandardMessage,
747 /*--- End of included file: packet-h283-ettarr.c ---*/
748 #line 84 "../../asn1/h283/packet-h283-template.c"
751 /* Register protocol */
752 proto_h283 = proto_register_protocol(PNAME, PSNAME, PFNAME);
754 /* Register fields and subtrees */
755 proto_register_field_array(proto_h283, hf, array_length(hf));
756 proto_register_subtree_array(ett, array_length(ett));
758 new_register_dissector(PFNAME, dissect_h283_udp, proto_h283);
762 /*--- proto_reg_handoff_h283 -------------------------------------------*/
763 void proto_reg_handoff_h283(void)
765 dissector_handle_t h283_udp_handle;
767 h283_udp_handle = find_dissector(PFNAME);
768 dissector_add_handle("udp.port", h283_udp_handle);
770 rdc_pdu_handle = find_dissector("rdc");
771 rdc_device_list_handle = find_dissector("rdc.device_list");
772 data_handle = find_dissector("data");