epan/dissectors/pidl/samr/samr.cnf cnf_dissect_lsa_BinaryString => lsarpc_dissect_str...
[wireshark-sm.git] / epan / dissectors / packet-glow.c
blobfb19da6187d4c1b8c25ebe7ef533385a5c1eef48
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-glow.c */
4 /* asn2wrs.py -b -q -L -p glow -c ./glow.cnf -s ./packet-glow-template -D . -O ../.. glow.asn */
6 /* packet-glow.c
7 * Routines for GLOW packet dissection
9 * Copyright 2018, Gilles Dufour <dufour.gilles@gmail.com>
11 * Wireshark - Network traffic analyzer
12 * By Gerald Combs <gerald@wireshark.org>
13 * Copyright 1998 Gerald Combs
15 * SPDX-License-Identifier: GPL-2.0-or-later
18 # include "config.h"
20 #include <epan/packet.h>
21 #include <epan/proto_data.h>
22 #include <wsutil/array.h>
23 #include "packet-ber.h"
25 #define PNAME "Glow"
26 #define PSNAME "GLOW"
27 #define PFNAME "glow"
29 void proto_register_glow(void);
31 static dissector_handle_t glow_handle;
32 static int proto_glow;
34 static int hf_glow_Root_PDU; /* Root */
35 static int hf_glow_number; /* Integer32 */
36 static int hf_glow_element; /* TemplateElement */
37 static int hf_glow_description; /* EmberString */
38 static int hf_glow_path; /* RELATIVE_OID */
39 static int hf_glow_parameter; /* Parameter */
40 static int hf_glow_node; /* Node */
41 static int hf_glow_matrix; /* Matrix */
42 static int hf_glow_function; /* Function */
43 static int hf_glow_contents; /* ParameterContents */
44 static int hf_glow_children; /* ElementCollection */
45 static int hf_glow_identifier; /* EmberString */
46 static int hf_glow_value; /* Value */
47 static int hf_glow_minimum; /* MinMax */
48 static int hf_glow_maximum; /* MinMax */
49 static int hf_glow_access; /* ParameterAccess */
50 static int hf_glow_format; /* EmberString */
51 static int hf_glow_enumeration; /* EmberString */
52 static int hf_glow_factor; /* Integer32 */
53 static int hf_glow_isOnline; /* BOOLEAN */
54 static int hf_glow_formula; /* EmberString */
55 static int hf_glow_step; /* Integer32 */
56 static int hf_glow_default; /* Value */
57 static int hf_glow_type; /* ParameterType */
58 static int hf_glow_streamIdentifier; /* Integer32 */
59 static int hf_glow_enumMap; /* StringIntegerCollection */
60 static int hf_glow_streamDescriptor; /* StreamDescription */
61 static int hf_glow_schemaIdentifiers; /* EmberString */
62 static int hf_glow_templateReference; /* RELATIVE_OID */
63 static int hf_glow_integer; /* Integer64 */
64 static int hf_glow_real; /* REAL */
65 static int hf_glow_string; /* EmberString */
66 static int hf_glow_boolean; /* BOOLEAN */
67 static int hf_glow_octets; /* OCTET_STRING */
68 static int hf_glow_null; /* NULL */
69 static int hf_glow_entryString; /* EmberString */
70 static int hf_glow_entryInteger; /* Integer32 */
71 static int hf_glow__untag_item; /* StringIntegerPair */
72 static int hf_glow_streamFormat; /* StreamFormat */
73 static int hf_glow_offset; /* Integer32 */
74 static int hf_glow_number_01; /* CommandType */
75 static int hf_glow_options; /* T_options */
76 static int hf_glow_dirFieldMask; /* FieldFlags */
77 static int hf_glow_invocation; /* Invocation */
78 static int hf_glow_contents_01; /* NodeContents */
79 static int hf_glow_isRoot; /* BOOLEAN */
80 static int hf_glow_contents_02; /* MatrixContents */
81 static int hf_glow_targetList; /* TargetCollection */
82 static int hf_glow_sourceList; /* SourceCollection */
83 static int hf_glow_connections; /* ConnectionCollection */
84 static int hf_glow_type_01; /* MatrixType */
85 static int hf_glow_addressingMode; /* MatrixAddressingMode */
86 static int hf_glow_targetCount; /* Integer32 */
87 static int hf_glow_sourceCount; /* Integer32 */
88 static int hf_glow_maximumTotalConnects; /* Integer32 */
89 static int hf_glow_maximumConnectsPerTarget; /* Integer32 */
90 static int hf_glow_parametersLocation; /* ParametersLocation */
91 static int hf_glow_gainParameterNumber; /* Integer32 */
92 static int hf_glow_labels; /* LabelCollection */
93 static int hf_glow_basePath; /* RELATIVE_OID */
94 static int hf_glow_inline; /* Integer32 */
95 static int hf_glow_LabelCollection_item; /* Label */
96 static int hf_glow_TargetCollection_item; /* Target */
97 static int hf_glow_SourceCollection_item; /* Source */
98 static int hf_glow_ConnectionCollection_item; /* Connection */
99 static int hf_glow_target; /* Integer32 */
100 static int hf_glow_sources; /* PackedNumbers */
101 static int hf_glow_operation; /* ConnectionOperation */
102 static int hf_glow_disposition; /* ConnectionDisposition */
103 static int hf_glow_contents_03; /* FunctionContents */
104 static int hf_glow_arguments; /* TupleDescription */
105 static int hf_glow_result; /* TupleDescription */
106 static int hf_glow_TupleDescription_item; /* TupleItemDescription */
107 static int hf_glow_name; /* EmberString */
108 static int hf_glow_invocationId; /* Integer32 */
109 static int hf_glow_arguments_01; /* Tuple */
110 static int hf_glow_Tuple_item; /* Value */
111 static int hf_glow_success; /* BOOLEAN */
112 static int hf_glow_result_01; /* Tuple */
113 static int hf_glow__untag_item_01; /* Element */
114 static int hf_glow_command; /* Command */
115 static int hf_glow_template; /* Template */
116 static int hf_glow_streamValue; /* Value */
117 static int hf_glow__untag_item_02; /* StreamEntry */
118 static int hf_glow_elements; /* RootElementCollection */
119 static int hf_glow_streams; /* StreamCollection */
120 static int hf_glow_invocationResult; /* InvocationResult */
121 static int hf_glow__untag_item_03; /* RootElement */
122 static int hf_glow_element_01; /* Element */
123 static int hf_glow_qualifiedParameter; /* QualifiedParameter */
124 static int hf_glow_qualifiedNode; /* QualifiedNode */
125 static int hf_glow_qualifiedMatrix; /* QualifiedMatrix */
126 static int hf_glow_qualifiedFunction; /* QualifiedFunction */
127 static int hf_glow_qualifiedTemplate; /* QualifiedTemplate */
129 /* Initialize the subtree pointers */
130 static int ett_glow;
132 static int ett_glow_Template_U;
133 static int ett_glow_QualifiedTemplate_U;
134 static int ett_glow_TemplateElement;
135 static int ett_glow_Parameter_U;
136 static int ett_glow_QualifiedParameter_U;
137 static int ett_glow_ParameterContents;
138 static int ett_glow_Value;
139 static int ett_glow_MinMax;
140 static int ett_glow_StringIntegerPair_U;
141 static int ett_glow_SEQUENCE_OF_StringIntegerPair;
142 static int ett_glow_StreamDescription_U;
143 static int ett_glow_Command_U;
144 static int ett_glow_T_options;
145 static int ett_glow_Node_U;
146 static int ett_glow_QualifiedNode_U;
147 static int ett_glow_NodeContents;
148 static int ett_glow_Matrix_U;
149 static int ett_glow_MatrixContents;
150 static int ett_glow_ParametersLocation;
151 static int ett_glow_LabelCollection;
152 static int ett_glow_Label_U;
153 static int ett_glow_TargetCollection;
154 static int ett_glow_Signal;
155 static int ett_glow_SourceCollection;
156 static int ett_glow_ConnectionCollection;
157 static int ett_glow_Connection_U;
158 static int ett_glow_QualifiedMatrix_U;
159 static int ett_glow_Function_U;
160 static int ett_glow_QualifiedFunction_U;
161 static int ett_glow_FunctionContents;
162 static int ett_glow_TupleDescription;
163 static int ett_glow_TupleItemDescription_U;
164 static int ett_glow_Invocation_U;
165 static int ett_glow_Tuple;
166 static int ett_glow_InvocationResult_U;
167 static int ett_glow_SEQUENCE_OF_Element;
168 static int ett_glow_Element;
169 static int ett_glow_StreamEntry_U;
170 static int ett_glow_SEQUENCE_OF_StreamEntry;
171 static int ett_glow_Root_U;
172 static int ett_glow_SEQUENCE_OF_RootElement;
173 static int ett_glow_RootElement;
175 /*--- Cyclic dependencies ---*/
177 /* Parameter -> Parameter/_untag -> ElementCollection -> ElementCollection/_untag -> Element -> Parameter */
178 static int dissect_glow_Parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
180 /* ElementCollection -> ElementCollection/_untag -> Element -> Node -> Node/_untag -> ElementCollection */
181 /* ElementCollection -> ElementCollection/_untag -> Element -> Matrix -> Matrix/_untag -> ElementCollection */
182 /* ElementCollection -> ElementCollection/_untag -> Element -> Function -> Function/_untag -> ElementCollection */
183 static int dissect_glow_ElementCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
185 /* Template -> Template/_untag -> TemplateElement -> Parameter -> Parameter/_untag -> ElementCollection -> ElementCollection/_untag -> Element -> Template */
186 static int dissect_glow_Template(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
191 static int
192 dissect_glow_EmberString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
193 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
194 actx, tree, tvb, offset, hf_index,
195 NULL);
197 return offset;
202 static int
203 dissect_glow_Integer32(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
204 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
205 NULL);
207 return offset;
212 static int
213 dissect_glow_Integer64(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
214 offset = dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_index,
215 NULL);
217 return offset;
222 static int
223 dissect_glow_REAL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
224 offset = dissect_ber_real(implicit_tag, actx, tree, tvb, offset, hf_index,
225 NULL);
227 return offset;
232 static int
233 dissect_glow_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
234 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
236 return offset;
241 static int
242 dissect_glow_OCTET_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
243 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
244 NULL);
246 return offset;
251 static int
252 dissect_glow_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
253 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
255 return offset;
259 static const value_string glow_Value_vals[] = {
260 { 0, "integer" },
261 { 1, "real" },
262 { 2, "string" },
263 { 3, "boolean" },
264 { 4, "octets" },
265 { 5, "null" },
266 { 0, NULL }
269 static const ber_choice_t Value_choice[] = {
270 { 0, &hf_glow_integer , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_glow_Integer64 },
271 { 1, &hf_glow_real , BER_CLASS_UNI, BER_UNI_TAG_REAL, BER_FLAGS_NOOWNTAG, dissect_glow_REAL },
272 { 2, &hf_glow_string , BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_glow_EmberString },
273 { 3, &hf_glow_boolean , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_glow_BOOLEAN },
274 { 4, &hf_glow_octets , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_glow_OCTET_STRING },
275 { 5, &hf_glow_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_glow_NULL },
276 { 0, NULL, 0, 0, 0, NULL }
279 static int
280 dissect_glow_Value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
281 offset = dissect_ber_choice(actx, tree, tvb, offset,
282 Value_choice, hf_index, ett_glow_Value,
283 NULL);
285 return offset;
289 static const value_string glow_MinMax_vals[] = {
290 { 0, "integer" },
291 { 1, "real" },
292 { 2, "null" },
293 { 0, NULL }
296 static const ber_choice_t MinMax_choice[] = {
297 { 0, &hf_glow_integer , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_glow_Integer64 },
298 { 1, &hf_glow_real , BER_CLASS_UNI, BER_UNI_TAG_REAL, BER_FLAGS_NOOWNTAG, dissect_glow_REAL },
299 { 2, &hf_glow_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_glow_NULL },
300 { 0, NULL, 0, 0, 0, NULL }
303 static int
304 dissect_glow_MinMax(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
305 offset = dissect_ber_choice(actx, tree, tvb, offset,
306 MinMax_choice, hf_index, ett_glow_MinMax,
307 NULL);
309 return offset;
313 static const value_string glow_ParameterAccess_vals[] = {
314 { 0, "none" },
315 { 1, "read" },
316 { 2, "write" },
317 { 3, "readWrite" },
318 { 0, NULL }
322 static int
323 dissect_glow_ParameterAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
324 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
325 NULL);
327 return offset;
331 static const value_string glow_ParameterType_vals[] = {
332 { 0, "null" },
333 { 1, "integer" },
334 { 2, "real" },
335 { 3, "string" },
336 { 4, "boolean" },
337 { 5, "trigger" },
338 { 6, "enum" },
339 { 7, "octets" },
340 { 0, NULL }
344 static int
345 dissect_glow_ParameterType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
346 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
347 NULL);
349 return offset;
353 static const ber_sequence_t StringIntegerPair_U_sequence[] = {
354 { &hf_glow_entryString , BER_CLASS_CON, 0, 0, dissect_glow_EmberString },
355 { &hf_glow_entryInteger , BER_CLASS_CON, 1, 0, dissect_glow_Integer32 },
356 { NULL, 0, 0, 0, NULL }
359 static int
360 dissect_glow_StringIntegerPair_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
361 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
362 StringIntegerPair_U_sequence, hf_index, ett_glow_StringIntegerPair_U);
364 return offset;
369 static int
370 dissect_glow_StringIntegerPair(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
371 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
372 hf_index, BER_CLASS_APP, 7, true, dissect_glow_StringIntegerPair_U);
374 return offset;
378 static const ber_sequence_t SEQUENCE_OF_StringIntegerPair_sequence_of[1] = {
379 { &hf_glow__untag_item , BER_CLASS_CON, 0, 0, dissect_glow_StringIntegerPair },
382 static int
383 dissect_glow_SEQUENCE_OF_StringIntegerPair(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
384 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
385 SEQUENCE_OF_StringIntegerPair_sequence_of, hf_index, ett_glow_SEQUENCE_OF_StringIntegerPair);
387 return offset;
392 static int
393 dissect_glow_StringIntegerCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
394 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
395 hf_index, BER_CLASS_APP, 8, true, dissect_glow_SEQUENCE_OF_StringIntegerPair);
397 return offset;
401 static const value_string glow_StreamFormat_vals[] = {
402 { 0, "unsignedInt8" },
403 { 2, "unsignedInt16BigEndian" },
404 { 3, "unsignedInt16LittleEndian" },
405 { 4, "unsignedInt32BigEndian" },
406 { 5, "unsignedInt32LittleEndian" },
407 { 6, "unsignedInt64BigEndian" },
408 { 7, "unsignedInt64LittleEndian" },
409 { 8, "signedInt8" },
410 { 10, "signedInt16BigEndian" },
411 { 11, "signedInt16LittleEndian" },
412 { 12, "signedInt32BigEndian" },
413 { 13, "signedInt32LittleEndian" },
414 { 14, "signedInt64BigEndian" },
415 { 15, "signedInt64LittleEndian" },
416 { 20, "ieeeFloat32BigEndian" },
417 { 21, "ieeeFloat32LittleEndian" },
418 { 22, "ieeeFloat64BigEndian" },
419 { 23, "ieeeFloat64LittleEndian" },
420 { 0, NULL }
424 static int
425 dissect_glow_StreamFormat(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
426 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
427 NULL);
429 return offset;
433 static const ber_sequence_t StreamDescription_U_sequence[] = {
434 { &hf_glow_streamFormat , BER_CLASS_CON, 0, 0, dissect_glow_StreamFormat },
435 { &hf_glow_offset , BER_CLASS_CON, 1, 0, dissect_glow_Integer32 },
436 { NULL, 0, 0, 0, NULL }
439 static int
440 dissect_glow_StreamDescription_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
441 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
442 StreamDescription_U_sequence, hf_index, ett_glow_StreamDescription_U);
444 return offset;
449 static int
450 dissect_glow_StreamDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
451 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
452 hf_index, BER_CLASS_APP, 12, true, dissect_glow_StreamDescription_U);
454 return offset;
459 static int
460 dissect_glow_RELATIVE_OID(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
461 offset = dissect_ber_relative_oid(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
463 return offset;
467 static const ber_sequence_t ParameterContents_set[] = {
468 { &hf_glow_identifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
469 { &hf_glow_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
470 { &hf_glow_value , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_Value },
471 { &hf_glow_minimum , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_MinMax },
472 { &hf_glow_maximum , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_MinMax },
473 { &hf_glow_access , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_glow_ParameterAccess },
474 { &hf_glow_format , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
475 { &hf_glow_enumeration , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
476 { &hf_glow_factor , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
477 { &hf_glow_isOnline , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_glow_BOOLEAN },
478 { &hf_glow_formula , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
479 { &hf_glow_step , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
480 { &hf_glow_default , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_Value },
481 { &hf_glow_type , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_glow_ParameterType },
482 { &hf_glow_streamIdentifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
483 { &hf_glow_enumMap , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_glow_StringIntegerCollection },
484 { &hf_glow_streamDescriptor, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL, dissect_glow_StreamDescription },
485 { &hf_glow_schemaIdentifiers, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
486 { &hf_glow_templateReference, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL, dissect_glow_RELATIVE_OID },
487 { NULL, 0, 0, 0, NULL }
490 static int
491 dissect_glow_ParameterContents(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
492 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
493 ParameterContents_set, hf_index, ett_glow_ParameterContents);
495 return offset;
499 static const ber_sequence_t NodeContents_set[] = {
500 { &hf_glow_identifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
501 { &hf_glow_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
502 { &hf_glow_isRoot , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_BOOLEAN },
503 { &hf_glow_isOnline , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_glow_BOOLEAN },
504 { &hf_glow_schemaIdentifiers, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
505 { &hf_glow_templateReference, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_glow_RELATIVE_OID },
506 { NULL, 0, 0, 0, NULL }
509 static int
510 dissect_glow_NodeContents(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
511 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
512 NodeContents_set, hf_index, ett_glow_NodeContents);
514 return offset;
518 static const ber_sequence_t Node_U_sequence[] = {
519 { &hf_glow_number , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
520 { &hf_glow_contents_01 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_NodeContents },
521 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
522 { NULL, 0, 0, 0, NULL }
525 static int
526 dissect_glow_Node_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
527 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
528 Node_U_sequence, hf_index, ett_glow_Node_U);
530 return offset;
535 static int
536 dissect_glow_Node(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
537 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
538 hf_index, BER_CLASS_APP, 3, true, dissect_glow_Node_U);
540 return offset;
544 static const value_string glow_CommandType_vals[] = {
545 { 30, "subscribe" },
546 { 31, "unsubscribe" },
547 { 32, "getDirectory" },
548 { 33, "invoke" },
549 { 0, NULL }
553 static int
554 dissect_glow_CommandType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
555 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
556 NULL);
558 return offset;
562 static const value_string glow_FieldFlags_vals[] = {
563 { -2, "sparse" },
564 { -1, "all" },
565 { 0, "default" },
566 { 1, "identifier" },
567 { 2, "description" },
568 { 3, "tree" },
569 { 4, "value" },
570 { 5, "connections" },
571 { 0, NULL }
575 static int
576 dissect_glow_FieldFlags(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
577 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
578 NULL);
580 return offset;
584 static const ber_sequence_t Tuple_sequence_of[1] = {
585 { &hf_glow_Tuple_item , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_glow_Value },
588 static int
589 dissect_glow_Tuple(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
590 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
591 Tuple_sequence_of, hf_index, ett_glow_Tuple);
593 return offset;
597 static const ber_sequence_t Invocation_U_sequence[] = {
598 { &hf_glow_invocationId , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
599 { &hf_glow_arguments_01 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_Tuple },
600 { NULL, 0, 0, 0, NULL }
603 static int
604 dissect_glow_Invocation_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
605 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
606 Invocation_U_sequence, hf_index, ett_glow_Invocation_U);
608 return offset;
613 static int
614 dissect_glow_Invocation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
615 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
616 hf_index, BER_CLASS_APP, 22, true, dissect_glow_Invocation_U);
618 return offset;
622 static const value_string glow_T_options_vals[] = {
623 { 1, "dirFieldMask" },
624 { 2, "invocation" },
625 { 0, NULL }
628 static const ber_choice_t T_options_choice[] = {
629 { 1, &hf_glow_dirFieldMask , BER_CLASS_CON, 1, 0, dissect_glow_FieldFlags },
630 { 2, &hf_glow_invocation , BER_CLASS_CON, 2, 0, dissect_glow_Invocation },
631 { 0, NULL, 0, 0, 0, NULL }
634 static int
635 dissect_glow_T_options(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
636 offset = dissect_ber_choice(actx, tree, tvb, offset,
637 T_options_choice, hf_index, ett_glow_T_options,
638 NULL);
640 return offset;
644 static const ber_sequence_t Command_U_sequence[] = {
645 { &hf_glow_number_01 , BER_CLASS_CON, 0, 0, dissect_glow_CommandType },
646 { &hf_glow_options , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_glow_T_options },
647 { NULL, 0, 0, 0, NULL }
650 static int
651 dissect_glow_Command_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
652 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
653 Command_U_sequence, hf_index, ett_glow_Command_U);
655 return offset;
660 static int
661 dissect_glow_Command(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
662 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
663 hf_index, BER_CLASS_APP, 2, true, dissect_glow_Command_U);
665 return offset;
669 static const value_string glow_MatrixType_vals[] = {
670 { 0, "oneToN" },
671 { 1, "oneToOne" },
672 { 2, "nToN" },
673 { 0, NULL }
677 static int
678 dissect_glow_MatrixType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
679 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
680 NULL);
682 return offset;
686 static const value_string glow_MatrixAddressingMode_vals[] = {
687 { 0, "linear" },
688 { 1, "nonLinear" },
689 { 0, NULL }
693 static int
694 dissect_glow_MatrixAddressingMode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
695 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
696 NULL);
698 return offset;
702 static const value_string glow_ParametersLocation_vals[] = {
703 { 0, "basePath" },
704 { 1, "inline" },
705 { 0, NULL }
708 static const ber_choice_t ParametersLocation_choice[] = {
709 { 0, &hf_glow_basePath , BER_CLASS_UNI, BER_UNI_TAG_RELATIVE_OID, BER_FLAGS_NOOWNTAG, dissect_glow_RELATIVE_OID },
710 { 1, &hf_glow_inline , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_glow_Integer32 },
711 { 0, NULL, 0, 0, 0, NULL }
714 static int
715 dissect_glow_ParametersLocation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
716 offset = dissect_ber_choice(actx, tree, tvb, offset,
717 ParametersLocation_choice, hf_index, ett_glow_ParametersLocation,
718 NULL);
720 return offset;
724 static const ber_sequence_t Label_U_sequence[] = {
725 { &hf_glow_basePath , BER_CLASS_CON, 0, 0, dissect_glow_RELATIVE_OID },
726 { &hf_glow_description , BER_CLASS_CON, 1, 0, dissect_glow_EmberString },
727 { NULL, 0, 0, 0, NULL }
730 static int
731 dissect_glow_Label_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
732 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
733 Label_U_sequence, hf_index, ett_glow_Label_U);
735 return offset;
740 static int
741 dissect_glow_Label(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
742 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
743 hf_index, BER_CLASS_APP, 18, true, dissect_glow_Label_U);
745 return offset;
749 static const ber_sequence_t LabelCollection_sequence_of[1] = {
750 { &hf_glow_LabelCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Label },
753 static int
754 dissect_glow_LabelCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
755 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
756 LabelCollection_sequence_of, hf_index, ett_glow_LabelCollection);
758 return offset;
762 static const ber_sequence_t MatrixContents_set[] = {
763 { &hf_glow_identifier , BER_CLASS_CON, 0, 0, dissect_glow_EmberString },
764 { &hf_glow_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
765 { &hf_glow_type_01 , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_MatrixType },
766 { &hf_glow_addressingMode , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_glow_MatrixAddressingMode },
767 { &hf_glow_targetCount , BER_CLASS_CON, 4, 0, dissect_glow_Integer32 },
768 { &hf_glow_sourceCount , BER_CLASS_CON, 5, 0, dissect_glow_Integer32 },
769 { &hf_glow_maximumTotalConnects, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
770 { &hf_glow_maximumConnectsPerTarget, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
771 { &hf_glow_parametersLocation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_ParametersLocation },
772 { &hf_glow_gainParameterNumber, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_glow_Integer32 },
773 { &hf_glow_labels , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_glow_LabelCollection },
774 { &hf_glow_schemaIdentifiers, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
775 { &hf_glow_templateReference, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_glow_RELATIVE_OID },
776 { NULL, 0, 0, 0, NULL }
779 static int
780 dissect_glow_MatrixContents(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
781 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
782 MatrixContents_set, hf_index, ett_glow_MatrixContents);
784 return offset;
788 static const ber_sequence_t Signal_sequence[] = {
789 { &hf_glow_number , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
790 { NULL, 0, 0, 0, NULL }
793 static int
794 dissect_glow_Signal(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
795 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
796 Signal_sequence, hf_index, ett_glow_Signal);
798 return offset;
803 static int
804 dissect_glow_Target(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
805 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
806 hf_index, BER_CLASS_APP, 14, true, dissect_glow_Signal);
808 return offset;
812 static const ber_sequence_t TargetCollection_sequence_of[1] = {
813 { &hf_glow_TargetCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Target },
816 static int
817 dissect_glow_TargetCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
818 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
819 TargetCollection_sequence_of, hf_index, ett_glow_TargetCollection);
821 return offset;
826 static int
827 dissect_glow_Source(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
828 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
829 hf_index, BER_CLASS_APP, 15, true, dissect_glow_Signal);
831 return offset;
835 static const ber_sequence_t SourceCollection_sequence_of[1] = {
836 { &hf_glow_SourceCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Source },
839 static int
840 dissect_glow_SourceCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
841 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
842 SourceCollection_sequence_of, hf_index, ett_glow_SourceCollection);
844 return offset;
849 static int
850 dissect_glow_PackedNumbers(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
851 offset = dissect_ber_relative_oid(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
853 return offset;
857 static const value_string glow_ConnectionOperation_vals[] = {
858 { 0, "absolute" },
859 { 1, "connect" },
860 { 2, "disconnect" },
861 { 0, NULL }
865 static int
866 dissect_glow_ConnectionOperation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
867 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
868 NULL);
870 return offset;
874 static const value_string glow_ConnectionDisposition_vals[] = {
875 { 0, "tally" },
876 { 1, "modified" },
877 { 2, "pending" },
878 { 3, "locked" },
879 { 0, NULL }
883 static int
884 dissect_glow_ConnectionDisposition(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
885 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
886 NULL);
888 return offset;
892 static const ber_sequence_t Connection_U_sequence[] = {
893 { &hf_glow_target , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
894 { &hf_glow_sources , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_PackedNumbers },
895 { &hf_glow_operation , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ConnectionOperation },
896 { &hf_glow_disposition , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_glow_ConnectionDisposition },
897 { NULL, 0, 0, 0, NULL }
900 static int
901 dissect_glow_Connection_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
902 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
903 Connection_U_sequence, hf_index, ett_glow_Connection_U);
905 return offset;
910 static int
911 dissect_glow_Connection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
912 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
913 hf_index, BER_CLASS_APP, 16, true, dissect_glow_Connection_U);
915 return offset;
919 static const ber_sequence_t ConnectionCollection_sequence_of[1] = {
920 { &hf_glow_ConnectionCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Connection },
923 static int
924 dissect_glow_ConnectionCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
925 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
926 ConnectionCollection_sequence_of, hf_index, ett_glow_ConnectionCollection);
928 return offset;
932 static const ber_sequence_t Matrix_U_sequence[] = {
933 { &hf_glow_number , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
934 { &hf_glow_contents_02 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_MatrixContents },
935 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
936 { &hf_glow_targetList , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_glow_TargetCollection },
937 { &hf_glow_sourceList , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_glow_SourceCollection },
938 { &hf_glow_connections , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_glow_ConnectionCollection },
939 { NULL, 0, 0, 0, NULL }
942 static int
943 dissect_glow_Matrix_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
944 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
945 Matrix_U_sequence, hf_index, ett_glow_Matrix_U);
947 return offset;
952 static int
953 dissect_glow_Matrix(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
954 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
955 hf_index, BER_CLASS_APP, 13, true, dissect_glow_Matrix_U);
957 return offset;
961 static const ber_sequence_t TupleItemDescription_U_sequence[] = {
962 { &hf_glow_type , BER_CLASS_CON, 0, 0, dissect_glow_ParameterType },
963 { &hf_glow_name , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
964 { NULL, 0, 0, 0, NULL }
967 static int
968 dissect_glow_TupleItemDescription_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
969 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
970 TupleItemDescription_U_sequence, hf_index, ett_glow_TupleItemDescription_U);
972 return offset;
977 static int
978 dissect_glow_TupleItemDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
979 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
980 hf_index, BER_CLASS_APP, 21, true, dissect_glow_TupleItemDescription_U);
982 return offset;
986 static const ber_sequence_t TupleDescription_sequence_of[1] = {
987 { &hf_glow_TupleDescription_item, BER_CLASS_CON, 0, 0, dissect_glow_TupleItemDescription },
990 static int
991 dissect_glow_TupleDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
992 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
993 TupleDescription_sequence_of, hf_index, ett_glow_TupleDescription);
995 return offset;
999 static const ber_sequence_t FunctionContents_set[] = {
1000 { &hf_glow_identifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
1001 { &hf_glow_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
1002 { &hf_glow_arguments , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_TupleDescription },
1003 { &hf_glow_result , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_glow_TupleDescription },
1004 { &hf_glow_templateReference, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_glow_RELATIVE_OID },
1005 { NULL, 0, 0, 0, NULL }
1008 static int
1009 dissect_glow_FunctionContents(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1010 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1011 FunctionContents_set, hf_index, ett_glow_FunctionContents);
1013 return offset;
1017 static const ber_sequence_t Function_U_sequence[] = {
1018 { &hf_glow_number , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
1019 { &hf_glow_contents_03 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_FunctionContents },
1020 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
1021 { NULL, 0, 0, 0, NULL }
1024 static int
1025 dissect_glow_Function_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1026 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1027 Function_U_sequence, hf_index, ett_glow_Function_U);
1029 return offset;
1034 static int
1035 dissect_glow_Function(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1036 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1037 hf_index, BER_CLASS_APP, 19, true, dissect_glow_Function_U);
1039 return offset;
1043 static const value_string glow_Element_vals[] = {
1044 { 1, "parameter" },
1045 { 3, "node" },
1046 { 2, "command" },
1047 { 13, "matrix" },
1048 { 19, "function" },
1049 { 24, "template" },
1050 { 0, NULL }
1053 static const ber_choice_t Element_choice[] = {
1054 { 1, &hf_glow_parameter , BER_CLASS_APP, 1, BER_FLAGS_NOOWNTAG, dissect_glow_Parameter },
1055 { 3, &hf_glow_node , BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_glow_Node },
1056 { 2, &hf_glow_command , BER_CLASS_APP, 2, BER_FLAGS_NOOWNTAG, dissect_glow_Command },
1057 { 13, &hf_glow_matrix , BER_CLASS_APP, 13, BER_FLAGS_NOOWNTAG, dissect_glow_Matrix },
1058 { 19, &hf_glow_function , BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_glow_Function },
1059 { 24, &hf_glow_template , BER_CLASS_APP, 24, BER_FLAGS_NOOWNTAG, dissect_glow_Template },
1060 { 0, NULL, 0, 0, 0, NULL }
1063 static int
1064 dissect_glow_Element(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1065 offset = dissect_ber_choice(actx, tree, tvb, offset,
1066 Element_choice, hf_index, ett_glow_Element,
1067 NULL);
1069 return offset;
1073 static const ber_sequence_t SEQUENCE_OF_Element_sequence_of[1] = {
1074 { &hf_glow__untag_item_01 , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_glow_Element },
1077 static int
1078 dissect_glow_SEQUENCE_OF_Element(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1079 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1080 SEQUENCE_OF_Element_sequence_of, hf_index, ett_glow_SEQUENCE_OF_Element);
1082 return offset;
1087 static int
1088 dissect_glow_ElementCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1089 // ElementCollection -> ElementCollection/_untag -> Element -> Node -> Node/_untag -> ElementCollection
1090 actx->pinfo->dissection_depth += 5;
1091 increment_dissection_depth(actx->pinfo);
1092 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1093 hf_index, BER_CLASS_APP, 4, true, dissect_glow_SEQUENCE_OF_Element);
1095 actx->pinfo->dissection_depth -= 5;
1096 decrement_dissection_depth(actx->pinfo);
1097 return offset;
1101 static const ber_sequence_t Parameter_U_sequence[] = {
1102 { &hf_glow_number , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
1103 { &hf_glow_contents , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_ParameterContents },
1104 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
1105 { NULL, 0, 0, 0, NULL }
1108 static int
1109 dissect_glow_Parameter_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1110 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1111 Parameter_U_sequence, hf_index, ett_glow_Parameter_U);
1113 return offset;
1118 static int
1119 dissect_glow_Parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1120 // Parameter -> Parameter/_untag -> ElementCollection -> ElementCollection/_untag -> Element -> Parameter
1121 actx->pinfo->dissection_depth += 5;
1122 increment_dissection_depth(actx->pinfo);
1123 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1124 hf_index, BER_CLASS_APP, 1, true, dissect_glow_Parameter_U);
1126 actx->pinfo->dissection_depth -= 5;
1127 decrement_dissection_depth(actx->pinfo);
1128 return offset;
1132 static const value_string glow_TemplateElement_vals[] = {
1133 { 1, "parameter" },
1134 { 3, "node" },
1135 { 13, "matrix" },
1136 { 19, "function" },
1137 { 0, NULL }
1140 static const ber_choice_t TemplateElement_choice[] = {
1141 { 1, &hf_glow_parameter , BER_CLASS_APP, 1, BER_FLAGS_NOOWNTAG, dissect_glow_Parameter },
1142 { 3, &hf_glow_node , BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_glow_Node },
1143 { 13, &hf_glow_matrix , BER_CLASS_APP, 13, BER_FLAGS_NOOWNTAG, dissect_glow_Matrix },
1144 { 19, &hf_glow_function , BER_CLASS_APP, 19, BER_FLAGS_NOOWNTAG, dissect_glow_Function },
1145 { 0, NULL, 0, 0, 0, NULL }
1148 static int
1149 dissect_glow_TemplateElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1150 offset = dissect_ber_choice(actx, tree, tvb, offset,
1151 TemplateElement_choice, hf_index, ett_glow_TemplateElement,
1152 NULL);
1154 return offset;
1158 static const ber_sequence_t Template_U_set[] = {
1159 { &hf_glow_number , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
1160 { &hf_glow_element , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_TemplateElement },
1161 { &hf_glow_description , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
1162 { NULL, 0, 0, 0, NULL }
1165 static int
1166 dissect_glow_Template_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1167 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1168 Template_U_set, hf_index, ett_glow_Template_U);
1170 return offset;
1175 static int
1176 dissect_glow_Template(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1177 // Template -> Template/_untag -> TemplateElement -> Parameter -> Parameter/_untag -> ElementCollection -> ElementCollection/_untag -> Element -> Template
1178 actx->pinfo->dissection_depth += 8;
1179 increment_dissection_depth(actx->pinfo);
1180 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1181 hf_index, BER_CLASS_APP, 24, true, dissect_glow_Template_U);
1183 actx->pinfo->dissection_depth -= 8;
1184 decrement_dissection_depth(actx->pinfo);
1185 return offset;
1189 static const ber_sequence_t QualifiedTemplate_U_set[] = {
1190 { &hf_glow_path , BER_CLASS_CON, 0, 0, dissect_glow_RELATIVE_OID },
1191 { &hf_glow_element , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_glow_TemplateElement },
1192 { &hf_glow_description , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_EmberString },
1193 { NULL, 0, 0, 0, NULL }
1196 static int
1197 dissect_glow_QualifiedTemplate_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1198 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1199 QualifiedTemplate_U_set, hf_index, ett_glow_QualifiedTemplate_U);
1201 return offset;
1206 static int
1207 dissect_glow_QualifiedTemplate(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1208 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1209 hf_index, BER_CLASS_APP, 25, true, dissect_glow_QualifiedTemplate_U);
1211 return offset;
1215 static const ber_sequence_t QualifiedParameter_U_sequence[] = {
1216 { &hf_glow_path , BER_CLASS_CON, 0, 0, dissect_glow_RELATIVE_OID },
1217 { &hf_glow_contents , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_ParameterContents },
1218 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
1219 { NULL, 0, 0, 0, NULL }
1222 static int
1223 dissect_glow_QualifiedParameter_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1224 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1225 QualifiedParameter_U_sequence, hf_index, ett_glow_QualifiedParameter_U);
1227 return offset;
1232 static int
1233 dissect_glow_QualifiedParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1234 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1235 hf_index, BER_CLASS_APP, 9, true, dissect_glow_QualifiedParameter_U);
1237 return offset;
1241 static const ber_sequence_t QualifiedNode_U_sequence[] = {
1242 { &hf_glow_path , BER_CLASS_CON, 0, 0, dissect_glow_RELATIVE_OID },
1243 { &hf_glow_contents_01 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_NodeContents },
1244 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
1245 { NULL, 0, 0, 0, NULL }
1248 static int
1249 dissect_glow_QualifiedNode_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1250 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1251 QualifiedNode_U_sequence, hf_index, ett_glow_QualifiedNode_U);
1253 return offset;
1258 static int
1259 dissect_glow_QualifiedNode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1260 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1261 hf_index, BER_CLASS_APP, 10, true, dissect_glow_QualifiedNode_U);
1263 return offset;
1267 static const ber_sequence_t QualifiedMatrix_U_sequence[] = {
1268 { &hf_glow_path , BER_CLASS_CON, 0, 0, dissect_glow_RELATIVE_OID },
1269 { &hf_glow_contents_02 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_MatrixContents },
1270 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
1271 { &hf_glow_targetList , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_glow_TargetCollection },
1272 { &hf_glow_sourceList , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_glow_SourceCollection },
1273 { &hf_glow_connections , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_glow_ConnectionCollection },
1274 { NULL, 0, 0, 0, NULL }
1277 static int
1278 dissect_glow_QualifiedMatrix_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1279 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1280 QualifiedMatrix_U_sequence, hf_index, ett_glow_QualifiedMatrix_U);
1282 return offset;
1287 static int
1288 dissect_glow_QualifiedMatrix(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1289 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1290 hf_index, BER_CLASS_APP, 17, true, dissect_glow_QualifiedMatrix_U);
1292 return offset;
1296 static const ber_sequence_t QualifiedFunction_U_sequence[] = {
1297 { &hf_glow_path , BER_CLASS_CON, 0, 0, dissect_glow_RELATIVE_OID },
1298 { &hf_glow_contents_03 , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_FunctionContents },
1299 { &hf_glow_children , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_ElementCollection },
1300 { NULL, 0, 0, 0, NULL }
1303 static int
1304 dissect_glow_QualifiedFunction_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1305 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1306 QualifiedFunction_U_sequence, hf_index, ett_glow_QualifiedFunction_U);
1308 return offset;
1313 static int
1314 dissect_glow_QualifiedFunction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1315 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1316 hf_index, BER_CLASS_APP, 20, true, dissect_glow_QualifiedFunction_U);
1318 return offset;
1322 static const ber_sequence_t InvocationResult_U_sequence[] = {
1323 { &hf_glow_invocationId , BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
1324 { &hf_glow_success , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_glow_BOOLEAN },
1325 { &hf_glow_result_01 , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_glow_Tuple },
1326 { NULL, 0, 0, 0, NULL }
1329 static int
1330 dissect_glow_InvocationResult_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1331 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1332 InvocationResult_U_sequence, hf_index, ett_glow_InvocationResult_U);
1334 return offset;
1339 static int
1340 dissect_glow_InvocationResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1341 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1342 hf_index, BER_CLASS_APP, 23, true, dissect_glow_InvocationResult_U);
1344 return offset;
1348 static const ber_sequence_t StreamEntry_U_sequence[] = {
1349 { &hf_glow_streamIdentifier, BER_CLASS_CON, 0, 0, dissect_glow_Integer32 },
1350 { &hf_glow_streamValue , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_glow_Value },
1351 { NULL, 0, 0, 0, NULL }
1354 static int
1355 dissect_glow_StreamEntry_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1356 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1357 StreamEntry_U_sequence, hf_index, ett_glow_StreamEntry_U);
1359 return offset;
1364 static int
1365 dissect_glow_StreamEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1366 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1367 hf_index, BER_CLASS_APP, 5, true, dissect_glow_StreamEntry_U);
1369 return offset;
1373 static const ber_sequence_t SEQUENCE_OF_StreamEntry_sequence_of[1] = {
1374 { &hf_glow__untag_item_02 , BER_CLASS_CON, 0, 0, dissect_glow_StreamEntry },
1377 static int
1378 dissect_glow_SEQUENCE_OF_StreamEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1380 SEQUENCE_OF_StreamEntry_sequence_of, hf_index, ett_glow_SEQUENCE_OF_StreamEntry);
1382 return offset;
1387 static int
1388 dissect_glow_StreamCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1389 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1390 hf_index, BER_CLASS_APP, 6, true, dissect_glow_SEQUENCE_OF_StreamEntry);
1392 return offset;
1396 static const value_string glow_RootElement_vals[] = {
1397 { 0, "element" },
1398 { 1, "qualifiedParameter" },
1399 { 2, "qualifiedNode" },
1400 { 3, "qualifiedMatrix" },
1401 { 4, "qualifiedFunction" },
1402 { 5, "qualifiedTemplate" },
1403 { 0, NULL }
1406 static const ber_choice_t RootElement_choice[] = {
1407 { 0, &hf_glow_element_01 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_glow_Element },
1408 { 1, &hf_glow_qualifiedParameter, BER_CLASS_APP, 9, BER_FLAGS_NOOWNTAG, dissect_glow_QualifiedParameter },
1409 { 2, &hf_glow_qualifiedNode , BER_CLASS_APP, 10, BER_FLAGS_NOOWNTAG, dissect_glow_QualifiedNode },
1410 { 3, &hf_glow_qualifiedMatrix, BER_CLASS_APP, 17, BER_FLAGS_NOOWNTAG, dissect_glow_QualifiedMatrix },
1411 { 4, &hf_glow_qualifiedFunction, BER_CLASS_APP, 20, BER_FLAGS_NOOWNTAG, dissect_glow_QualifiedFunction },
1412 { 5, &hf_glow_qualifiedTemplate, BER_CLASS_APP, 25, BER_FLAGS_NOOWNTAG, dissect_glow_QualifiedTemplate },
1413 { 0, NULL, 0, 0, 0, NULL }
1416 static int
1417 dissect_glow_RootElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1418 offset = dissect_ber_choice(actx, tree, tvb, offset,
1419 RootElement_choice, hf_index, ett_glow_RootElement,
1420 NULL);
1422 return offset;
1426 static const ber_sequence_t SEQUENCE_OF_RootElement_sequence_of[1] = {
1427 { &hf_glow__untag_item_03 , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_glow_RootElement },
1430 static int
1431 dissect_glow_SEQUENCE_OF_RootElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1432 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1433 SEQUENCE_OF_RootElement_sequence_of, hf_index, ett_glow_SEQUENCE_OF_RootElement);
1435 return offset;
1440 static int
1441 dissect_glow_RootElementCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1442 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1443 hf_index, BER_CLASS_APP, 11, true, dissect_glow_SEQUENCE_OF_RootElement);
1445 return offset;
1449 static const value_string glow_Root_U_vals[] = {
1450 { 11, "elements" },
1451 { 6, "streams" },
1452 { 23, "invocationResult" },
1453 { 0, NULL }
1456 static const ber_choice_t Root_U_choice[] = {
1457 { 11, &hf_glow_elements , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_glow_RootElementCollection },
1458 { 6, &hf_glow_streams , BER_CLASS_APP, 6, BER_FLAGS_NOOWNTAG, dissect_glow_StreamCollection },
1459 { 23, &hf_glow_invocationResult, BER_CLASS_APP, 23, BER_FLAGS_NOOWNTAG, dissect_glow_InvocationResult },
1460 { 0, NULL, 0, 0, 0, NULL }
1463 static int
1464 dissect_glow_Root_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1465 offset = dissect_ber_choice(actx, tree, tvb, offset,
1466 Root_U_choice, hf_index, ett_glow_Root_U,
1467 NULL);
1469 return offset;
1474 static int
1475 dissect_glow_Root(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1476 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1477 hf_index, BER_CLASS_APP, 0, false, dissect_glow_Root_U);
1479 return offset;
1482 /*--- PDUs ---*/
1484 static int dissect_Root_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1485 int offset = 0;
1486 asn1_ctx_t asn1_ctx;
1487 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1488 offset = dissect_glow_Root(false, tvb, offset, &asn1_ctx, tree, hf_glow_Root_PDU);
1489 return offset;
1493 static int
1494 dissect_glow(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1496 proto_item *glow_item = NULL;
1497 proto_tree *glow_tree = NULL;
1499 /* make entry in the Protocol column on summary display */
1500 col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME);
1502 /* create the glow protocol tree */
1503 glow_item = proto_tree_add_item(tree, proto_glow, tvb, 0, -1, ENC_NA);
1504 glow_tree = proto_item_add_subtree(glow_item, ett_glow);
1506 dissect_Root_PDU(tvb, pinfo, glow_tree, data);
1508 return tvb_captured_length(tvb);
1511 void proto_register_glow(void) {
1513 /* List of fields */
1514 static hf_register_info hf[] = {
1516 { &hf_glow_Root_PDU,
1517 { "Root", "glow.Root",
1518 FT_UINT32, BASE_DEC, VALS(glow_Root_U_vals), 0,
1519 NULL, HFILL }},
1520 { &hf_glow_number,
1521 { "number", "glow.number",
1522 FT_INT32, BASE_DEC, NULL, 0,
1523 "Integer32", HFILL }},
1524 { &hf_glow_element,
1525 { "element", "glow.element",
1526 FT_UINT32, BASE_DEC, VALS(glow_TemplateElement_vals), 0,
1527 "TemplateElement", HFILL }},
1528 { &hf_glow_description,
1529 { "description", "glow.description",
1530 FT_STRING, BASE_NONE, NULL, 0,
1531 "EmberString", HFILL }},
1532 { &hf_glow_path,
1533 { "path", "glow.path",
1534 FT_REL_OID, BASE_NONE, NULL, 0,
1535 "RELATIVE_OID", HFILL }},
1536 { &hf_glow_parameter,
1537 { "parameter", "glow.parameter_element",
1538 FT_NONE, BASE_NONE, NULL, 0,
1539 NULL, HFILL }},
1540 { &hf_glow_node,
1541 { "node", "glow.node_element",
1542 FT_NONE, BASE_NONE, NULL, 0,
1543 NULL, HFILL }},
1544 { &hf_glow_matrix,
1545 { "matrix", "glow.matrix_element",
1546 FT_NONE, BASE_NONE, NULL, 0,
1547 NULL, HFILL }},
1548 { &hf_glow_function,
1549 { "function", "glow.function_element",
1550 FT_NONE, BASE_NONE, NULL, 0,
1551 NULL, HFILL }},
1552 { &hf_glow_contents,
1553 { "contents", "glow.contents_element",
1554 FT_NONE, BASE_NONE, NULL, 0,
1555 "ParameterContents", HFILL }},
1556 { &hf_glow_children,
1557 { "children", "glow.children",
1558 FT_UINT32, BASE_DEC, NULL, 0,
1559 "ElementCollection", HFILL }},
1560 { &hf_glow_identifier,
1561 { "identifier", "glow.identifier",
1562 FT_STRING, BASE_NONE, NULL, 0,
1563 "EmberString", HFILL }},
1564 { &hf_glow_value,
1565 { "value", "glow.value",
1566 FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1567 NULL, HFILL }},
1568 { &hf_glow_minimum,
1569 { "minimum", "glow.minimum",
1570 FT_UINT32, BASE_DEC, VALS(glow_MinMax_vals), 0,
1571 "MinMax", HFILL }},
1572 { &hf_glow_maximum,
1573 { "maximum", "glow.maximum",
1574 FT_UINT32, BASE_DEC, VALS(glow_MinMax_vals), 0,
1575 "MinMax", HFILL }},
1576 { &hf_glow_access,
1577 { "access", "glow.access",
1578 FT_INT32, BASE_DEC, VALS(glow_ParameterAccess_vals), 0,
1579 "ParameterAccess", HFILL }},
1580 { &hf_glow_format,
1581 { "format", "glow.format",
1582 FT_STRING, BASE_NONE, NULL, 0,
1583 "EmberString", HFILL }},
1584 { &hf_glow_enumeration,
1585 { "enumeration", "glow.enumeration",
1586 FT_STRING, BASE_NONE, NULL, 0,
1587 "EmberString", HFILL }},
1588 { &hf_glow_factor,
1589 { "factor", "glow.factor",
1590 FT_INT32, BASE_DEC, NULL, 0,
1591 "Integer32", HFILL }},
1592 { &hf_glow_isOnline,
1593 { "isOnline", "glow.isOnline",
1594 FT_BOOLEAN, BASE_NONE, NULL, 0,
1595 "BOOLEAN", HFILL }},
1596 { &hf_glow_formula,
1597 { "formula", "glow.formula",
1598 FT_STRING, BASE_NONE, NULL, 0,
1599 "EmberString", HFILL }},
1600 { &hf_glow_step,
1601 { "step", "glow.step",
1602 FT_INT32, BASE_DEC, NULL, 0,
1603 "Integer32", HFILL }},
1604 { &hf_glow_default,
1605 { "default", "glow.default",
1606 FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1607 "Value", HFILL }},
1608 { &hf_glow_type,
1609 { "type", "glow.type",
1610 FT_INT32, BASE_DEC, VALS(glow_ParameterType_vals), 0,
1611 "ParameterType", HFILL }},
1612 { &hf_glow_streamIdentifier,
1613 { "streamIdentifier", "glow.streamIdentifier",
1614 FT_INT32, BASE_DEC, NULL, 0,
1615 "Integer32", HFILL }},
1616 { &hf_glow_enumMap,
1617 { "enumMap", "glow.enumMap",
1618 FT_UINT32, BASE_DEC, NULL, 0,
1619 "StringIntegerCollection", HFILL }},
1620 { &hf_glow_streamDescriptor,
1621 { "streamDescriptor", "glow.streamDescriptor_element",
1622 FT_NONE, BASE_NONE, NULL, 0,
1623 "StreamDescription", HFILL }},
1624 { &hf_glow_schemaIdentifiers,
1625 { "schemaIdentifiers", "glow.schemaIdentifiers",
1626 FT_STRING, BASE_NONE, NULL, 0,
1627 "EmberString", HFILL }},
1628 { &hf_glow_templateReference,
1629 { "templateReference", "glow.templateReference",
1630 FT_REL_OID, BASE_NONE, NULL, 0,
1631 "RELATIVE_OID", HFILL }},
1632 { &hf_glow_integer,
1633 { "integer", "glow.integer",
1634 FT_INT64, BASE_DEC, NULL, 0,
1635 "Integer64", HFILL }},
1636 { &hf_glow_real,
1637 { "real", "glow.real",
1638 FT_DOUBLE, BASE_NONE, NULL, 0,
1639 NULL, HFILL }},
1640 { &hf_glow_string,
1641 { "string", "glow.string",
1642 FT_STRING, BASE_NONE, NULL, 0,
1643 "EmberString", HFILL }},
1644 { &hf_glow_boolean,
1645 { "boolean", "glow.boolean",
1646 FT_BOOLEAN, BASE_NONE, NULL, 0,
1647 NULL, HFILL }},
1648 { &hf_glow_octets,
1649 { "octets", "glow.octets",
1650 FT_BYTES, BASE_NONE, NULL, 0,
1651 "OCTET_STRING", HFILL }},
1652 { &hf_glow_null,
1653 { "null", "glow.null_element",
1654 FT_NONE, BASE_NONE, NULL, 0,
1655 NULL, HFILL }},
1656 { &hf_glow_entryString,
1657 { "entryString", "glow.entryString",
1658 FT_STRING, BASE_NONE, NULL, 0,
1659 "EmberString", HFILL }},
1660 { &hf_glow_entryInteger,
1661 { "entryInteger", "glow.entryInteger",
1662 FT_INT32, BASE_DEC, NULL, 0,
1663 "Integer32", HFILL }},
1664 { &hf_glow__untag_item,
1665 { "StringIntegerPair", "glow.StringIntegerPair_element",
1666 FT_NONE, BASE_NONE, NULL, 0,
1667 NULL, HFILL }},
1668 { &hf_glow_streamFormat,
1669 { "streamFormat", "glow.streamFormat",
1670 FT_INT32, BASE_DEC, VALS(glow_StreamFormat_vals), 0,
1671 NULL, HFILL }},
1672 { &hf_glow_offset,
1673 { "offset", "glow.offset",
1674 FT_INT32, BASE_DEC, NULL, 0,
1675 "Integer32", HFILL }},
1676 { &hf_glow_number_01,
1677 { "number", "glow.number",
1678 FT_INT32, BASE_DEC, VALS(glow_CommandType_vals), 0,
1679 "CommandType", HFILL }},
1680 { &hf_glow_options,
1681 { "options", "glow.options",
1682 FT_UINT32, BASE_DEC, VALS(glow_T_options_vals), 0,
1683 NULL, HFILL }},
1684 { &hf_glow_dirFieldMask,
1685 { "dirFieldMask", "glow.dirFieldMask",
1686 FT_INT32, BASE_DEC, VALS(glow_FieldFlags_vals), 0,
1687 "FieldFlags", HFILL }},
1688 { &hf_glow_invocation,
1689 { "invocation", "glow.invocation_element",
1690 FT_NONE, BASE_NONE, NULL, 0,
1691 NULL, HFILL }},
1692 { &hf_glow_contents_01,
1693 { "contents", "glow.contents_element",
1694 FT_NONE, BASE_NONE, NULL, 0,
1695 "NodeContents", HFILL }},
1696 { &hf_glow_isRoot,
1697 { "isRoot", "glow.isRoot",
1698 FT_BOOLEAN, BASE_NONE, NULL, 0,
1699 "BOOLEAN", HFILL }},
1700 { &hf_glow_contents_02,
1701 { "contents", "glow.contents_element",
1702 FT_NONE, BASE_NONE, NULL, 0,
1703 "MatrixContents", HFILL }},
1704 { &hf_glow_targetList,
1705 { "targetList", "glow.targetList",
1706 FT_UINT32, BASE_DEC, NULL, 0,
1707 "TargetCollection", HFILL }},
1708 { &hf_glow_sourceList,
1709 { "sourceList", "glow.sourceList",
1710 FT_UINT32, BASE_DEC, NULL, 0,
1711 "SourceCollection", HFILL }},
1712 { &hf_glow_connections,
1713 { "connections", "glow.connections",
1714 FT_UINT32, BASE_DEC, NULL, 0,
1715 "ConnectionCollection", HFILL }},
1716 { &hf_glow_type_01,
1717 { "type", "glow.type",
1718 FT_INT32, BASE_DEC, VALS(glow_MatrixType_vals), 0,
1719 "MatrixType", HFILL }},
1720 { &hf_glow_addressingMode,
1721 { "addressingMode", "glow.addressingMode",
1722 FT_INT32, BASE_DEC, VALS(glow_MatrixAddressingMode_vals), 0,
1723 "MatrixAddressingMode", HFILL }},
1724 { &hf_glow_targetCount,
1725 { "targetCount", "glow.targetCount",
1726 FT_INT32, BASE_DEC, NULL, 0,
1727 "Integer32", HFILL }},
1728 { &hf_glow_sourceCount,
1729 { "sourceCount", "glow.sourceCount",
1730 FT_INT32, BASE_DEC, NULL, 0,
1731 "Integer32", HFILL }},
1732 { &hf_glow_maximumTotalConnects,
1733 { "maximumTotalConnects", "glow.maximumTotalConnects",
1734 FT_INT32, BASE_DEC, NULL, 0,
1735 "Integer32", HFILL }},
1736 { &hf_glow_maximumConnectsPerTarget,
1737 { "maximumConnectsPerTarget", "glow.maximumConnectsPerTarget",
1738 FT_INT32, BASE_DEC, NULL, 0,
1739 "Integer32", HFILL }},
1740 { &hf_glow_parametersLocation,
1741 { "parametersLocation", "glow.parametersLocation",
1742 FT_UINT32, BASE_DEC, VALS(glow_ParametersLocation_vals), 0,
1743 NULL, HFILL }},
1744 { &hf_glow_gainParameterNumber,
1745 { "gainParameterNumber", "glow.gainParameterNumber",
1746 FT_INT32, BASE_DEC, NULL, 0,
1747 "Integer32", HFILL }},
1748 { &hf_glow_labels,
1749 { "labels", "glow.labels",
1750 FT_UINT32, BASE_DEC, NULL, 0,
1751 "LabelCollection", HFILL }},
1752 { &hf_glow_basePath,
1753 { "basePath", "glow.basePath",
1754 FT_REL_OID, BASE_NONE, NULL, 0,
1755 "RELATIVE_OID", HFILL }},
1756 { &hf_glow_inline,
1757 { "inline", "glow.inline",
1758 FT_INT32, BASE_DEC, NULL, 0,
1759 "Integer32", HFILL }},
1760 { &hf_glow_LabelCollection_item,
1761 { "Label", "glow.Label_element",
1762 FT_NONE, BASE_NONE, NULL, 0,
1763 NULL, HFILL }},
1764 { &hf_glow_TargetCollection_item,
1765 { "Target", "glow.Target_element",
1766 FT_NONE, BASE_NONE, NULL, 0,
1767 NULL, HFILL }},
1768 { &hf_glow_SourceCollection_item,
1769 { "Source", "glow.Source_element",
1770 FT_NONE, BASE_NONE, NULL, 0,
1771 NULL, HFILL }},
1772 { &hf_glow_ConnectionCollection_item,
1773 { "Connection", "glow.Connection_element",
1774 FT_NONE, BASE_NONE, NULL, 0,
1775 NULL, HFILL }},
1776 { &hf_glow_target,
1777 { "target", "glow.target",
1778 FT_INT32, BASE_DEC, NULL, 0,
1779 "Integer32", HFILL }},
1780 { &hf_glow_sources,
1781 { "sources", "glow.sources",
1782 FT_REL_OID, BASE_NONE, NULL, 0,
1783 "PackedNumbers", HFILL }},
1784 { &hf_glow_operation,
1785 { "operation", "glow.operation",
1786 FT_INT32, BASE_DEC, VALS(glow_ConnectionOperation_vals), 0,
1787 "ConnectionOperation", HFILL }},
1788 { &hf_glow_disposition,
1789 { "disposition", "glow.disposition",
1790 FT_INT32, BASE_DEC, VALS(glow_ConnectionDisposition_vals), 0,
1791 "ConnectionDisposition", HFILL }},
1792 { &hf_glow_contents_03,
1793 { "contents", "glow.contents_element",
1794 FT_NONE, BASE_NONE, NULL, 0,
1795 "FunctionContents", HFILL }},
1796 { &hf_glow_arguments,
1797 { "arguments", "glow.arguments",
1798 FT_UINT32, BASE_DEC, NULL, 0,
1799 "TupleDescription", HFILL }},
1800 { &hf_glow_result,
1801 { "result", "glow.result",
1802 FT_UINT32, BASE_DEC, NULL, 0,
1803 "TupleDescription", HFILL }},
1804 { &hf_glow_TupleDescription_item,
1805 { "TupleItemDescription", "glow.TupleItemDescription_element",
1806 FT_NONE, BASE_NONE, NULL, 0,
1807 NULL, HFILL }},
1808 { &hf_glow_name,
1809 { "name", "glow.name",
1810 FT_STRING, BASE_NONE, NULL, 0,
1811 "EmberString", HFILL }},
1812 { &hf_glow_invocationId,
1813 { "invocationId", "glow.invocationId",
1814 FT_INT32, BASE_DEC, NULL, 0,
1815 "Integer32", HFILL }},
1816 { &hf_glow_arguments_01,
1817 { "arguments", "glow.arguments",
1818 FT_UINT32, BASE_DEC, NULL, 0,
1819 "Tuple", HFILL }},
1820 { &hf_glow_Tuple_item,
1821 { "Value", "glow.Value",
1822 FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1823 NULL, HFILL }},
1824 { &hf_glow_success,
1825 { "success", "glow.success",
1826 FT_BOOLEAN, BASE_NONE, NULL, 0,
1827 "BOOLEAN", HFILL }},
1828 { &hf_glow_result_01,
1829 { "result", "glow.result",
1830 FT_UINT32, BASE_DEC, NULL, 0,
1831 "Tuple", HFILL }},
1832 { &hf_glow__untag_item_01,
1833 { "Element", "glow.Element",
1834 FT_UINT32, BASE_DEC, VALS(glow_Element_vals), 0,
1835 NULL, HFILL }},
1836 { &hf_glow_command,
1837 { "command", "glow.command_element",
1838 FT_NONE, BASE_NONE, NULL, 0,
1839 NULL, HFILL }},
1840 { &hf_glow_template,
1841 { "template", "glow.template_element",
1842 FT_NONE, BASE_NONE, NULL, 0,
1843 NULL, HFILL }},
1844 { &hf_glow_streamValue,
1845 { "streamValue", "glow.streamValue",
1846 FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1847 "Value", HFILL }},
1848 { &hf_glow__untag_item_02,
1849 { "StreamEntry", "glow.StreamEntry_element",
1850 FT_NONE, BASE_NONE, NULL, 0,
1851 NULL, HFILL }},
1852 { &hf_glow_elements,
1853 { "elements", "glow.elements",
1854 FT_UINT32, BASE_DEC, NULL, 0,
1855 "RootElementCollection", HFILL }},
1856 { &hf_glow_streams,
1857 { "streams", "glow.streams",
1858 FT_UINT32, BASE_DEC, NULL, 0,
1859 "StreamCollection", HFILL }},
1860 { &hf_glow_invocationResult,
1861 { "invocationResult", "glow.invocationResult_element",
1862 FT_NONE, BASE_NONE, NULL, 0,
1863 NULL, HFILL }},
1864 { &hf_glow__untag_item_03,
1865 { "RootElement", "glow.RootElement",
1866 FT_UINT32, BASE_DEC, VALS(glow_RootElement_vals), 0,
1867 NULL, HFILL }},
1868 { &hf_glow_element_01,
1869 { "element", "glow.element",
1870 FT_UINT32, BASE_DEC, VALS(glow_Element_vals), 0,
1871 NULL, HFILL }},
1872 { &hf_glow_qualifiedParameter,
1873 { "qualifiedParameter", "glow.qualifiedParameter_element",
1874 FT_NONE, BASE_NONE, NULL, 0,
1875 NULL, HFILL }},
1876 { &hf_glow_qualifiedNode,
1877 { "qualifiedNode", "glow.qualifiedNode_element",
1878 FT_NONE, BASE_NONE, NULL, 0,
1879 NULL, HFILL }},
1880 { &hf_glow_qualifiedMatrix,
1881 { "qualifiedMatrix", "glow.qualifiedMatrix_element",
1882 FT_NONE, BASE_NONE, NULL, 0,
1883 NULL, HFILL }},
1884 { &hf_glow_qualifiedFunction,
1885 { "qualifiedFunction", "glow.qualifiedFunction_element",
1886 FT_NONE, BASE_NONE, NULL, 0,
1887 NULL, HFILL }},
1888 { &hf_glow_qualifiedTemplate,
1889 { "qualifiedTemplate", "glow.qualifiedTemplate_element",
1890 FT_NONE, BASE_NONE, NULL, 0,
1891 NULL, HFILL }},
1894 /* List of subtrees */
1895 static int *ett[] = {
1896 &ett_glow,
1897 &ett_glow_Template_U,
1898 &ett_glow_QualifiedTemplate_U,
1899 &ett_glow_TemplateElement,
1900 &ett_glow_Parameter_U,
1901 &ett_glow_QualifiedParameter_U,
1902 &ett_glow_ParameterContents,
1903 &ett_glow_Value,
1904 &ett_glow_MinMax,
1905 &ett_glow_StringIntegerPair_U,
1906 &ett_glow_SEQUENCE_OF_StringIntegerPair,
1907 &ett_glow_StreamDescription_U,
1908 &ett_glow_Command_U,
1909 &ett_glow_T_options,
1910 &ett_glow_Node_U,
1911 &ett_glow_QualifiedNode_U,
1912 &ett_glow_NodeContents,
1913 &ett_glow_Matrix_U,
1914 &ett_glow_MatrixContents,
1915 &ett_glow_ParametersLocation,
1916 &ett_glow_LabelCollection,
1917 &ett_glow_Label_U,
1918 &ett_glow_TargetCollection,
1919 &ett_glow_Signal,
1920 &ett_glow_SourceCollection,
1921 &ett_glow_ConnectionCollection,
1922 &ett_glow_Connection_U,
1923 &ett_glow_QualifiedMatrix_U,
1924 &ett_glow_Function_U,
1925 &ett_glow_QualifiedFunction_U,
1926 &ett_glow_FunctionContents,
1927 &ett_glow_TupleDescription,
1928 &ett_glow_TupleItemDescription_U,
1929 &ett_glow_Invocation_U,
1930 &ett_glow_Tuple,
1931 &ett_glow_InvocationResult_U,
1932 &ett_glow_SEQUENCE_OF_Element,
1933 &ett_glow_Element,
1934 &ett_glow_StreamEntry_U,
1935 &ett_glow_SEQUENCE_OF_StreamEntry,
1936 &ett_glow_Root_U,
1937 &ett_glow_SEQUENCE_OF_RootElement,
1938 &ett_glow_RootElement,
1942 /* Register protocol */
1943 proto_glow = proto_register_protocol(PNAME, PSNAME, PFNAME);
1944 glow_handle = register_dissector("glow", dissect_glow, proto_glow);
1946 /* Register fields and subtrees */
1947 proto_register_field_array(proto_glow, hf, array_length(hf));
1948 proto_register_subtree_array(ett, array_length(ett));
1953 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1955 * Local variables:
1956 * c-basic-offset: 4
1957 * tab-width: 8
1958 * indent-tabs-mode: nil
1959 * End:
1961 * vi: set shiftwidth=4 tabstop=8 expandtab:
1962 * :indentSize=4:tabSize=8:noTabs=true: