1 /******************************************************************************
4 ** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
5 ** Web: http://www.ascolab.com
7 ** This program is free software; you can redistribute it and/or
8 ** modify it under the terms of the GNU General Public License
9 ** as published by the Free Software Foundation; either version 2
10 ** of the License, or (at your option) any later version.
12 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
13 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
15 ** Project: OpcUa Wireshark Plugin
17 ** Description: OpcUa Complex Type Parser
19 ** This file was autogenerated on 8.5.2007 18:53:26.
20 ** DON'T MODIFY THIS FILE!
22 ******************************************************************************/
29 #include <epan/packet.h>
30 #include "opcua_complextypeparser.h"
31 #include "opcua_enumparser.h"
32 #include "opcua_simpletypes.h"
33 #include "opcua_hfindeces.h"
36 gint ett_opcua_ReferenceNode = -1;
37 void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
39 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceNode", szFieldName);
40 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceNode);
42 parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
43 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse);
44 parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex);
45 parseExpandedNodeId(subtree, tvb, pOffset, "TargetId");
48 gint ett_opcua_Node = -1;
49 void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
51 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Node", szFieldName);
52 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Node);
54 parseNodeId(subtree, tvb, pOffset, "NodeId");
55 parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass);
56 parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
57 parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
58 parseLocalizedText(subtree, tvb, pOffset, "Description");
59 parseArrayComplex(subtree, tvb, pOffset, "References", parseReferenceNode);
62 gint ett_opcua_ObjectNode = -1;
63 void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
65 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectNode", szFieldName);
66 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectNode);
67 /* parse base class members */
68 parseNode(subtree, tvb, pOffset, "[Node]");
69 /* parse additional members */
70 parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
73 gint ett_opcua_ObjectTypeNode = -1;
74 void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
76 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeNode", szFieldName);
77 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeNode);
78 /* parse base class members */
79 parseNode(subtree, tvb, pOffset, "[Node]");
80 /* parse additional members */
81 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
84 gint ett_opcua_VariableNode = -1;
85 void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
87 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableNode", szFieldName);
88 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableNode);
89 /* parse base class members */
90 parseNode(subtree, tvb, pOffset, "[Node]");
91 /* parse additional members */
92 parseVariant(subtree, tvb, pOffset, "Value");
93 parseNodeId(subtree, tvb, pOffset, "DataType");
94 parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
95 parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel);
96 parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel);
97 parseInt32(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval);
98 parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing);
101 gint ett_opcua_VariableTypeNode = -1;
102 void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
104 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableTypeNode", szFieldName);
105 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeNode);
106 /* parse base class members */
107 parseNode(subtree, tvb, pOffset, "[Node]");
108 /* parse additional members */
109 parseVariant(subtree, tvb, pOffset, "Value");
110 parseNodeId(subtree, tvb, pOffset, "DataType");
111 parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
112 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
115 gint ett_opcua_ReferenceTypeNode = -1;
116 void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
118 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceTypeNode", szFieldName);
119 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeNode);
120 /* parse base class members */
121 parseNode(subtree, tvb, pOffset, "[Node]");
122 /* parse additional members */
123 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
124 parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric);
125 parseLocalizedText(subtree, tvb, pOffset, "InverseName");
128 gint ett_opcua_MethodNode = -1;
129 void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
131 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodNode", szFieldName);
132 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodNode);
133 /* parse base class members */
134 parseNode(subtree, tvb, pOffset, "[Node]");
135 /* parse additional members */
136 parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable);
137 parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable);
140 gint ett_opcua_ViewNode = -1;
141 void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
143 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewNode", szFieldName);
144 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewNode);
145 /* parse base class members */
146 parseNode(subtree, tvb, pOffset, "[Node]");
147 /* parse additional members */
148 parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops);
149 parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
152 gint ett_opcua_DataTypeNode = -1;
153 void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
155 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataTypeNode", szFieldName);
156 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataTypeNode);
157 /* parse base class members */
158 parseNode(subtree, tvb, pOffset, "[Node]");
159 /* parse additional members */
160 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
163 gint ett_opcua_UriTableEntry = -1;
164 void parseUriTableEntry(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
166 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UriTableEntry", szFieldName);
167 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UriTableEntry);
169 parseUInt32(subtree, tvb, pOffset, hf_opcua_Index);
170 parseString(subtree, tvb, pOffset, hf_opcua_Uri);
173 gint ett_opcua_NodeSet = -1;
174 void parseNodeSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
176 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeSet", szFieldName);
177 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeSet);
179 parseArrayComplex(subtree, tvb, pOffset, "NamespaceUris", parseUriTableEntry);
180 parseArrayComplex(subtree, tvb, pOffset, "ServerUris", parseUriTableEntry);
181 parseArrayComplex(subtree, tvb, pOffset, "Nodes", parseExtensionObject);
184 gint ett_opcua_Argument = -1;
185 void parseArgument(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
187 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Argument", szFieldName);
188 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Argument);
190 parseString(subtree, tvb, pOffset, hf_opcua_Name);
191 parseNodeId(subtree, tvb, pOffset, "DataType");
192 parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
193 parseLocalizedText(subtree, tvb, pOffset, "Description");
196 gint ett_opcua_Status = -1;
197 void parseStatus(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
199 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Status", szFieldName);
200 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Status);
202 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
203 parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
206 gint ett_opcua_BaseEvent = -1;
207 void parseBaseEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
209 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseEvent", szFieldName);
210 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseEvent);
212 parseByteString(subtree, tvb, pOffset, hf_opcua_EventId);
213 parseNodeId(subtree, tvb, pOffset, "EventType");
214 parseNodeId(subtree, tvb, pOffset, "SourceNode");
215 parseString(subtree, tvb, pOffset, hf_opcua_SourceName);
216 parseDateTime(subtree, tvb, pOffset, hf_opcua_Time);
217 parseDateTime(subtree, tvb, pOffset, hf_opcua_ReceiveTime);
218 parseLocalizedText(subtree, tvb, pOffset, "Message");
219 parseUInt16(subtree, tvb, pOffset, hf_opcua_Severity);
222 gint ett_opcua_SecurityPolicy = -1;
223 void parseSecurityPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
225 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SecurityPolicy", szFieldName);
226 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SecurityPolicy);
228 parseString(subtree, tvb, pOffset, hf_opcua_Uri);
229 parseString(subtree, tvb, pOffset, hf_opcua_Digest);
230 parseString(subtree, tvb, pOffset, hf_opcua_SymmetricSignature);
231 parseString(subtree, tvb, pOffset, hf_opcua_SymmetricKeyWrap);
232 parseString(subtree, tvb, pOffset, hf_opcua_SymmetricEncryption);
233 parseInt32(subtree, tvb, pOffset, hf_opcua_SymmetricKeyLength);
234 parseString(subtree, tvb, pOffset, hf_opcua_AsymmetricSignature);
235 parseString(subtree, tvb, pOffset, hf_opcua_AsymmetricKeyWrap);
236 parseString(subtree, tvb, pOffset, hf_opcua_AsymmetricEncryption);
237 parseUInt32(subtree, tvb, pOffset, hf_opcua_MinimumAsymmetricKeyLength);
238 parseUInt32(subtree, tvb, pOffset, hf_opcua_MaximumAsymmetricKeyLength);
239 parseString(subtree, tvb, pOffset, hf_opcua_DerivedKey);
240 parseUInt32(subtree, tvb, pOffset, hf_opcua_DerivedEncryptionKeyLength);
241 parseUInt32(subtree, tvb, pOffset, hf_opcua_DerivedSignatureKeyLength);
244 gint ett_opcua_UserTokenPolicy = -1;
245 void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
247 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserTokenPolicy", szFieldName);
248 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserTokenPolicy);
250 parseUserTokenType(subtree, tvb, pOffset);
251 parseString(subtree, tvb, pOffset, hf_opcua_IssuerType);
252 parseString(subtree, tvb, pOffset, hf_opcua_IssuerUrl);
255 gint ett_opcua_ServerDescription = -1;
256 void parseServerDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
258 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDescription", szFieldName);
259 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDescription);
261 parseServerDescriptionType(subtree, tvb, pOffset);
262 parseString(subtree, tvb, pOffset, hf_opcua_ServerUri);
263 parseLocalizedText(subtree, tvb, pOffset, "ServerName");
264 parseArraySimple(subtree, tvb, pOffset, hf_opcua_DiscoveryUrls, parseString);
267 gint ett_opcua_EndpointDescription = -1;
268 void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
270 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointDescription", szFieldName);
271 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointDescription);
273 parseServerDescription(subtree, tvb, pOffset, "Server");
274 parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl);
275 parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate);
276 parseMessageSecurityMode(subtree, tvb, pOffset);
277 parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri);
278 parseArrayComplex(subtree, tvb, pOffset, "UserIdentityTokens", parseUserTokenPolicy);
279 parseArraySimple(subtree, tvb, pOffset, hf_opcua_SupportedProfiles, parseString);
282 gint ett_opcua_EndpointConfiguration = -1;
283 void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
285 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointConfiguration", szFieldName);
286 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointConfiguration);
288 parseInt32(subtree, tvb, pOffset, hf_opcua_SendTimeout);
289 parseInt32(subtree, tvb, pOffset, hf_opcua_OperationTimeout);
290 parseBoolean(subtree, tvb, pOffset, hf_opcua_UseBinaryEncoding);
291 parseInt32(subtree, tvb, pOffset, hf_opcua_MaxMessageSize);
292 parseInt32(subtree, tvb, pOffset, hf_opcua_MaxArrayLength);
293 parseInt32(subtree, tvb, pOffset, hf_opcua_MaxStringLength);
296 gint ett_opcua_UserIdentityToken = -1;
297 void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
299 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserIdentityToken", szFieldName);
300 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserIdentityToken);
304 gint ett_opcua_UserNameIdentityToken = -1;
305 void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
307 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserNameIdentityToken", szFieldName);
308 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserNameIdentityToken);
309 /* parse base class members */
310 parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]");
311 /* parse additional members */
312 parseString(subtree, tvb, pOffset, hf_opcua_UserName);
313 parseString(subtree, tvb, pOffset, hf_opcua_Password);
314 parseString(subtree, tvb, pOffset, hf_opcua_HashAlgorithm);
317 gint ett_opcua_X509IdentityToken = -1;
318 void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
320 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : X509IdentityToken", szFieldName);
321 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_X509IdentityToken);
322 /* parse base class members */
323 parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]");
324 /* parse additional members */
325 parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData);
328 gint ett_opcua_WssIdentityToken = -1;
329 void parseWssIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
331 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : WssIdentityToken", szFieldName);
332 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WssIdentityToken);
333 /* parse base class members */
334 parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]");
335 /* parse additional members */
336 parseXmlElement(subtree, tvb, pOffset, hf_opcua_TokenData);
339 gint ett_opcua_SupportedProfile = -1;
340 void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
342 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SupportedProfile", szFieldName);
343 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SupportedProfile);
345 parseString(subtree, tvb, pOffset, hf_opcua_ProfileUri);
346 parseString(subtree, tvb, pOffset, hf_opcua_ProfileName);
347 parseComplianceLevel(subtree, tvb, pOffset);
350 gint ett_opcua_BuildInfo = -1;
351 void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
353 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BuildInfo", szFieldName);
354 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BuildInfo);
356 parseString(subtree, tvb, pOffset, hf_opcua_ApplicationUri);
357 parseString(subtree, tvb, pOffset, hf_opcua_ManufacturerName);
358 parseString(subtree, tvb, pOffset, hf_opcua_ApplicationName);
359 parseString(subtree, tvb, pOffset, hf_opcua_SoftwareVersion);
360 parseString(subtree, tvb, pOffset, hf_opcua_BuildNumber);
361 parseDateTime(subtree, tvb, pOffset, hf_opcua_BuildDate);
364 gint ett_opcua_SoftwareCertificate = -1;
365 void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
367 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SoftwareCertificate", szFieldName);
368 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SoftwareCertificate);
370 parseBuildInfo(subtree, tvb, pOffset, "ServerInfo");
371 parseString(subtree, tvb, pOffset, hf_opcua_IssuedBy);
372 parseDateTime(subtree, tvb, pOffset, hf_opcua_IssuedDate);
373 parseDateTime(subtree, tvb, pOffset, hf_opcua_ExpirationDate);
374 parseByteString(subtree, tvb, pOffset, hf_opcua_ApplicationCertificate);
375 parseString(subtree, tvb, pOffset, hf_opcua_IssuerCertificateThumbprint);
376 parseString(subtree, tvb, pOffset, hf_opcua_IssuerSignatureAlgorithm);
377 parseArrayComplex(subtree, tvb, pOffset, "SupportedProfiles", parseSupportedProfile);
380 gint ett_opcua_SignedSoftwareCertificate = -1;
381 void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
383 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SignedSoftwareCertificate", szFieldName);
384 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SignedSoftwareCertificate);
386 parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData);
387 parseByteString(subtree, tvb, pOffset, hf_opcua_IssuerSignature);
390 gint ett_opcua_NodeAttributes = -1;
391 void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
393 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeAttributes", szFieldName);
394 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeAttributes);
396 parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
397 parseLocalizedText(subtree, tvb, pOffset, "Description");
400 gint ett_opcua_ObjectAttributes = -1;
401 void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
403 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectAttributes", szFieldName);
404 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectAttributes);
405 /* parse base class members */
406 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
407 /* parse additional members */
408 parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
411 gint ett_opcua_ObjectTypeAttributes = -1;
412 void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
414 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeAttributes", szFieldName);
415 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeAttributes);
416 /* parse base class members */
417 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
418 /* parse additional members */
419 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
422 gint ett_opcua_VariableAttributes = -1;
423 void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
425 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableAttributes", szFieldName);
426 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableAttributes);
427 /* parse base class members */
428 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
429 /* parse additional members */
430 parseVariant(subtree, tvb, pOffset, "Value");
431 parseNodeId(subtree, tvb, pOffset, "DataType");
432 parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
433 parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel);
434 parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel);
435 parseInt32(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval);
436 parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing);
439 gint ett_opcua_VariableTypeAttributes = -1;
440 void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
442 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableTypeAttributes", szFieldName);
443 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeAttributes);
444 /* parse base class members */
445 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
446 /* parse additional members */
447 parseVariant(subtree, tvb, pOffset, "Value");
448 parseNodeId(subtree, tvb, pOffset, "DataType");
449 parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
450 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
453 gint ett_opcua_ReferenceTypeAttributes = -1;
454 void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
456 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceTypeAttributes", szFieldName);
457 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeAttributes);
458 /* parse base class members */
459 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
460 /* parse additional members */
461 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
462 parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric);
463 parseLocalizedText(subtree, tvb, pOffset, "InverseName");
466 gint ett_opcua_MethodAttributes = -1;
467 void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
469 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodAttributes", szFieldName);
470 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodAttributes);
471 /* parse base class members */
472 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
473 /* parse additional members */
474 parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable);
475 parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable);
478 gint ett_opcua_ViewAttributes = -1;
479 void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
481 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewAttributes", szFieldName);
482 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewAttributes);
483 /* parse base class members */
484 parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
485 /* parse additional members */
486 parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops);
487 parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
490 gint ett_opcua_AddNodesItem = -1;
491 void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
493 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddNodesItem", szFieldName);
494 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesItem);
496 parseExpandedNodeId(subtree, tvb, pOffset, "ParentNodeId");
497 parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
498 parseExpandedNodeId(subtree, tvb, pOffset, "RequestedNewNodeId");
499 parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
500 parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass);
501 parseExtensionObject(subtree, tvb, pOffset, "NodeAttributes");
502 parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition");
505 gint ett_opcua_AddReferencesItem = -1;
506 void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
508 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddReferencesItem", szFieldName);
509 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddReferencesItem);
511 parseNodeId(subtree, tvb, pOffset, "SourceNodeId");
512 parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
513 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
514 parseString(subtree, tvb, pOffset, hf_opcua_TargetServerUri);
515 parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId");
516 parseInt32(subtree, tvb, pOffset, hf_opcua_TargetNodeClass);
519 gint ett_opcua_DeleteNodesItem = -1;
520 void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
522 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteNodesItem", szFieldName);
523 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteNodesItem);
525 parseNodeId(subtree, tvb, pOffset, "NodeId");
526 parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteTargetReferences);
529 gint ett_opcua_DeleteReferencesItem = -1;
530 void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
532 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteReferencesItem", szFieldName);
533 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteReferencesItem);
535 parseNodeId(subtree, tvb, pOffset, "SourceNodeId");
536 parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
537 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
538 parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex);
539 parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId");
542 gint ett_opcua_RedundantServerDataType = -1;
543 void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
545 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RedundantServerDataType", szFieldName);
546 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RedundantServerDataType);
548 parseString(subtree, tvb, pOffset, hf_opcua_ServerId);
549 parseSByte(subtree, tvb, pOffset, hf_opcua_ServiceLevel);
550 parseServerState(subtree, tvb, pOffset);
553 gint ett_opcua_SamplingRateDiagnosticsDataType = -1;
554 void parseSamplingRateDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
556 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SamplingRateDiagnosticsDataType", szFieldName);
557 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SamplingRateDiagnosticsDataType);
559 parseUInt32(subtree, tvb, pOffset, hf_opcua_SamplingRate);
560 parseUInt32(subtree, tvb, pOffset, hf_opcua_SamplingErrorCount);
561 parseUInt32(subtree, tvb, pOffset, hf_opcua_SampledMonitoredItemsCount);
562 parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxSampledMonitoredItemsCount);
563 parseUInt32(subtree, tvb, pOffset, hf_opcua_DisabledMonitoredItemsSamplingCount);
566 gint ett_opcua_ServerDiagnosticsSummaryDataType = -1;
567 void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
569 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDiagnosticsSummaryDataType", szFieldName);
570 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDiagnosticsSummaryDataType);
572 parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerViewCount);
573 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSessionCount);
574 parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSessionCount);
575 parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedSessionCount);
576 parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectSessionCount);
577 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionTimeoutCount);
578 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionAbortCount);
579 parseUInt32(subtree, tvb, pOffset, hf_opcua_SamplingRateCount);
580 parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingRateCount);
581 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionCount);
582 parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSubscriptionCount);
583 parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedRequestsCount);
584 parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectedRequestsCount);
587 gint ett_opcua_ServerStatusDataType = -1;
588 void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
590 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerStatusDataType", szFieldName);
591 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerStatusDataType);
593 parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
594 parseDateTime(subtree, tvb, pOffset, hf_opcua_CurrentTime);
595 parseServerState(subtree, tvb, pOffset);
596 parseBuildInfo(subtree, tvb, pOffset, "BuildInfo");
599 gint ett_opcua_ServiceCounterDataType = -1;
600 void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
602 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceCounterDataType", szFieldName);
603 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceCounterDataType);
605 parseUInt32(subtree, tvb, pOffset, hf_opcua_TotalCount);
606 parseUInt32(subtree, tvb, pOffset, hf_opcua_UnauthorizedCount);
607 parseUInt32(subtree, tvb, pOffset, hf_opcua_ErrorCount);
610 gint ett_opcua_SessionDiagnosticsDataType = -1;
611 void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
613 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionDiagnosticsDataType", szFieldName);
614 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionDiagnosticsDataType);
616 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
617 parseString(subtree, tvb, pOffset, hf_opcua_ClientName);
618 parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString);
619 parseInt32(subtree, tvb, pOffset, hf_opcua_ActualSessionTimeout);
620 parseDateTime(subtree, tvb, pOffset, hf_opcua_ClientConnectionTime);
621 parseDateTime(subtree, tvb, pOffset, hf_opcua_ClientLastContactTime);
622 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionsCount);
623 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentMonitoredItemsCount);
624 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentPublishRequestsInQueue);
625 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentPublishTimerExpirations);
626 parseUInt32(subtree, tvb, pOffset, hf_opcua_KeepAliveCount);
627 parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentRepublishRequestsInQueue);
628 parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxRepublishRequestsInQueue);
629 parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishCounter);
630 parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingCount);
631 parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingQueueOverflowCount);
632 parseServiceCounterDataType(subtree, tvb, pOffset, "ReadCount");
633 parseServiceCounterDataType(subtree, tvb, pOffset, "HistoryReadCount");
634 parseServiceCounterDataType(subtree, tvb, pOffset, "WriteCount");
635 parseServiceCounterDataType(subtree, tvb, pOffset, "HistoryUpdateCount");
636 parseServiceCounterDataType(subtree, tvb, pOffset, "CallCount");
637 parseServiceCounterDataType(subtree, tvb, pOffset, "CreateMonitoredItemsCount");
638 parseServiceCounterDataType(subtree, tvb, pOffset, "ModifyMonitoredItemsCount");
639 parseServiceCounterDataType(subtree, tvb, pOffset, "SetMonitoringModeCount");
640 parseServiceCounterDataType(subtree, tvb, pOffset, "SetTriggeringCount");
641 parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteMonitoredItemsCount");
642 parseServiceCounterDataType(subtree, tvb, pOffset, "CreateSubscriptionCount");
643 parseServiceCounterDataType(subtree, tvb, pOffset, "ModifySubscriptionCount");
644 parseServiceCounterDataType(subtree, tvb, pOffset, "SetPublishingModeCount");
645 parseServiceCounterDataType(subtree, tvb, pOffset, "PublishCount");
646 parseServiceCounterDataType(subtree, tvb, pOffset, "RepublishCount");
647 parseServiceCounterDataType(subtree, tvb, pOffset, "TransferSubscriptionCount");
648 parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteSubscriptionsCount");
649 parseServiceCounterDataType(subtree, tvb, pOffset, "AddNodesCount");
650 parseServiceCounterDataType(subtree, tvb, pOffset, "AddReferencesCount");
651 parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteNodesCount");
652 parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteReferencesCount");
653 parseServiceCounterDataType(subtree, tvb, pOffset, "BrowseCount");
654 parseServiceCounterDataType(subtree, tvb, pOffset, "BrowseNextCount");
655 parseServiceCounterDataType(subtree, tvb, pOffset, "TranslateBrowsePathsToNodeIdsCount");
656 parseServiceCounterDataType(subtree, tvb, pOffset, "QueryFirstCount");
657 parseServiceCounterDataType(subtree, tvb, pOffset, "QueryNextCount");
660 gint ett_opcua_SessionSecurityDiagnosticsDataType = -1;
661 void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
663 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionSecurityDiagnosticsDataType", szFieldName);
664 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionSecurityDiagnosticsDataType);
666 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
667 parseString(subtree, tvb, pOffset, hf_opcua_ClientUserIdOfSession);
668 parseArraySimple(subtree, tvb, pOffset, hf_opcua_ClientUserIdHistory, parseString);
669 parseString(subtree, tvb, pOffset, hf_opcua_AuthenticationMechanism);
670 parseString(subtree, tvb, pOffset, hf_opcua_Encoding);
671 parseString(subtree, tvb, pOffset, hf_opcua_TransportProtocol);
672 parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicy);
675 gint ett_opcua_SubscriptionDiagnosticsDataType = -1;
676 void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
678 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionDiagnosticsDataType", szFieldName);
679 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionDiagnosticsDataType);
681 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
682 parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId);
683 parseInt32(subtree, tvb, pOffset, hf_opcua_PublishingInterval);
684 parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxKeepAliveCount);
685 parseByte(subtree, tvb, pOffset, hf_opcua_Priority);
686 parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled);
687 parseUInt32(subtree, tvb, pOffset, hf_opcua_ModifyCount);
688 parseUInt32(subtree, tvb, pOffset, hf_opcua_EnableCount);
689 parseUInt32(subtree, tvb, pOffset, hf_opcua_DisableCount);
690 parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishRequestCount);
691 parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishMessageRequestCount);
692 parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishMessageCount);
693 parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferRequestCount);
694 parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferredToAltClientCount);
695 parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferredToSameClientCount);
696 parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishRequestCount);
697 parseUInt32(subtree, tvb, pOffset, hf_opcua_DataChangeNotificationsCount);
698 parseUInt32(subtree, tvb, pOffset, hf_opcua_EventNotificationsCount);
699 parseUInt32(subtree, tvb, pOffset, hf_opcua_NotificationsCount);
700 parseUInt32(subtree, tvb, pOffset, hf_opcua_LateStateCount);
701 parseUInt32(subtree, tvb, pOffset, hf_opcua_KeepAliveStateCount);
704 gint ett_opcua_Range = -1;
705 void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
707 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Range", szFieldName);
708 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Range);
710 parseDouble(subtree, tvb, pOffset, hf_opcua_Low);
711 parseDouble(subtree, tvb, pOffset, hf_opcua_High);
714 gint ett_opcua_EUInformation = -1;
715 void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
717 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EUInformation", szFieldName);
718 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EUInformation);
720 parseString(subtree, tvb, pOffset, hf_opcua_NamespaceUri);
721 parseInt32(subtree, tvb, pOffset, hf_opcua_UnitId);
722 parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
723 parseLocalizedText(subtree, tvb, pOffset, "Description");
726 gint ett_opcua_Annotation = -1;
727 void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
729 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Annotation", szFieldName);
730 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Annotation);
732 parseString(subtree, tvb, pOffset, hf_opcua_Message);
733 parseString(subtree, tvb, pOffset, hf_opcua_UserName);
734 parseExtensionObject(subtree, tvb, pOffset, "UserIdentity");
735 parseDateTime(subtree, tvb, pOffset, hf_opcua_AnnotationTime);
738 gint ett_opcua_BaseStructureDataType = -1;
739 void parseBaseStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
741 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseStructureDataType", szFieldName);
742 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseStructureDataType);
744 parseInt32(subtree, tvb, pOffset, hf_opcua_Id);
745 parseString(subtree, tvb, pOffset, hf_opcua_Name);
748 gint ett_opcua_DerivedStructureDataType = -1;
749 void parseDerivedStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
751 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DerivedStructureDataType", szFieldName);
752 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DerivedStructureDataType);
753 /* parse base class members */
754 parseBaseStructureDataType(subtree, tvb, pOffset, "[BaseStructureDataType]");
755 /* parse additional members */
756 parseString(subtree, tvb, pOffset, hf_opcua_Description);
757 parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
760 gint ett_opcua_ScalarValuesDataType = -1;
761 void parseScalarValuesDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
763 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ScalarValuesDataType", szFieldName);
764 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ScalarValuesDataType);
766 parseBoolean(subtree, tvb, pOffset, hf_opcua_Boolean);
767 parseSByte(subtree, tvb, pOffset, hf_opcua_SByte);
768 parseByte(subtree, tvb, pOffset, hf_opcua_Byte);
769 parseInt16(subtree, tvb, pOffset, hf_opcua_Int16);
770 parseUInt16(subtree, tvb, pOffset, hf_opcua_UInt16);
771 parseInt32(subtree, tvb, pOffset, hf_opcua_Int32);
772 parseUInt32(subtree, tvb, pOffset, hf_opcua_UInt32);
773 parseInt64(subtree, tvb, pOffset, hf_opcua_Int64);
774 parseUInt64(subtree, tvb, pOffset, hf_opcua_UInt64);
775 parseFloat(subtree, tvb, pOffset, hf_opcua_Float);
776 parseDouble(subtree, tvb, pOffset, hf_opcua_Double);
777 parseString(subtree, tvb, pOffset, hf_opcua_String);
778 parseDateTime(subtree, tvb, pOffset, hf_opcua_DateTime);
779 parseGuid(subtree, tvb, pOffset, hf_opcua_Guid);
780 parseByteString(subtree, tvb, pOffset, hf_opcua_ByteString);
781 parseXmlElement(subtree, tvb, pOffset, hf_opcua_XmlElement);
782 parseNodeId(subtree, tvb, pOffset, "NodeId");
783 parseExpandedNodeId(subtree, tvb, pOffset, "ExpandedNodeId");
784 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
785 parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
786 parseQualifiedName(subtree, tvb, pOffset, "QualifiedName");
787 parseLocalizedText(subtree, tvb, pOffset, "LocalizedText");
788 parseExtensionObject(subtree, tvb, pOffset, "ExtensionObject");
789 parseDataValue(subtree, tvb, pOffset, "DataValue");
790 parseVariant(subtree, tvb, pOffset, "Variant");
791 parseBaseStructureDataType(subtree, tvb, pOffset, "Structure");
792 parseColorsDataType(subtree, tvb, pOffset);
795 gint ett_opcua_ArrayValuesDataType = -1;
796 void parseArrayValuesDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
798 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ArrayValuesDataType", szFieldName);
799 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ArrayValuesDataType);
801 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Boolean, parseBoolean);
802 parseArraySimple(subtree, tvb, pOffset, hf_opcua_SByte, parseSByte);
803 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int16, parseInt16);
804 parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt16, parseUInt16);
805 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int32, parseInt32);
806 parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt32, parseUInt32);
807 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int64, parseInt64);
808 parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt64, parseUInt64);
809 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Float, parseFloat);
810 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Double, parseDouble);
811 parseArraySimple(subtree, tvb, pOffset, hf_opcua_String, parseString);
812 parseArraySimple(subtree, tvb, pOffset, hf_opcua_DateTime, parseDateTime);
813 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Guid, parseGuid);
814 parseArraySimple(subtree, tvb, pOffset, hf_opcua_ByteString, parseByteString);
815 parseArraySimple(subtree, tvb, pOffset, hf_opcua_XmlElement, parseXmlElement);
816 parseArrayComplex(subtree, tvb, pOffset, "NodeId", parseNodeId);
817 parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeId", parseExpandedNodeId);
818 parseArraySimple(subtree, tvb, pOffset, hf_opcua_StatusCode, parseStatusCode);
819 parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfo", parseDiagnosticInfo);
820 parseArrayComplex(subtree, tvb, pOffset, "QualifiedName", parseQualifiedName);
821 parseArrayComplex(subtree, tvb, pOffset, "LocalizedText", parseLocalizedText);
822 parseArrayComplex(subtree, tvb, pOffset, "ExtensionObject", parseExtensionObject);
823 parseArrayComplex(subtree, tvb, pOffset, "DataValue", parseDataValue);
824 parseArrayComplex(subtree, tvb, pOffset, "Variant", parseVariant);
825 parseArrayComplex(subtree, tvb, pOffset, "Structure", parseBaseStructureDataType);
826 parseArrayEnum(subtree, tvb, pOffset, parseColorsDataType);
829 gint ett_opcua_RequestHeader = -1;
830 void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
832 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RequestHeader", szFieldName);
833 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RequestHeader);
835 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
836 parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
837 parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestId);
838 parseUInt32(subtree, tvb, pOffset, hf_opcua_ReturnDiagnostics);
839 parseString(subtree, tvb, pOffset, hf_opcua_AuditLogEntryId);
840 parseInt32(subtree, tvb, pOffset, hf_opcua_TimeoutHint);
841 parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeaders");
844 gint ett_opcua_ResponseHeader = -1;
845 void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
847 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ResponseHeader", szFieldName);
848 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ResponseHeader);
850 parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
851 parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
852 parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestId);
853 parseStatusCode(subtree, tvb, pOffset, hf_opcua_ServiceResult);
854 parseDiagnosticInfo(subtree, tvb, pOffset, "ServiceDiagnostics");
855 parseArraySimple(subtree, tvb, pOffset, hf_opcua_StringTable, parseString);
856 parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeaders");
859 gint ett_opcua_ServiceFault = -1;
860 void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
862 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceFault", szFieldName);
863 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceFault);
865 parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader");
868 gint ett_opcua_ComplexTestType = -1;
869 void parseComplexTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
871 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ComplexTestType", szFieldName);
872 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ComplexTestType);
874 parseDateTime(subtree, tvb, pOffset, hf_opcua_Value1);
875 parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType);
878 gint ett_opcua_BaseTestType = -1;
879 void parseBaseTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
881 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseTestType", szFieldName);
882 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseTestType);
884 parseDateTime(subtree, tvb, pOffset, hf_opcua_Value1);
887 gint ett_opcua_DerivedTestType = -1;
888 void parseDerivedTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
890 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DerivedTestType", szFieldName);
891 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DerivedTestType);
892 /* parse base class members */
893 parseBaseTestType(subtree, tvb, pOffset, "[BaseTestType]");
894 /* parse additional members */
895 parseDateTime(subtree, tvb, pOffset, hf_opcua_Value2);
898 gint ett_opcua_ScalarTestType = -1;
899 void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
901 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ScalarTestType", szFieldName);
902 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ScalarTestType);
904 parseBoolean(subtree, tvb, pOffset, hf_opcua_Boolean);
905 parseSByte(subtree, tvb, pOffset, hf_opcua_SByte);
906 parseByte(subtree, tvb, pOffset, hf_opcua_Byte);
907 parseInt16(subtree, tvb, pOffset, hf_opcua_Int16);
908 parseUInt16(subtree, tvb, pOffset, hf_opcua_UInt16);
909 parseInt32(subtree, tvb, pOffset, hf_opcua_Int32);
910 parseUInt32(subtree, tvb, pOffset, hf_opcua_UInt32);
911 parseInt64(subtree, tvb, pOffset, hf_opcua_Int64);
912 parseUInt64(subtree, tvb, pOffset, hf_opcua_UInt64);
913 parseFloat(subtree, tvb, pOffset, hf_opcua_Float);
914 parseDouble(subtree, tvb, pOffset, hf_opcua_Double);
915 parseString(subtree, tvb, pOffset, hf_opcua_String);
916 parseDateTime(subtree, tvb, pOffset, hf_opcua_DateTime);
917 parseGuid(subtree, tvb, pOffset, hf_opcua_Guid);
918 parseByteString(subtree, tvb, pOffset, hf_opcua_ByteString);
919 parseXmlElement(subtree, tvb, pOffset, hf_opcua_XmlElement);
920 parseNodeId(subtree, tvb, pOffset, "NodeId");
921 parseExpandedNodeId(subtree, tvb, pOffset, "ExpandedNodeId");
922 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
923 parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
924 parseQualifiedName(subtree, tvb, pOffset, "QualifiedName");
925 parseLocalizedText(subtree, tvb, pOffset, "LocalizedText");
926 parseExtensionObject(subtree, tvb, pOffset, "ExtensionObject");
927 parseDataValue(subtree, tvb, pOffset, "DataValue");
928 parseVariant(subtree, tvb, pOffset, "Variant");
929 parseComplexTestType(subtree, tvb, pOffset, "ComplexValue");
930 parseEnumeratedTestType(subtree, tvb, pOffset);
933 gint ett_opcua_ArrayTestType = -1;
934 void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
936 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ArrayTestType", szFieldName);
937 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ArrayTestType);
939 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Booleans, parseBoolean);
940 parseArraySimple(subtree, tvb, pOffset, hf_opcua_SBytes, parseSByte);
941 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int16s, parseInt16);
942 parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt16s, parseUInt16);
943 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int32s, parseInt32);
944 parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt32s, parseUInt32);
945 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int64s, parseInt64);
946 parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt64s, parseUInt64);
947 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Floats, parseFloat);
948 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Doubles, parseDouble);
949 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Strings, parseString);
950 parseArraySimple(subtree, tvb, pOffset, hf_opcua_DateTimes, parseDateTime);
951 parseArraySimple(subtree, tvb, pOffset, hf_opcua_Guids, parseGuid);
952 parseArraySimple(subtree, tvb, pOffset, hf_opcua_ByteStrings, parseByteString);
953 parseArraySimple(subtree, tvb, pOffset, hf_opcua_XmlElements, parseXmlElement);
954 parseArrayComplex(subtree, tvb, pOffset, "NodeIds", parseNodeId);
955 parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeIds", parseExpandedNodeId);
956 parseArraySimple(subtree, tvb, pOffset, hf_opcua_StatusCodes, parseStatusCode);
957 parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);
958 parseArrayComplex(subtree, tvb, pOffset, "QualifiedNames", parseQualifiedName);
959 parseArrayComplex(subtree, tvb, pOffset, "LocalizedTexts", parseLocalizedText);
960 parseArrayComplex(subtree, tvb, pOffset, "ExtensionObjects", parseExtensionObject);
961 parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue);
962 parseArrayComplex(subtree, tvb, pOffset, "Variants", parseVariant);
963 parseArrayComplex(subtree, tvb, pOffset, "ComplexValues", parseComplexTestType);
964 parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType);
967 gint ett_opcua_CompositeTestType = -1;
968 void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
970 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CompositeTestType", szFieldName);
971 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CompositeTestType);
973 parseScalarTestType(subtree, tvb, pOffset, "Input1");
974 parseArrayTestType(subtree, tvb, pOffset, "Input2");
977 gint ett_opcua_RegisteredServer = -1;
978 void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
980 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RegisteredServer", szFieldName);
981 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RegisteredServer);
983 parseServerDescriptionType(subtree, tvb, pOffset);
984 parseString(subtree, tvb, pOffset, hf_opcua_ServerUri);
985 parseArrayComplex(subtree, tvb, pOffset, "ServerNames", parseLocalizedText);
986 parseArraySimple(subtree, tvb, pOffset, hf_opcua_DiscoveryUrls, parseString);
987 parseString(subtree, tvb, pOffset, hf_opcua_SemaphoreFilePath);
988 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsOnline);
991 gint ett_opcua_ChannelSecurityToken = -1;
992 void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
994 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ChannelSecurityToken", szFieldName);
995 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ChannelSecurityToken);
997 parseGuid(subtree, tvb, pOffset, hf_opcua_ChannelId);
998 parseString(subtree, tvb, pOffset, hf_opcua_TokenId);
999 parseDateTime(subtree, tvb, pOffset, hf_opcua_CreatedAt);
1000 parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetime);
1003 gint ett_opcua_SignatureData = -1;
1004 void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1006 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SignatureData", szFieldName);
1007 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SignatureData);
1009 parseString(subtree, tvb, pOffset, hf_opcua_Algorithm);
1010 parseByteString(subtree, tvb, pOffset, hf_opcua_Signature);
1013 gint ett_opcua_AddNodesResult = -1;
1014 void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1016 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddNodesResult", szFieldName);
1017 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesResult);
1019 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1020 parseNodeId(subtree, tvb, pOffset, "AddedNodeId");
1023 gint ett_opcua_BrowsePropertiesPropertyResult = -1;
1024 void parseBrowsePropertiesPropertyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1026 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePropertiesPropertyResult", szFieldName);
1027 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesPropertyResult);
1029 parseQualifiedName(subtree, tvb, pOffset, "PropertyName");
1030 parseLocalizedText(subtree, tvb, pOffset, "PropertyDisplayName");
1031 parseNodeId(subtree, tvb, pOffset, "PropertyNodeId");
1032 parseStatusCode(subtree, tvb, pOffset, hf_opcua_PropertyStatusCode);
1035 gint ett_opcua_BrowsePropertiesResult = -1;
1036 void parseBrowsePropertiesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1038 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePropertiesResult", szFieldName);
1039 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesResult);
1041 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1042 parseArrayComplex(subtree, tvb, pOffset, "PropertyResults", parseBrowsePropertiesPropertyResult);
1043 parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);
1046 gint ett_opcua_ReferenceDescription = -1;
1047 void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1049 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceDescription", szFieldName);
1050 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceDescription);
1052 parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
1053 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
1054 parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex);
1055 parseExpandedNodeId(subtree, tvb, pOffset, "NodeId");
1056 parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
1057 parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
1058 parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass);
1059 parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition");
1062 gint ett_opcua_ViewDescription = -1;
1063 void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1065 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewDescription", szFieldName);
1066 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewDescription);
1068 parseNodeId(subtree, tvb, pOffset, "ViewId");
1069 parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
1070 parseInt32(subtree, tvb, pOffset, hf_opcua_ViewVersion);
1073 gint ett_opcua_BrowsePath = -1;
1074 void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1076 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePath", szFieldName);
1077 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePath);
1079 parseNodeId(subtree, tvb, pOffset, "StartingNode");
1080 parseString(subtree, tvb, pOffset, hf_opcua_RelativePath);
1083 gint ett_opcua_TranslateBrowsePathResult = -1;
1084 void parseTranslateBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1086 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TranslateBrowsePathResult", szFieldName);
1087 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TranslateBrowsePathResult);
1089 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1090 parseArrayComplex(subtree, tvb, pOffset, "MatchingNodeIds", parseNodeId);
1093 gint ett_opcua_AttributeDescription = -1;
1094 void parseAttributeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1096 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AttributeDescription", szFieldName);
1097 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeDescription);
1099 parseString(subtree, tvb, pOffset, hf_opcua_RelativePath);
1100 parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
1101 parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
1104 gint ett_opcua_NodeTypeDescription = -1;
1105 void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1107 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeTypeDescription", szFieldName);
1108 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeTypeDescription);
1110 parseNodeId(subtree, tvb, pOffset, "TypeDefinitionNode");
1111 parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubTypes);
1112 parseArrayComplex(subtree, tvb, pOffset, "AttributesToReturn", parseAttributeDescription);
1115 gint ett_opcua_QueryDataSet = -1;
1116 void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1118 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryDataSet", szFieldName);
1119 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryDataSet);
1121 parseExpandedNodeId(subtree, tvb, pOffset, "NodeId");
1122 parseNodeId(subtree, tvb, pOffset, "TypeDefinitionNodeId");
1123 parseArrayComplex(subtree, tvb, pOffset, "Values", parseVariant);
1126 gint ett_opcua_NodeReference = -1;
1127 void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1129 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeReference", szFieldName);
1130 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeReference);
1132 parseNodeId(subtree, tvb, pOffset, "NodeId");
1133 parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
1134 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
1135 parseArrayComplex(subtree, tvb, pOffset, "ReferencedNodeIds", parseNodeId);
1138 gint ett_opcua_ContentFilterElement = -1;
1139 void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1141 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterElement", szFieldName);
1142 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterElement);
1144 parseFilterOperator(subtree, tvb, pOffset);
1145 parseArrayComplex(subtree, tvb, pOffset, "FilterOperands", parseExtensionObject);
1148 gint ett_opcua_ContentFilter = -1;
1149 void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1151 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilter", szFieldName);
1152 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilter);
1154 parseArrayComplex(subtree, tvb, pOffset, "Elements", parseContentFilterElement);
1157 gint ett_opcua_FilterOperand = -1;
1158 void parseFilterOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1160 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : FilterOperand", szFieldName);
1161 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_FilterOperand);
1165 gint ett_opcua_ElementOperand = -1;
1166 void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1168 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ElementOperand", szFieldName);
1169 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ElementOperand);
1170 /* parse base class members */
1171 parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
1172 /* parse additional members */
1173 parseUInt32(subtree, tvb, pOffset, hf_opcua_Index);
1176 gint ett_opcua_LiteralOperand = -1;
1177 void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1179 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : LiteralOperand", szFieldName);
1180 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_LiteralOperand);
1181 /* parse base class members */
1182 parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
1183 /* parse additional members */
1184 parseVariant(subtree, tvb, pOffset, "Value");
1187 gint ett_opcua_AttributeOperand = -1;
1188 void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1190 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AttributeOperand", szFieldName);
1191 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeOperand);
1192 /* parse base class members */
1193 parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
1194 /* parse additional members */
1195 parseNodeId(subtree, tvb, pOffset, "NodeId");
1196 parseString(subtree, tvb, pOffset, hf_opcua_Alias);
1197 parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
1198 parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
1201 gint ett_opcua_PropertyOperand = -1;
1202 void parsePropertyOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1204 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : PropertyOperand", szFieldName);
1205 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_PropertyOperand);
1206 /* parse base class members */
1207 parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
1208 /* parse additional members */
1209 parseNodeId(subtree, tvb, pOffset, "NodeId");
1210 parseString(subtree, tvb, pOffset, hf_opcua_Alias);
1211 parseQualifiedName(subtree, tvb, pOffset, "Property");
1212 parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
1215 gint ett_opcua_ContentFilterResult = -1;
1216 void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1218 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterResult", szFieldName);
1219 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterResult);
1221 parseStatusCode(subtree, tvb, pOffset, hf_opcua_Result);
1222 parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
1223 parseUInt32(subtree, tvb, pOffset, hf_opcua_IndexOfInvalidElement);
1226 gint ett_opcua_QueryResult = -1;
1227 void parseQueryResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1229 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryResult", szFieldName);
1230 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryResult);
1232 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1233 parseArraySimple(subtree, tvb, pOffset, hf_opcua_AttributeStatusCodes, parseStatusCode);
1234 parseArrayComplex(subtree, tvb, pOffset, "AttributeDiagnosticInfos", parseDiagnosticInfo);
1237 gint ett_opcua_ReadValueId = -1;
1238 void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1240 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadValueId", szFieldName);
1241 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadValueId);
1243 parseNodeId(subtree, tvb, pOffset, "NodeId");
1244 parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
1245 parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
1246 parseQualifiedName(subtree, tvb, pOffset, "Encoding");
1249 gint ett_opcua_HistoryReadValueId = -1;
1250 void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1252 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryReadValueId", szFieldName);
1253 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadValueId);
1255 parseNodeId(subtree, tvb, pOffset, "NodeId");
1256 parseQualifiedName(subtree, tvb, pOffset, "Encoding");
1257 parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint);
1260 gint ett_opcua_HistoryReadResult = -1;
1261 void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1263 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryReadResult", szFieldName);
1264 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadResult);
1266 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1267 parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint);
1268 parseExtensionObject(subtree, tvb, pOffset, "HistoryData");
1271 gint ett_opcua_MonitoringFilter = -1;
1272 void parseMonitoringFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1274 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringFilter", szFieldName);
1275 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringFilter);
1279 gint ett_opcua_EventFilter = -1;
1280 void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1282 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilter", szFieldName);
1283 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilter);
1284 /* parse base class members */
1285 parseMonitoringFilter(subtree, tvb, pOffset, "[MonitoringFilter]");
1286 /* parse additional members */
1287 parseArrayComplex(subtree, tvb, pOffset, "SelectClauses", parseNodeId);
1288 parseContentFilter(subtree, tvb, pOffset, "WhereClause");
1291 gint ett_opcua_ReadEventDetails = -1;
1292 void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1294 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadEventDetails", szFieldName);
1295 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadEventDetails);
1297 parseUInt32(subtree, tvb, pOffset, hf_opcua_NumValuesPerNode);
1298 parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
1299 parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
1300 parseEventFilter(subtree, tvb, pOffset, "Filter");
1303 gint ett_opcua_ReadRawModifiedDetails = -1;
1304 void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1306 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadRawModifiedDetails", szFieldName);
1307 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadRawModifiedDetails);
1309 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsReadModified);
1310 parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
1311 parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
1312 parseUInt32(subtree, tvb, pOffset, hf_opcua_NumValuesPerNode);
1313 parseBoolean(subtree, tvb, pOffset, hf_opcua_ReturnBounds);
1316 gint ett_opcua_ReadProcessedDetails = -1;
1317 void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1319 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadProcessedDetails", szFieldName);
1320 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadProcessedDetails);
1322 parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
1323 parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
1324 parseInt32(subtree, tvb, pOffset, hf_opcua_ResampleInterval);
1325 parseNodeId(subtree, tvb, pOffset, "AggregateType");
1328 gint ett_opcua_ReadAtTimeDetails = -1;
1329 void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1331 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadAtTimeDetails", szFieldName);
1332 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadAtTimeDetails);
1334 parseArraySimple(subtree, tvb, pOffset, hf_opcua_ReqTimes, parseDateTime);
1337 gint ett_opcua_HistoryData = -1;
1338 void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1340 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryData", szFieldName);
1341 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryData);
1343 parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue);
1346 gint ett_opcua_EventFieldList = -1;
1347 void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1349 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFieldList", szFieldName);
1350 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFieldList);
1352 parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
1353 parseArrayComplex(subtree, tvb, pOffset, "EventFields", parseVariant);
1356 gint ett_opcua_EventNotification = -1;
1357 void parseEventNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1359 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventNotification", szFieldName);
1360 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventNotification);
1362 parseArrayComplex(subtree, tvb, pOffset, "Events", parseEventFieldList);
1365 gint ett_opcua_HistoryEvent = -1;
1366 void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1368 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryEvent", szFieldName);
1369 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryEvent);
1371 parseArrayComplex(subtree, tvb, pOffset, "Notifications", parseEventNotification);
1374 gint ett_opcua_WriteValue = -1;
1375 void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1377 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : WriteValue", szFieldName);
1378 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WriteValue);
1380 parseNodeId(subtree, tvb, pOffset, "NodeId");
1381 parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
1382 parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
1383 parseDataValue(subtree, tvb, pOffset, "Value");
1386 gint ett_opcua_InsertReplaceDetails = -1;
1387 void parseInsertReplaceDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1389 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertReplaceDetails", szFieldName);
1390 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertReplaceDetails);
1392 parseBoolean(subtree, tvb, pOffset, hf_opcua_PerformInsert);
1393 parseBoolean(subtree, tvb, pOffset, hf_opcua_PerformReplace);
1394 parseNodeId(subtree, tvb, pOffset, "NodeId");
1395 parseHistoryData(subtree, tvb, pOffset, "UpdateValue");
1398 gint ett_opcua_InsertEventDetails = -1;
1399 void parseInsertEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1401 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertEventDetails", szFieldName);
1402 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertEventDetails);
1404 parseHistoryEvent(subtree, tvb, pOffset, "HistoryEvent");
1407 gint ett_opcua_DeleteRawModifiedDetails = -1;
1408 void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1410 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteRawModifiedDetails", szFieldName);
1411 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteRawModifiedDetails);
1413 parseBoolean(subtree, tvb, pOffset, hf_opcua_IsDeleteModified);
1414 parseNodeId(subtree, tvb, pOffset, "NodeId");
1415 parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
1416 parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
1419 gint ett_opcua_DeleteAtTimeDetails = -1;
1420 void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1422 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteAtTimeDetails", szFieldName);
1423 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteAtTimeDetails);
1425 parseNodeId(subtree, tvb, pOffset, "NodeId");
1426 parseArraySimple(subtree, tvb, pOffset, hf_opcua_ReqTimes, parseDateTime);
1429 gint ett_opcua_DeleteEventDetails = -1;
1430 void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1432 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteEventDetails", szFieldName);
1433 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteEventDetails);
1435 parseEventFilter(subtree, tvb, pOffset, "EventFilter");
1436 parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
1437 parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
1440 gint ett_opcua_HistoryUpdateResult = -1;
1441 void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1443 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryUpdateResult", szFieldName);
1444 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateResult);
1446 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1447 parseArraySimple(subtree, tvb, pOffset, hf_opcua_OperationResult, parseStatusCode);
1448 parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);
1451 gint ett_opcua_CallRequestItem = -1;
1452 void parseCallRequestItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1454 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallRequestItem", szFieldName);
1455 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallRequestItem);
1457 parseNodeId(subtree, tvb, pOffset, "ObjectId");
1458 parseNodeId(subtree, tvb, pOffset, "MethodId");
1459 parseArrayComplex(subtree, tvb, pOffset, "InputArguments", parseVariant);
1462 gint ett_opcua_CallResultItem = -1;
1463 void parseCallResultItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1465 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallResultItem", szFieldName);
1466 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallResultItem);
1468 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1469 parseArraySimple(subtree, tvb, pOffset, hf_opcua_InputArgumentResults, parseStatusCode);
1470 parseArrayComplex(subtree, tvb, pOffset, "InputArgumentDiagnosticInfos", parseDiagnosticInfo);
1471 parseArrayComplex(subtree, tvb, pOffset, "OutputArguments", parseVariant);
1474 gint ett_opcua_DataChangeFilter = -1;
1475 void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1477 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeFilter", szFieldName);
1478 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeFilter);
1479 /* parse base class members */
1480 parseMonitoringFilter(subtree, tvb, pOffset, "[MonitoringFilter]");
1481 /* parse additional members */
1482 parseDataChangeTrigger(subtree, tvb, pOffset);
1483 parseUInt32(subtree, tvb, pOffset, hf_opcua_DeadbandType);
1484 parseDouble(subtree, tvb, pOffset, hf_opcua_DeadbandValue);
1487 gint ett_opcua_MonitoringFilterResult = -1;
1488 void parseMonitoringFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1490 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringFilterResult", szFieldName);
1491 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringFilterResult);
1495 gint ett_opcua_EventFilterResult = -1;
1496 void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1498 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilterResult", szFieldName);
1499 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilterResult);
1500 /* parse base class members */
1501 parseMonitoringFilterResult(subtree, tvb, pOffset, "[MonitoringFilterResult]");
1502 /* parse additional members */
1503 parseArraySimple(subtree, tvb, pOffset, hf_opcua_SelectClauseResults, parseStatusCode);
1504 parseArrayComplex(subtree, tvb, pOffset, "SelectClauseDiagnosticInfos", parseDiagnosticInfo);
1505 parseContentFilterResult(subtree, tvb, pOffset, "WhereClauseResult");
1508 gint ett_opcua_MonitoringAttributes = -1;
1509 void parseMonitoringAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1511 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringAttributes", szFieldName);
1512 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringAttributes);
1514 parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
1515 parseInt32(subtree, tvb, pOffset, hf_opcua_SamplingInterval);
1516 parseExtensionObject(subtree, tvb, pOffset, "Filter");
1517 parseUInt32(subtree, tvb, pOffset, hf_opcua_QueueSize);
1518 parseBoolean(subtree, tvb, pOffset, hf_opcua_DiscardOldest);
1521 gint ett_opcua_MonitoredItemCreateRequest = -1;
1522 void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1524 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemCreateRequest", szFieldName);
1525 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateRequest);
1527 parseReadValueId(subtree, tvb, pOffset, "ItemToMonitor");
1528 parseMonitoringMode(subtree, tvb, pOffset);
1529 parseMonitoringAttributes(subtree, tvb, pOffset, "RequestedAttributes");
1532 gint ett_opcua_MonitoredItemCreateResult = -1;
1533 void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1535 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemCreateResult", szFieldName);
1536 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateResult);
1538 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1539 parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId);
1540 parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval);
1541 parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize);
1542 parseExtensionObject(subtree, tvb, pOffset, "FilterResult");
1545 gint ett_opcua_MonitoredItemModifyRequest = -1;
1546 void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1548 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemModifyRequest", szFieldName);
1549 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyRequest);
1551 parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitorItemId);
1552 parseMonitoringAttributes(subtree, tvb, pOffset, "RequestedAttributes");
1555 gint ett_opcua_MonitoredItemModifyResult = -1;
1556 void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1558 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemModifyResult", szFieldName);
1559 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyResult);
1561 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1562 parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval);
1563 parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize);
1564 parseExtensionObject(subtree, tvb, pOffset, "FilterResult");
1567 gint ett_opcua_SubscriptionAcknowledgement = -1;
1568 void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1570 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionAcknowledgement", szFieldName);
1571 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionAcknowledgement);
1573 parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId);
1574 parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber);
1577 gint ett_opcua_NotificationMessage = -1;
1578 void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1580 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NotificationMessage", szFieldName);
1581 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NotificationMessage);
1583 parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber);
1584 parseDateTime(subtree, tvb, pOffset, hf_opcua_PublishTime);
1585 parseArrayComplex(subtree, tvb, pOffset, "NotificationData", parseExtensionObject);
1588 gint ett_opcua_MonitoredItemNotification = -1;
1589 void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1591 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemNotification", szFieldName);
1592 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemNotification);
1594 parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
1595 parseDataValue(subtree, tvb, pOffset, "Value");
1598 gint ett_opcua_DataChangeNotification = -1;
1599 void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1601 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeNotification", szFieldName);
1602 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeNotification);
1604 parseArrayComplex(subtree, tvb, pOffset, "MonitoredItems", parseMonitoredItemNotification);
1605 parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);
1608 gint ett_opcua_TransferResult = -1;
1609 void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)
1611 proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TransferResult", szFieldName);
1612 proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TransferResult);
1614 parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
1615 parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbersRanges, parseString);
1618 /** Setup protocol subtree array */
1619 static gint *ett[] =
1621 &ett_opcua_ReferenceNode,
1623 &ett_opcua_ObjectNode,
1624 &ett_opcua_ObjectTypeNode,
1625 &ett_opcua_VariableNode,
1626 &ett_opcua_VariableTypeNode,
1627 &ett_opcua_ReferenceTypeNode,
1628 &ett_opcua_MethodNode,
1629 &ett_opcua_ViewNode,
1630 &ett_opcua_DataTypeNode,
1631 &ett_opcua_UriTableEntry,
1633 &ett_opcua_Argument,
1635 &ett_opcua_BaseEvent,
1636 &ett_opcua_SecurityPolicy,
1637 &ett_opcua_UserTokenPolicy,
1638 &ett_opcua_ServerDescription,
1639 &ett_opcua_EndpointDescription,
1640 &ett_opcua_EndpointConfiguration,
1641 &ett_opcua_UserIdentityToken,
1642 &ett_opcua_UserNameIdentityToken,
1643 &ett_opcua_X509IdentityToken,
1644 &ett_opcua_WssIdentityToken,
1645 &ett_opcua_SupportedProfile,
1646 &ett_opcua_BuildInfo,
1647 &ett_opcua_SoftwareCertificate,
1648 &ett_opcua_SignedSoftwareCertificate,
1649 &ett_opcua_NodeAttributes,
1650 &ett_opcua_ObjectAttributes,
1651 &ett_opcua_ObjectTypeAttributes,
1652 &ett_opcua_VariableAttributes,
1653 &ett_opcua_VariableTypeAttributes,
1654 &ett_opcua_ReferenceTypeAttributes,
1655 &ett_opcua_MethodAttributes,
1656 &ett_opcua_ViewAttributes,
1657 &ett_opcua_AddNodesItem,
1658 &ett_opcua_AddReferencesItem,
1659 &ett_opcua_DeleteNodesItem,
1660 &ett_opcua_DeleteReferencesItem,
1661 &ett_opcua_RedundantServerDataType,
1662 &ett_opcua_SamplingRateDiagnosticsDataType,
1663 &ett_opcua_ServerDiagnosticsSummaryDataType,
1664 &ett_opcua_ServerStatusDataType,
1665 &ett_opcua_ServiceCounterDataType,
1666 &ett_opcua_SessionDiagnosticsDataType,
1667 &ett_opcua_SessionSecurityDiagnosticsDataType,
1668 &ett_opcua_SubscriptionDiagnosticsDataType,
1670 &ett_opcua_EUInformation,
1671 &ett_opcua_Annotation,
1672 &ett_opcua_BaseStructureDataType,
1673 &ett_opcua_DerivedStructureDataType,
1674 &ett_opcua_ScalarValuesDataType,
1675 &ett_opcua_ArrayValuesDataType,
1676 &ett_opcua_RequestHeader,
1677 &ett_opcua_ResponseHeader,
1678 &ett_opcua_ServiceFault,
1679 &ett_opcua_ComplexTestType,
1680 &ett_opcua_BaseTestType,
1681 &ett_opcua_DerivedTestType,
1682 &ett_opcua_ScalarTestType,
1683 &ett_opcua_ArrayTestType,
1684 &ett_opcua_CompositeTestType,
1685 &ett_opcua_RegisteredServer,
1686 &ett_opcua_ChannelSecurityToken,
1687 &ett_opcua_SignatureData,
1688 &ett_opcua_AddNodesResult,
1689 &ett_opcua_BrowsePropertiesPropertyResult,
1690 &ett_opcua_BrowsePropertiesResult,
1691 &ett_opcua_ReferenceDescription,
1692 &ett_opcua_ViewDescription,
1693 &ett_opcua_BrowsePath,
1694 &ett_opcua_TranslateBrowsePathResult,
1695 &ett_opcua_AttributeDescription,
1696 &ett_opcua_NodeTypeDescription,
1697 &ett_opcua_QueryDataSet,
1698 &ett_opcua_NodeReference,
1699 &ett_opcua_ContentFilterElement,
1700 &ett_opcua_ContentFilter,
1701 &ett_opcua_FilterOperand,
1702 &ett_opcua_ElementOperand,
1703 &ett_opcua_LiteralOperand,
1704 &ett_opcua_AttributeOperand,
1705 &ett_opcua_PropertyOperand,
1706 &ett_opcua_ContentFilterResult,
1707 &ett_opcua_QueryResult,
1708 &ett_opcua_ReadValueId,
1709 &ett_opcua_HistoryReadValueId,
1710 &ett_opcua_HistoryReadResult,
1711 &ett_opcua_MonitoringFilter,
1712 &ett_opcua_EventFilter,
1713 &ett_opcua_ReadEventDetails,
1714 &ett_opcua_ReadRawModifiedDetails,
1715 &ett_opcua_ReadProcessedDetails,
1716 &ett_opcua_ReadAtTimeDetails,
1717 &ett_opcua_HistoryData,
1718 &ett_opcua_EventFieldList,
1719 &ett_opcua_EventNotification,
1720 &ett_opcua_HistoryEvent,
1721 &ett_opcua_WriteValue,
1722 &ett_opcua_InsertReplaceDetails,
1723 &ett_opcua_InsertEventDetails,
1724 &ett_opcua_DeleteRawModifiedDetails,
1725 &ett_opcua_DeleteAtTimeDetails,
1726 &ett_opcua_DeleteEventDetails,
1727 &ett_opcua_HistoryUpdateResult,
1728 &ett_opcua_CallRequestItem,
1729 &ett_opcua_CallResultItem,
1730 &ett_opcua_DataChangeFilter,
1731 &ett_opcua_MonitoringFilterResult,
1732 &ett_opcua_EventFilterResult,
1733 &ett_opcua_MonitoringAttributes,
1734 &ett_opcua_MonitoredItemCreateRequest,
1735 &ett_opcua_MonitoredItemCreateResult,
1736 &ett_opcua_MonitoredItemModifyRequest,
1737 &ett_opcua_MonitoredItemModifyResult,
1738 &ett_opcua_SubscriptionAcknowledgement,
1739 &ett_opcua_NotificationMessage,
1740 &ett_opcua_MonitoredItemNotification,
1741 &ett_opcua_DataChangeNotification,
1742 &ett_opcua_TransferResult,
1745 void registerComplexTypes()
1747 proto_register_subtree_array(ett, array_length(ett));