Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / plugins / epan / opcua / opcua_complextypeparser.c
bloba04f9c596da78ee26136aeeb156957ea8469008d
1 /******************************************************************************
2 ** Copyright (C) 2006-2015 ascolab GmbH. All Rights Reserved.
3 ** Web: http://www.ascolab.com
4 **
5 ** SPDX-License-Identifier: GPL-2.0-or-later
6 **
7 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
8 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
9 **
10 ** Project: OpcUa Wireshark Plugin
12 ** Description: OpcUa Complex Type Parser
14 ** This file was autogenerated on 13.10.2015.
15 ** DON'T MODIFY THIS FILE!
17 ******************************************************************************/
19 #include "config.h"
21 #include <epan/packet.h>
22 #include "opcua_complextypeparser.h"
23 #include "opcua_enumparser.h"
24 #include "opcua_simpletypes.h"
25 #include "opcua_hfindeces.h"
27 int ett_opcua_TrustListDataType;
28 int ett_opcua_array_TrustListDataType;
29 int ett_opcua_Node;
30 int ett_opcua_array_Node;
31 int ett_opcua_InstanceNode;
32 int ett_opcua_array_InstanceNode;
33 int ett_opcua_TypeNode;
34 int ett_opcua_array_TypeNode;
35 int ett_opcua_ObjectNode;
36 int ett_opcua_array_ObjectNode;
37 int ett_opcua_ObjectTypeNode;
38 int ett_opcua_array_ObjectTypeNode;
39 int ett_opcua_VariableNode;
40 int ett_opcua_array_VariableNode;
41 int ett_opcua_VariableTypeNode;
42 int ett_opcua_array_VariableTypeNode;
43 int ett_opcua_ReferenceTypeNode;
44 int ett_opcua_array_ReferenceTypeNode;
45 int ett_opcua_MethodNode;
46 int ett_opcua_array_MethodNode;
47 int ett_opcua_ViewNode;
48 int ett_opcua_array_ViewNode;
49 int ett_opcua_DataTypeNode;
50 int ett_opcua_array_DataTypeNode;
51 int ett_opcua_ReferenceNode;
52 int ett_opcua_array_ReferenceNode;
53 int ett_opcua_Argument;
54 int ett_opcua_array_Argument;
55 int ett_opcua_EnumValueType;
56 int ett_opcua_array_EnumValueType;
57 int ett_opcua_OptionSet;
58 int ett_opcua_array_OptionSet;
59 int ett_opcua_TimeZoneDataType;
60 int ett_opcua_array_TimeZoneDataType;
61 int ett_opcua_ApplicationDescription;
62 int ett_opcua_array_ApplicationDescription;
63 int ett_opcua_RequestHeader;
64 int ett_opcua_array_RequestHeader;
65 int ett_opcua_ResponseHeader;
66 int ett_opcua_array_ResponseHeader;
67 int ett_opcua_ServerOnNetwork;
68 int ett_opcua_array_ServerOnNetwork;
69 int ett_opcua_UserTokenPolicy;
70 int ett_opcua_array_UserTokenPolicy;
71 int ett_opcua_EndpointDescription;
72 int ett_opcua_array_EndpointDescription;
73 int ett_opcua_RegisteredServer;
74 int ett_opcua_array_RegisteredServer;
75 int ett_opcua_MdnsDiscoveryConfiguration;
76 int ett_opcua_array_MdnsDiscoveryConfiguration;
77 int ett_opcua_ChannelSecurityToken;
78 int ett_opcua_array_ChannelSecurityToken;
79 int ett_opcua_SignedSoftwareCertificate;
80 int ett_opcua_array_SignedSoftwareCertificate;
81 int ett_opcua_SignatureData;
82 int ett_opcua_array_SignatureData;
83 int ett_opcua_UserIdentityToken;
84 int ett_opcua_array_UserIdentityToken;
85 int ett_opcua_AnonymousIdentityToken;
86 int ett_opcua_array_AnonymousIdentityToken;
87 int ett_opcua_UserNameIdentityToken;
88 int ett_opcua_array_UserNameIdentityToken;
89 int ett_opcua_X509IdentityToken;
90 int ett_opcua_array_X509IdentityToken;
91 int ett_opcua_KerberosIdentityToken;
92 int ett_opcua_array_KerberosIdentityToken;
93 int ett_opcua_IssuedIdentityToken;
94 int ett_opcua_array_IssuedIdentityToken;
95 int ett_opcua_NodeAttributes;
96 int ett_opcua_array_NodeAttributes;
97 int ett_opcua_ObjectAttributes;
98 int ett_opcua_array_ObjectAttributes;
99 int ett_opcua_VariableAttributes;
100 int ett_opcua_array_VariableAttributes;
101 int ett_opcua_MethodAttributes;
102 int ett_opcua_array_MethodAttributes;
103 int ett_opcua_ObjectTypeAttributes;
104 int ett_opcua_array_ObjectTypeAttributes;
105 int ett_opcua_VariableTypeAttributes;
106 int ett_opcua_array_VariableTypeAttributes;
107 int ett_opcua_ReferenceTypeAttributes;
108 int ett_opcua_array_ReferenceTypeAttributes;
109 int ett_opcua_DataTypeAttributes;
110 int ett_opcua_array_DataTypeAttributes;
111 int ett_opcua_ViewAttributes;
112 int ett_opcua_array_ViewAttributes;
113 int ett_opcua_AddNodesItem;
114 int ett_opcua_array_AddNodesItem;
115 int ett_opcua_AddNodesResult;
116 int ett_opcua_array_AddNodesResult;
117 int ett_opcua_AddReferencesItem;
118 int ett_opcua_array_AddReferencesItem;
119 int ett_opcua_DeleteNodesItem;
120 int ett_opcua_array_DeleteNodesItem;
121 int ett_opcua_DeleteReferencesItem;
122 int ett_opcua_array_DeleteReferencesItem;
123 int ett_opcua_ViewDescription;
124 int ett_opcua_array_ViewDescription;
125 int ett_opcua_BrowseDescription;
126 int ett_opcua_array_BrowseDescription;
127 int ett_opcua_ReferenceDescription;
128 int ett_opcua_array_ReferenceDescription;
129 int ett_opcua_BrowseResult;
130 int ett_opcua_array_BrowseResult;
131 int ett_opcua_RelativePathElement;
132 int ett_opcua_array_RelativePathElement;
133 int ett_opcua_RelativePath;
134 int ett_opcua_array_RelativePath;
135 int ett_opcua_BrowsePath;
136 int ett_opcua_array_BrowsePath;
137 int ett_opcua_BrowsePathTarget;
138 int ett_opcua_array_BrowsePathTarget;
139 int ett_opcua_BrowsePathResult;
140 int ett_opcua_array_BrowsePathResult;
141 int ett_opcua_EndpointConfiguration;
142 int ett_opcua_array_EndpointConfiguration;
143 int ett_opcua_SupportedProfile;
144 int ett_opcua_array_SupportedProfile;
145 int ett_opcua_SoftwareCertificate;
146 int ett_opcua_array_SoftwareCertificate;
147 int ett_opcua_QueryDataDescription;
148 int ett_opcua_array_QueryDataDescription;
149 int ett_opcua_NodeTypeDescription;
150 int ett_opcua_array_NodeTypeDescription;
151 int ett_opcua_QueryDataSet;
152 int ett_opcua_array_QueryDataSet;
153 int ett_opcua_NodeReference;
154 int ett_opcua_array_NodeReference;
155 int ett_opcua_ContentFilterElement;
156 int ett_opcua_array_ContentFilterElement;
157 int ett_opcua_ContentFilter;
158 int ett_opcua_array_ContentFilter;
159 int ett_opcua_ElementOperand;
160 int ett_opcua_array_ElementOperand;
161 int ett_opcua_LiteralOperand;
162 int ett_opcua_array_LiteralOperand;
163 int ett_opcua_AttributeOperand;
164 int ett_opcua_array_AttributeOperand;
165 int ett_opcua_SimpleAttributeOperand;
166 int ett_opcua_array_SimpleAttributeOperand;
167 int ett_opcua_ContentFilterElementResult;
168 int ett_opcua_array_ContentFilterElementResult;
169 int ett_opcua_ContentFilterResult;
170 int ett_opcua_array_ContentFilterResult;
171 int ett_opcua_ParsingResult;
172 int ett_opcua_array_ParsingResult;
173 int ett_opcua_ReadValueId;
174 int ett_opcua_array_ReadValueId;
175 int ett_opcua_HistoryReadValueId;
176 int ett_opcua_array_HistoryReadValueId;
177 int ett_opcua_HistoryReadResult;
178 int ett_opcua_array_HistoryReadResult;
179 int ett_opcua_ReadEventDetails;
180 int ett_opcua_array_ReadEventDetails;
181 int ett_opcua_ReadRawModifiedDetails;
182 int ett_opcua_array_ReadRawModifiedDetails;
183 int ett_opcua_ReadProcessedDetails;
184 int ett_opcua_array_ReadProcessedDetails;
185 int ett_opcua_ReadAtTimeDetails;
186 int ett_opcua_array_ReadAtTimeDetails;
187 int ett_opcua_HistoryData;
188 int ett_opcua_array_HistoryData;
189 int ett_opcua_ModificationInfo;
190 int ett_opcua_array_ModificationInfo;
191 int ett_opcua_HistoryModifiedData;
192 int ett_opcua_array_HistoryModifiedData;
193 int ett_opcua_HistoryEvent;
194 int ett_opcua_array_HistoryEvent;
195 int ett_opcua_WriteValue;
196 int ett_opcua_array_WriteValue;
197 int ett_opcua_HistoryUpdateDetails;
198 int ett_opcua_array_HistoryUpdateDetails;
199 int ett_opcua_UpdateDataDetails;
200 int ett_opcua_array_UpdateDataDetails;
201 int ett_opcua_UpdateStructureDataDetails;
202 int ett_opcua_array_UpdateStructureDataDetails;
203 int ett_opcua_UpdateEventDetails;
204 int ett_opcua_array_UpdateEventDetails;
205 int ett_opcua_DeleteRawModifiedDetails;
206 int ett_opcua_array_DeleteRawModifiedDetails;
207 int ett_opcua_DeleteAtTimeDetails;
208 int ett_opcua_array_DeleteAtTimeDetails;
209 int ett_opcua_DeleteEventDetails;
210 int ett_opcua_array_DeleteEventDetails;
211 int ett_opcua_HistoryUpdateResult;
212 int ett_opcua_array_HistoryUpdateResult;
213 int ett_opcua_CallMethodRequest;
214 int ett_opcua_array_CallMethodRequest;
215 int ett_opcua_CallMethodResult;
216 int ett_opcua_array_CallMethodResult;
217 int ett_opcua_DataChangeFilter;
218 int ett_opcua_array_DataChangeFilter;
219 int ett_opcua_EventFilter;
220 int ett_opcua_array_EventFilter;
221 int ett_opcua_AggregateConfiguration;
222 int ett_opcua_array_AggregateConfiguration;
223 int ett_opcua_AggregateFilter;
224 int ett_opcua_array_AggregateFilter;
225 int ett_opcua_EventFilterResult;
226 int ett_opcua_array_EventFilterResult;
227 int ett_opcua_AggregateFilterResult;
228 int ett_opcua_array_AggregateFilterResult;
229 int ett_opcua_MonitoringParameters;
230 int ett_opcua_array_MonitoringParameters;
231 int ett_opcua_MonitoredItemCreateRequest;
232 int ett_opcua_array_MonitoredItemCreateRequest;
233 int ett_opcua_MonitoredItemCreateResult;
234 int ett_opcua_array_MonitoredItemCreateResult;
235 int ett_opcua_MonitoredItemModifyRequest;
236 int ett_opcua_array_MonitoredItemModifyRequest;
237 int ett_opcua_MonitoredItemModifyResult;
238 int ett_opcua_array_MonitoredItemModifyResult;
239 int ett_opcua_NotificationMessage;
240 int ett_opcua_array_NotificationMessage;
241 int ett_opcua_DataChangeNotification;
242 int ett_opcua_array_DataChangeNotification;
243 int ett_opcua_MonitoredItemNotification;
244 int ett_opcua_array_MonitoredItemNotification;
245 int ett_opcua_EventNotificationList;
246 int ett_opcua_array_EventNotificationList;
247 int ett_opcua_EventFieldList;
248 int ett_opcua_array_EventFieldList;
249 int ett_opcua_HistoryEventFieldList;
250 int ett_opcua_array_HistoryEventFieldList;
251 int ett_opcua_StatusChangeNotification;
252 int ett_opcua_array_StatusChangeNotification;
253 int ett_opcua_SubscriptionAcknowledgement;
254 int ett_opcua_array_SubscriptionAcknowledgement;
255 int ett_opcua_TransferResult;
256 int ett_opcua_array_TransferResult;
257 int ett_opcua_ScalarTestType;
258 int ett_opcua_array_ScalarTestType;
259 int ett_opcua_ArrayTestType;
260 int ett_opcua_array_ArrayTestType;
261 int ett_opcua_CompositeTestType;
262 int ett_opcua_array_CompositeTestType;
263 int ett_opcua_BuildInfo;
264 int ett_opcua_array_BuildInfo;
265 int ett_opcua_RedundantServerDataType;
266 int ett_opcua_array_RedundantServerDataType;
267 int ett_opcua_EndpointUrlListDataType;
268 int ett_opcua_array_EndpointUrlListDataType;
269 int ett_opcua_NetworkGroupDataType;
270 int ett_opcua_array_NetworkGroupDataType;
271 int ett_opcua_SamplingIntervalDiagnosticsDataType;
272 int ett_opcua_array_SamplingIntervalDiagnosticsDataType;
273 int ett_opcua_ServerDiagnosticsSummaryDataType;
274 int ett_opcua_array_ServerDiagnosticsSummaryDataType;
275 int ett_opcua_ServerStatusDataType;
276 int ett_opcua_array_ServerStatusDataType;
277 int ett_opcua_SessionDiagnosticsDataType;
278 int ett_opcua_array_SessionDiagnosticsDataType;
279 int ett_opcua_SessionSecurityDiagnosticsDataType;
280 int ett_opcua_array_SessionSecurityDiagnosticsDataType;
281 int ett_opcua_ServiceCounterDataType;
282 int ett_opcua_array_ServiceCounterDataType;
283 int ett_opcua_StatusResult;
284 int ett_opcua_array_StatusResult;
285 int ett_opcua_SubscriptionDiagnosticsDataType;
286 int ett_opcua_array_SubscriptionDiagnosticsDataType;
287 int ett_opcua_ModelChangeStructureDataType;
288 int ett_opcua_array_ModelChangeStructureDataType;
289 int ett_opcua_SemanticChangeStructureDataType;
290 int ett_opcua_array_SemanticChangeStructureDataType;
291 int ett_opcua_Range;
292 int ett_opcua_array_Range;
293 int ett_opcua_EUInformation;
294 int ett_opcua_array_EUInformation;
295 int ett_opcua_ComplexNumberType;
296 int ett_opcua_array_ComplexNumberType;
297 int ett_opcua_DoubleComplexNumberType;
298 int ett_opcua_array_DoubleComplexNumberType;
299 int ett_opcua_AxisInformation;
300 int ett_opcua_array_AxisInformation;
301 int ett_opcua_XVType;
302 int ett_opcua_array_XVType;
303 int ett_opcua_ProgramDiagnosticDataType;
304 int ett_opcua_array_ProgramDiagnosticDataType;
305 int ett_opcua_Annotation;
306 int ett_opcua_array_Annotation;
308 void parseTrustListDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
310 proto_item *ti;
311 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TrustListDataType, &ti, "%s: TrustListDataType", szFieldName);
312 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedLists);
313 /* Array length field ignored: NoOfTrustedCertificates */
314 parseArraySimple(subtree, tvb, pinfo, pOffset, "TrustedCertificates", "ByteString", hf_opcua_TrustedCertificates, parseByteString, ett_opcua_array_ByteString);
315 /* Array length field ignored: NoOfTrustedCrls */
316 parseArraySimple(subtree, tvb, pinfo, pOffset, "TrustedCrls", "ByteString", hf_opcua_TrustedCrls, parseByteString, ett_opcua_array_ByteString);
317 /* Array length field ignored: NoOfIssuerCertificates */
318 parseArraySimple(subtree, tvb, pinfo, pOffset, "IssuerCertificates", "ByteString", hf_opcua_IssuerCertificates, parseByteString, ett_opcua_array_ByteString);
319 /* Array length field ignored: NoOfIssuerCrls */
320 parseArraySimple(subtree, tvb, pinfo, pOffset, "IssuerCrls", "ByteString", hf_opcua_IssuerCrls, parseByteString, ett_opcua_array_ByteString);
321 proto_item_set_end(ti, tvb, *pOffset);
323 void parseNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
325 proto_item *ti;
326 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Node, &ti, "%s: Node", szFieldName);
327 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
328 parseNodeClass(subtree, tvb, pinfo, pOffset);
329 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
330 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
331 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
332 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
333 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
334 /* Array length field ignored: NoOfReferences */
335 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
336 proto_item_set_end(ti, tvb, *pOffset);
338 void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
340 proto_item *ti;
341 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_InstanceNode, &ti, "%s: InstanceNode", szFieldName);
342 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
343 parseNodeClass(subtree, tvb, pinfo, pOffset);
344 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
345 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
346 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
347 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
348 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
349 /* Array length field ignored: NoOfReferences */
350 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
351 proto_item_set_end(ti, tvb, *pOffset);
353 void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
355 proto_item *ti;
356 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TypeNode, &ti, "%s: TypeNode", szFieldName);
357 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
358 parseNodeClass(subtree, tvb, pinfo, pOffset);
359 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
360 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
361 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
362 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
363 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
364 /* Array length field ignored: NoOfReferences */
365 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
366 proto_item_set_end(ti, tvb, *pOffset);
368 void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
370 proto_item *ti;
371 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectNode, &ti, "%s: ObjectNode", szFieldName);
372 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
373 parseNodeClass(subtree, tvb, pinfo, pOffset);
374 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
375 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
376 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
377 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
378 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
379 /* Array length field ignored: NoOfReferences */
380 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
381 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier);
382 proto_item_set_end(ti, tvb, *pOffset);
384 void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
386 proto_item *ti;
387 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectTypeNode, &ti, "%s: ObjectTypeNode", szFieldName);
388 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
389 parseNodeClass(subtree, tvb, pinfo, pOffset);
390 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
391 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
392 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
393 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
394 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
395 /* Array length field ignored: NoOfReferences */
396 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
397 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
398 proto_item_set_end(ti, tvb, *pOffset);
400 void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
402 proto_item *ti;
403 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableNode, &ti, "%s: VariableNode", szFieldName);
404 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
405 parseNodeClass(subtree, tvb, pinfo, pOffset);
406 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
407 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
408 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
409 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
410 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
411 /* Array length field ignored: NoOfReferences */
412 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
413 parseVariant(subtree, tvb, pinfo, pOffset, "Value");
414 parseNodeId(subtree, tvb, pinfo, pOffset, "DataType");
415 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank);
416 /* Array length field ignored: NoOfArrayDimensions */
417 parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32);
418 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_AccessLevel);
419 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_UserAccessLevel);
420 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MinimumSamplingInterval);
421 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Historizing);
422 proto_item_set_end(ti, tvb, *pOffset);
424 void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
426 proto_item *ti;
427 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableTypeNode, &ti, "%s: VariableTypeNode", szFieldName);
428 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
429 parseNodeClass(subtree, tvb, pinfo, pOffset);
430 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
431 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
432 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
433 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
434 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
435 /* Array length field ignored: NoOfReferences */
436 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
437 parseVariant(subtree, tvb, pinfo, pOffset, "Value");
438 parseNodeId(subtree, tvb, pinfo, pOffset, "DataType");
439 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank);
440 /* Array length field ignored: NoOfArrayDimensions */
441 parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32);
442 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
443 proto_item_set_end(ti, tvb, *pOffset);
445 void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
447 proto_item *ti;
448 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceTypeNode, &ti, "%s: ReferenceTypeNode", szFieldName);
449 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
450 parseNodeClass(subtree, tvb, pinfo, pOffset);
451 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
452 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
453 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
454 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
455 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
456 /* Array length field ignored: NoOfReferences */
457 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
458 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
459 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Symmetric);
460 parseLocalizedText(subtree, tvb, pinfo, pOffset, "InverseName");
461 proto_item_set_end(ti, tvb, *pOffset);
463 void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
465 proto_item *ti;
466 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MethodNode, &ti, "%s: MethodNode", szFieldName);
467 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
468 parseNodeClass(subtree, tvb, pinfo, pOffset);
469 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
470 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
471 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
472 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
473 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
474 /* Array length field ignored: NoOfReferences */
475 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
476 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Executable);
477 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UserExecutable);
478 proto_item_set_end(ti, tvb, *pOffset);
480 void parseViewNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
482 proto_item *ti;
483 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewNode, &ti, "%s: ViewNode", szFieldName);
484 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
485 parseNodeClass(subtree, tvb, pinfo, pOffset);
486 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
487 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
488 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
489 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
490 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
491 /* Array length field ignored: NoOfReferences */
492 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
493 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ContainsNoLoops);
494 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier);
495 proto_item_set_end(ti, tvb, *pOffset);
497 void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
499 proto_item *ti;
500 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataTypeNode, &ti, "%s: DataTypeNode", szFieldName);
501 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
502 parseNodeClass(subtree, tvb, pinfo, pOffset);
503 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
504 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
505 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
506 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
507 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
508 /* Array length field ignored: NoOfReferences */
509 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode);
510 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
511 proto_item_set_end(ti, tvb, *pOffset);
513 void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
515 proto_item *ti;
516 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceNode, &ti, "%s: ReferenceNode", szFieldName);
517 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
518 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsInverse);
519 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetId");
520 proto_item_set_end(ti, tvb, *pOffset);
522 void parseArgument(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
524 proto_item *ti;
525 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Argument, &ti, "%s: Argument", szFieldName);
526 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Name);
527 parseNodeId(subtree, tvb, pinfo, pOffset, "DataType");
528 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank);
529 /* Array length field ignored: NoOfArrayDimensions */
530 parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32);
531 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
532 proto_item_set_end(ti, tvb, *pOffset);
534 void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
536 proto_item *ti;
537 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EnumValueType, &ti, "%s: EnumValueType", szFieldName);
538 parseInt64(subtree, tvb, pinfo, pOffset, hf_opcua_Value);
539 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
540 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
541 proto_item_set_end(ti, tvb, *pOffset);
543 void parseOptionSet(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
545 proto_item *ti;
546 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_OptionSet, &ti, "%s: OptionSet", szFieldName);
547 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Value);
548 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ValidBits);
549 proto_item_set_end(ti, tvb, *pOffset);
551 void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
553 proto_item *ti;
554 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TimeZoneDataType, &ti, "%s: TimeZoneDataType", szFieldName);
555 parseInt16(subtree, tvb, pinfo, pOffset, hf_opcua_Offset);
556 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DaylightSavingInOffset);
557 proto_item_set_end(ti, tvb, *pOffset);
559 void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
561 proto_item *ti;
562 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ApplicationDescription, &ti, "%s: ApplicationDescription", szFieldName);
563 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ApplicationUri);
564 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri);
565 parseLocalizedText(subtree, tvb, pinfo, pOffset, "ApplicationName");
566 parseApplicationType(subtree, tvb, pinfo, pOffset);
567 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_GatewayServerUri);
568 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_DiscoveryProfileUri);
569 /* Array length field ignored: NoOfDiscoveryUrls */
570 parseArraySimple(subtree, tvb, pinfo, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String);
571 proto_item_set_end(ti, tvb, *pOffset);
573 void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
575 static int * const returnDiagnostics_mask[] = {
576 &hf_opcua_returnDiag_mask_sl_symbolicId,
577 &hf_opcua_returnDiag_mask_sl_localizedText,
578 &hf_opcua_returnDiag_mask_sl_additionalinfo,
579 &hf_opcua_returnDiag_mask_sl_innerstatuscode,
580 &hf_opcua_returnDiag_mask_sl_innerdiagnostics,
581 &hf_opcua_returnDiag_mask_ol_symbolicId,
582 &hf_opcua_returnDiag_mask_ol_localizedText,
583 &hf_opcua_returnDiag_mask_ol_additionalinfo,
584 &hf_opcua_returnDiag_mask_ol_innerstatuscode,
585 &hf_opcua_returnDiag_mask_ol_innerdiagnostics,
586 NULL};
588 proto_item *ti;
589 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RequestHeader, &ti, "%s: RequestHeader", szFieldName);
590 parseNodeId(subtree, tvb, pinfo, pOffset, "AuthenticationToken");
591 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp);
592 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle);
593 proto_tree_add_bitmask(subtree, tvb, *pOffset, hf_opcua_returnDiag, ett_opcua_returnDiagnostics, returnDiagnostics_mask, ENC_LITTLE_ENDIAN); *pOffset += 4;
594 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_AuditEntryId);
595 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TimeoutHint);
596 parseExtensionObject(subtree, tvb, pinfo, pOffset, "AdditionalHeader");
597 proto_item_set_end(ti, tvb, *pOffset);
599 void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
601 proto_item *ti;
602 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ResponseHeader, &ti, "%s: ResponseHeader", szFieldName);
603 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp);
604 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle);
605 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_ServiceResult);
606 parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "ServiceDiagnostics");
607 /* Array length field ignored: NoOfStringTable */
608 parseArraySimple(subtree, tvb, pinfo, pOffset, "StringTable", "String", hf_opcua_StringTable, parseString, ett_opcua_array_String);
609 parseExtensionObject(subtree, tvb, pinfo, pOffset, "AdditionalHeader");
610 proto_item_set_end(ti, tvb, *pOffset);
612 void parseServerOnNetwork(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
614 proto_item *ti;
615 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerOnNetwork, &ti, "%s: ServerOnNetwork", szFieldName);
616 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RecordId);
617 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerName);
618 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_DiscoveryUrl);
619 /* Array length field ignored: NoOfServerCapabilities */
620 parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerCapabilities", "String", hf_opcua_ServerCapabilities, parseString, ett_opcua_array_String);
621 proto_item_set_end(ti, tvb, *pOffset);
623 void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
625 proto_item *ti;
626 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserTokenPolicy, &ti, "%s: UserTokenPolicy", szFieldName);
627 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
628 parseUserTokenType(subtree, tvb, pinfo, pOffset);
629 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuedTokenType);
630 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuerEndpointUrl);
631 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri);
632 proto_item_set_end(ti, tvb, *pOffset);
634 void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
636 proto_item *ti;
637 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointDescription, &ti, "%s: EndpointDescription", szFieldName);
638 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl);
639 parseApplicationDescription(subtree, tvb, pinfo, pOffset, "Server");
640 parseCertificate(subtree, tvb, pinfo, pOffset, hf_opcua_ServerCertificate);
641 parseMessageSecurityMode(subtree, tvb, pinfo, pOffset);
642 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri);
643 /* Array length field ignored: NoOfUserIdentityTokens */
644 parseArrayComplex(subtree, tvb, pinfo, pOffset, "UserIdentityTokens", "UserTokenPolicy", parseUserTokenPolicy, ett_opcua_array_UserTokenPolicy);
645 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TransportProfileUri);
646 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityLevel);
647 proto_item_set_end(ti, tvb, *pOffset);
649 void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
651 proto_item *ti;
652 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RegisteredServer, &ti, "%s: RegisteredServer", szFieldName);
653 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri);
654 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri);
655 /* Array length field ignored: NoOfServerNames */
656 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerNames", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText);
657 parseApplicationType(subtree, tvb, pinfo, pOffset);
658 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_GatewayServerUri);
659 /* Array length field ignored: NoOfDiscoveryUrls */
660 parseArraySimple(subtree, tvb, pinfo, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String);
661 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SemaphoreFilePath);
662 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsOnline);
663 proto_item_set_end(ti, tvb, *pOffset);
665 void parseMdnsDiscoveryConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
667 proto_item *ti;
668 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MdnsDiscoveryConfiguration, &ti, "%s: MdnsDiscoveryConfiguration", szFieldName);
669 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_MdnsServerName);
670 /* Array length field ignored: NoOfServerCapabilities */
671 parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerCapabilities", "String", hf_opcua_ServerCapabilities, parseString, ett_opcua_array_String);
672 proto_item_set_end(ti, tvb, *pOffset);
674 void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
676 proto_item *ti;
677 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ChannelSecurityToken, &ti, "%s: ChannelSecurityToken", szFieldName);
678 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ChannelId);
679 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TokenId);
680 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_CreatedAt);
681 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetime);
682 proto_item_set_end(ti, tvb, *pOffset);
684 void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
686 proto_item *ti;
687 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SignedSoftwareCertificate, &ti, "%s: SignedSoftwareCertificate", szFieldName);
688 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_CertificateData);
689 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Signature);
690 proto_item_set_end(ti, tvb, *pOffset);
692 void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
694 proto_item *ti;
695 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SignatureData, &ti, "%s: SignatureData", szFieldName);
696 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Algorithm);
697 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Signature);
698 proto_item_set_end(ti, tvb, *pOffset);
700 void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
702 proto_item *ti;
703 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserIdentityToken, &ti, "%s: UserIdentityToken", szFieldName);
704 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
705 proto_item_set_end(ti, tvb, *pOffset);
707 void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
709 proto_item *ti;
710 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AnonymousIdentityToken, &ti, "%s: AnonymousIdentityToken", szFieldName);
711 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
712 proto_item_set_end(ti, tvb, *pOffset);
714 void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
716 proto_item *ti;
717 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserNameIdentityToken, &ti, "%s: UserNameIdentityToken", szFieldName);
718 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
719 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName);
720 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Password);
721 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EncryptionAlgorithm);
722 proto_item_set_end(ti, tvb, *pOffset);
724 void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
726 proto_item *ti;
727 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_X509IdentityToken, &ti, "%s: X509IdentityToken", szFieldName);
728 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
729 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_CertificateData);
730 proto_item_set_end(ti, tvb, *pOffset);
732 void parseKerberosIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
734 proto_item *ti;
735 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_KerberosIdentityToken, &ti, "%s: KerberosIdentityToken", szFieldName);
736 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
737 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_TicketData);
738 proto_item_set_end(ti, tvb, *pOffset);
740 void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
742 proto_item *ti;
743 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_IssuedIdentityToken, &ti, "%s: IssuedIdentityToken", szFieldName);
744 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId);
745 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_TokenData);
746 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EncryptionAlgorithm);
747 proto_item_set_end(ti, tvb, *pOffset);
749 void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
751 proto_item *ti;
752 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeAttributes, &ti, "%s: NodeAttributes", szFieldName);
753 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
754 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
755 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
756 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
757 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
758 proto_item_set_end(ti, tvb, *pOffset);
760 void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
762 proto_item *ti;
763 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectAttributes, &ti, "%s: ObjectAttributes", szFieldName);
764 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
765 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
766 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
767 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
768 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
769 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier);
770 proto_item_set_end(ti, tvb, *pOffset);
772 void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
774 proto_item *ti;
775 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableAttributes, &ti, "%s: VariableAttributes", szFieldName);
776 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
777 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
778 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
779 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
780 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
781 parseVariant(subtree, tvb, pinfo, pOffset, "Value");
782 parseNodeId(subtree, tvb, pinfo, pOffset, "DataType");
783 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank);
784 /* Array length field ignored: NoOfArrayDimensions */
785 parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32);
786 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_AccessLevel);
787 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_UserAccessLevel);
788 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MinimumSamplingInterval);
789 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Historizing);
790 proto_item_set_end(ti, tvb, *pOffset);
792 void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
794 proto_item *ti;
795 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MethodAttributes, &ti, "%s: MethodAttributes", szFieldName);
796 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
797 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
798 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
799 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
800 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
801 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Executable);
802 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UserExecutable);
803 proto_item_set_end(ti, tvb, *pOffset);
805 void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
807 proto_item *ti;
808 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectTypeAttributes, &ti, "%s: ObjectTypeAttributes", szFieldName);
809 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
810 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
811 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
812 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
813 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
814 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
815 proto_item_set_end(ti, tvb, *pOffset);
817 void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
819 proto_item *ti;
820 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableTypeAttributes, &ti, "%s: VariableTypeAttributes", szFieldName);
821 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
822 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
823 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
824 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
825 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
826 parseVariant(subtree, tvb, pinfo, pOffset, "Value");
827 parseNodeId(subtree, tvb, pinfo, pOffset, "DataType");
828 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank);
829 /* Array length field ignored: NoOfArrayDimensions */
830 parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32);
831 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
832 proto_item_set_end(ti, tvb, *pOffset);
834 void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
836 proto_item *ti;
837 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceTypeAttributes, &ti, "%s: ReferenceTypeAttributes", szFieldName);
838 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
839 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
840 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
841 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
842 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
843 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
844 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Symmetric);
845 parseLocalizedText(subtree, tvb, pinfo, pOffset, "InverseName");
846 proto_item_set_end(ti, tvb, *pOffset);
848 void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
850 proto_item *ti;
851 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataTypeAttributes, &ti, "%s: DataTypeAttributes", szFieldName);
852 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
853 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
854 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
855 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
856 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
857 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract);
858 proto_item_set_end(ti, tvb, *pOffset);
860 void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
862 proto_item *ti;
863 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewAttributes, &ti, "%s: ViewAttributes", szFieldName);
864 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes);
865 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
866 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
867 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask);
868 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask);
869 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ContainsNoLoops);
870 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier);
871 proto_item_set_end(ti, tvb, *pOffset);
873 void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
875 proto_item *ti;
876 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddNodesItem, &ti, "%s: AddNodesItem", szFieldName);
877 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "ParentNodeId");
878 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
879 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "RequestedNewNodeId");
880 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
881 parseNodeClass(subtree, tvb, pinfo, pOffset);
882 parseExtensionObject(subtree, tvb, pinfo, pOffset, "NodeAttributes");
883 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinition");
884 proto_item_set_end(ti, tvb, *pOffset);
886 void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
888 proto_item *ti;
889 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddNodesResult, &ti, "%s: AddNodesResult", szFieldName);
890 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
891 parseNodeId(subtree, tvb, pinfo, pOffset, "AddedNodeId");
892 proto_item_set_end(ti, tvb, *pOffset);
894 void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
896 proto_item *ti;
897 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesItem, &ti, "%s: AddReferencesItem", szFieldName);
898 parseNodeId(subtree, tvb, pinfo, pOffset, "SourceNodeId");
899 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
900 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward);
901 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TargetServerUri);
902 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetNodeId");
903 parseNodeClass(subtree, tvb, pinfo, pOffset);
904 proto_item_set_end(ti, tvb, *pOffset);
906 void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
908 proto_item *ti;
909 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesItem, &ti, "%s: DeleteNodesItem", szFieldName);
910 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
911 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteTargetReferences);
912 proto_item_set_end(ti, tvb, *pOffset);
914 void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
916 proto_item *ti;
917 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesItem, &ti, "%s: DeleteReferencesItem", szFieldName);
918 parseNodeId(subtree, tvb, pinfo, pOffset, "SourceNodeId");
919 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
920 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward);
921 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetNodeId");
922 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteBidirectional);
923 proto_item_set_end(ti, tvb, *pOffset);
925 void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
927 proto_item *ti;
928 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewDescription, &ti, "%s: ViewDescription", szFieldName);
929 parseNodeId(subtree, tvb, pinfo, pOffset, "ViewId");
930 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp);
931 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ViewVersion);
932 proto_item_set_end(ti, tvb, *pOffset);
934 void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
936 proto_item *ti;
937 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowseDescription, &ti, "%s: BrowseDescription", szFieldName);
938 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
939 parseBrowseDirection(subtree, tvb, pinfo, pOffset);
940 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
941 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubtypes);
942 parseNodeClassMask(subtree, tvb, pinfo, pOffset);
943 parseResultMask(subtree, tvb, pinfo, pOffset);
944 proto_item_set_end(ti, tvb, *pOffset);
946 void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
948 proto_item *ti;
949 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceDescription, &ti, "%s: ReferenceDescription", szFieldName);
950 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
951 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward);
952 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
953 parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName");
954 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
955 parseNodeClass(subtree, tvb, pinfo, pOffset);
956 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinition");
957 proto_item_set_end(ti, tvb, *pOffset);
959 void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
961 proto_item *ti;
962 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowseResult, &ti, "%s: BrowseResult", szFieldName);
963 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
964 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint);
965 /* Array length field ignored: NoOfReferences */
966 parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceDescription", parseReferenceDescription, ett_opcua_array_ReferenceDescription);
967 proto_item_set_end(ti, tvb, *pOffset);
969 void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
971 proto_item *ti;
972 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RelativePathElement, &ti, "%s: RelativePathElement", szFieldName);
973 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
974 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsInverse);
975 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubtypes);
976 parseQualifiedName(subtree, tvb, pinfo, pOffset, "TargetName");
977 proto_item_set_end(ti, tvb, *pOffset);
979 void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
981 proto_item *ti;
982 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RelativePath, &ti, "%s: RelativePath", szFieldName);
983 /* Array length field ignored: NoOfElements */
984 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Elements", "RelativePathElement", parseRelativePathElement, ett_opcua_array_RelativePathElement);
985 proto_item_set_end(ti, tvb, *pOffset);
987 void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
989 proto_item *ti;
990 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePath, &ti, "%s: BrowsePath", szFieldName);
991 parseNodeId(subtree, tvb, pinfo, pOffset, "StartingNode");
992 parseRelativePath(subtree, tvb, pinfo, pOffset, "RelativePath");
993 proto_item_set_end(ti, tvb, *pOffset);
995 void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
997 proto_item *ti;
998 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePathTarget, &ti, "%s: BrowsePathTarget", szFieldName);
999 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetId");
1000 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RemainingPathIndex);
1001 proto_item_set_end(ti, tvb, *pOffset);
1003 void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1005 proto_item *ti;
1006 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePathResult, &ti, "%s: BrowsePathResult", szFieldName);
1007 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1008 /* Array length field ignored: NoOfTargets */
1009 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Targets", "BrowsePathTarget", parseBrowsePathTarget, ett_opcua_array_BrowsePathTarget);
1010 proto_item_set_end(ti, tvb, *pOffset);
1012 void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1014 proto_item *ti;
1015 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointConfiguration, &ti, "%s: EndpointConfiguration", szFieldName);
1016 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_OperationTimeout);
1017 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseBinaryEncoding);
1018 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxStringLength);
1019 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxByteStringLength);
1020 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxArrayLength);
1021 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxMessageSize);
1022 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxBufferSize);
1023 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ChannelLifetime);
1024 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityTokenLifetime);
1025 proto_item_set_end(ti, tvb, *pOffset);
1027 void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1029 proto_item *ti;
1030 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SupportedProfile, &ti, "%s: SupportedProfile", szFieldName);
1031 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_OrganizationUri);
1032 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProfileId);
1033 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ComplianceTool);
1034 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ComplianceDate);
1035 parseComplianceLevel(subtree, tvb, pinfo, pOffset);
1036 /* Array length field ignored: NoOfUnsupportedUnitIds */
1037 parseArraySimple(subtree, tvb, pinfo, pOffset, "UnsupportedUnitIds", "String", hf_opcua_UnsupportedUnitIds, parseString, ett_opcua_array_String);
1038 proto_item_set_end(ti, tvb, *pOffset);
1040 void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1042 proto_item *ti;
1043 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SoftwareCertificate, &ti, "%s: SoftwareCertificate", szFieldName);
1044 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductName);
1045 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri);
1046 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_VendorName);
1047 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_VendorProductCertificate);
1048 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SoftwareVersion);
1049 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_BuildNumber);
1050 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_BuildDate);
1051 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuedBy);
1052 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_IssueDate);
1053 /* Array length field ignored: NoOfSupportedProfiles */
1054 parseArrayComplex(subtree, tvb, pinfo, pOffset, "SupportedProfiles", "SupportedProfile", parseSupportedProfile, ett_opcua_array_SupportedProfile);
1055 proto_item_set_end(ti, tvb, *pOffset);
1057 void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1059 proto_item *ti;
1060 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_QueryDataDescription, &ti, "%s: QueryDataDescription", szFieldName);
1061 parseRelativePath(subtree, tvb, pinfo, pOffset, "RelativePath");
1062 parseAttributeId(subtree, tvb, pinfo, pOffset);
1063 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange);
1064 proto_item_set_end(ti, tvb, *pOffset);
1066 void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1068 proto_item *ti;
1069 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeTypeDescription, &ti, "%s: NodeTypeDescription", szFieldName);
1070 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionNode");
1071 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubTypes);
1072 /* Array length field ignored: NoOfDataToReturn */
1073 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataToReturn", "QueryDataDescription", parseQueryDataDescription, ett_opcua_array_QueryDataDescription);
1074 proto_item_set_end(ti, tvb, *pOffset);
1076 void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1078 proto_item *ti;
1079 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_QueryDataSet, &ti, "%s: QueryDataSet", szFieldName);
1080 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1081 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionNode");
1082 /* Array length field ignored: NoOfValues */
1083 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Values", "Variant", parseVariant, ett_opcua_array_Variant);
1084 proto_item_set_end(ti, tvb, *pOffset);
1086 void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1088 proto_item *ti;
1089 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeReference, &ti, "%s: NodeReference", szFieldName);
1090 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1091 parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId");
1092 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward);
1093 /* Array length field ignored: NoOfReferencedNodeIds */
1094 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencedNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId);
1095 proto_item_set_end(ti, tvb, *pOffset);
1097 void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1099 proto_item *ti;
1100 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterElement, &ti, "%s: ContentFilterElement", szFieldName);
1101 parseFilterOperator(subtree, tvb, pinfo, pOffset);
1102 /* Array length field ignored: NoOfFilterOperands */
1103 parseArrayComplex(subtree, tvb, pinfo, pOffset, "FilterOperands", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject);
1104 proto_item_set_end(ti, tvb, *pOffset);
1106 void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1108 proto_item *ti;
1109 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilter, &ti, "%s: ContentFilter", szFieldName);
1110 /* Array length field ignored: NoOfElements */
1111 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Elements", "ContentFilterElement", parseContentFilterElement, ett_opcua_array_ContentFilterElement);
1112 proto_item_set_end(ti, tvb, *pOffset);
1114 void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1116 proto_item *ti;
1117 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ElementOperand, &ti, "%s: ElementOperand", szFieldName);
1118 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Index);
1119 proto_item_set_end(ti, tvb, *pOffset);
1121 void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1123 proto_item *ti;
1124 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_LiteralOperand, &ti, "%s: LiteralOperand", szFieldName);
1125 parseVariant(subtree, tvb, pinfo, pOffset, "Value");
1126 proto_item_set_end(ti, tvb, *pOffset);
1128 void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1130 proto_item *ti;
1131 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AttributeOperand, &ti, "%s: AttributeOperand", szFieldName);
1132 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1133 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Alias);
1134 parseRelativePath(subtree, tvb, pinfo, pOffset, "BrowsePath");
1135 parseAttributeId(subtree, tvb, pinfo, pOffset);
1136 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange);
1137 proto_item_set_end(ti, tvb, *pOffset);
1139 void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1141 proto_item *ti;
1142 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SimpleAttributeOperand, &ti, "%s: SimpleAttributeOperand", szFieldName);
1143 parseNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionId");
1144 /* Array length field ignored: NoOfBrowsePath */
1145 parseArrayComplex(subtree, tvb, pinfo, pOffset, "BrowsePath", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName);
1146 parseAttributeId(subtree, tvb, pinfo, pOffset);
1147 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange);
1148 proto_item_set_end(ti, tvb, *pOffset);
1150 void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1152 proto_item *ti;
1153 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterElementResult, &ti, "%s: ContentFilterElementResult", szFieldName);
1154 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1155 /* Array length field ignored: NoOfOperandStatusCodes */
1156 parseArraySimple(subtree, tvb, pinfo, pOffset, "OperandStatusCodes", "StatusCode", hf_opcua_OperandStatusCodes, parseStatusCode, ett_opcua_array_StatusCode);
1157 /* Array length field ignored: NoOfOperandDiagnosticInfos */
1158 parseArrayComplex(subtree, tvb, pinfo, pOffset, "OperandDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1159 proto_item_set_end(ti, tvb, *pOffset);
1161 void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1163 proto_item *ti;
1164 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterResult, &ti, "%s: ContentFilterResult", szFieldName);
1165 /* Array length field ignored: NoOfElementResults */
1166 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ElementResults", "ContentFilterElementResult", parseContentFilterElementResult, ett_opcua_array_ContentFilterElementResult);
1167 /* Array length field ignored: NoOfElementDiagnosticInfos */
1168 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ElementDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1169 proto_item_set_end(ti, tvb, *pOffset);
1171 void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1173 proto_item *ti;
1174 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ParsingResult, &ti, "%s: ParsingResult", szFieldName);
1175 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1176 /* Array length field ignored: NoOfDataStatusCodes */
1177 parseArraySimple(subtree, tvb, pinfo, pOffset, "DataStatusCodes", "StatusCode", hf_opcua_DataStatusCodes, parseStatusCode, ett_opcua_array_StatusCode);
1178 /* Array length field ignored: NoOfDataDiagnosticInfos */
1179 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1180 proto_item_set_end(ti, tvb, *pOffset);
1182 void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1184 proto_item *ti;
1185 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadValueId, &ti, "%s: ReadValueId", szFieldName);
1186 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1187 parseAttributeId(subtree, tvb, pinfo, pOffset);
1188 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange);
1189 parseQualifiedName(subtree, tvb, pinfo, pOffset, "DataEncoding");
1190 proto_item_set_end(ti, tvb, *pOffset);
1192 void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1194 proto_item *ti;
1195 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadValueId, &ti, "%s: HistoryReadValueId", szFieldName);
1196 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1197 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange);
1198 parseQualifiedName(subtree, tvb, pinfo, pOffset, "DataEncoding");
1199 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint);
1200 proto_item_set_end(ti, tvb, *pOffset);
1202 void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1204 proto_item *ti;
1205 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadResult, &ti, "%s: HistoryReadResult", szFieldName);
1206 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1207 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint);
1208 parseExtensionObject(subtree, tvb, pinfo, pOffset, "HistoryData");
1209 proto_item_set_end(ti, tvb, *pOffset);
1211 void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1213 proto_item *ti;
1214 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadEventDetails, &ti, "%s: ReadEventDetails", szFieldName);
1215 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NumValuesPerNode);
1216 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime);
1217 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime);
1218 parseEventFilter(subtree, tvb, pinfo, pOffset, "Filter");
1219 proto_item_set_end(ti, tvb, *pOffset);
1221 void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1223 proto_item *ti;
1224 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadRawModifiedDetails, &ti, "%s: ReadRawModifiedDetails", szFieldName);
1225 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsReadModified);
1226 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime);
1227 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime);
1228 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NumValuesPerNode);
1229 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReturnBounds);
1230 proto_item_set_end(ti, tvb, *pOffset);
1232 void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1234 proto_item *ti;
1235 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadProcessedDetails, &ti, "%s: ReadProcessedDetails", szFieldName);
1236 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime);
1237 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime);
1238 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ProcessingInterval);
1239 /* Array length field ignored: NoOfAggregateType */
1240 parseArrayComplex(subtree, tvb, pinfo, pOffset, "AggregateType", "NodeId", parseNodeId, ett_opcua_array_NodeId);
1241 parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "AggregateConfiguration");
1242 proto_item_set_end(ti, tvb, *pOffset);
1244 void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1246 proto_item *ti;
1247 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadAtTimeDetails, &ti, "%s: ReadAtTimeDetails", szFieldName);
1248 /* Array length field ignored: NoOfReqTimes */
1249 parseArraySimple(subtree, tvb, pinfo, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime);
1250 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseSimpleBounds);
1251 proto_item_set_end(ti, tvb, *pOffset);
1253 void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1255 proto_item *ti;
1256 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryData, &ti, "%s: HistoryData", szFieldName);
1257 /* Array length field ignored: NoOfDataValues */
1258 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue);
1259 proto_item_set_end(ti, tvb, *pOffset);
1261 void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1263 proto_item *ti;
1264 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ModificationInfo, &ti, "%s: ModificationInfo", szFieldName);
1265 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ModificationTime);
1266 parseHistoryUpdateType(subtree, tvb, pinfo, pOffset);
1267 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName);
1268 proto_item_set_end(ti, tvb, *pOffset);
1270 void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1272 proto_item *ti;
1273 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryModifiedData, &ti, "%s: HistoryModifiedData", szFieldName);
1274 /* Array length field ignored: NoOfDataValues */
1275 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue);
1276 /* Array length field ignored: NoOfModificationInfos */
1277 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ModificationInfos", "ModificationInfo", parseModificationInfo, ett_opcua_array_ModificationInfo);
1278 proto_item_set_end(ti, tvb, *pOffset);
1280 void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1282 proto_item *ti;
1283 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryEvent, &ti, "%s: HistoryEvent", szFieldName);
1284 /* Array length field ignored: NoOfEvents */
1285 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Events", "HistoryEventFieldList", parseHistoryEventFieldList, ett_opcua_array_HistoryEventFieldList);
1286 proto_item_set_end(ti, tvb, *pOffset);
1288 void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1290 proto_item *ti;
1291 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_WriteValue, &ti, "%s: WriteValue", szFieldName);
1292 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1293 parseAttributeId(subtree, tvb, pinfo, pOffset);
1294 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange);
1295 parseDataValue(subtree, tvb, pinfo, pOffset, "Value");
1296 proto_item_set_end(ti, tvb, *pOffset);
1298 void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1300 proto_item *ti;
1301 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateDetails, &ti, "%s: HistoryUpdateDetails", szFieldName);
1302 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1303 proto_item_set_end(ti, tvb, *pOffset);
1305 void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1307 proto_item *ti;
1308 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateDataDetails, &ti, "%s: UpdateDataDetails", szFieldName);
1309 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1310 parsePerformUpdateType(subtree, tvb, pinfo, pOffset);
1311 /* Array length field ignored: NoOfUpdateValues */
1312 parseArrayComplex(subtree, tvb, pinfo, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue);
1313 proto_item_set_end(ti, tvb, *pOffset);
1315 void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1317 proto_item *ti;
1318 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateStructureDataDetails, &ti, "%s: UpdateStructureDataDetails", szFieldName);
1319 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1320 parsePerformUpdateType(subtree, tvb, pinfo, pOffset);
1321 /* Array length field ignored: NoOfUpdateValues */
1322 parseArrayComplex(subtree, tvb, pinfo, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue);
1323 proto_item_set_end(ti, tvb, *pOffset);
1325 void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1327 proto_item *ti;
1328 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateEventDetails, &ti, "%s: UpdateEventDetails", szFieldName);
1329 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1330 parsePerformUpdateType(subtree, tvb, pinfo, pOffset);
1331 parseEventFilter(subtree, tvb, pinfo, pOffset, "Filter");
1332 /* Array length field ignored: NoOfEventData */
1333 parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventData", "HistoryEventFieldList", parseHistoryEventFieldList, ett_opcua_array_HistoryEventFieldList);
1334 proto_item_set_end(ti, tvb, *pOffset);
1336 void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1338 proto_item *ti;
1339 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteRawModifiedDetails, &ti, "%s: DeleteRawModifiedDetails", szFieldName);
1340 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1341 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsDeleteModified);
1342 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime);
1343 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime);
1344 proto_item_set_end(ti, tvb, *pOffset);
1346 void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1348 proto_item *ti;
1349 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteAtTimeDetails, &ti, "%s: DeleteAtTimeDetails", szFieldName);
1350 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1351 /* Array length field ignored: NoOfReqTimes */
1352 parseArraySimple(subtree, tvb, pinfo, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime);
1353 proto_item_set_end(ti, tvb, *pOffset);
1355 void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1357 proto_item *ti;
1358 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteEventDetails, &ti, "%s: DeleteEventDetails", szFieldName);
1359 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1360 /* Array length field ignored: NoOfEventIds */
1361 parseArraySimple(subtree, tvb, pinfo, pOffset, "EventIds", "ByteString", hf_opcua_EventIds, parseByteString, ett_opcua_array_ByteString);
1362 proto_item_set_end(ti, tvb, *pOffset);
1364 void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1366 proto_item *ti;
1367 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateResult, &ti, "%s: HistoryUpdateResult", szFieldName);
1368 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1369 /* Array length field ignored: NoOfOperationResults */
1370 parseArraySimple(subtree, tvb, pinfo, pOffset, "OperationResults", "StatusCode", hf_opcua_OperationResults, parseStatusCode, ett_opcua_array_StatusCode);
1371 /* Array length field ignored: NoOfDiagnosticInfos */
1372 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1373 proto_item_set_end(ti, tvb, *pOffset);
1375 void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1377 proto_item *ti;
1378 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CallMethodRequest, &ti, "%s: CallMethodRequest", szFieldName);
1379 parseNodeId(subtree, tvb, pinfo, pOffset, "ObjectId");
1380 parseNodeId(subtree, tvb, pinfo, pOffset, "MethodId");
1381 /* Array length field ignored: NoOfInputArguments */
1382 parseArrayComplex(subtree, tvb, pinfo, pOffset, "InputArguments", "Variant", parseVariant, ett_opcua_array_Variant);
1383 proto_item_set_end(ti, tvb, *pOffset);
1385 void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1387 proto_item *ti;
1388 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CallMethodResult, &ti, "%s: CallMethodResult", szFieldName);
1389 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1390 /* Array length field ignored: NoOfInputArgumentResults */
1391 parseArraySimple(subtree, tvb, pinfo, pOffset, "InputArgumentResults", "StatusCode", hf_opcua_InputArgumentResults, parseStatusCode, ett_opcua_array_StatusCode);
1392 /* Array length field ignored: NoOfInputArgumentDiagnosticInfos */
1393 parseArrayComplex(subtree, tvb, pinfo, pOffset, "InputArgumentDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1394 /* Array length field ignored: NoOfOutputArguments */
1395 parseArrayComplex(subtree, tvb, pinfo, pOffset, "OutputArguments", "Variant", parseVariant, ett_opcua_array_Variant);
1396 proto_item_set_end(ti, tvb, *pOffset);
1398 void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1400 proto_item *ti;
1401 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataChangeFilter, &ti, "%s: DataChangeFilter", szFieldName);
1402 parseDataChangeTrigger(subtree, tvb, pinfo, pOffset);
1403 parseDeadbandType(subtree, tvb, pinfo, pOffset);
1404 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_DeadbandValue);
1405 proto_item_set_end(ti, tvb, *pOffset);
1407 void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1409 proto_item *ti;
1410 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFilter, &ti, "%s: EventFilter", szFieldName);
1411 /* Array length field ignored: NoOfSelectClauses */
1412 parseArrayComplex(subtree, tvb, pinfo, pOffset, "SelectClauses", "SimpleAttributeOperand", parseSimpleAttributeOperand, ett_opcua_array_SimpleAttributeOperand);
1413 parseContentFilter(subtree, tvb, pinfo, pOffset, "WhereClause");
1414 proto_item_set_end(ti, tvb, *pOffset);
1416 void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1418 proto_item *ti;
1419 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateConfiguration, &ti, "%s: AggregateConfiguration", szFieldName);
1420 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseServerCapabilitiesDefaults);
1421 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_TreatUncertainAsBad);
1422 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_PercentDataBad);
1423 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_PercentDataGood);
1424 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseSlopedExtrapolation);
1425 proto_item_set_end(ti, tvb, *pOffset);
1427 void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1429 proto_item *ti;
1430 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateFilter, &ti, "%s: AggregateFilter", szFieldName);
1431 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime);
1432 parseNodeId(subtree, tvb, pinfo, pOffset, "AggregateType");
1433 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ProcessingInterval);
1434 parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "AggregateConfiguration");
1435 proto_item_set_end(ti, tvb, *pOffset);
1437 void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1439 proto_item *ti;
1440 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFilterResult, &ti, "%s: EventFilterResult", szFieldName);
1441 /* Array length field ignored: NoOfSelectClauseResults */
1442 parseArraySimple(subtree, tvb, pinfo, pOffset, "SelectClauseResults", "StatusCode", hf_opcua_SelectClauseResults, parseStatusCode, ett_opcua_array_StatusCode);
1443 /* Array length field ignored: NoOfSelectClauseDiagnosticInfos */
1444 parseArrayComplex(subtree, tvb, pinfo, pOffset, "SelectClauseDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1445 parseContentFilterResult(subtree, tvb, pinfo, pOffset, "WhereClauseResult");
1446 proto_item_set_end(ti, tvb, *pOffset);
1448 void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1450 proto_item *ti;
1451 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateFilterResult, &ti, "%s: AggregateFilterResult", szFieldName);
1452 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedStartTime);
1453 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedProcessingInterval);
1454 parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "RevisedAggregateConfiguration");
1455 proto_item_set_end(ti, tvb, *pOffset);
1457 void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1459 proto_item *ti;
1460 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoringParameters, &ti, "%s: MonitoringParameters", szFieldName);
1461 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle);
1462 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_SamplingInterval);
1463 parseExtensionObject(subtree, tvb, pinfo, pOffset, "Filter");
1464 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_QueueSize);
1465 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DiscardOldest);
1466 proto_item_set_end(ti, tvb, *pOffset);
1468 void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1470 proto_item *ti;
1471 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemCreateRequest, &ti, "%s: MonitoredItemCreateRequest", szFieldName);
1472 parseReadValueId(subtree, tvb, pinfo, pOffset, "ItemToMonitor");
1473 parseMonitoringMode(subtree, tvb, pinfo, pOffset);
1474 parseMonitoringParameters(subtree, tvb, pinfo, pOffset, "RequestedParameters");
1475 proto_item_set_end(ti, tvb, *pOffset);
1477 void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1479 proto_item *ti;
1480 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemCreateResult, &ti, "%s: MonitoredItemCreateResult", szFieldName);
1481 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1482 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemId);
1483 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSamplingInterval);
1484 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedQueueSize);
1485 parseExtensionObject(subtree, tvb, pinfo, pOffset, "FilterResult");
1486 proto_item_set_end(ti, tvb, *pOffset);
1488 void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1490 proto_item *ti;
1491 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemModifyRequest, &ti, "%s: MonitoredItemModifyRequest", szFieldName);
1492 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemId);
1493 parseMonitoringParameters(subtree, tvb, pinfo, pOffset, "RequestedParameters");
1494 proto_item_set_end(ti, tvb, *pOffset);
1496 void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1498 proto_item *ti;
1499 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemModifyResult, &ti, "%s: MonitoredItemModifyResult", szFieldName);
1500 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1501 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSamplingInterval);
1502 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedQueueSize);
1503 parseExtensionObject(subtree, tvb, pinfo, pOffset, "FilterResult");
1504 proto_item_set_end(ti, tvb, *pOffset);
1506 void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1508 proto_item *ti;
1509 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NotificationMessage, &ti, "%s: NotificationMessage", szFieldName);
1510 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SequenceNumber);
1511 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_PublishTime);
1512 /* Array length field ignored: NoOfNotificationData */
1513 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NotificationData", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject);
1514 proto_item_set_end(ti, tvb, *pOffset);
1516 void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1518 proto_item *ti;
1519 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataChangeNotification, &ti, "%s: DataChangeNotification", szFieldName);
1520 /* Array length field ignored: NoOfMonitoredItems */
1521 parseArrayComplex(subtree, tvb, pinfo, pOffset, "MonitoredItems", "MonitoredItemNotification", parseMonitoredItemNotification, ett_opcua_array_MonitoredItemNotification);
1522 /* Array length field ignored: NoOfDiagnosticInfos */
1523 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1524 proto_item_set_end(ti, tvb, *pOffset);
1526 void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1528 proto_item *ti;
1529 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemNotification, &ti, "%s: MonitoredItemNotification", szFieldName);
1530 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle);
1531 parseDataValue(subtree, tvb, pinfo, pOffset, "Value");
1532 proto_item_set_end(ti, tvb, *pOffset);
1534 void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1536 proto_item *ti;
1537 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventNotificationList, &ti, "%s: EventNotificationList", szFieldName);
1538 /* Array length field ignored: NoOfEvents */
1539 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Events", "EventFieldList", parseEventFieldList, ett_opcua_array_EventFieldList);
1540 proto_item_set_end(ti, tvb, *pOffset);
1542 void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1544 proto_item *ti;
1545 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFieldList, &ti, "%s: EventFieldList", szFieldName);
1546 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle);
1547 /* Array length field ignored: NoOfEventFields */
1548 parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant);
1549 proto_item_set_end(ti, tvb, *pOffset);
1551 void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1553 proto_item *ti;
1554 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryEventFieldList, &ti, "%s: HistoryEventFieldList", szFieldName);
1555 /* Array length field ignored: NoOfEventFields */
1556 parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant);
1557 proto_item_set_end(ti, tvb, *pOffset);
1559 void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1561 proto_item *ti;
1562 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_StatusChangeNotification, &ti, "%s: StatusChangeNotification", szFieldName);
1563 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_Status);
1564 parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo");
1565 proto_item_set_end(ti, tvb, *pOffset);
1567 void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1569 proto_item *ti;
1570 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SubscriptionAcknowledgement, &ti, "%s: SubscriptionAcknowledgement", szFieldName);
1571 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
1572 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SequenceNumber);
1573 proto_item_set_end(ti, tvb, *pOffset);
1575 void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1577 proto_item *ti;
1578 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TransferResult, &ti, "%s: TransferResult", szFieldName);
1579 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1580 /* Array length field ignored: NoOfAvailableSequenceNumbers */
1581 parseArraySimple(subtree, tvb, pinfo, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32);
1582 proto_item_set_end(ti, tvb, *pOffset);
1584 void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1586 proto_item *ti;
1587 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ScalarTestType, &ti, "%s: ScalarTestType", szFieldName);
1588 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Boolean);
1589 parseSByte(subtree, tvb, pinfo, pOffset, hf_opcua_SByte);
1590 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Byte);
1591 parseInt16(subtree, tvb, pinfo, pOffset, hf_opcua_Int16);
1592 parseUInt16(subtree, tvb, pinfo, pOffset, hf_opcua_UInt16);
1593 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Int32);
1594 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UInt32);
1595 parseInt64(subtree, tvb, pinfo, pOffset, hf_opcua_Int64);
1596 parseUInt64(subtree, tvb, pinfo, pOffset, hf_opcua_UInt64);
1597 parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Float);
1598 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Double);
1599 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_String);
1600 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_DateTime);
1601 parseGuid(subtree, tvb, pinfo, pOffset, hf_opcua_Guid);
1602 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ByteString);
1603 parseXmlElement(subtree, tvb, pinfo, pOffset, hf_opcua_XmlElement);
1604 parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId");
1605 parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "ExpandedNodeId");
1606 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1607 parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo");
1608 parseQualifiedName(subtree, tvb, pinfo, pOffset, "QualifiedName");
1609 parseLocalizedText(subtree, tvb, pinfo, pOffset, "LocalizedText");
1610 parseExtensionObject(subtree, tvb, pinfo, pOffset, "ExtensionObject");
1611 parseDataValue(subtree, tvb, pinfo, pOffset, "DataValue");
1612 parseEnumeratedTestType(subtree, tvb, pinfo, pOffset);
1613 proto_item_set_end(ti, tvb, *pOffset);
1615 void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1617 proto_item *ti;
1618 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ArrayTestType, &ti, "%s: ArrayTestType", szFieldName);
1619 /* Array length field ignored: NoOfBooleans */
1620 parseArraySimple(subtree, tvb, pinfo, pOffset, "Booleans", "Boolean", hf_opcua_Booleans, parseBoolean, ett_opcua_array_Boolean);
1621 /* Array length field ignored: NoOfSBytes */
1622 parseArraySimple(subtree, tvb, pinfo, pOffset, "SBytes", "SByte", hf_opcua_SBytes, parseSByte, ett_opcua_array_SByte);
1623 /* Array length field ignored: NoOfInt16s */
1624 parseArraySimple(subtree, tvb, pinfo, pOffset, "Int16s", "Int16", hf_opcua_Int16s, parseInt16, ett_opcua_array_Int16);
1625 /* Array length field ignored: NoOfUInt16s */
1626 parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt16s", "UInt16", hf_opcua_UInt16s, parseUInt16, ett_opcua_array_UInt16);
1627 /* Array length field ignored: NoOfInt32s */
1628 parseArraySimple(subtree, tvb, pinfo, pOffset, "Int32s", "Int32", hf_opcua_Int32s, parseInt32, ett_opcua_array_Int32);
1629 /* Array length field ignored: NoOfUInt32s */
1630 parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt32s", "UInt32", hf_opcua_UInt32s, parseUInt32, ett_opcua_array_UInt32);
1631 /* Array length field ignored: NoOfInt64s */
1632 parseArraySimple(subtree, tvb, pinfo, pOffset, "Int64s", "Int64", hf_opcua_Int64s, parseInt64, ett_opcua_array_Int64);
1633 /* Array length field ignored: NoOfUInt64s */
1634 parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt64s", "UInt64", hf_opcua_UInt64s, parseUInt64, ett_opcua_array_UInt64);
1635 /* Array length field ignored: NoOfFloats */
1636 parseArraySimple(subtree, tvb, pinfo, pOffset, "Floats", "Float", hf_opcua_Floats, parseFloat, ett_opcua_array_Float);
1637 /* Array length field ignored: NoOfDoubles */
1638 parseArraySimple(subtree, tvb, pinfo, pOffset, "Doubles", "Double", hf_opcua_Doubles, parseDouble, ett_opcua_array_Double);
1639 /* Array length field ignored: NoOfStrings */
1640 parseArraySimple(subtree, tvb, pinfo, pOffset, "Strings", "String", hf_opcua_Strings, parseString, ett_opcua_array_String);
1641 /* Array length field ignored: NoOfDateTimes */
1642 parseArraySimple(subtree, tvb, pinfo, pOffset, "DateTimes", "DateTime", hf_opcua_DateTimes, parseDateTime, ett_opcua_array_DateTime);
1643 /* Array length field ignored: NoOfGuids */
1644 parseArraySimple(subtree, tvb, pinfo, pOffset, "Guids", "Guid", hf_opcua_Guids, parseGuid, ett_opcua_array_Guid);
1645 /* Array length field ignored: NoOfByteStrings */
1646 parseArraySimple(subtree, tvb, pinfo, pOffset, "ByteStrings", "ByteString", hf_opcua_ByteStrings, parseByteString, ett_opcua_array_ByteString);
1647 /* Array length field ignored: NoOfXmlElements */
1648 parseArraySimple(subtree, tvb, pinfo, pOffset, "XmlElements", "XmlElement", hf_opcua_XmlElements, parseXmlElement, ett_opcua_array_XmlElement);
1649 /* Array length field ignored: NoOfNodeIds */
1650 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId);
1651 /* Array length field ignored: NoOfExpandedNodeIds */
1652 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ExpandedNodeIds", "ExpandedNodeId", parseExpandedNodeId, ett_opcua_array_ExpandedNodeId);
1653 /* Array length field ignored: NoOfStatusCodes */
1654 parseArraySimple(subtree, tvb, pinfo, pOffset, "StatusCodes", "StatusCode", hf_opcua_StatusCodes, parseStatusCode, ett_opcua_array_StatusCode);
1655 /* Array length field ignored: NoOfDiagnosticInfos */
1656 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1657 /* Array length field ignored: NoOfQualifiedNames */
1658 parseArrayComplex(subtree, tvb, pinfo, pOffset, "QualifiedNames", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName);
1659 /* Array length field ignored: NoOfLocalizedTexts */
1660 parseArrayComplex(subtree, tvb, pinfo, pOffset, "LocalizedTexts", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText);
1661 /* Array length field ignored: NoOfExtensionObjects */
1662 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ExtensionObjects", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject);
1663 /* Array length field ignored: NoOfDataValues */
1664 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue);
1665 /* Array length field ignored: NoOfVariants */
1666 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Variants", "Variant", parseVariant, ett_opcua_array_Variant);
1667 /* Array length field ignored: NoOfEnumeratedValues */
1668 parseArrayEnum(subtree, tvb, pinfo, pOffset, "EnumeratedValues", "EnumeratedTestType", parseEnumeratedTestType, ett_opcua_array_EnumeratedTestType);
1669 proto_item_set_end(ti, tvb, *pOffset);
1671 void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1673 proto_item *ti;
1674 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CompositeTestType, &ti, "%s: CompositeTestType", szFieldName);
1675 parseScalarTestType(subtree, tvb, pinfo, pOffset, "Field1");
1676 parseArrayTestType(subtree, tvb, pinfo, pOffset, "Field2");
1677 proto_item_set_end(ti, tvb, *pOffset);
1679 void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1681 proto_item *ti;
1682 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BuildInfo, &ti, "%s: BuildInfo", szFieldName);
1683 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri);
1684 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ManufacturerName);
1685 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductName);
1686 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SoftwareVersion);
1687 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_BuildNumber);
1688 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_BuildDate);
1689 proto_item_set_end(ti, tvb, *pOffset);
1691 void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1693 proto_item *ti;
1694 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RedundantServerDataType, &ti, "%s: RedundantServerDataType", szFieldName);
1695 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerId);
1696 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_ServiceLevel);
1697 parseServerState(subtree, tvb, pinfo, pOffset);
1698 proto_item_set_end(ti, tvb, *pOffset);
1700 void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1702 proto_item *ti;
1703 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointUrlListDataType, &ti, "%s: EndpointUrlListDataType", szFieldName);
1704 /* Array length field ignored: NoOfEndpointUrlList */
1705 parseArraySimple(subtree, tvb, pinfo, pOffset, "EndpointUrlList", "String", hf_opcua_EndpointUrlList, parseString, ett_opcua_array_String);
1706 proto_item_set_end(ti, tvb, *pOffset);
1708 void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1710 proto_item *ti;
1711 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NetworkGroupDataType, &ti, "%s: NetworkGroupDataType", szFieldName);
1712 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri);
1713 /* Array length field ignored: NoOfNetworkPaths */
1714 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NetworkPaths", "EndpointUrlListDataType", parseEndpointUrlListDataType, ett_opcua_array_EndpointUrlListDataType);
1715 proto_item_set_end(ti, tvb, *pOffset);
1717 void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1719 proto_item *ti;
1720 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SamplingIntervalDiagnosticsDataType, &ti, "%s: SamplingIntervalDiagnosticsDataType", szFieldName);
1721 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_SamplingInterval);
1722 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemCount);
1723 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxMonitoredItemCount);
1724 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisabledMonitoredItemCount);
1725 proto_item_set_end(ti, tvb, *pOffset);
1727 void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1729 proto_item *ti;
1730 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerDiagnosticsSummaryDataType, &ti, "%s: ServerDiagnosticsSummaryDataType", szFieldName);
1731 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ServerViewCount);
1732 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSessionCount);
1733 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CumulatedSessionCount);
1734 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityRejectedSessionCount);
1735 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RejectedSessionCount);
1736 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SessionTimeoutCount);
1737 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SessionAbortCount);
1738 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSubscriptionCount);
1739 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CumulatedSubscriptionCount);
1740 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingIntervalCount);
1741 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityRejectedRequestsCount);
1742 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RejectedRequestsCount);
1743 proto_item_set_end(ti, tvb, *pOffset);
1745 void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1747 proto_item *ti;
1748 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerStatusDataType, &ti, "%s: ServerStatusDataType", szFieldName);
1749 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime);
1750 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentTime);
1751 parseServerState(subtree, tvb, pinfo, pOffset);
1752 parseBuildInfo(subtree, tvb, pinfo, pOffset, "BuildInfo");
1753 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecondsTillShutdown);
1754 parseLocalizedText(subtree, tvb, pinfo, pOffset, "ShutdownReason");
1755 proto_item_set_end(ti, tvb, *pOffset);
1757 void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1759 proto_item *ti;
1760 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SessionDiagnosticsDataType, &ti, "%s: SessionDiagnosticsDataType", szFieldName);
1761 parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId");
1762 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SessionName);
1763 parseApplicationDescription(subtree, tvb, pinfo, pOffset, "ClientDescription");
1764 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri);
1765 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl);
1766 /* Array length field ignored: NoOfLocaleIds */
1767 parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String);
1768 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ActualSessionTimeout);
1769 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxResponseMessageSize);
1770 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ClientConnectionTime);
1771 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ClientLastContactTime);
1772 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSubscriptionsCount);
1773 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentMonitoredItemsCount);
1774 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentPublishRequestsInQueue);
1775 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TotalRequestCount");
1776 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnauthorizedRequestCount);
1777 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ReadCount");
1778 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "HistoryReadCount");
1779 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "WriteCount");
1780 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "HistoryUpdateCount");
1781 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CallCount");
1782 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CreateMonitoredItemsCount");
1783 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ModifyMonitoredItemsCount");
1784 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetMonitoringModeCount");
1785 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetTriggeringCount");
1786 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteMonitoredItemsCount");
1787 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CreateSubscriptionCount");
1788 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ModifySubscriptionCount");
1789 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetPublishingModeCount");
1790 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "PublishCount");
1791 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "RepublishCount");
1792 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TransferSubscriptionsCount");
1793 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteSubscriptionsCount");
1794 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "AddNodesCount");
1795 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "AddReferencesCount");
1796 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteNodesCount");
1797 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteReferencesCount");
1798 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "BrowseCount");
1799 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "BrowseNextCount");
1800 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TranslateBrowsePathsToNodeIdsCount");
1801 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "QueryFirstCount");
1802 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "QueryNextCount");
1803 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "RegisterNodesCount");
1804 parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "UnregisterNodesCount");
1805 proto_item_set_end(ti, tvb, *pOffset);
1807 void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1809 proto_item *ti;
1810 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SessionSecurityDiagnosticsDataType, &ti, "%s: SessionSecurityDiagnosticsDataType", szFieldName);
1811 parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId");
1812 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientUserIdOfSession);
1813 /* Array length field ignored: NoOfClientUserIdHistory */
1814 parseArraySimple(subtree, tvb, pinfo, pOffset, "ClientUserIdHistory", "String", hf_opcua_ClientUserIdHistory, parseString, ett_opcua_array_String);
1815 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_AuthenticationMechanism);
1816 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Encoding);
1817 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TransportProtocol);
1818 parseMessageSecurityMode(subtree, tvb, pinfo, pOffset);
1819 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri);
1820 parseCertificate(subtree, tvb, pinfo, pOffset, hf_opcua_ClientCertificate);
1821 proto_item_set_end(ti, tvb, *pOffset);
1823 void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1825 proto_item *ti;
1826 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServiceCounterDataType, &ti, "%s: ServiceCounterDataType", szFieldName);
1827 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TotalCount);
1828 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ErrorCount);
1829 proto_item_set_end(ti, tvb, *pOffset);
1831 void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1833 proto_item *ti;
1834 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_StatusResult, &ti, "%s: StatusResult", szFieldName);
1835 parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode);
1836 parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo");
1837 proto_item_set_end(ti, tvb, *pOffset);
1839 void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1841 proto_item *ti;
1842 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SubscriptionDiagnosticsDataType, &ti, "%s: SubscriptionDiagnosticsDataType", szFieldName);
1843 parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId");
1844 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
1845 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority);
1846 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingInterval);
1847 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxKeepAliveCount);
1848 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxLifetimeCount);
1849 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish);
1850 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled);
1851 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ModifyCount);
1852 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EnableCount);
1853 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisableCount);
1854 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishRequestCount);
1855 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishMessageRequestCount);
1856 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishMessageCount);
1857 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferRequestCount);
1858 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferredToAltClientCount);
1859 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferredToSameClientCount);
1860 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_PublishRequestCount);
1861 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DataChangeNotificationsCount);
1862 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotificationsCount);
1863 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NotificationsCount);
1864 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_LatePublishRequestCount);
1865 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentKeepAliveCount);
1866 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentLifetimeCount);
1867 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnacknowledgedMessageCount);
1868 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DiscardedMessageCount);
1869 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemCount);
1870 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisabledMonitoredItemCount);
1871 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoringQueueOverflowCount);
1872 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NextSequenceNumber);
1873 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EventQueueOverFlowCount);
1874 proto_item_set_end(ti, tvb, *pOffset);
1876 void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1878 proto_item *ti;
1879 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ModelChangeStructureDataType, &ti, "%s: ModelChangeStructureDataType", szFieldName);
1880 parseNodeId(subtree, tvb, pinfo, pOffset, "Affected");
1881 parseNodeId(subtree, tvb, pinfo, pOffset, "AffectedType");
1882 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Verb);
1883 proto_item_set_end(ti, tvb, *pOffset);
1885 void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1887 proto_item *ti;
1888 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SemanticChangeStructureDataType, &ti, "%s: SemanticChangeStructureDataType", szFieldName);
1889 parseNodeId(subtree, tvb, pinfo, pOffset, "Affected");
1890 parseNodeId(subtree, tvb, pinfo, pOffset, "AffectedType");
1891 proto_item_set_end(ti, tvb, *pOffset);
1893 void parseRange(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1895 proto_item *ti;
1896 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Range, &ti, "%s: Range", szFieldName);
1897 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Low);
1898 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_High);
1899 proto_item_set_end(ti, tvb, *pOffset);
1901 void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1903 proto_item *ti;
1904 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EUInformation, &ti, "%s: EUInformation", szFieldName);
1905 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_NamespaceUri);
1906 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnitId);
1907 parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName");
1908 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description");
1909 proto_item_set_end(ti, tvb, *pOffset);
1911 void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1913 proto_item *ti;
1914 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ComplexNumberType, &ti, "%s: ComplexNumberType", szFieldName);
1915 parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Real);
1916 parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Imaginary);
1917 proto_item_set_end(ti, tvb, *pOffset);
1919 void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1921 proto_item *ti;
1922 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DoubleComplexNumberType, &ti, "%s: DoubleComplexNumberType", szFieldName);
1923 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Real);
1924 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Imaginary);
1925 proto_item_set_end(ti, tvb, *pOffset);
1927 void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1929 proto_item *ti;
1930 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AxisInformation, &ti, "%s: AxisInformation", szFieldName);
1931 parseEUInformation(subtree, tvb, pinfo, pOffset, "EngineeringUnits");
1932 parseRange(subtree, tvb, pinfo, pOffset, "EURange");
1933 parseLocalizedText(subtree, tvb, pinfo, pOffset, "Title");
1934 parseAxisScaleEnumeration(subtree, tvb, pinfo, pOffset);
1935 /* Array length field ignored: NoOfAxisSteps */
1936 parseArraySimple(subtree, tvb, pinfo, pOffset, "AxisSteps", "Double", hf_opcua_AxisSteps, parseDouble, ett_opcua_array_Double);
1937 proto_item_set_end(ti, tvb, *pOffset);
1939 void parseXVType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1941 proto_item *ti;
1942 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_XVType, &ti, "%s: XVType", szFieldName);
1943 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_X);
1944 parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Value);
1945 proto_item_set_end(ti, tvb, *pOffset);
1947 void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1949 proto_item *ti;
1950 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ProgramDiagnosticDataType, &ti, "%s: ProgramDiagnosticDataType", szFieldName);
1951 parseNodeId(subtree, tvb, pinfo, pOffset, "CreateSessionId");
1952 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_CreateClientName);
1953 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_InvocationCreationTime);
1954 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastTransitionTime);
1955 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_LastMethodCall);
1956 parseNodeId(subtree, tvb, pinfo, pOffset, "LastMethodSessionId");
1957 /* Array length field ignored: NoOfLastMethodInputArguments */
1958 parseArrayComplex(subtree, tvb, pinfo, pOffset, "LastMethodInputArguments", "Argument", parseArgument, ett_opcua_array_Argument);
1959 /* Array length field ignored: NoOfLastMethodOutputArguments */
1960 parseArrayComplex(subtree, tvb, pinfo, pOffset, "LastMethodOutputArguments", "Argument", parseArgument, ett_opcua_array_Argument);
1961 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastMethodCallTime);
1962 parseStatusResult(subtree, tvb, pinfo, pOffset, "LastMethodReturnStatus");
1963 proto_item_set_end(ti, tvb, *pOffset);
1965 void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset, const char *szFieldName)
1967 proto_item *ti;
1968 proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Annotation, &ti, "%s: Annotation", szFieldName);
1969 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Message);
1970 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName);
1971 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_AnnotationTime);
1972 proto_item_set_end(ti, tvb, *pOffset);
1975 /** Setup protocol subtree array */
1976 static int *ett[] =
1978 &ett_opcua_TrustListDataType,
1979 &ett_opcua_array_TrustListDataType,
1980 &ett_opcua_Node,
1981 &ett_opcua_array_Node,
1982 &ett_opcua_InstanceNode,
1983 &ett_opcua_array_InstanceNode,
1984 &ett_opcua_TypeNode,
1985 &ett_opcua_array_TypeNode,
1986 &ett_opcua_ObjectNode,
1987 &ett_opcua_array_ObjectNode,
1988 &ett_opcua_ObjectTypeNode,
1989 &ett_opcua_array_ObjectTypeNode,
1990 &ett_opcua_VariableNode,
1991 &ett_opcua_array_VariableNode,
1992 &ett_opcua_VariableTypeNode,
1993 &ett_opcua_array_VariableTypeNode,
1994 &ett_opcua_ReferenceTypeNode,
1995 &ett_opcua_array_ReferenceTypeNode,
1996 &ett_opcua_MethodNode,
1997 &ett_opcua_array_MethodNode,
1998 &ett_opcua_ViewNode,
1999 &ett_opcua_array_ViewNode,
2000 &ett_opcua_DataTypeNode,
2001 &ett_opcua_array_DataTypeNode,
2002 &ett_opcua_ReferenceNode,
2003 &ett_opcua_array_ReferenceNode,
2004 &ett_opcua_Argument,
2005 &ett_opcua_array_Argument,
2006 &ett_opcua_EnumValueType,
2007 &ett_opcua_array_EnumValueType,
2008 &ett_opcua_OptionSet,
2009 &ett_opcua_array_OptionSet,
2010 &ett_opcua_TimeZoneDataType,
2011 &ett_opcua_array_TimeZoneDataType,
2012 &ett_opcua_ApplicationDescription,
2013 &ett_opcua_array_ApplicationDescription,
2014 &ett_opcua_RequestHeader,
2015 &ett_opcua_array_RequestHeader,
2016 &ett_opcua_ResponseHeader,
2017 &ett_opcua_array_ResponseHeader,
2018 &ett_opcua_ServerOnNetwork,
2019 &ett_opcua_array_ServerOnNetwork,
2020 &ett_opcua_UserTokenPolicy,
2021 &ett_opcua_array_UserTokenPolicy,
2022 &ett_opcua_EndpointDescription,
2023 &ett_opcua_array_EndpointDescription,
2024 &ett_opcua_RegisteredServer,
2025 &ett_opcua_array_RegisteredServer,
2026 &ett_opcua_MdnsDiscoveryConfiguration,
2027 &ett_opcua_array_MdnsDiscoveryConfiguration,
2028 &ett_opcua_ChannelSecurityToken,
2029 &ett_opcua_array_ChannelSecurityToken,
2030 &ett_opcua_SignedSoftwareCertificate,
2031 &ett_opcua_array_SignedSoftwareCertificate,
2032 &ett_opcua_SignatureData,
2033 &ett_opcua_array_SignatureData,
2034 &ett_opcua_UserIdentityToken,
2035 &ett_opcua_array_UserIdentityToken,
2036 &ett_opcua_AnonymousIdentityToken,
2037 &ett_opcua_array_AnonymousIdentityToken,
2038 &ett_opcua_UserNameIdentityToken,
2039 &ett_opcua_array_UserNameIdentityToken,
2040 &ett_opcua_X509IdentityToken,
2041 &ett_opcua_array_X509IdentityToken,
2042 &ett_opcua_KerberosIdentityToken,
2043 &ett_opcua_array_KerberosIdentityToken,
2044 &ett_opcua_IssuedIdentityToken,
2045 &ett_opcua_array_IssuedIdentityToken,
2046 &ett_opcua_NodeAttributes,
2047 &ett_opcua_array_NodeAttributes,
2048 &ett_opcua_ObjectAttributes,
2049 &ett_opcua_array_ObjectAttributes,
2050 &ett_opcua_VariableAttributes,
2051 &ett_opcua_array_VariableAttributes,
2052 &ett_opcua_MethodAttributes,
2053 &ett_opcua_array_MethodAttributes,
2054 &ett_opcua_ObjectTypeAttributes,
2055 &ett_opcua_array_ObjectTypeAttributes,
2056 &ett_opcua_VariableTypeAttributes,
2057 &ett_opcua_array_VariableTypeAttributes,
2058 &ett_opcua_ReferenceTypeAttributes,
2059 &ett_opcua_array_ReferenceTypeAttributes,
2060 &ett_opcua_DataTypeAttributes,
2061 &ett_opcua_array_DataTypeAttributes,
2062 &ett_opcua_ViewAttributes,
2063 &ett_opcua_array_ViewAttributes,
2064 &ett_opcua_AddNodesItem,
2065 &ett_opcua_array_AddNodesItem,
2066 &ett_opcua_AddNodesResult,
2067 &ett_opcua_array_AddNodesResult,
2068 &ett_opcua_AddReferencesItem,
2069 &ett_opcua_array_AddReferencesItem,
2070 &ett_opcua_DeleteNodesItem,
2071 &ett_opcua_array_DeleteNodesItem,
2072 &ett_opcua_DeleteReferencesItem,
2073 &ett_opcua_array_DeleteReferencesItem,
2074 &ett_opcua_ViewDescription,
2075 &ett_opcua_array_ViewDescription,
2076 &ett_opcua_BrowseDescription,
2077 &ett_opcua_array_BrowseDescription,
2078 &ett_opcua_ReferenceDescription,
2079 &ett_opcua_array_ReferenceDescription,
2080 &ett_opcua_BrowseResult,
2081 &ett_opcua_array_BrowseResult,
2082 &ett_opcua_RelativePathElement,
2083 &ett_opcua_array_RelativePathElement,
2084 &ett_opcua_RelativePath,
2085 &ett_opcua_array_RelativePath,
2086 &ett_opcua_BrowsePath,
2087 &ett_opcua_array_BrowsePath,
2088 &ett_opcua_BrowsePathTarget,
2089 &ett_opcua_array_BrowsePathTarget,
2090 &ett_opcua_BrowsePathResult,
2091 &ett_opcua_array_BrowsePathResult,
2092 &ett_opcua_EndpointConfiguration,
2093 &ett_opcua_array_EndpointConfiguration,
2094 &ett_opcua_SupportedProfile,
2095 &ett_opcua_array_SupportedProfile,
2096 &ett_opcua_SoftwareCertificate,
2097 &ett_opcua_array_SoftwareCertificate,
2098 &ett_opcua_QueryDataDescription,
2099 &ett_opcua_array_QueryDataDescription,
2100 &ett_opcua_NodeTypeDescription,
2101 &ett_opcua_array_NodeTypeDescription,
2102 &ett_opcua_QueryDataSet,
2103 &ett_opcua_array_QueryDataSet,
2104 &ett_opcua_NodeReference,
2105 &ett_opcua_array_NodeReference,
2106 &ett_opcua_ContentFilterElement,
2107 &ett_opcua_array_ContentFilterElement,
2108 &ett_opcua_ContentFilter,
2109 &ett_opcua_array_ContentFilter,
2110 &ett_opcua_ElementOperand,
2111 &ett_opcua_array_ElementOperand,
2112 &ett_opcua_LiteralOperand,
2113 &ett_opcua_array_LiteralOperand,
2114 &ett_opcua_AttributeOperand,
2115 &ett_opcua_array_AttributeOperand,
2116 &ett_opcua_SimpleAttributeOperand,
2117 &ett_opcua_array_SimpleAttributeOperand,
2118 &ett_opcua_ContentFilterElementResult,
2119 &ett_opcua_array_ContentFilterElementResult,
2120 &ett_opcua_ContentFilterResult,
2121 &ett_opcua_array_ContentFilterResult,
2122 &ett_opcua_ParsingResult,
2123 &ett_opcua_array_ParsingResult,
2124 &ett_opcua_ReadValueId,
2125 &ett_opcua_array_ReadValueId,
2126 &ett_opcua_HistoryReadValueId,
2127 &ett_opcua_array_HistoryReadValueId,
2128 &ett_opcua_HistoryReadResult,
2129 &ett_opcua_array_HistoryReadResult,
2130 &ett_opcua_ReadEventDetails,
2131 &ett_opcua_array_ReadEventDetails,
2132 &ett_opcua_ReadRawModifiedDetails,
2133 &ett_opcua_array_ReadRawModifiedDetails,
2134 &ett_opcua_ReadProcessedDetails,
2135 &ett_opcua_array_ReadProcessedDetails,
2136 &ett_opcua_ReadAtTimeDetails,
2137 &ett_opcua_array_ReadAtTimeDetails,
2138 &ett_opcua_HistoryData,
2139 &ett_opcua_array_HistoryData,
2140 &ett_opcua_ModificationInfo,
2141 &ett_opcua_array_ModificationInfo,
2142 &ett_opcua_HistoryModifiedData,
2143 &ett_opcua_array_HistoryModifiedData,
2144 &ett_opcua_HistoryEvent,
2145 &ett_opcua_array_HistoryEvent,
2146 &ett_opcua_WriteValue,
2147 &ett_opcua_array_WriteValue,
2148 &ett_opcua_HistoryUpdateDetails,
2149 &ett_opcua_array_HistoryUpdateDetails,
2150 &ett_opcua_UpdateDataDetails,
2151 &ett_opcua_array_UpdateDataDetails,
2152 &ett_opcua_UpdateStructureDataDetails,
2153 &ett_opcua_array_UpdateStructureDataDetails,
2154 &ett_opcua_UpdateEventDetails,
2155 &ett_opcua_array_UpdateEventDetails,
2156 &ett_opcua_DeleteRawModifiedDetails,
2157 &ett_opcua_array_DeleteRawModifiedDetails,
2158 &ett_opcua_DeleteAtTimeDetails,
2159 &ett_opcua_array_DeleteAtTimeDetails,
2160 &ett_opcua_DeleteEventDetails,
2161 &ett_opcua_array_DeleteEventDetails,
2162 &ett_opcua_HistoryUpdateResult,
2163 &ett_opcua_array_HistoryUpdateResult,
2164 &ett_opcua_CallMethodRequest,
2165 &ett_opcua_array_CallMethodRequest,
2166 &ett_opcua_CallMethodResult,
2167 &ett_opcua_array_CallMethodResult,
2168 &ett_opcua_DataChangeFilter,
2169 &ett_opcua_array_DataChangeFilter,
2170 &ett_opcua_EventFilter,
2171 &ett_opcua_array_EventFilter,
2172 &ett_opcua_AggregateConfiguration,
2173 &ett_opcua_array_AggregateConfiguration,
2174 &ett_opcua_AggregateFilter,
2175 &ett_opcua_array_AggregateFilter,
2176 &ett_opcua_EventFilterResult,
2177 &ett_opcua_array_EventFilterResult,
2178 &ett_opcua_AggregateFilterResult,
2179 &ett_opcua_array_AggregateFilterResult,
2180 &ett_opcua_MonitoringParameters,
2181 &ett_opcua_array_MonitoringParameters,
2182 &ett_opcua_MonitoredItemCreateRequest,
2183 &ett_opcua_array_MonitoredItemCreateRequest,
2184 &ett_opcua_MonitoredItemCreateResult,
2185 &ett_opcua_array_MonitoredItemCreateResult,
2186 &ett_opcua_MonitoredItemModifyRequest,
2187 &ett_opcua_array_MonitoredItemModifyRequest,
2188 &ett_opcua_MonitoredItemModifyResult,
2189 &ett_opcua_array_MonitoredItemModifyResult,
2190 &ett_opcua_NotificationMessage,
2191 &ett_opcua_array_NotificationMessage,
2192 &ett_opcua_DataChangeNotification,
2193 &ett_opcua_array_DataChangeNotification,
2194 &ett_opcua_MonitoredItemNotification,
2195 &ett_opcua_array_MonitoredItemNotification,
2196 &ett_opcua_EventNotificationList,
2197 &ett_opcua_array_EventNotificationList,
2198 &ett_opcua_EventFieldList,
2199 &ett_opcua_array_EventFieldList,
2200 &ett_opcua_HistoryEventFieldList,
2201 &ett_opcua_array_HistoryEventFieldList,
2202 &ett_opcua_StatusChangeNotification,
2203 &ett_opcua_array_StatusChangeNotification,
2204 &ett_opcua_SubscriptionAcknowledgement,
2205 &ett_opcua_array_SubscriptionAcknowledgement,
2206 &ett_opcua_TransferResult,
2207 &ett_opcua_array_TransferResult,
2208 &ett_opcua_ScalarTestType,
2209 &ett_opcua_array_ScalarTestType,
2210 &ett_opcua_ArrayTestType,
2211 &ett_opcua_array_ArrayTestType,
2212 &ett_opcua_CompositeTestType,
2213 &ett_opcua_array_CompositeTestType,
2214 &ett_opcua_BuildInfo,
2215 &ett_opcua_array_BuildInfo,
2216 &ett_opcua_RedundantServerDataType,
2217 &ett_opcua_array_RedundantServerDataType,
2218 &ett_opcua_EndpointUrlListDataType,
2219 &ett_opcua_array_EndpointUrlListDataType,
2220 &ett_opcua_NetworkGroupDataType,
2221 &ett_opcua_array_NetworkGroupDataType,
2222 &ett_opcua_SamplingIntervalDiagnosticsDataType,
2223 &ett_opcua_array_SamplingIntervalDiagnosticsDataType,
2224 &ett_opcua_ServerDiagnosticsSummaryDataType,
2225 &ett_opcua_array_ServerDiagnosticsSummaryDataType,
2226 &ett_opcua_ServerStatusDataType,
2227 &ett_opcua_array_ServerStatusDataType,
2228 &ett_opcua_SessionDiagnosticsDataType,
2229 &ett_opcua_array_SessionDiagnosticsDataType,
2230 &ett_opcua_SessionSecurityDiagnosticsDataType,
2231 &ett_opcua_array_SessionSecurityDiagnosticsDataType,
2232 &ett_opcua_ServiceCounterDataType,
2233 &ett_opcua_array_ServiceCounterDataType,
2234 &ett_opcua_StatusResult,
2235 &ett_opcua_array_StatusResult,
2236 &ett_opcua_SubscriptionDiagnosticsDataType,
2237 &ett_opcua_array_SubscriptionDiagnosticsDataType,
2238 &ett_opcua_ModelChangeStructureDataType,
2239 &ett_opcua_array_ModelChangeStructureDataType,
2240 &ett_opcua_SemanticChangeStructureDataType,
2241 &ett_opcua_array_SemanticChangeStructureDataType,
2242 &ett_opcua_Range,
2243 &ett_opcua_array_Range,
2244 &ett_opcua_EUInformation,
2245 &ett_opcua_array_EUInformation,
2246 &ett_opcua_ComplexNumberType,
2247 &ett_opcua_array_ComplexNumberType,
2248 &ett_opcua_DoubleComplexNumberType,
2249 &ett_opcua_array_DoubleComplexNumberType,
2250 &ett_opcua_AxisInformation,
2251 &ett_opcua_array_AxisInformation,
2252 &ett_opcua_XVType,
2253 &ett_opcua_array_XVType,
2254 &ett_opcua_ProgramDiagnosticDataType,
2255 &ett_opcua_array_ProgramDiagnosticDataType,
2256 &ett_opcua_Annotation,
2257 &ett_opcua_array_Annotation,
2260 void registerComplexTypes(void)
2262 proto_register_subtree_array(ett, array_length(ett));