s4-rpc_server: Add back support for lsa over \\pipe\\netlogon optionally
[metze/wireshark/wip.git] / plugins / opcua / opcua_enumparser.c
1 /******************************************************************************
2 ** Copyright (C) 2006-2015 ascolab GmbH. All Rights Reserved.
3 ** Web: http://www.ascolab.com
4 **
5 ** This program is free software; you can redistribute it and/or
6 ** modify it under the terms of the GNU General Public License
7 ** as published by the Free Software Foundation; either version 2
8 ** of the License, or (at your option) any later version.
9 **
10 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
11 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12 **
13 ** Project: OpcUa Wireshark Plugin
14 **
15 ** Description: OpcUa Enum Type Parser
16 **
17 ** This file was autogenerated on 13.10.2015.
18 ** DON'T MODIFY THIS FILE!
19 **
20 ******************************************************************************/
21
22 #include "config.h"
23
24 #include <epan/packet.h>
25
26 #include "opcua_enumparser.h"
27
28 gint ett_opcua_array_NodeIdType = -1;
29 gint ett_opcua_array_NamingRuleType = -1;
30 gint ett_opcua_array_OpenFileMode = -1;
31 gint ett_opcua_array_TrustListMasks = -1;
32 gint ett_opcua_array_IdType = -1;
33 gint ett_opcua_array_NodeClass = -1;
34 gint ett_opcua_array_ApplicationType = -1;
35 gint ett_opcua_array_MessageSecurityMode = -1;
36 gint ett_opcua_array_UserTokenType = -1;
37 gint ett_opcua_array_SecurityTokenRequestType = -1;
38 gint ett_opcua_array_NodeAttributesMask = -1;
39 gint ett_opcua_array_AttributeWriteMask = -1;
40 gint ett_opcua_array_BrowseDirection = -1;
41 gint ett_opcua_array_BrowseResultMask = -1;
42 gint ett_opcua_array_ComplianceLevel = -1;
43 gint ett_opcua_array_FilterOperator = -1;
44 gint ett_opcua_array_TimestampsToReturn = -1;
45 gint ett_opcua_array_HistoryUpdateType = -1;
46 gint ett_opcua_array_PerformUpdateType = -1;
47 gint ett_opcua_array_MonitoringMode = -1;
48 gint ett_opcua_array_DataChangeTrigger = -1;
49 gint ett_opcua_array_DeadbandType = -1;
50 gint ett_opcua_array_EnumeratedTestType = -1;
51 gint ett_opcua_array_RedundancySupport = -1;
52 gint ett_opcua_array_ServerState = -1;
53 gint ett_opcua_array_ModelChangeStructureVerbMask = -1;
54 gint ett_opcua_array_AxisScaleEnumeration = -1;
55 gint ett_opcua_array_ExceptionDeviationFormat = -1;
56
57 /** NodeIdType enum table */
58 static const value_string g_NodeIdTypeTable[] = {
59   { 0, "TwoByte" },
60   { 1, "FourByte" },
61   { 2, "Numeric" },
62   { 3, "String" },
63   { 4, "Guid" },
64   { 5, "ByteString" },
65   { 0, NULL }
66 };
67 static int hf_opcua_NodeIdType = -1;
68
69 void parseNodeIdType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
70 {
71     proto_tree_add_item(tree, hf_opcua_NodeIdType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
72 }
73 /** NamingRuleType enum table */
74 static const value_string g_NamingRuleTypeTable[] = {
75   { 1, "Mandatory" },
76   { 2, "Optional" },
77   { 3, "Constraint" },
78   { 0, NULL }
79 };
80 static int hf_opcua_NamingRuleType = -1;
81
82 void parseNamingRuleType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
83 {
84     proto_tree_add_item(tree, hf_opcua_NamingRuleType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
85 }
86 /** OpenFileMode enum table */
87 static const value_string g_OpenFileModeTable[] = {
88   { 1, "Read" },
89   { 2, "Write" },
90   { 4, "EraseExisting" },
91   { 8, "Append" },
92   { 0, NULL }
93 };
94 static int hf_opcua_OpenFileMode = -1;
95
96 void parseOpenFileMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
97 {
98     proto_tree_add_item(tree, hf_opcua_OpenFileMode, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
99 }
100 /** TrustListMasks enum table */
101 static const value_string g_TrustListMasksTable[] = {
102   { 0, "None" },
103   { 1, "TrustedCertificates" },
104   { 2, "TrustedCrls" },
105   { 4, "IssuerCertificates" },
106   { 8, "IssuerCrls" },
107   { 15, "All" },
108   { 0, NULL }
109 };
110 static int hf_opcua_TrustListMasks = -1;
111
112 void parseTrustListMasks(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
113 {
114     proto_tree_add_item(tree, hf_opcua_TrustListMasks, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
115 }
116 /** IdType enum table */
117 static const value_string g_IdTypeTable[] = {
118   { 0, "Numeric" },
119   { 1, "String" },
120   { 2, "Guid" },
121   { 3, "Opaque" },
122   { 0, NULL }
123 };
124 static int hf_opcua_IdType = -1;
125
126 void parseIdType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
127 {
128     proto_tree_add_item(tree, hf_opcua_IdType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
129 }
130 /** NodeClass enum table */
131 static const value_string g_NodeClassTable[] = {
132   { 0, "Unspecified" },
133   { 1, "Object" },
134   { 2, "Variable" },
135   { 4, "Method" },
136   { 8, "ObjectType" },
137   { 16, "VariableType" },
138   { 32, "ReferenceType" },
139   { 64, "DataType" },
140   { 128, "View" },
141   { 0, NULL }
142 };
143 static int hf_opcua_NodeClass = -1;
144
145 void parseNodeClass(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
146 {
147     proto_tree_add_item(tree, hf_opcua_NodeClass, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
148 }
149 /** ApplicationType enum table */
150 static const value_string g_ApplicationTypeTable[] = {
151   { 0, "Server" },
152   { 1, "Client" },
153   { 2, "ClientAndServer" },
154   { 3, "DiscoveryServer" },
155   { 0, NULL }
156 };
157 static int hf_opcua_ApplicationType = -1;
158
159 void parseApplicationType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
160 {
161     proto_tree_add_item(tree, hf_opcua_ApplicationType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
162 }
163 /** MessageSecurityMode enum table */
164 static const value_string g_MessageSecurityModeTable[] = {
165   { 0, "Invalid" },
166   { 1, "None" },
167   { 2, "Sign" },
168   { 3, "SignAndEncrypt" },
169   { 0, NULL }
170 };
171 static int hf_opcua_MessageSecurityMode = -1;
172
173 void parseMessageSecurityMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
174 {
175     proto_tree_add_item(tree, hf_opcua_MessageSecurityMode, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
176 }
177 /** UserTokenType enum table */
178 static const value_string g_UserTokenTypeTable[] = {
179   { 0, "Anonymous" },
180   { 1, "UserName" },
181   { 2, "Certificate" },
182   { 3, "IssuedToken" },
183   { 4, "Kerberos" },
184   { 0, NULL }
185 };
186 static int hf_opcua_UserTokenType = -1;
187
188 void parseUserTokenType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
189 {
190     proto_tree_add_item(tree, hf_opcua_UserTokenType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
191 }
192 /** SecurityTokenRequestType enum table */
193 static const value_string g_SecurityTokenRequestTypeTable[] = {
194   { 0, "Issue" },
195   { 1, "Renew" },
196   { 0, NULL }
197 };
198 static int hf_opcua_SecurityTokenRequestType = -1;
199
200 void parseSecurityTokenRequestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
201 {
202     proto_tree_add_item(tree, hf_opcua_SecurityTokenRequestType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
203 }
204 /** NodeAttributesMask enum table */
205 static const value_string g_NodeAttributesMaskTable[] = {
206   { 0, "None" },
207   { 1, "AccessLevel" },
208   { 2, "ArrayDimensions" },
209   { 4, "BrowseName" },
210   { 8, "ContainsNoLoops" },
211   { 16, "DataType" },
212   { 32, "Description" },
213   { 64, "DisplayName" },
214   { 128, "EventNotifier" },
215   { 256, "Executable" },
216   { 512, "Historizing" },
217   { 1024, "InverseName" },
218   { 2048, "IsAbstract" },
219   { 4096, "MinimumSamplingInterval" },
220   { 8192, "NodeClass" },
221   { 16384, "NodeId" },
222   { 32768, "Symmetric" },
223   { 65536, "UserAccessLevel" },
224   { 131072, "UserExecutable" },
225   { 262144, "UserWriteMask" },
226   { 524288, "ValueRank" },
227   { 1048576, "WriteMask" },
228   { 2097152, "Value" },
229   { 4194303, "All" },
230   { 1335396, "BaseNode" },
231   { 1335524, "Object" },
232   { 1337444, "ObjectTypeOrDataType" },
233   { 4026999, "Variable" },
234   { 3958902, "VariableType" },
235   { 1466724, "Method" },
236   { 1371236, "ReferenceType" },
237   { 1335532, "View" },
238   { 0, NULL }
239 };
240 static int hf_opcua_NodeAttributesMask = -1;
241
242 void parseNodeAttributesMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
243 {
244     proto_tree_add_item(tree, hf_opcua_NodeAttributesMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
245 }
246 /** AttributeWriteMask enum table */
247 static const value_string g_AttributeWriteMaskTable[] = {
248   { 0, "None" },
249   { 1, "AccessLevel" },
250   { 2, "ArrayDimensions" },
251   { 4, "BrowseName" },
252   { 8, "ContainsNoLoops" },
253   { 16, "DataType" },
254   { 32, "Description" },
255   { 64, "DisplayName" },
256   { 128, "EventNotifier" },
257   { 256, "Executable" },
258   { 512, "Historizing" },
259   { 1024, "InverseName" },
260   { 2048, "IsAbstract" },
261   { 4096, "MinimumSamplingInterval" },
262   { 8192, "NodeClass" },
263   { 16384, "NodeId" },
264   { 32768, "Symmetric" },
265   { 65536, "UserAccessLevel" },
266   { 131072, "UserExecutable" },
267   { 262144, "UserWriteMask" },
268   { 524288, "ValueRank" },
269   { 1048576, "WriteMask" },
270   { 2097152, "ValueForVariableType" },
271   { 0, NULL }
272 };
273 static int hf_opcua_AttributeWriteMask = -1;
274
275 void parseAttributeWriteMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
276 {
277     proto_tree_add_item(tree, hf_opcua_AttributeWriteMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
278 }
279 /** BrowseDirection enum table */
280 static const value_string g_BrowseDirectionTable[] = {
281   { 0, "Forward" },
282   { 1, "Inverse" },
283   { 2, "Both" },
284   { 0, NULL }
285 };
286 static int hf_opcua_BrowseDirection = -1;
287
288 void parseBrowseDirection(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
289 {
290     proto_tree_add_item(tree, hf_opcua_BrowseDirection, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
291 }
292
293 /** ComplianceLevel enum table */
294 static const value_string g_ComplianceLevelTable[] = {
295   { 0, "Untested" },
296   { 1, "Partial" },
297   { 2, "SelfTested" },
298   { 3, "Certified" },
299   { 0, NULL }
300 };
301 static int hf_opcua_ComplianceLevel = -1;
302
303 void parseComplianceLevel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
304 {
305     proto_tree_add_item(tree, hf_opcua_ComplianceLevel, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
306 }
307 /** FilterOperator enum table */
308 static const value_string g_FilterOperatorTable[] = {
309   { 0, "Equals" },
310   { 1, "IsNull" },
311   { 2, "GreaterThan" },
312   { 3, "LessThan" },
313   { 4, "GreaterThanOrEqual" },
314   { 5, "LessThanOrEqual" },
315   { 6, "Like" },
316   { 7, "Not" },
317   { 8, "Between" },
318   { 9, "InList" },
319   { 10, "And" },
320   { 11, "Or" },
321   { 12, "Cast" },
322   { 13, "InView" },
323   { 14, "OfType" },
324   { 15, "RelatedTo" },
325   { 16, "BitwiseAnd" },
326   { 17, "BitwiseOr" },
327   { 0, NULL }
328 };
329 static int hf_opcua_FilterOperator = -1;
330
331 void parseFilterOperator(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
332 {
333     proto_tree_add_item(tree, hf_opcua_FilterOperator, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
334 }
335 /** TimestampsToReturn enum table */
336 static const value_string g_TimestampsToReturnTable[] = {
337   { 0, "Source" },
338   { 1, "Server" },
339   { 2, "Both" },
340   { 3, "Neither" },
341   { 0, NULL }
342 };
343 static int hf_opcua_TimestampsToReturn = -1;
344
345 void parseTimestampsToReturn(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
346 {
347     proto_tree_add_item(tree, hf_opcua_TimestampsToReturn, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
348 }
349 /** HistoryUpdateType enum table */
350 static const value_string g_HistoryUpdateTypeTable[] = {
351   { 1, "Insert" },
352   { 2, "Replace" },
353   { 3, "Update" },
354   { 4, "Delete" },
355   { 0, NULL }
356 };
357 static int hf_opcua_HistoryUpdateType = -1;
358
359 void parseHistoryUpdateType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
360 {
361     proto_tree_add_item(tree, hf_opcua_HistoryUpdateType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
362 }
363 /** PerformUpdateType enum table */
364 static const value_string g_PerformUpdateTypeTable[] = {
365   { 1, "Insert" },
366   { 2, "Replace" },
367   { 3, "Update" },
368   { 4, "Remove" },
369   { 0, NULL }
370 };
371 static int hf_opcua_PerformUpdateType = -1;
372
373 void parsePerformUpdateType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
374 {
375     proto_tree_add_item(tree, hf_opcua_PerformUpdateType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
376 }
377 /** MonitoringMode enum table */
378 static const value_string g_MonitoringModeTable[] = {
379   { 0, "Disabled" },
380   { 1, "Sampling" },
381   { 2, "Reporting" },
382   { 0, NULL }
383 };
384 static int hf_opcua_MonitoringMode = -1;
385
386 void parseMonitoringMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
387 {
388     proto_tree_add_item(tree, hf_opcua_MonitoringMode, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
389 }
390 /** DataChangeTrigger enum table */
391 static const value_string g_DataChangeTriggerTable[] = {
392   { 0, "Status" },
393   { 1, "StatusValue" },
394   { 2, "StatusValueTimestamp" },
395   { 0, NULL }
396 };
397 static int hf_opcua_DataChangeTrigger = -1;
398
399 void parseDataChangeTrigger(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
400 {
401     proto_tree_add_item(tree, hf_opcua_DataChangeTrigger, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
402 }
403 /** DeadbandType enum table */
404 static const value_string g_DeadbandTypeTable[] = {
405   { 0, "None" },
406   { 1, "Absolute" },
407   { 2, "Percent" },
408   { 0, NULL }
409 };
410 static int hf_opcua_DeadbandType = -1;
411
412 void parseDeadbandType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
413 {
414     proto_tree_add_item(tree, hf_opcua_DeadbandType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
415 }
416 /** EnumeratedTestType enum table */
417 static const value_string g_EnumeratedTestTypeTable[] = {
418   { 1, "Red" },
419   { 4, "Yellow" },
420   { 5, "Green" },
421   { 0, NULL }
422 };
423 static int hf_opcua_EnumeratedTestType = -1;
424
425 void parseEnumeratedTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
426 {
427     proto_tree_add_item(tree, hf_opcua_EnumeratedTestType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
428 }
429 /** RedundancySupport enum table */
430 static const value_string g_RedundancySupportTable[] = {
431   { 0, "None" },
432   { 1, "Cold" },
433   { 2, "Warm" },
434   { 3, "Hot" },
435   { 4, "Transparent" },
436   { 5, "HotAndMirrored" },
437   { 0, NULL }
438 };
439 static int hf_opcua_RedundancySupport = -1;
440
441 void parseRedundancySupport(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
442 {
443     proto_tree_add_item(tree, hf_opcua_RedundancySupport, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
444 }
445 /** ServerState enum table */
446 static const value_string g_ServerStateTable[] = {
447   { 0, "Running" },
448   { 1, "Failed" },
449   { 2, "NoConfiguration" },
450   { 3, "Suspended" },
451   { 4, "Shutdown" },
452   { 5, "Test" },
453   { 6, "CommunicationFault" },
454   { 7, "Unknown" },
455   { 0, NULL }
456 };
457 static int hf_opcua_ServerState = -1;
458
459 void parseServerState(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
460 {
461     proto_tree_add_item(tree, hf_opcua_ServerState, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
462 }
463 /** ModelChangeStructureVerbMask enum table */
464 static const value_string g_ModelChangeStructureVerbMaskTable[] = {
465   { 1, "NodeAdded" },
466   { 2, "NodeDeleted" },
467   { 4, "ReferenceAdded" },
468   { 8, "ReferenceDeleted" },
469   { 16, "DataTypeChanged" },
470   { 0, NULL }
471 };
472 static int hf_opcua_ModelChangeStructureVerbMask = -1;
473
474 void parseModelChangeStructureVerbMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
475 {
476     proto_tree_add_item(tree, hf_opcua_ModelChangeStructureVerbMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
477 }
478 /** AxisScaleEnumeration enum table */
479 static const value_string g_AxisScaleEnumerationTable[] = {
480   { 0, "Linear" },
481   { 1, "Log" },
482   { 2, "Ln" },
483   { 0, NULL }
484 };
485 static int hf_opcua_AxisScaleEnumeration = -1;
486
487 void parseAxisScaleEnumeration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
488 {
489     proto_tree_add_item(tree, hf_opcua_AxisScaleEnumeration, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
490 }
491 /** ExceptionDeviationFormat enum table */
492 static const value_string g_ExceptionDeviationFormatTable[] = {
493   { 0, "AbsoluteValue" },
494   { 1, "PercentOfValue" },
495   { 2, "PercentOfRange" },
496   { 3, "PercentOfEURange" },
497   { 4, "Unknown" },
498   { 0, NULL }
499 };
500 static int hf_opcua_ExceptionDeviationFormat = -1;
501
502 void parseExceptionDeviationFormat(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
503 {
504     proto_tree_add_item(tree, hf_opcua_ExceptionDeviationFormat, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4;
505 }
506 /** AttributeId enum table */
507 static const value_string g_AttributeIdTable[] = {
508     {1, "NodeId"},
509     {2, "NodeClass"},
510     {3, "BrowseName"},
511     {4, "DisplayName"},
512     {5, "Description"},
513     {6, "WriteMask"},
514     {7, "UserWriteMask"},
515     {8, "IsAbstract"},
516     {9, "Symmetric"},
517     {10, "InverseName"},
518     {11, "ContainsNoLoops"},
519     {12, "EventNotifier"},
520     {13, "Value"},
521     {14, "DataType"},
522     {15, "ValueRank"},
523     {16, "ArrayDimensions"},
524     {17, "AccessLevel"},
525     {18, "UserAccessLevel"},
526     {19, "MinimumSamplingInterval"},
527     {20, "Historizing"},
528     {21, "Executable"},
529     {22, "UserExecutable"},
530     {0, NULL}
531 };
532 static int hf_opcua_AttributeId = -1;
533
534 void parseAttributeId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset)
535 {
536     proto_tree_add_item(tree, hf_opcua_AttributeId, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset += 4;
537 }
538
539 /** Setup enum subtree array */
540 static gint *ett[] =
541 {
542     &ett_opcua_array_NodeIdType,
543     &ett_opcua_array_NamingRuleType,
544     &ett_opcua_array_OpenFileMode,
545     &ett_opcua_array_TrustListMasks,
546     &ett_opcua_array_IdType,
547     &ett_opcua_array_NodeClass,
548     &ett_opcua_array_ApplicationType,
549     &ett_opcua_array_MessageSecurityMode,
550     &ett_opcua_array_UserTokenType,
551     &ett_opcua_array_SecurityTokenRequestType,
552     &ett_opcua_array_NodeAttributesMask,
553     &ett_opcua_array_AttributeWriteMask,
554     &ett_opcua_array_BrowseDirection,
555     &ett_opcua_array_BrowseResultMask,
556     &ett_opcua_array_ComplianceLevel,
557     &ett_opcua_array_FilterOperator,
558     &ett_opcua_array_TimestampsToReturn,
559     &ett_opcua_array_HistoryUpdateType,
560     &ett_opcua_array_PerformUpdateType,
561     &ett_opcua_array_MonitoringMode,
562     &ett_opcua_array_DataChangeTrigger,
563     &ett_opcua_array_DeadbandType,
564     &ett_opcua_array_EnumeratedTestType,
565     &ett_opcua_array_RedundancySupport,
566     &ett_opcua_array_ServerState,
567     &ett_opcua_array_ModelChangeStructureVerbMask,
568     &ett_opcua_array_AxisScaleEnumeration,
569     &ett_opcua_array_ExceptionDeviationFormat,
570 };
571
572 /** Register enum types. */
573 void registerEnumTypes(int proto)
574 {
575     /** header field definitions */
576     static hf_register_info hf[] =
577     {
578         { &hf_opcua_NodeIdType,
579         {  "NodeIdType", "opcua.NodeIdType", FT_UINT32, BASE_HEX,  VALS(g_NodeIdTypeTable), 0x0, NULL, HFILL }
580         },
581         { &hf_opcua_NamingRuleType,
582         {  "NamingRuleType", "opcua.NamingRuleType", FT_UINT32, BASE_HEX,  VALS(g_NamingRuleTypeTable), 0x0, NULL, HFILL }
583         },
584         { &hf_opcua_OpenFileMode,
585         {  "OpenFileMode", "opcua.OpenFileMode", FT_UINT32, BASE_HEX,  VALS(g_OpenFileModeTable), 0x0, NULL, HFILL }
586         },
587         { &hf_opcua_TrustListMasks,
588         {  "TrustListMasks", "opcua.TrustListMasks", FT_UINT32, BASE_HEX,  VALS(g_TrustListMasksTable), 0x0, NULL, HFILL }
589         },
590         { &hf_opcua_IdType,
591         {  "IdType", "opcua.IdType", FT_UINT32, BASE_HEX,  VALS(g_IdTypeTable), 0x0, NULL, HFILL }
592         },
593         { &hf_opcua_NodeClass,
594         {  "NodeClass", "opcua.NodeClass", FT_UINT32, BASE_HEX,  VALS(g_NodeClassTable), 0x0, NULL, HFILL }
595         },
596         { &hf_opcua_ApplicationType,
597         {  "ApplicationType", "opcua.ApplicationType", FT_UINT32, BASE_HEX,  VALS(g_ApplicationTypeTable), 0x0, NULL, HFILL }
598         },
599         { &hf_opcua_MessageSecurityMode,
600         {  "MessageSecurityMode", "opcua.MessageSecurityMode", FT_UINT32, BASE_HEX,  VALS(g_MessageSecurityModeTable), 0x0, NULL, HFILL }
601         },
602         { &hf_opcua_UserTokenType,
603         {  "UserTokenType", "opcua.UserTokenType", FT_UINT32, BASE_HEX,  VALS(g_UserTokenTypeTable), 0x0, NULL, HFILL }
604         },
605         { &hf_opcua_SecurityTokenRequestType,
606         {  "SecurityTokenRequestType", "opcua.SecurityTokenRequestType", FT_UINT32, BASE_HEX,  VALS(g_SecurityTokenRequestTypeTable), 0x0, NULL, HFILL }
607         },
608         { &hf_opcua_NodeAttributesMask,
609         {  "NodeAttributesMask", "opcua.NodeAttributesMask", FT_UINT32, BASE_HEX,  VALS(g_NodeAttributesMaskTable), 0x0, NULL, HFILL }
610         },
611         { &hf_opcua_AttributeWriteMask,
612         {  "AttributeWriteMask", "opcua.AttributeWriteMask", FT_UINT32, BASE_HEX,  VALS(g_AttributeWriteMaskTable), 0x0, NULL, HFILL }
613         },
614         { &hf_opcua_BrowseDirection,
615         {  "BrowseDirection", "opcua.BrowseDirection", FT_UINT32, BASE_HEX,  VALS(g_BrowseDirectionTable), 0x0, NULL, HFILL }
616         },
617         { &hf_opcua_ComplianceLevel,
618         {  "ComplianceLevel", "opcua.ComplianceLevel", FT_UINT32, BASE_HEX,  VALS(g_ComplianceLevelTable), 0x0, NULL, HFILL }
619         },
620         { &hf_opcua_FilterOperator,
621         {  "FilterOperator", "opcua.FilterOperator", FT_UINT32, BASE_HEX,  VALS(g_FilterOperatorTable), 0x0, NULL, HFILL }
622         },
623         { &hf_opcua_TimestampsToReturn,
624         {  "TimestampsToReturn", "opcua.TimestampsToReturn", FT_UINT32, BASE_HEX,  VALS(g_TimestampsToReturnTable), 0x0, NULL, HFILL }
625         },
626         { &hf_opcua_HistoryUpdateType,
627         {  "HistoryUpdateType", "opcua.HistoryUpdateType", FT_UINT32, BASE_HEX,  VALS(g_HistoryUpdateTypeTable), 0x0, NULL, HFILL }
628         },
629         { &hf_opcua_PerformUpdateType,
630         {  "PerformUpdateType", "opcua.PerformUpdateType", FT_UINT32, BASE_HEX,  VALS(g_PerformUpdateTypeTable), 0x0, NULL, HFILL }
631         },
632         { &hf_opcua_MonitoringMode,
633         {  "MonitoringMode", "opcua.MonitoringMode", FT_UINT32, BASE_HEX,  VALS(g_MonitoringModeTable), 0x0, NULL, HFILL }
634         },
635         { &hf_opcua_DataChangeTrigger,
636         {  "DataChangeTrigger", "opcua.DataChangeTrigger", FT_UINT32, BASE_HEX,  VALS(g_DataChangeTriggerTable), 0x0, NULL, HFILL }
637         },
638         { &hf_opcua_DeadbandType,
639         {  "DeadbandType", "opcua.DeadbandType", FT_UINT32, BASE_HEX,  VALS(g_DeadbandTypeTable), 0x0, NULL, HFILL }
640         },
641         { &hf_opcua_EnumeratedTestType,
642         {  "EnumeratedTestType", "opcua.EnumeratedTestType", FT_UINT32, BASE_HEX,  VALS(g_EnumeratedTestTypeTable), 0x0, NULL, HFILL }
643         },
644         { &hf_opcua_RedundancySupport,
645         {  "RedundancySupport", "opcua.RedundancySupport", FT_UINT32, BASE_HEX,  VALS(g_RedundancySupportTable), 0x0, NULL, HFILL }
646         },
647         { &hf_opcua_ServerState,
648         {  "ServerState", "opcua.ServerState", FT_UINT32, BASE_HEX,  VALS(g_ServerStateTable), 0x0, NULL, HFILL }
649         },
650         { &hf_opcua_ModelChangeStructureVerbMask,
651         {  "ModelChangeStructureVerbMask", "opcua.ModelChangeStructureVerbMask", FT_UINT32, BASE_HEX,  VALS(g_ModelChangeStructureVerbMaskTable), 0x0, NULL, HFILL }
652         },
653         { &hf_opcua_AxisScaleEnumeration,
654         {  "AxisScaleEnumeration", "opcua.AxisScaleEnumeration", FT_UINT32, BASE_HEX,  VALS(g_AxisScaleEnumerationTable), 0x0, NULL, HFILL }
655         },
656         { &hf_opcua_ExceptionDeviationFormat,
657         {  "ExceptionDeviationFormat", "opcua.ExceptionDeviationFormat", FT_UINT32, BASE_HEX,  VALS(g_ExceptionDeviationFormatTable), 0x0, NULL, HFILL }
658         },
659         { &hf_opcua_AttributeId,
660         {  "AttributeId", "opcua.AttributeId", FT_UINT32, BASE_HEX,  VALS(g_AttributeIdTable), 0x0, NULL, HFILL }
661         },
662     };
663
664     proto_register_field_array(proto, hf, array_length(hf));
665     proto_register_subtree_array(ett, array_length(ett));
666 }
667