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 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"
10 * Routines for H.283 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"
43 #define PNAME "H.283 Logical Channel Transport"
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"
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"
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
);
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
);
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
},
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
);
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
);
167 static const value_string h283_NonStandardIdentifier_vals
[] = {
169 { 1, "h221NonStandard" },
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
},
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
,
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
);
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
},
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
);
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
},
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
);
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
);
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
);
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
);
257 static const value_string h283_LCTRequest_vals
[] = {
258 { 0, "announceReq" },
259 { 1, "deviceListReq" },
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
},
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
,
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
);
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
);
308 static const value_string h283_LCTResponse_vals
[] = {
309 { 0, "announceResp" },
310 { 1, "deviceListResp" },
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
},
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
,
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
);
341 static const value_string h283_LCTIndication_vals
[] = {
342 { 0, "deviceChange" },
346 static const per_choice_t LCTIndication_choice
[] = {
347 { 0, &hf_h283_deviceChange
, ASN1_EXTENSION_ROOT
, dissect_h283_NULL
},
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
,
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
);
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
},
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
);
385 static const per_sequence_t NonStandardMessage_sequence
[] = {
386 { &hf_h283_nonStandardParameters
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_h283_SEQUENCE_OF_NonStandardParameter
},
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
);
399 static const value_string h283_LCTMessage_vals
[] = {
401 { 1, "lctResponse" },
402 { 2, "lctIndication" },
403 { 3, "nonStandardMessage" },
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
},
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
,
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
);
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
));
455 static const value_string h283_T_dataType_vals
[] = {
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
},
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
,
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
);
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
},
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
);
503 static const value_string h283_T_pduType_vals
[] = {
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
},
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
,
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
);
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
},
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
);
556 static int dissect_LCTPDU_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
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;
566 /*--- End of included file: packet-h283-fn.c ---*/
567 #line 55 "../../asn1/h283/packet-h283-template.c"
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
);
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) {
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,
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
}},
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,
617 { &hf_h283_nonStandardIdentifier
,
618 { "nonStandardIdentifier", "h283.nonStandardIdentifier",
619 FT_UINT32
, BASE_DEC
, VALS(h283_NonStandardIdentifier_vals
), 0,
622 { "data", "h283.data",
623 FT_BYTES
, BASE_NONE
, NULL
, 0,
624 "OCTET_STRING", HFILL
}},
626 { "srcAddr", "h283.srcAddr_element",
627 FT_NONE
, BASE_NONE
, NULL
, 0,
628 "MTAddress", HFILL
}},
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
}},
642 { "pduType", "h283.pduType",
643 FT_UINT32
, BASE_DEC
, VALS(h283_T_pduType_vals
), 0,
646 { "ack", "h283.ack_element",
647 FT_NONE
, BASE_NONE
, NULL
, 0,
650 { "rdcData", "h283.rdcData_element",
651 FT_NONE
, BASE_NONE
, NULL
, 0,
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,
662 { "mAddress", "h283.mAddress",
663 FT_UINT32
, BASE_DEC
, NULL
, 0,
664 "INTEGER_0_65535", HFILL
}},
666 { "tAddress", "h283.tAddress",
667 FT_UINT32
, BASE_DEC
, NULL
, 0,
668 "INTEGER_0_65535", HFILL
}},
670 { "reliable", "h283.reliable",
671 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
674 { "dataType", "h283.dataType",
675 FT_UINT32
, BASE_DEC
, VALS(h283_T_dataType_vals
), 0,
677 { &hf_h283_lctMessage
,
678 { "lctMessage", "h283.lctMessage",
679 FT_UINT32
, BASE_DEC
, VALS(h283_LCTMessage_vals
), 0,
682 { "rdcPDU", "h283.rdcPDU",
683 FT_UINT32
, BASE_DEC
, NULL
, 0,
685 { &hf_h283_lctRequest
,
686 { "lctRequest", "h283.lctRequest",
687 FT_UINT32
, BASE_DEC
, VALS(h283_LCTRequest_vals
), 0,
689 { &hf_h283_lctResponse
,
690 { "lctResponse", "h283.lctResponse",
691 FT_UINT32
, BASE_DEC
, VALS(h283_LCTResponse_vals
), 0,
693 { &hf_h283_lctIndication
,
694 { "lctIndication", "h283.lctIndication",
695 FT_UINT32
, BASE_DEC
, VALS(h283_LCTIndication_vals
), 0,
697 { &hf_h283_nonStandardMessage
,
698 { "nonStandardMessage", "h283.nonStandardMessage_element",
699 FT_NONE
, BASE_NONE
, NULL
, 0,
701 { &hf_h283_announceReq
,
702 { "announceReq", "h283.announceReq_element",
703 FT_NONE
, BASE_NONE
, NULL
, 0,
705 { &hf_h283_deviceListReq
,
706 { "deviceListReq", "h283.deviceListReq_element",
707 FT_NONE
, BASE_NONE
, NULL
, 0,
709 { &hf_h283_announceResp
,
710 { "announceResp", "h283.announceResp_element",
711 FT_NONE
, BASE_NONE
, NULL
, 0,
713 { &hf_h283_deviceListResp
,
714 { "deviceListResp", "h283.deviceListResp",
715 FT_UINT32
, BASE_DEC
, NULL
, 0,
717 { &hf_h283_deviceChange
,
718 { "deviceChange", "h283.deviceChange_element",
719 FT_NONE
, BASE_NONE
, NULL
, 0,
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
[] = {
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
,
737 &ett_h283_SEQUENCE_OF_NonStandardParameter
,
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");