Coverage Report

Created: 2025-02-15 06:25

/src/wireshark/epan/dissectors/packet-glow.c
Line
Count
Source (jump to first uncovered line)
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 */
5
6
/* packet-glow.c
7
 * Routines for GLOW packet dissection
8
 *
9
 * Copyright 2018, Gilles Dufour <dufour.gilles@gmail.com>
10
 *
11
 * Wireshark - Network traffic analyzer
12
 * By Gerald Combs <gerald@wireshark.org>
13
 * Copyright 1998 Gerald Combs
14
 *
15
 * SPDX-License-Identifier: GPL-2.0-or-later
16
 */
17
18
# include "config.h"
19
20
#include <epan/packet.h>
21
#include <epan/proto_data.h>
22
#include <wsutil/array.h>
23
#include "packet-ber.h"
24
25
14
#define PNAME  "Glow"
26
14
#define PSNAME "GLOW"
27
14
#define PFNAME "glow"
28
29
void proto_register_glow(void);
30
31
static dissector_handle_t glow_handle;
32
static int proto_glow;
33
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 */
128
129
/* Initialize the subtree pointers */
130
static int ett_glow;
131
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;
174
175
/*--- Cyclic dependencies ---*/
176
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_);
179
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_);
184
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_);
187
188
189
190
191
static int
192
0
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
0
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
194
0
                                            actx, tree, tvb, offset, hf_index,
195
0
                                            NULL);
196
197
0
  return offset;
198
0
}
199
200
201
202
static int
203
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
205
0
                                                NULL);
206
207
0
  return offset;
208
0
}
209
210
211
212
static int
213
0
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
0
  offset = dissect_ber_integer64(implicit_tag, actx, tree, tvb, offset, hf_index,
215
0
                                                NULL);
216
217
0
  return offset;
218
0
}
219
220
221
222
static int
223
0
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
0
  offset = dissect_ber_real(implicit_tag, actx, tree, tvb, offset, hf_index,
225
0
                               NULL);
226
227
0
  return offset;
228
0
}
229
230
231
232
static int
233
0
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
0
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
235
236
0
  return offset;
237
0
}
238
239
240
241
static int
242
0
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
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
244
0
                                       NULL);
245
246
0
  return offset;
247
0
}
248
249
250
251
static int
252
0
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
0
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
254
255
0
  return offset;
256
0
}
257
258
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 }
267
};
268
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 }
277
};
278
279
static int
280
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
282
0
                                 Value_choice, hf_index, ett_glow_Value,
283
0
                                 NULL);
284
285
0
  return offset;
286
0
}
287
288
289
static const value_string glow_MinMax_vals[] = {
290
  {   0, "integer" },
291
  {   1, "real" },
292
  {   2, "null" },
293
  { 0, NULL }
294
};
295
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 }
301
};
302
303
static int
304
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
306
0
                                 MinMax_choice, hf_index, ett_glow_MinMax,
307
0
                                 NULL);
308
309
0
  return offset;
310
0
}
311
312
313
static const value_string glow_ParameterAccess_vals[] = {
314
  {   0, "none" },
315
  {   1, "read" },
316
  {   2, "write" },
317
  {   3, "readWrite" },
318
  { 0, NULL }
319
};
320
321
322
static int
323
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
325
0
                                                NULL);
326
327
0
  return offset;
328
0
}
329
330
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 }
341
};
342
343
344
static int
345
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
347
0
                                                NULL);
348
349
0
  return offset;
350
0
}
351
352
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 }
357
};
358
359
static int
360
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
362
0
                                   StringIntegerPair_U_sequence, hf_index, ett_glow_StringIntegerPair_U);
363
364
0
  return offset;
365
0
}
366
367
368
369
static int
370
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
372
0
                                      hf_index, BER_CLASS_APP, 7, true, dissect_glow_StringIntegerPair_U);
373
374
0
  return offset;
375
0
}
376
377
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 },
380
};
381
382
static int
383
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
385
0
                                      SEQUENCE_OF_StringIntegerPair_sequence_of, hf_index, ett_glow_SEQUENCE_OF_StringIntegerPair);
386
387
0
  return offset;
388
0
}
389
390
391
392
static int
393
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
395
0
                                      hf_index, BER_CLASS_APP, 8, true, dissect_glow_SEQUENCE_OF_StringIntegerPair);
396
397
0
  return offset;
398
0
}
399
400
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 }
421
};
422
423
424
static int
425
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
427
0
                                                NULL);
428
429
0
  return offset;
430
0
}
431
432
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 }
437
};
438
439
static int
440
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
442
0
                                   StreamDescription_U_sequence, hf_index, ett_glow_StreamDescription_U);
443
444
0
  return offset;
445
0
}
446
447
448
449
static int
450
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
452
0
                                      hf_index, BER_CLASS_APP, 12, true, dissect_glow_StreamDescription_U);
453
454
0
  return offset;
455
0
}
456
457
458
459
static int
460
0
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
0
  offset = dissect_ber_relative_oid(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
462
463
0
  return offset;
464
0
}
465
466
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 }
488
};
489
490
static int
491
0
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
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
493
0
                              ParameterContents_set, hf_index, ett_glow_ParameterContents);
494
495
0
  return offset;
496
0
}
497
498
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 }
507
};
508
509
static int
510
0
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
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
512
0
                              NodeContents_set, hf_index, ett_glow_NodeContents);
513
514
0
  return offset;
515
0
}
516
517
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 }
523
};
524
525
static int
526
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
528
0
                                   Node_U_sequence, hf_index, ett_glow_Node_U);
529
530
0
  return offset;
531
0
}
532
533
534
535
static int
536
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
538
0
                                      hf_index, BER_CLASS_APP, 3, true, dissect_glow_Node_U);
539
540
0
  return offset;
541
0
}
542
543
544
static const value_string glow_CommandType_vals[] = {
545
  {  30, "subscribe" },
546
  {  31, "unsubscribe" },
547
  {  32, "getDirectory" },
548
  {  33, "invoke" },
549
  { 0, NULL }
550
};
551
552
553
static int
554
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
556
0
                                                NULL);
557
558
0
  return offset;
559
0
}
560
561
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 }
572
};
573
574
575
static int
576
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
578
0
                                                NULL);
579
580
0
  return offset;
581
0
}
582
583
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 },
586
};
587
588
static int
589
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
591
0
                                      Tuple_sequence_of, hf_index, ett_glow_Tuple);
592
593
0
  return offset;
594
0
}
595
596
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 }
601
};
602
603
static int
604
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
606
0
                                   Invocation_U_sequence, hf_index, ett_glow_Invocation_U);
607
608
0
  return offset;
609
0
}
610
611
612
613
static int
614
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
616
0
                                      hf_index, BER_CLASS_APP, 22, true, dissect_glow_Invocation_U);
617
618
0
  return offset;
619
0
}
620
621
622
static const value_string glow_T_options_vals[] = {
623
  {   1, "dirFieldMask" },
624
  {   2, "invocation" },
625
  { 0, NULL }
626
};
627
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 }
632
};
633
634
static int
635
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
637
0
                                 T_options_choice, hf_index, ett_glow_T_options,
638
0
                                 NULL);
639
640
0
  return offset;
641
0
}
642
643
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 }
648
};
649
650
static int
651
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
653
0
                                   Command_U_sequence, hf_index, ett_glow_Command_U);
654
655
0
  return offset;
656
0
}
657
658
659
660
static int
661
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
663
0
                                      hf_index, BER_CLASS_APP, 2, true, dissect_glow_Command_U);
664
665
0
  return offset;
666
0
}
667
668
669
static const value_string glow_MatrixType_vals[] = {
670
  {   0, "oneToN" },
671
  {   1, "oneToOne" },
672
  {   2, "nToN" },
673
  { 0, NULL }
674
};
675
676
677
static int
678
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
680
0
                                                NULL);
681
682
0
  return offset;
683
0
}
684
685
686
static const value_string glow_MatrixAddressingMode_vals[] = {
687
  {   0, "linear" },
688
  {   1, "nonLinear" },
689
  { 0, NULL }
690
};
691
692
693
static int
694
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
696
0
                                                NULL);
697
698
0
  return offset;
699
0
}
700
701
702
static const value_string glow_ParametersLocation_vals[] = {
703
  {   0, "basePath" },
704
  {   1, "inline" },
705
  { 0, NULL }
706
};
707
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 }
712
};
713
714
static int
715
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
717
0
                                 ParametersLocation_choice, hf_index, ett_glow_ParametersLocation,
718
0
                                 NULL);
719
720
0
  return offset;
721
0
}
722
723
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 }
728
};
729
730
static int
731
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
733
0
                                   Label_U_sequence, hf_index, ett_glow_Label_U);
734
735
0
  return offset;
736
0
}
737
738
739
740
static int
741
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
743
0
                                      hf_index, BER_CLASS_APP, 18, true, dissect_glow_Label_U);
744
745
0
  return offset;
746
0
}
747
748
749
static const ber_sequence_t LabelCollection_sequence_of[1] = {
750
  { &hf_glow_LabelCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Label },
751
};
752
753
static int
754
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
756
0
                                      LabelCollection_sequence_of, hf_index, ett_glow_LabelCollection);
757
758
0
  return offset;
759
0
}
760
761
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 }
777
};
778
779
static int
780
0
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
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
782
0
                              MatrixContents_set, hf_index, ett_glow_MatrixContents);
783
784
0
  return offset;
785
0
}
786
787
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 }
791
};
792
793
static int
794
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
796
0
                                   Signal_sequence, hf_index, ett_glow_Signal);
797
798
0
  return offset;
799
0
}
800
801
802
803
static int
804
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
806
0
                                      hf_index, BER_CLASS_APP, 14, true, dissect_glow_Signal);
807
808
0
  return offset;
809
0
}
810
811
812
static const ber_sequence_t TargetCollection_sequence_of[1] = {
813
  { &hf_glow_TargetCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Target },
814
};
815
816
static int
817
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
819
0
                                      TargetCollection_sequence_of, hf_index, ett_glow_TargetCollection);
820
821
0
  return offset;
822
0
}
823
824
825
826
static int
827
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
829
0
                                      hf_index, BER_CLASS_APP, 15, true, dissect_glow_Signal);
830
831
0
  return offset;
832
0
}
833
834
835
static const ber_sequence_t SourceCollection_sequence_of[1] = {
836
  { &hf_glow_SourceCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Source },
837
};
838
839
static int
840
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
842
0
                                      SourceCollection_sequence_of, hf_index, ett_glow_SourceCollection);
843
844
0
  return offset;
845
0
}
846
847
848
849
static int
850
0
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
0
  offset = dissect_ber_relative_oid(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
852
853
0
  return offset;
854
0
}
855
856
857
static const value_string glow_ConnectionOperation_vals[] = {
858
  {   0, "absolute" },
859
  {   1, "connect" },
860
  {   2, "disconnect" },
861
  { 0, NULL }
862
};
863
864
865
static int
866
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
868
0
                                                NULL);
869
870
0
  return offset;
871
0
}
872
873
874
static const value_string glow_ConnectionDisposition_vals[] = {
875
  {   0, "tally" },
876
  {   1, "modified" },
877
  {   2, "pending" },
878
  {   3, "locked" },
879
  { 0, NULL }
880
};
881
882
883
static int
884
0
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
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
886
0
                                                NULL);
887
888
0
  return offset;
889
0
}
890
891
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 }
898
};
899
900
static int
901
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
903
0
                                   Connection_U_sequence, hf_index, ett_glow_Connection_U);
904
905
0
  return offset;
906
0
}
907
908
909
910
static int
911
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
913
0
                                      hf_index, BER_CLASS_APP, 16, true, dissect_glow_Connection_U);
914
915
0
  return offset;
916
0
}
917
918
919
static const ber_sequence_t ConnectionCollection_sequence_of[1] = {
920
  { &hf_glow_ConnectionCollection_item, BER_CLASS_CON, 0, 0, dissect_glow_Connection },
921
};
922
923
static int
924
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
926
0
                                      ConnectionCollection_sequence_of, hf_index, ett_glow_ConnectionCollection);
927
928
0
  return offset;
929
0
}
930
931
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 }
940
};
941
942
static int
943
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
945
0
                                   Matrix_U_sequence, hf_index, ett_glow_Matrix_U);
946
947
0
  return offset;
948
0
}
949
950
951
952
static int
953
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
955
0
                                      hf_index, BER_CLASS_APP, 13, true, dissect_glow_Matrix_U);
956
957
0
  return offset;
958
0
}
959
960
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 }
965
};
966
967
static int
968
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
970
0
                                   TupleItemDescription_U_sequence, hf_index, ett_glow_TupleItemDescription_U);
971
972
0
  return offset;
973
0
}
974
975
976
977
static int
978
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
980
0
                                      hf_index, BER_CLASS_APP, 21, true, dissect_glow_TupleItemDescription_U);
981
982
0
  return offset;
983
0
}
984
985
986
static const ber_sequence_t TupleDescription_sequence_of[1] = {
987
  { &hf_glow_TupleDescription_item, BER_CLASS_CON, 0, 0, dissect_glow_TupleItemDescription },
988
};
989
990
static int
991
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
993
0
                                      TupleDescription_sequence_of, hf_index, ett_glow_TupleDescription);
994
995
0
  return offset;
996
0
}
997
998
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 }
1006
};
1007
1008
static int
1009
0
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
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1011
0
                              FunctionContents_set, hf_index, ett_glow_FunctionContents);
1012
1013
0
  return offset;
1014
0
}
1015
1016
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 }
1022
};
1023
1024
static int
1025
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1027
0
                                   Function_U_sequence, hf_index, ett_glow_Function_U);
1028
1029
0
  return offset;
1030
0
}
1031
1032
1033
1034
static int
1035
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1037
0
                                      hf_index, BER_CLASS_APP, 19, true, dissect_glow_Function_U);
1038
1039
0
  return offset;
1040
0
}
1041
1042
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 }
1051
};
1052
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 }
1061
};
1062
1063
static int
1064
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1066
0
                                 Element_choice, hf_index, ett_glow_Element,
1067
0
                                 NULL);
1068
1069
0
  return offset;
1070
0
}
1071
1072
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 },
1075
};
1076
1077
static int
1078
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1080
0
                                      SEQUENCE_OF_Element_sequence_of, hf_index, ett_glow_SEQUENCE_OF_Element);
1081
1082
0
  return offset;
1083
0
}
1084
1085
1086
1087
static int
1088
0
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
0
  actx->pinfo->dissection_depth += 5;
1091
0
  increment_dissection_depth(actx->pinfo);
1092
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1093
0
                                      hf_index, BER_CLASS_APP, 4, true, dissect_glow_SEQUENCE_OF_Element);
1094
1095
0
  actx->pinfo->dissection_depth -= 5;
1096
0
  decrement_dissection_depth(actx->pinfo);
1097
0
  return offset;
1098
0
}
1099
1100
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 }
1106
};
1107
1108
static int
1109
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1111
0
                                   Parameter_U_sequence, hf_index, ett_glow_Parameter_U);
1112
1113
0
  return offset;
1114
0
}
1115
1116
1117
1118
static int
1119
0
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
0
  actx->pinfo->dissection_depth += 5;
1122
0
  increment_dissection_depth(actx->pinfo);
1123
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1124
0
                                      hf_index, BER_CLASS_APP, 1, true, dissect_glow_Parameter_U);
1125
1126
0
  actx->pinfo->dissection_depth -= 5;
1127
0
  decrement_dissection_depth(actx->pinfo);
1128
0
  return offset;
1129
0
}
1130
1131
1132
static const value_string glow_TemplateElement_vals[] = {
1133
  {   1, "parameter" },
1134
  {   3, "node" },
1135
  {  13, "matrix" },
1136
  {  19, "function" },
1137
  { 0, NULL }
1138
};
1139
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 }
1146
};
1147
1148
static int
1149
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1151
0
                                 TemplateElement_choice, hf_index, ett_glow_TemplateElement,
1152
0
                                 NULL);
1153
1154
0
  return offset;
1155
0
}
1156
1157
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 }
1163
};
1164
1165
static int
1166
0
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
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1168
0
                              Template_U_set, hf_index, ett_glow_Template_U);
1169
1170
0
  return offset;
1171
0
}
1172
1173
1174
1175
static int
1176
0
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
0
  actx->pinfo->dissection_depth += 8;
1179
0
  increment_dissection_depth(actx->pinfo);
1180
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1181
0
                                      hf_index, BER_CLASS_APP, 24, true, dissect_glow_Template_U);
1182
1183
0
  actx->pinfo->dissection_depth -= 8;
1184
0
  decrement_dissection_depth(actx->pinfo);
1185
0
  return offset;
1186
0
}
1187
1188
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 }
1194
};
1195
1196
static int
1197
0
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
0
  offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1199
0
                              QualifiedTemplate_U_set, hf_index, ett_glow_QualifiedTemplate_U);
1200
1201
0
  return offset;
1202
0
}
1203
1204
1205
1206
static int
1207
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1209
0
                                      hf_index, BER_CLASS_APP, 25, true, dissect_glow_QualifiedTemplate_U);
1210
1211
0
  return offset;
1212
0
}
1213
1214
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 }
1220
};
1221
1222
static int
1223
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1225
0
                                   QualifiedParameter_U_sequence, hf_index, ett_glow_QualifiedParameter_U);
1226
1227
0
  return offset;
1228
0
}
1229
1230
1231
1232
static int
1233
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1235
0
                                      hf_index, BER_CLASS_APP, 9, true, dissect_glow_QualifiedParameter_U);
1236
1237
0
  return offset;
1238
0
}
1239
1240
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 }
1246
};
1247
1248
static int
1249
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1251
0
                                   QualifiedNode_U_sequence, hf_index, ett_glow_QualifiedNode_U);
1252
1253
0
  return offset;
1254
0
}
1255
1256
1257
1258
static int
1259
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1261
0
                                      hf_index, BER_CLASS_APP, 10, true, dissect_glow_QualifiedNode_U);
1262
1263
0
  return offset;
1264
0
}
1265
1266
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 }
1275
};
1276
1277
static int
1278
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1280
0
                                   QualifiedMatrix_U_sequence, hf_index, ett_glow_QualifiedMatrix_U);
1281
1282
0
  return offset;
1283
0
}
1284
1285
1286
1287
static int
1288
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1290
0
                                      hf_index, BER_CLASS_APP, 17, true, dissect_glow_QualifiedMatrix_U);
1291
1292
0
  return offset;
1293
0
}
1294
1295
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 }
1301
};
1302
1303
static int
1304
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1306
0
                                   QualifiedFunction_U_sequence, hf_index, ett_glow_QualifiedFunction_U);
1307
1308
0
  return offset;
1309
0
}
1310
1311
1312
1313
static int
1314
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1316
0
                                      hf_index, BER_CLASS_APP, 20, true, dissect_glow_QualifiedFunction_U);
1317
1318
0
  return offset;
1319
0
}
1320
1321
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 }
1327
};
1328
1329
static int
1330
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1332
0
                                   InvocationResult_U_sequence, hf_index, ett_glow_InvocationResult_U);
1333
1334
0
  return offset;
1335
0
}
1336
1337
1338
1339
static int
1340
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1342
0
                                      hf_index, BER_CLASS_APP, 23, true, dissect_glow_InvocationResult_U);
1343
1344
0
  return offset;
1345
0
}
1346
1347
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 }
1352
};
1353
1354
static int
1355
0
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
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1357
0
                                   StreamEntry_U_sequence, hf_index, ett_glow_StreamEntry_U);
1358
1359
0
  return offset;
1360
0
}
1361
1362
1363
1364
static int
1365
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1367
0
                                      hf_index, BER_CLASS_APP, 5, true, dissect_glow_StreamEntry_U);
1368
1369
0
  return offset;
1370
0
}
1371
1372
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 },
1375
};
1376
1377
static int
1378
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1380
0
                                      SEQUENCE_OF_StreamEntry_sequence_of, hf_index, ett_glow_SEQUENCE_OF_StreamEntry);
1381
1382
0
  return offset;
1383
0
}
1384
1385
1386
1387
static int
1388
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1390
0
                                      hf_index, BER_CLASS_APP, 6, true, dissect_glow_SEQUENCE_OF_StreamEntry);
1391
1392
0
  return offset;
1393
0
}
1394
1395
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 }
1404
};
1405
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 }
1414
};
1415
1416
static int
1417
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1419
0
                                 RootElement_choice, hf_index, ett_glow_RootElement,
1420
0
                                 NULL);
1421
1422
0
  return offset;
1423
0
}
1424
1425
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 },
1428
};
1429
1430
static int
1431
0
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
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1433
0
                                      SEQUENCE_OF_RootElement_sequence_of, hf_index, ett_glow_SEQUENCE_OF_RootElement);
1434
1435
0
  return offset;
1436
0
}
1437
1438
1439
1440
static int
1441
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1443
0
                                      hf_index, BER_CLASS_APP, 11, true, dissect_glow_SEQUENCE_OF_RootElement);
1444
1445
0
  return offset;
1446
0
}
1447
1448
1449
static const value_string glow_Root_U_vals[] = {
1450
  {  11, "elements" },
1451
  {   6, "streams" },
1452
  {  23, "invocationResult" },
1453
  { 0, NULL }
1454
};
1455
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 }
1461
};
1462
1463
static int
1464
0
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
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1466
0
                                 Root_U_choice, hf_index, ett_glow_Root_U,
1467
0
                                 NULL);
1468
1469
0
  return offset;
1470
0
}
1471
1472
1473
1474
static int
1475
0
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
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1477
0
                                      hf_index, BER_CLASS_APP, 0, false, dissect_glow_Root_U);
1478
1479
0
  return offset;
1480
0
}
1481
1482
/*--- PDUs ---*/
1483
1484
0
static int dissect_Root_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1485
0
  int offset = 0;
1486
0
  asn1_ctx_t asn1_ctx;
1487
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
1488
0
  offset = dissect_glow_Root(false, tvb, offset, &asn1_ctx, tree, hf_glow_Root_PDU);
1489
0
  return offset;
1490
0
}
1491
1492
1493
static int
1494
dissect_glow(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1495
0
{
1496
0
    proto_item      *glow_item = NULL;
1497
0
    proto_tree      *glow_tree = NULL;
1498
1499
    /* make entry in the Protocol column on summary display */
1500
0
    col_set_str(pinfo->cinfo, COL_PROTOCOL, PNAME);
1501
1502
    /* create the glow protocol tree */
1503
0
    glow_item = proto_tree_add_item(tree, proto_glow, tvb, 0, -1, ENC_NA);
1504
0
    glow_tree = proto_item_add_subtree(glow_item, ett_glow);
1505
1506
0
    dissect_Root_PDU(tvb, pinfo, glow_tree, data);
1507
1508
0
    return tvb_captured_length(tvb);
1509
0
}
1510
1511
14
void proto_register_glow(void) {
1512
1513
  /* List of fields */
1514
14
  static hf_register_info hf[] = {
1515
1516
14
    { &hf_glow_Root_PDU,
1517
14
      { "Root", "glow.Root",
1518
14
        FT_UINT32, BASE_DEC, VALS(glow_Root_U_vals), 0,
1519
14
        NULL, HFILL }},
1520
14
    { &hf_glow_number,
1521
14
      { "number", "glow.number",
1522
14
        FT_INT32, BASE_DEC, NULL, 0,
1523
14
        "Integer32", HFILL }},
1524
14
    { &hf_glow_element,
1525
14
      { "element", "glow.element",
1526
14
        FT_UINT32, BASE_DEC, VALS(glow_TemplateElement_vals), 0,
1527
14
        "TemplateElement", HFILL }},
1528
14
    { &hf_glow_description,
1529
14
      { "description", "glow.description",
1530
14
        FT_STRING, BASE_NONE, NULL, 0,
1531
14
        "EmberString", HFILL }},
1532
14
    { &hf_glow_path,
1533
14
      { "path", "glow.path",
1534
14
        FT_REL_OID, BASE_NONE, NULL, 0,
1535
14
        "RELATIVE_OID", HFILL }},
1536
14
    { &hf_glow_parameter,
1537
14
      { "parameter", "glow.parameter_element",
1538
14
        FT_NONE, BASE_NONE, NULL, 0,
1539
14
        NULL, HFILL }},
1540
14
    { &hf_glow_node,
1541
14
      { "node", "glow.node_element",
1542
14
        FT_NONE, BASE_NONE, NULL, 0,
1543
14
        NULL, HFILL }},
1544
14
    { &hf_glow_matrix,
1545
14
      { "matrix", "glow.matrix_element",
1546
14
        FT_NONE, BASE_NONE, NULL, 0,
1547
14
        NULL, HFILL }},
1548
14
    { &hf_glow_function,
1549
14
      { "function", "glow.function_element",
1550
14
        FT_NONE, BASE_NONE, NULL, 0,
1551
14
        NULL, HFILL }},
1552
14
    { &hf_glow_contents,
1553
14
      { "contents", "glow.contents_element",
1554
14
        FT_NONE, BASE_NONE, NULL, 0,
1555
14
        "ParameterContents", HFILL }},
1556
14
    { &hf_glow_children,
1557
14
      { "children", "glow.children",
1558
14
        FT_UINT32, BASE_DEC, NULL, 0,
1559
14
        "ElementCollection", HFILL }},
1560
14
    { &hf_glow_identifier,
1561
14
      { "identifier", "glow.identifier",
1562
14
        FT_STRING, BASE_NONE, NULL, 0,
1563
14
        "EmberString", HFILL }},
1564
14
    { &hf_glow_value,
1565
14
      { "value", "glow.value",
1566
14
        FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1567
14
        NULL, HFILL }},
1568
14
    { &hf_glow_minimum,
1569
14
      { "minimum", "glow.minimum",
1570
14
        FT_UINT32, BASE_DEC, VALS(glow_MinMax_vals), 0,
1571
14
        "MinMax", HFILL }},
1572
14
    { &hf_glow_maximum,
1573
14
      { "maximum", "glow.maximum",
1574
14
        FT_UINT32, BASE_DEC, VALS(glow_MinMax_vals), 0,
1575
14
        "MinMax", HFILL }},
1576
14
    { &hf_glow_access,
1577
14
      { "access", "glow.access",
1578
14
        FT_INT32, BASE_DEC, VALS(glow_ParameterAccess_vals), 0,
1579
14
        "ParameterAccess", HFILL }},
1580
14
    { &hf_glow_format,
1581
14
      { "format", "glow.format",
1582
14
        FT_STRING, BASE_NONE, NULL, 0,
1583
14
        "EmberString", HFILL }},
1584
14
    { &hf_glow_enumeration,
1585
14
      { "enumeration", "glow.enumeration",
1586
14
        FT_STRING, BASE_NONE, NULL, 0,
1587
14
        "EmberString", HFILL }},
1588
14
    { &hf_glow_factor,
1589
14
      { "factor", "glow.factor",
1590
14
        FT_INT32, BASE_DEC, NULL, 0,
1591
14
        "Integer32", HFILL }},
1592
14
    { &hf_glow_isOnline,
1593
14
      { "isOnline", "glow.isOnline",
1594
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
1595
14
        "BOOLEAN", HFILL }},
1596
14
    { &hf_glow_formula,
1597
14
      { "formula", "glow.formula",
1598
14
        FT_STRING, BASE_NONE, NULL, 0,
1599
14
        "EmberString", HFILL }},
1600
14
    { &hf_glow_step,
1601
14
      { "step", "glow.step",
1602
14
        FT_INT32, BASE_DEC, NULL, 0,
1603
14
        "Integer32", HFILL }},
1604
14
    { &hf_glow_default,
1605
14
      { "default", "glow.default",
1606
14
        FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1607
14
        "Value", HFILL }},
1608
14
    { &hf_glow_type,
1609
14
      { "type", "glow.type",
1610
14
        FT_INT32, BASE_DEC, VALS(glow_ParameterType_vals), 0,
1611
14
        "ParameterType", HFILL }},
1612
14
    { &hf_glow_streamIdentifier,
1613
14
      { "streamIdentifier", "glow.streamIdentifier",
1614
14
        FT_INT32, BASE_DEC, NULL, 0,
1615
14
        "Integer32", HFILL }},
1616
14
    { &hf_glow_enumMap,
1617
14
      { "enumMap", "glow.enumMap",
1618
14
        FT_UINT32, BASE_DEC, NULL, 0,
1619
14
        "StringIntegerCollection", HFILL }},
1620
14
    { &hf_glow_streamDescriptor,
1621
14
      { "streamDescriptor", "glow.streamDescriptor_element",
1622
14
        FT_NONE, BASE_NONE, NULL, 0,
1623
14
        "StreamDescription", HFILL }},
1624
14
    { &hf_glow_schemaIdentifiers,
1625
14
      { "schemaIdentifiers", "glow.schemaIdentifiers",
1626
14
        FT_STRING, BASE_NONE, NULL, 0,
1627
14
        "EmberString", HFILL }},
1628
14
    { &hf_glow_templateReference,
1629
14
      { "templateReference", "glow.templateReference",
1630
14
        FT_REL_OID, BASE_NONE, NULL, 0,
1631
14
        "RELATIVE_OID", HFILL }},
1632
14
    { &hf_glow_integer,
1633
14
      { "integer", "glow.integer",
1634
14
        FT_INT64, BASE_DEC, NULL, 0,
1635
14
        "Integer64", HFILL }},
1636
14
    { &hf_glow_real,
1637
14
      { "real", "glow.real",
1638
14
        FT_DOUBLE, BASE_NONE, NULL, 0,
1639
14
        NULL, HFILL }},
1640
14
    { &hf_glow_string,
1641
14
      { "string", "glow.string",
1642
14
        FT_STRING, BASE_NONE, NULL, 0,
1643
14
        "EmberString", HFILL }},
1644
14
    { &hf_glow_boolean,
1645
14
      { "boolean", "glow.boolean",
1646
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
1647
14
        NULL, HFILL }},
1648
14
    { &hf_glow_octets,
1649
14
      { "octets", "glow.octets",
1650
14
        FT_BYTES, BASE_NONE, NULL, 0,
1651
14
        "OCTET_STRING", HFILL }},
1652
14
    { &hf_glow_null,
1653
14
      { "null", "glow.null_element",
1654
14
        FT_NONE, BASE_NONE, NULL, 0,
1655
14
        NULL, HFILL }},
1656
14
    { &hf_glow_entryString,
1657
14
      { "entryString", "glow.entryString",
1658
14
        FT_STRING, BASE_NONE, NULL, 0,
1659
14
        "EmberString", HFILL }},
1660
14
    { &hf_glow_entryInteger,
1661
14
      { "entryInteger", "glow.entryInteger",
1662
14
        FT_INT32, BASE_DEC, NULL, 0,
1663
14
        "Integer32", HFILL }},
1664
14
    { &hf_glow__untag_item,
1665
14
      { "StringIntegerPair", "glow.StringIntegerPair_element",
1666
14
        FT_NONE, BASE_NONE, NULL, 0,
1667
14
        NULL, HFILL }},
1668
14
    { &hf_glow_streamFormat,
1669
14
      { "streamFormat", "glow.streamFormat",
1670
14
        FT_INT32, BASE_DEC, VALS(glow_StreamFormat_vals), 0,
1671
14
        NULL, HFILL }},
1672
14
    { &hf_glow_offset,
1673
14
      { "offset", "glow.offset",
1674
14
        FT_INT32, BASE_DEC, NULL, 0,
1675
14
        "Integer32", HFILL }},
1676
14
    { &hf_glow_number_01,
1677
14
      { "number", "glow.number",
1678
14
        FT_INT32, BASE_DEC, VALS(glow_CommandType_vals), 0,
1679
14
        "CommandType", HFILL }},
1680
14
    { &hf_glow_options,
1681
14
      { "options", "glow.options",
1682
14
        FT_UINT32, BASE_DEC, VALS(glow_T_options_vals), 0,
1683
14
        NULL, HFILL }},
1684
14
    { &hf_glow_dirFieldMask,
1685
14
      { "dirFieldMask", "glow.dirFieldMask",
1686
14
        FT_INT32, BASE_DEC, VALS(glow_FieldFlags_vals), 0,
1687
14
        "FieldFlags", HFILL }},
1688
14
    { &hf_glow_invocation,
1689
14
      { "invocation", "glow.invocation_element",
1690
14
        FT_NONE, BASE_NONE, NULL, 0,
1691
14
        NULL, HFILL }},
1692
14
    { &hf_glow_contents_01,
1693
14
      { "contents", "glow.contents_element",
1694
14
        FT_NONE, BASE_NONE, NULL, 0,
1695
14
        "NodeContents", HFILL }},
1696
14
    { &hf_glow_isRoot,
1697
14
      { "isRoot", "glow.isRoot",
1698
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
1699
14
        "BOOLEAN", HFILL }},
1700
14
    { &hf_glow_contents_02,
1701
14
      { "contents", "glow.contents_element",
1702
14
        FT_NONE, BASE_NONE, NULL, 0,
1703
14
        "MatrixContents", HFILL }},
1704
14
    { &hf_glow_targetList,
1705
14
      { "targetList", "glow.targetList",
1706
14
        FT_UINT32, BASE_DEC, NULL, 0,
1707
14
        "TargetCollection", HFILL }},
1708
14
    { &hf_glow_sourceList,
1709
14
      { "sourceList", "glow.sourceList",
1710
14
        FT_UINT32, BASE_DEC, NULL, 0,
1711
14
        "SourceCollection", HFILL }},
1712
14
    { &hf_glow_connections,
1713
14
      { "connections", "glow.connections",
1714
14
        FT_UINT32, BASE_DEC, NULL, 0,
1715
14
        "ConnectionCollection", HFILL }},
1716
14
    { &hf_glow_type_01,
1717
14
      { "type", "glow.type",
1718
14
        FT_INT32, BASE_DEC, VALS(glow_MatrixType_vals), 0,
1719
14
        "MatrixType", HFILL }},
1720
14
    { &hf_glow_addressingMode,
1721
14
      { "addressingMode", "glow.addressingMode",
1722
14
        FT_INT32, BASE_DEC, VALS(glow_MatrixAddressingMode_vals), 0,
1723
14
        "MatrixAddressingMode", HFILL }},
1724
14
    { &hf_glow_targetCount,
1725
14
      { "targetCount", "glow.targetCount",
1726
14
        FT_INT32, BASE_DEC, NULL, 0,
1727
14
        "Integer32", HFILL }},
1728
14
    { &hf_glow_sourceCount,
1729
14
      { "sourceCount", "glow.sourceCount",
1730
14
        FT_INT32, BASE_DEC, NULL, 0,
1731
14
        "Integer32", HFILL }},
1732
14
    { &hf_glow_maximumTotalConnects,
1733
14
      { "maximumTotalConnects", "glow.maximumTotalConnects",
1734
14
        FT_INT32, BASE_DEC, NULL, 0,
1735
14
        "Integer32", HFILL }},
1736
14
    { &hf_glow_maximumConnectsPerTarget,
1737
14
      { "maximumConnectsPerTarget", "glow.maximumConnectsPerTarget",
1738
14
        FT_INT32, BASE_DEC, NULL, 0,
1739
14
        "Integer32", HFILL }},
1740
14
    { &hf_glow_parametersLocation,
1741
14
      { "parametersLocation", "glow.parametersLocation",
1742
14
        FT_UINT32, BASE_DEC, VALS(glow_ParametersLocation_vals), 0,
1743
14
        NULL, HFILL }},
1744
14
    { &hf_glow_gainParameterNumber,
1745
14
      { "gainParameterNumber", "glow.gainParameterNumber",
1746
14
        FT_INT32, BASE_DEC, NULL, 0,
1747
14
        "Integer32", HFILL }},
1748
14
    { &hf_glow_labels,
1749
14
      { "labels", "glow.labels",
1750
14
        FT_UINT32, BASE_DEC, NULL, 0,
1751
14
        "LabelCollection", HFILL }},
1752
14
    { &hf_glow_basePath,
1753
14
      { "basePath", "glow.basePath",
1754
14
        FT_REL_OID, BASE_NONE, NULL, 0,
1755
14
        "RELATIVE_OID", HFILL }},
1756
14
    { &hf_glow_inline,
1757
14
      { "inline", "glow.inline",
1758
14
        FT_INT32, BASE_DEC, NULL, 0,
1759
14
        "Integer32", HFILL }},
1760
14
    { &hf_glow_LabelCollection_item,
1761
14
      { "Label", "glow.Label_element",
1762
14
        FT_NONE, BASE_NONE, NULL, 0,
1763
14
        NULL, HFILL }},
1764
14
    { &hf_glow_TargetCollection_item,
1765
14
      { "Target", "glow.Target_element",
1766
14
        FT_NONE, BASE_NONE, NULL, 0,
1767
14
        NULL, HFILL }},
1768
14
    { &hf_glow_SourceCollection_item,
1769
14
      { "Source", "glow.Source_element",
1770
14
        FT_NONE, BASE_NONE, NULL, 0,
1771
14
        NULL, HFILL }},
1772
14
    { &hf_glow_ConnectionCollection_item,
1773
14
      { "Connection", "glow.Connection_element",
1774
14
        FT_NONE, BASE_NONE, NULL, 0,
1775
14
        NULL, HFILL }},
1776
14
    { &hf_glow_target,
1777
14
      { "target", "glow.target",
1778
14
        FT_INT32, BASE_DEC, NULL, 0,
1779
14
        "Integer32", HFILL }},
1780
14
    { &hf_glow_sources,
1781
14
      { "sources", "glow.sources",
1782
14
        FT_REL_OID, BASE_NONE, NULL, 0,
1783
14
        "PackedNumbers", HFILL }},
1784
14
    { &hf_glow_operation,
1785
14
      { "operation", "glow.operation",
1786
14
        FT_INT32, BASE_DEC, VALS(glow_ConnectionOperation_vals), 0,
1787
14
        "ConnectionOperation", HFILL }},
1788
14
    { &hf_glow_disposition,
1789
14
      { "disposition", "glow.disposition",
1790
14
        FT_INT32, BASE_DEC, VALS(glow_ConnectionDisposition_vals), 0,
1791
14
        "ConnectionDisposition", HFILL }},
1792
14
    { &hf_glow_contents_03,
1793
14
      { "contents", "glow.contents_element",
1794
14
        FT_NONE, BASE_NONE, NULL, 0,
1795
14
        "FunctionContents", HFILL }},
1796
14
    { &hf_glow_arguments,
1797
14
      { "arguments", "glow.arguments",
1798
14
        FT_UINT32, BASE_DEC, NULL, 0,
1799
14
        "TupleDescription", HFILL }},
1800
14
    { &hf_glow_result,
1801
14
      { "result", "glow.result",
1802
14
        FT_UINT32, BASE_DEC, NULL, 0,
1803
14
        "TupleDescription", HFILL }},
1804
14
    { &hf_glow_TupleDescription_item,
1805
14
      { "TupleItemDescription", "glow.TupleItemDescription_element",
1806
14
        FT_NONE, BASE_NONE, NULL, 0,
1807
14
        NULL, HFILL }},
1808
14
    { &hf_glow_name,
1809
14
      { "name", "glow.name",
1810
14
        FT_STRING, BASE_NONE, NULL, 0,
1811
14
        "EmberString", HFILL }},
1812
14
    { &hf_glow_invocationId,
1813
14
      { "invocationId", "glow.invocationId",
1814
14
        FT_INT32, BASE_DEC, NULL, 0,
1815
14
        "Integer32", HFILL }},
1816
14
    { &hf_glow_arguments_01,
1817
14
      { "arguments", "glow.arguments",
1818
14
        FT_UINT32, BASE_DEC, NULL, 0,
1819
14
        "Tuple", HFILL }},
1820
14
    { &hf_glow_Tuple_item,
1821
14
      { "Value", "glow.Value",
1822
14
        FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1823
14
        NULL, HFILL }},
1824
14
    { &hf_glow_success,
1825
14
      { "success", "glow.success",
1826
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
1827
14
        "BOOLEAN", HFILL }},
1828
14
    { &hf_glow_result_01,
1829
14
      { "result", "glow.result",
1830
14
        FT_UINT32, BASE_DEC, NULL, 0,
1831
14
        "Tuple", HFILL }},
1832
14
    { &hf_glow__untag_item_01,
1833
14
      { "Element", "glow.Element",
1834
14
        FT_UINT32, BASE_DEC, VALS(glow_Element_vals), 0,
1835
14
        NULL, HFILL }},
1836
14
    { &hf_glow_command,
1837
14
      { "command", "glow.command_element",
1838
14
        FT_NONE, BASE_NONE, NULL, 0,
1839
14
        NULL, HFILL }},
1840
14
    { &hf_glow_template,
1841
14
      { "template", "glow.template_element",
1842
14
        FT_NONE, BASE_NONE, NULL, 0,
1843
14
        NULL, HFILL }},
1844
14
    { &hf_glow_streamValue,
1845
14
      { "streamValue", "glow.streamValue",
1846
14
        FT_UINT32, BASE_DEC, VALS(glow_Value_vals), 0,
1847
14
        "Value", HFILL }},
1848
14
    { &hf_glow__untag_item_02,
1849
14
      { "StreamEntry", "glow.StreamEntry_element",
1850
14
        FT_NONE, BASE_NONE, NULL, 0,
1851
14
        NULL, HFILL }},
1852
14
    { &hf_glow_elements,
1853
14
      { "elements", "glow.elements",
1854
14
        FT_UINT32, BASE_DEC, NULL, 0,
1855
14
        "RootElementCollection", HFILL }},
1856
14
    { &hf_glow_streams,
1857
14
      { "streams", "glow.streams",
1858
14
        FT_UINT32, BASE_DEC, NULL, 0,
1859
14
        "StreamCollection", HFILL }},
1860
14
    { &hf_glow_invocationResult,
1861
14
      { "invocationResult", "glow.invocationResult_element",
1862
14
        FT_NONE, BASE_NONE, NULL, 0,
1863
14
        NULL, HFILL }},
1864
14
    { &hf_glow__untag_item_03,
1865
14
      { "RootElement", "glow.RootElement",
1866
14
        FT_UINT32, BASE_DEC, VALS(glow_RootElement_vals), 0,
1867
14
        NULL, HFILL }},
1868
14
    { &hf_glow_element_01,
1869
14
      { "element", "glow.element",
1870
14
        FT_UINT32, BASE_DEC, VALS(glow_Element_vals), 0,
1871
14
        NULL, HFILL }},
1872
14
    { &hf_glow_qualifiedParameter,
1873
14
      { "qualifiedParameter", "glow.qualifiedParameter_element",
1874
14
        FT_NONE, BASE_NONE, NULL, 0,
1875
14
        NULL, HFILL }},
1876
14
    { &hf_glow_qualifiedNode,
1877
14
      { "qualifiedNode", "glow.qualifiedNode_element",
1878
14
        FT_NONE, BASE_NONE, NULL, 0,
1879
14
        NULL, HFILL }},
1880
14
    { &hf_glow_qualifiedMatrix,
1881
14
      { "qualifiedMatrix", "glow.qualifiedMatrix_element",
1882
14
        FT_NONE, BASE_NONE, NULL, 0,
1883
14
        NULL, HFILL }},
1884
14
    { &hf_glow_qualifiedFunction,
1885
14
      { "qualifiedFunction", "glow.qualifiedFunction_element",
1886
14
        FT_NONE, BASE_NONE, NULL, 0,
1887
14
        NULL, HFILL }},
1888
14
    { &hf_glow_qualifiedTemplate,
1889
14
      { "qualifiedTemplate", "glow.qualifiedTemplate_element",
1890
14
        FT_NONE, BASE_NONE, NULL, 0,
1891
14
        NULL, HFILL }},
1892
14
  };
1893
1894
  /* List of subtrees */
1895
14
  static int *ett[] = {
1896
14
                  &ett_glow,
1897
14
    &ett_glow_Template_U,
1898
14
    &ett_glow_QualifiedTemplate_U,
1899
14
    &ett_glow_TemplateElement,
1900
14
    &ett_glow_Parameter_U,
1901
14
    &ett_glow_QualifiedParameter_U,
1902
14
    &ett_glow_ParameterContents,
1903
14
    &ett_glow_Value,
1904
14
    &ett_glow_MinMax,
1905
14
    &ett_glow_StringIntegerPair_U,
1906
14
    &ett_glow_SEQUENCE_OF_StringIntegerPair,
1907
14
    &ett_glow_StreamDescription_U,
1908
14
    &ett_glow_Command_U,
1909
14
    &ett_glow_T_options,
1910
14
    &ett_glow_Node_U,
1911
14
    &ett_glow_QualifiedNode_U,
1912
14
    &ett_glow_NodeContents,
1913
14
    &ett_glow_Matrix_U,
1914
14
    &ett_glow_MatrixContents,
1915
14
    &ett_glow_ParametersLocation,
1916
14
    &ett_glow_LabelCollection,
1917
14
    &ett_glow_Label_U,
1918
14
    &ett_glow_TargetCollection,
1919
14
    &ett_glow_Signal,
1920
14
    &ett_glow_SourceCollection,
1921
14
    &ett_glow_ConnectionCollection,
1922
14
    &ett_glow_Connection_U,
1923
14
    &ett_glow_QualifiedMatrix_U,
1924
14
    &ett_glow_Function_U,
1925
14
    &ett_glow_QualifiedFunction_U,
1926
14
    &ett_glow_FunctionContents,
1927
14
    &ett_glow_TupleDescription,
1928
14
    &ett_glow_TupleItemDescription_U,
1929
14
    &ett_glow_Invocation_U,
1930
14
    &ett_glow_Tuple,
1931
14
    &ett_glow_InvocationResult_U,
1932
14
    &ett_glow_SEQUENCE_OF_Element,
1933
14
    &ett_glow_Element,
1934
14
    &ett_glow_StreamEntry_U,
1935
14
    &ett_glow_SEQUENCE_OF_StreamEntry,
1936
14
    &ett_glow_Root_U,
1937
14
    &ett_glow_SEQUENCE_OF_RootElement,
1938
14
    &ett_glow_RootElement,
1939
14
  };
1940
1941
1942
  /* Register protocol */
1943
14
  proto_glow = proto_register_protocol(PNAME, PSNAME, PFNAME);
1944
14
  glow_handle = register_dissector("glow", dissect_glow, proto_glow);
1945
1946
  /* Register fields and subtrees */
1947
14
  proto_register_field_array(proto_glow, hf, array_length(hf));
1948
14
  proto_register_subtree_array(ett, array_length(ett));
1949
14
}
1950
1951
1952
/*
1953
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
1954
 *
1955
 * Local variables:
1956
 * c-basic-offset: 4
1957
 * tab-width: 8
1958
 * indent-tabs-mode: nil
1959
 * End:
1960
 *
1961
 * vi: set shiftwidth=4 tabstop=8 expandtab:
1962
 * :indentSize=4:tabSize=8:noTabs=true:
1963
 */