+/******************************************************************************
+** $Id$
+**
+** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved.
+** Web: http://www.ascolab.com
+**
+** This program is free software; you can redistribute it and/or
+** modify it under the terms of the GNU General Public License
+** as published by the Free Software Foundation; either version 2
+** of the License, or (at your option) any later version.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** Project: OpcUa Wireshark Plugin
+**
+** Description: OpcUa Complex Type Parser
+**
+** This file was autogenerated on 8.5.2007 18:53:26.
+** DON'T MODIFY THIS FILE!
+**
+******************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gmodule.h>
+#include <epan/packet.h>
+#include "opcua_complextypeparser.h"
+#include "opcua_enumparser.h"
+#include "opcua_simpletypes.h"
+#include "opcua_hfindeces.h"
+
+\r
+gint ett_opcua_ReferenceNode = -1;\r
+void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceNode);\r
+
+ parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex);
+ parseExpandedNodeId(subtree, tvb, pOffset, "TargetId");\r
+}\r
+\r
+gint ett_opcua_Node = -1;\r
+void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Node", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Node);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass);
+ parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
+ parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
+ parseLocalizedText(subtree, tvb, pOffset, "Description");
+ parseArrayComplex(subtree, tvb, pOffset, "References", parseReferenceNode);\r
+}\r
+\r
+gint ett_opcua_ObjectNode = -1;\r
+void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);\r
+}\r
+\r
+gint ett_opcua_ObjectTypeNode = -1;\r
+void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);\r
+}\r
+\r
+gint ett_opcua_VariableNode = -1;\r
+void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseVariant(subtree, tvb, pOffset, "Value");
+ parseNodeId(subtree, tvb, pOffset, "DataType");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
+ parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel);
+ parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing);\r
+}\r
+\r
+gint ett_opcua_VariableTypeNode = -1;\r
+void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableTypeNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseVariant(subtree, tvb, pOffset, "Value");
+ parseNodeId(subtree, tvb, pOffset, "DataType");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);\r
+}\r
+\r
+gint ett_opcua_ReferenceTypeNode = -1;\r
+void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceTypeNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric);
+ parseLocalizedText(subtree, tvb, pOffset, "InverseName");\r
+}\r
+\r
+gint ett_opcua_MethodNode = -1;\r
+void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable);\r
+}\r
+\r
+gint ett_opcua_ViewNode = -1;\r
+void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops);
+ parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);\r
+}\r
+\r
+gint ett_opcua_DataTypeNode = -1;\r
+void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataTypeNode", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataTypeNode);\r
+ /* parse base class members */
+ parseNode(subtree, tvb, pOffset, "[Node]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);\r
+}\r
+\r
+gint ett_opcua_UriTableEntry = -1;\r
+void parseUriTableEntry(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UriTableEntry", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UriTableEntry);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_Index);
+ parseString(subtree, tvb, pOffset, hf_opcua_Uri);\r
+}\r
+\r
+gint ett_opcua_NodeSet = -1;\r
+void parseNodeSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeSet", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeSet);\r
+
+ parseArrayComplex(subtree, tvb, pOffset, "NamespaceUris", parseUriTableEntry);
+ parseArrayComplex(subtree, tvb, pOffset, "ServerUris", parseUriTableEntry);
+ parseArrayComplex(subtree, tvb, pOffset, "Nodes", parseExtensionObject);\r
+}\r
+\r
+gint ett_opcua_Argument = -1;\r
+void parseArgument(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Argument", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Argument);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_Name);
+ parseNodeId(subtree, tvb, pOffset, "DataType");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
+ parseLocalizedText(subtree, tvb, pOffset, "Description");\r
+}\r
+\r
+gint ett_opcua_Status = -1;\r
+void parseStatus(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Status", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Status);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");\r
+}\r
+\r
+gint ett_opcua_BaseEvent = -1;\r
+void parseBaseEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseEvent", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseEvent);\r
+
+ parseByteString(subtree, tvb, pOffset, hf_opcua_EventId);
+ parseNodeId(subtree, tvb, pOffset, "EventType");
+ parseNodeId(subtree, tvb, pOffset, "SourceNode");
+ parseString(subtree, tvb, pOffset, hf_opcua_SourceName);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Time);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_ReceiveTime);
+ parseLocalizedText(subtree, tvb, pOffset, "Message");
+ parseUInt16(subtree, tvb, pOffset, hf_opcua_Severity);\r
+}\r
+\r
+gint ett_opcua_SecurityPolicy = -1;\r
+void parseSecurityPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SecurityPolicy", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SecurityPolicy);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_Uri);
+ parseString(subtree, tvb, pOffset, hf_opcua_Digest);
+ parseString(subtree, tvb, pOffset, hf_opcua_SymmetricSignature);
+ parseString(subtree, tvb, pOffset, hf_opcua_SymmetricKeyWrap);
+ parseString(subtree, tvb, pOffset, hf_opcua_SymmetricEncryption);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_SymmetricKeyLength);
+ parseString(subtree, tvb, pOffset, hf_opcua_AsymmetricSignature);
+ parseString(subtree, tvb, pOffset, hf_opcua_AsymmetricKeyWrap);
+ parseString(subtree, tvb, pOffset, hf_opcua_AsymmetricEncryption);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MinimumAsymmetricKeyLength);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MaximumAsymmetricKeyLength);
+ parseString(subtree, tvb, pOffset, hf_opcua_DerivedKey);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_DerivedEncryptionKeyLength);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_DerivedSignatureKeyLength);\r
+}\r
+\r
+gint ett_opcua_UserTokenPolicy = -1;\r
+void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserTokenPolicy", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserTokenPolicy);\r
+
+ parseUserTokenType(subtree, tvb, pOffset);
+ parseString(subtree, tvb, pOffset, hf_opcua_IssuerType);
+ parseString(subtree, tvb, pOffset, hf_opcua_IssuerUrl);\r
+}\r
+\r
+gint ett_opcua_ServerDescription = -1;\r
+void parseServerDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDescription", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDescription);\r
+
+ parseServerDescriptionType(subtree, tvb, pOffset);
+ parseString(subtree, tvb, pOffset, hf_opcua_ServerUri);
+ parseLocalizedText(subtree, tvb, pOffset, "ServerName");
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DiscoveryUrls, parseString);\r
+}\r
+\r
+gint ett_opcua_EndpointDescription = -1;\r
+void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointDescription", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointDescription);\r
+
+ parseServerDescription(subtree, tvb, pOffset, "Server");
+ parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate);
+ parseMessageSecurityMode(subtree, tvb, pOffset);
+ parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri);
+ parseArrayComplex(subtree, tvb, pOffset, "UserIdentityTokens", parseUserTokenPolicy);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SupportedProfiles, parseString);\r
+}\r
+\r
+gint ett_opcua_EndpointConfiguration = -1;\r
+void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointConfiguration", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointConfiguration);\r
+
+ parseInt32(subtree, tvb, pOffset, hf_opcua_SendTimeout);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_OperationTimeout);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_UseBinaryEncoding);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_MaxMessageSize);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_MaxArrayLength);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_MaxStringLength);\r
+}\r
+\r
+gint ett_opcua_UserIdentityToken = -1;\r
+void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserIdentityToken", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserIdentityToken);\r
+ \r
+}\r
+\r
+gint ett_opcua_UserNameIdentityToken = -1;\r
+void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserNameIdentityToken", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserNameIdentityToken);\r
+ /* parse base class members */
+ parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]");
+ /* parse additional members */
+ parseString(subtree, tvb, pOffset, hf_opcua_UserName);
+ parseString(subtree, tvb, pOffset, hf_opcua_Password);
+ parseString(subtree, tvb, pOffset, hf_opcua_HashAlgorithm);\r
+}\r
+\r
+gint ett_opcua_X509IdentityToken = -1;\r
+void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : X509IdentityToken", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_X509IdentityToken);\r
+ /* parse base class members */
+ parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]");
+ /* parse additional members */
+ parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData);\r
+}\r
+\r
+gint ett_opcua_WssIdentityToken = -1;\r
+void parseWssIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : WssIdentityToken", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WssIdentityToken);\r
+ /* parse base class members */
+ parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]");
+ /* parse additional members */
+ parseXmlElement(subtree, tvb, pOffset, hf_opcua_TokenData);\r
+}\r
+\r
+gint ett_opcua_SupportedProfile = -1;\r
+void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SupportedProfile", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SupportedProfile);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_ProfileUri);
+ parseString(subtree, tvb, pOffset, hf_opcua_ProfileName);
+ parseComplianceLevel(subtree, tvb, pOffset);\r
+}\r
+\r
+gint ett_opcua_BuildInfo = -1;\r
+void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BuildInfo", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BuildInfo);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_ApplicationUri);
+ parseString(subtree, tvb, pOffset, hf_opcua_ManufacturerName);
+ parseString(subtree, tvb, pOffset, hf_opcua_ApplicationName);
+ parseString(subtree, tvb, pOffset, hf_opcua_SoftwareVersion);
+ parseString(subtree, tvb, pOffset, hf_opcua_BuildNumber);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_BuildDate);\r
+}\r
+\r
+gint ett_opcua_SoftwareCertificate = -1;\r
+void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SoftwareCertificate", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SoftwareCertificate);\r
+
+ parseBuildInfo(subtree, tvb, pOffset, "ServerInfo");
+ parseString(subtree, tvb, pOffset, hf_opcua_IssuedBy);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_IssuedDate);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_ExpirationDate);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_ApplicationCertificate);
+ parseString(subtree, tvb, pOffset, hf_opcua_IssuerCertificateThumbprint);
+ parseString(subtree, tvb, pOffset, hf_opcua_IssuerSignatureAlgorithm);
+ parseArrayComplex(subtree, tvb, pOffset, "SupportedProfiles", parseSupportedProfile);\r
+}\r
+\r
+gint ett_opcua_SignedSoftwareCertificate = -1;\r
+void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SignedSoftwareCertificate", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SignedSoftwareCertificate);\r
+
+ parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_IssuerSignature);\r
+}\r
+\r
+gint ett_opcua_NodeAttributes = -1;\r
+void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeAttributes);\r
+
+ parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
+ parseLocalizedText(subtree, tvb, pOffset, "Description");\r
+}\r
+\r
+gint ett_opcua_ObjectAttributes = -1;\r
+void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);\r
+}\r
+\r
+gint ett_opcua_ObjectTypeAttributes = -1;\r
+void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);\r
+}\r
+\r
+gint ett_opcua_VariableAttributes = -1;\r
+void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseVariant(subtree, tvb, pOffset, "Value");
+ parseNodeId(subtree, tvb, pOffset, "DataType");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
+ parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel);
+ parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing);\r
+}\r
+\r
+gint ett_opcua_VariableTypeAttributes = -1;\r
+void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableTypeAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseVariant(subtree, tvb, pOffset, "Value");
+ parseNodeId(subtree, tvb, pOffset, "DataType");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);\r
+}\r
+\r
+gint ett_opcua_ReferenceTypeAttributes = -1;\r
+void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceTypeAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric);
+ parseLocalizedText(subtree, tvb, pOffset, "InverseName");\r
+}\r
+\r
+gint ett_opcua_MethodAttributes = -1;\r
+void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable);\r
+}\r
+\r
+gint ett_opcua_ViewAttributes = -1;\r
+void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewAttributes);\r
+ /* parse base class members */
+ parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]");
+ /* parse additional members */
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops);
+ parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);\r
+}\r
+\r
+gint ett_opcua_AddNodesItem = -1;\r
+void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddNodesItem", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesItem);\r
+
+ parseExpandedNodeId(subtree, tvb, pOffset, "ParentNodeId");
+ parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
+ parseExpandedNodeId(subtree, tvb, pOffset, "RequestedNewNodeId");
+ parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass);
+ parseExtensionObject(subtree, tvb, pOffset, "NodeAttributes");
+ parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition");\r
+}\r
+\r
+gint ett_opcua_AddReferencesItem = -1;\r
+void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddReferencesItem", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddReferencesItem);\r
+
+ parseNodeId(subtree, tvb, pOffset, "SourceNodeId");
+ parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
+ parseString(subtree, tvb, pOffset, hf_opcua_TargetServerUri);
+ parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_TargetNodeClass);\r
+}\r
+\r
+gint ett_opcua_DeleteNodesItem = -1;\r
+void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteNodesItem", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteNodesItem);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteTargetReferences);\r
+}\r
+\r
+gint ett_opcua_DeleteReferencesItem = -1;\r
+void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteReferencesItem", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteReferencesItem);\r
+
+ parseNodeId(subtree, tvb, pOffset, "SourceNodeId");
+ parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex);
+ parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId");\r
+}\r
+\r
+gint ett_opcua_RedundantServerDataType = -1;\r
+void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RedundantServerDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RedundantServerDataType);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_ServerId);
+ parseSByte(subtree, tvb, pOffset, hf_opcua_ServiceLevel);
+ parseServerState(subtree, tvb, pOffset);\r
+}\r
+\r
+gint ett_opcua_SamplingRateDiagnosticsDataType = -1;\r
+void parseSamplingRateDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SamplingRateDiagnosticsDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SamplingRateDiagnosticsDataType);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SamplingRate);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SamplingErrorCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SampledMonitoredItemsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxSampledMonitoredItemsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_DisabledMonitoredItemsSamplingCount);\r
+}\r
+\r
+gint ett_opcua_ServerDiagnosticsSummaryDataType = -1;\r
+void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDiagnosticsSummaryDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDiagnosticsSummaryDataType);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerViewCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSessionCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSessionCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedSessionCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectSessionCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionTimeoutCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionAbortCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SamplingRateCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingRateCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSubscriptionCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedRequestsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectedRequestsCount);\r
+}\r
+\r
+gint ett_opcua_ServerStatusDataType = -1;\r
+void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerStatusDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerStatusDataType);\r
+
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_CurrentTime);
+ parseServerState(subtree, tvb, pOffset);
+ parseBuildInfo(subtree, tvb, pOffset, "BuildInfo");\r
+}\r
+\r
+gint ett_opcua_ServiceCounterDataType = -1;\r
+void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceCounterDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceCounterDataType);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_TotalCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_UnauthorizedCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ErrorCount);\r
+}\r
+\r
+gint ett_opcua_SessionDiagnosticsDataType = -1;\r
+void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionDiagnosticsDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionDiagnosticsDataType);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
+ parseString(subtree, tvb, pOffset, hf_opcua_ClientName);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ActualSessionTimeout);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_ClientConnectionTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_ClientLastContactTime);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentMonitoredItemsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentPublishRequestsInQueue);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentPublishTimerExpirations);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_KeepAliveCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentRepublishRequestsInQueue);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxRepublishRequestsInQueue);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishCounter);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingQueueOverflowCount);
+ parseServiceCounterDataType(subtree, tvb, pOffset, "ReadCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "HistoryReadCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "WriteCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "HistoryUpdateCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "CallCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "CreateMonitoredItemsCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "ModifyMonitoredItemsCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "SetMonitoringModeCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "SetTriggeringCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteMonitoredItemsCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "CreateSubscriptionCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "ModifySubscriptionCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "SetPublishingModeCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "PublishCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "RepublishCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "TransferSubscriptionCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteSubscriptionsCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "AddNodesCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "AddReferencesCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteNodesCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteReferencesCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "BrowseCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "BrowseNextCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "TranslateBrowsePathsToNodeIdsCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "QueryFirstCount");
+ parseServiceCounterDataType(subtree, tvb, pOffset, "QueryNextCount");\r
+}\r
+\r
+gint ett_opcua_SessionSecurityDiagnosticsDataType = -1;\r
+void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionSecurityDiagnosticsDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionSecurityDiagnosticsDataType);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
+ parseString(subtree, tvb, pOffset, hf_opcua_ClientUserIdOfSession);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ClientUserIdHistory, parseString);
+ parseString(subtree, tvb, pOffset, hf_opcua_AuthenticationMechanism);
+ parseString(subtree, tvb, pOffset, hf_opcua_Encoding);
+ parseString(subtree, tvb, pOffset, hf_opcua_TransportProtocol);
+ parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicy);\r
+}\r
+\r
+gint ett_opcua_SubscriptionDiagnosticsDataType = -1;\r
+void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionDiagnosticsDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionDiagnosticsDataType);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_PublishingInterval);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxKeepAliveCount);
+ parseByte(subtree, tvb, pOffset, hf_opcua_Priority);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ModifyCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_EnableCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_DisableCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishRequestCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishMessageRequestCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishMessageCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferRequestCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferredToAltClientCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferredToSameClientCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishRequestCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_DataChangeNotificationsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_EventNotificationsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_NotificationsCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_LateStateCount);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_KeepAliveStateCount);\r
+}\r
+\r
+gint ett_opcua_Range = -1;\r
+void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Range", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Range);\r
+
+ parseDouble(subtree, tvb, pOffset, hf_opcua_Low);
+ parseDouble(subtree, tvb, pOffset, hf_opcua_High);\r
+}\r
+\r
+gint ett_opcua_EUInformation = -1;\r
+void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EUInformation", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EUInformation);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_NamespaceUri);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_UnitId);
+ parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
+ parseLocalizedText(subtree, tvb, pOffset, "Description");\r
+}\r
+\r
+gint ett_opcua_Annotation = -1;\r
+void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Annotation", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Annotation);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_Message);
+ parseString(subtree, tvb, pOffset, hf_opcua_UserName);
+ parseExtensionObject(subtree, tvb, pOffset, "UserIdentity");
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_AnnotationTime);\r
+}\r
+\r
+gint ett_opcua_BaseStructureDataType = -1;\r
+void parseBaseStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseStructureDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseStructureDataType);\r
+
+ parseInt32(subtree, tvb, pOffset, hf_opcua_Id);
+ parseString(subtree, tvb, pOffset, hf_opcua_Name);\r
+}\r
+\r
+gint ett_opcua_DerivedStructureDataType = -1;\r
+void parseDerivedStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DerivedStructureDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DerivedStructureDataType);\r
+ /* parse base class members */
+ parseBaseStructureDataType(subtree, tvb, pOffset, "[BaseStructureDataType]");
+ /* parse additional members */
+ parseString(subtree, tvb, pOffset, hf_opcua_Description);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);\r
+}\r
+\r
+gint ett_opcua_ScalarValuesDataType = -1;\r
+void parseScalarValuesDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ScalarValuesDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ScalarValuesDataType);\r
+
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Boolean);
+ parseSByte(subtree, tvb, pOffset, hf_opcua_SByte);
+ parseByte(subtree, tvb, pOffset, hf_opcua_Byte);
+ parseInt16(subtree, tvb, pOffset, hf_opcua_Int16);
+ parseUInt16(subtree, tvb, pOffset, hf_opcua_UInt16);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_Int32);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_UInt32);
+ parseInt64(subtree, tvb, pOffset, hf_opcua_Int64);
+ parseUInt64(subtree, tvb, pOffset, hf_opcua_UInt64);
+ parseFloat(subtree, tvb, pOffset, hf_opcua_Float);
+ parseDouble(subtree, tvb, pOffset, hf_opcua_Double);
+ parseString(subtree, tvb, pOffset, hf_opcua_String);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_DateTime);
+ parseGuid(subtree, tvb, pOffset, hf_opcua_Guid);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_ByteString);
+ parseXmlElement(subtree, tvb, pOffset, hf_opcua_XmlElement);
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseExpandedNodeId(subtree, tvb, pOffset, "ExpandedNodeId");
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
+ parseQualifiedName(subtree, tvb, pOffset, "QualifiedName");
+ parseLocalizedText(subtree, tvb, pOffset, "LocalizedText");
+ parseExtensionObject(subtree, tvb, pOffset, "ExtensionObject");
+ parseDataValue(subtree, tvb, pOffset, "DataValue");
+ parseVariant(subtree, tvb, pOffset, "Variant");
+ parseBaseStructureDataType(subtree, tvb, pOffset, "Structure");
+ parseColorsDataType(subtree, tvb, pOffset);\r
+}\r
+\r
+gint ett_opcua_ArrayValuesDataType = -1;\r
+void parseArrayValuesDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ArrayValuesDataType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ArrayValuesDataType);\r
+
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Boolean, parseBoolean);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SByte, parseSByte);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int16, parseInt16);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt16, parseUInt16);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int32, parseInt32);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt32, parseUInt32);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int64, parseInt64);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt64, parseUInt64);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Float, parseFloat);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Double, parseDouble);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_String, parseString);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DateTime, parseDateTime);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Guid, parseGuid);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ByteString, parseByteString);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_XmlElement, parseXmlElement);
+ parseArrayComplex(subtree, tvb, pOffset, "NodeId", parseNodeId);
+ parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeId", parseExpandedNodeId);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_StatusCode, parseStatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfo", parseDiagnosticInfo);
+ parseArrayComplex(subtree, tvb, pOffset, "QualifiedName", parseQualifiedName);
+ parseArrayComplex(subtree, tvb, pOffset, "LocalizedText", parseLocalizedText);
+ parseArrayComplex(subtree, tvb, pOffset, "ExtensionObject", parseExtensionObject);
+ parseArrayComplex(subtree, tvb, pOffset, "DataValue", parseDataValue);
+ parseArrayComplex(subtree, tvb, pOffset, "Variant", parseVariant);
+ parseArrayComplex(subtree, tvb, pOffset, "Structure", parseBaseStructureDataType);
+ parseArrayEnum(subtree, tvb, pOffset, parseColorsDataType);\r
+}\r
+\r
+gint ett_opcua_RequestHeader = -1;\r
+void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RequestHeader", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RequestHeader);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestId);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ReturnDiagnostics);
+ parseString(subtree, tvb, pOffset, hf_opcua_AuditLogEntryId);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_TimeoutHint);
+ parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeaders");\r
+}\r
+\r
+gint ett_opcua_ResponseHeader = -1;\r
+void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ResponseHeader", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ResponseHeader);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestId);
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_ServiceResult);
+ parseDiagnosticInfo(subtree, tvb, pOffset, "ServiceDiagnostics");
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_StringTable, parseString);
+ parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeaders");\r
+}\r
+\r
+gint ett_opcua_ServiceFault = -1;\r
+void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceFault", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceFault);\r
+
+ parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader");\r
+}\r
+\r
+gint ett_opcua_ComplexTestType = -1;\r
+void parseComplexTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ComplexTestType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ComplexTestType);\r
+
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Value1);
+ parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType);\r
+}\r
+\r
+gint ett_opcua_BaseTestType = -1;\r
+void parseBaseTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseTestType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseTestType);\r
+
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Value1);\r
+}\r
+\r
+gint ett_opcua_DerivedTestType = -1;\r
+void parseDerivedTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DerivedTestType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DerivedTestType);\r
+ /* parse base class members */
+ parseBaseTestType(subtree, tvb, pOffset, "[BaseTestType]");
+ /* parse additional members */
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Value2);\r
+}\r
+\r
+gint ett_opcua_ScalarTestType = -1;\r
+void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ScalarTestType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ScalarTestType);\r
+
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_Boolean);
+ parseSByte(subtree, tvb, pOffset, hf_opcua_SByte);
+ parseByte(subtree, tvb, pOffset, hf_opcua_Byte);
+ parseInt16(subtree, tvb, pOffset, hf_opcua_Int16);
+ parseUInt16(subtree, tvb, pOffset, hf_opcua_UInt16);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_Int32);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_UInt32);
+ parseInt64(subtree, tvb, pOffset, hf_opcua_Int64);
+ parseUInt64(subtree, tvb, pOffset, hf_opcua_UInt64);
+ parseFloat(subtree, tvb, pOffset, hf_opcua_Float);
+ parseDouble(subtree, tvb, pOffset, hf_opcua_Double);
+ parseString(subtree, tvb, pOffset, hf_opcua_String);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_DateTime);
+ parseGuid(subtree, tvb, pOffset, hf_opcua_Guid);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_ByteString);
+ parseXmlElement(subtree, tvb, pOffset, hf_opcua_XmlElement);
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseExpandedNodeId(subtree, tvb, pOffset, "ExpandedNodeId");
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
+ parseQualifiedName(subtree, tvb, pOffset, "QualifiedName");
+ parseLocalizedText(subtree, tvb, pOffset, "LocalizedText");
+ parseExtensionObject(subtree, tvb, pOffset, "ExtensionObject");
+ parseDataValue(subtree, tvb, pOffset, "DataValue");
+ parseVariant(subtree, tvb, pOffset, "Variant");
+ parseComplexTestType(subtree, tvb, pOffset, "ComplexValue");
+ parseEnumeratedTestType(subtree, tvb, pOffset);\r
+}\r
+\r
+gint ett_opcua_ArrayTestType = -1;\r
+void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ArrayTestType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ArrayTestType);\r
+
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Booleans, parseBoolean);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SBytes, parseSByte);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int16s, parseInt16);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt16s, parseUInt16);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int32s, parseInt32);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt32s, parseUInt32);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int64s, parseInt64);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt64s, parseUInt64);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Floats, parseFloat);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Doubles, parseDouble);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Strings, parseString);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DateTimes, parseDateTime);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Guids, parseGuid);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ByteStrings, parseByteString);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_XmlElements, parseXmlElement);
+ parseArrayComplex(subtree, tvb, pOffset, "NodeIds", parseNodeId);
+ parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeIds", parseExpandedNodeId);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_StatusCodes, parseStatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);
+ parseArrayComplex(subtree, tvb, pOffset, "QualifiedNames", parseQualifiedName);
+ parseArrayComplex(subtree, tvb, pOffset, "LocalizedTexts", parseLocalizedText);
+ parseArrayComplex(subtree, tvb, pOffset, "ExtensionObjects", parseExtensionObject);
+ parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue);
+ parseArrayComplex(subtree, tvb, pOffset, "Variants", parseVariant);
+ parseArrayComplex(subtree, tvb, pOffset, "ComplexValues", parseComplexTestType);
+ parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType);\r
+}\r
+\r
+gint ett_opcua_CompositeTestType = -1;\r
+void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CompositeTestType", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CompositeTestType);\r
+
+ parseScalarTestType(subtree, tvb, pOffset, "Input1");
+ parseArrayTestType(subtree, tvb, pOffset, "Input2");\r
+}\r
+\r
+gint ett_opcua_RegisteredServer = -1;\r
+void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RegisteredServer", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RegisteredServer);\r
+
+ parseServerDescriptionType(subtree, tvb, pOffset);
+ parseString(subtree, tvb, pOffset, hf_opcua_ServerUri);
+ parseArrayComplex(subtree, tvb, pOffset, "ServerNames", parseLocalizedText);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DiscoveryUrls, parseString);
+ parseString(subtree, tvb, pOffset, hf_opcua_SemaphoreFilePath);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsOnline);\r
+}\r
+\r
+gint ett_opcua_ChannelSecurityToken = -1;\r
+void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ChannelSecurityToken", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ChannelSecurityToken);\r
+
+ parseGuid(subtree, tvb, pOffset, hf_opcua_ChannelId);
+ parseString(subtree, tvb, pOffset, hf_opcua_TokenId);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_CreatedAt);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetime);\r
+}\r
+\r
+gint ett_opcua_SignatureData = -1;\r
+void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SignatureData", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SignatureData);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_Algorithm);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_Signature);\r
+}\r
+\r
+gint ett_opcua_AddNodesResult = -1;\r
+void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddNodesResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseNodeId(subtree, tvb, pOffset, "AddedNodeId");\r
+}\r
+\r
+gint ett_opcua_BrowsePropertiesPropertyResult = -1;\r
+void parseBrowsePropertiesPropertyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePropertiesPropertyResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesPropertyResult);\r
+
+ parseQualifiedName(subtree, tvb, pOffset, "PropertyName");
+ parseLocalizedText(subtree, tvb, pOffset, "PropertyDisplayName");
+ parseNodeId(subtree, tvb, pOffset, "PropertyNodeId");
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_PropertyStatusCode);\r
+}\r
+\r
+gint ett_opcua_BrowsePropertiesResult = -1;\r
+void parseBrowsePropertiesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePropertiesResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "PropertyResults", parseBrowsePropertiesPropertyResult);
+ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);\r
+}\r
+\r
+gint ett_opcua_ReferenceDescription = -1;\r
+void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceDescription", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceDescription);\r
+
+ parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex);
+ parseExpandedNodeId(subtree, tvb, pOffset, "NodeId");
+ parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
+ parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
+ parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass);
+ parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition");\r
+}\r
+\r
+gint ett_opcua_ViewDescription = -1;\r
+void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewDescription", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewDescription);\r
+
+ parseNodeId(subtree, tvb, pOffset, "ViewId");
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ViewVersion);\r
+}\r
+\r
+gint ett_opcua_BrowsePath = -1;\r
+void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePath", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePath);\r
+
+ parseNodeId(subtree, tvb, pOffset, "StartingNode");
+ parseString(subtree, tvb, pOffset, hf_opcua_RelativePath);\r
+}\r
+\r
+gint ett_opcua_TranslateBrowsePathResult = -1;\r
+void parseTranslateBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TranslateBrowsePathResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TranslateBrowsePathResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "MatchingNodeIds", parseNodeId);\r
+}\r
+\r
+gint ett_opcua_AttributeDescription = -1;\r
+void parseAttributeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AttributeDescription", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeDescription);\r
+
+ parseString(subtree, tvb, pOffset, hf_opcua_RelativePath);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
+ parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);\r
+}\r
+\r
+gint ett_opcua_NodeTypeDescription = -1;\r
+void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeTypeDescription", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeTypeDescription);\r
+
+ parseNodeId(subtree, tvb, pOffset, "TypeDefinitionNode");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubTypes);
+ parseArrayComplex(subtree, tvb, pOffset, "AttributesToReturn", parseAttributeDescription);\r
+}\r
+\r
+gint ett_opcua_QueryDataSet = -1;\r
+void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryDataSet", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryDataSet);\r
+
+ parseExpandedNodeId(subtree, tvb, pOffset, "NodeId");
+ parseNodeId(subtree, tvb, pOffset, "TypeDefinitionNodeId");
+ parseArrayComplex(subtree, tvb, pOffset, "Values", parseVariant);\r
+}\r
+\r
+gint ett_opcua_NodeReference = -1;\r
+void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeReference", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeReference);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId");
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward);
+ parseArrayComplex(subtree, tvb, pOffset, "ReferencedNodeIds", parseNodeId);\r
+}\r
+\r
+gint ett_opcua_ContentFilterElement = -1;\r
+void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterElement", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterElement);\r
+
+ parseFilterOperator(subtree, tvb, pOffset);
+ parseArrayComplex(subtree, tvb, pOffset, "FilterOperands", parseExtensionObject);\r
+}\r
+\r
+gint ett_opcua_ContentFilter = -1;\r
+void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilter", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilter);\r
+
+ parseArrayComplex(subtree, tvb, pOffset, "Elements", parseContentFilterElement);\r
+}\r
+\r
+gint ett_opcua_FilterOperand = -1;\r
+void parseFilterOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : FilterOperand", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_FilterOperand);\r
+ \r
+}\r
+\r
+gint ett_opcua_ElementOperand = -1;\r
+void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ElementOperand", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ElementOperand);\r
+ /* parse base class members */
+ parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
+ /* parse additional members */
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_Index);\r
+}\r
+\r
+gint ett_opcua_LiteralOperand = -1;\r
+void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : LiteralOperand", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_LiteralOperand);\r
+ /* parse base class members */
+ parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
+ /* parse additional members */
+ parseVariant(subtree, tvb, pOffset, "Value");\r
+}\r
+\r
+gint ett_opcua_AttributeOperand = -1;\r
+void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AttributeOperand", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeOperand);\r
+ /* parse base class members */
+ parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
+ /* parse additional members */
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseString(subtree, tvb, pOffset, hf_opcua_Alias);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
+ parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);\r
+}\r
+\r
+gint ett_opcua_PropertyOperand = -1;\r
+void parsePropertyOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : PropertyOperand", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_PropertyOperand);\r
+ /* parse base class members */
+ parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]");
+ /* parse additional members */
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseString(subtree, tvb, pOffset, hf_opcua_Alias);
+ parseQualifiedName(subtree, tvb, pOffset, "Property");
+ parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);\r
+}\r
+\r
+gint ett_opcua_ContentFilterResult = -1;\r
+void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_Result);
+ parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo");
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_IndexOfInvalidElement);\r
+}\r
+\r
+gint ett_opcua_QueryResult = -1;\r
+void parseQueryResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_AttributeStatusCodes, parseStatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "AttributeDiagnosticInfos", parseDiagnosticInfo);\r
+}\r
+\r
+gint ett_opcua_ReadValueId = -1;\r
+void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadValueId", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadValueId);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
+ parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
+ parseQualifiedName(subtree, tvb, pOffset, "Encoding");\r
+}\r
+\r
+gint ett_opcua_HistoryReadValueId = -1;\r
+void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryReadValueId", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadValueId);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseQualifiedName(subtree, tvb, pOffset, "Encoding");
+ parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint);\r
+}\r
+\r
+gint ett_opcua_HistoryReadResult = -1;\r
+void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryReadResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint);
+ parseExtensionObject(subtree, tvb, pOffset, "HistoryData");\r
+}\r
+\r
+gint ett_opcua_MonitoringFilter = -1;\r
+void parseMonitoringFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringFilter", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringFilter);\r
+ \r
+}\r
+\r
+gint ett_opcua_EventFilter = -1;\r
+void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilter", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilter);\r
+ /* parse base class members */
+ parseMonitoringFilter(subtree, tvb, pOffset, "[MonitoringFilter]");
+ /* parse additional members */
+ parseArrayComplex(subtree, tvb, pOffset, "SelectClauses", parseNodeId);
+ parseContentFilter(subtree, tvb, pOffset, "WhereClause");\r
+}\r
+\r
+gint ett_opcua_ReadEventDetails = -1;\r
+void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadEventDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadEventDetails);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_NumValuesPerNode);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
+ parseEventFilter(subtree, tvb, pOffset, "Filter");\r
+}\r
+\r
+gint ett_opcua_ReadRawModifiedDetails = -1;\r
+void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadRawModifiedDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadRawModifiedDetails);\r
+
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsReadModified);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_NumValuesPerNode);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_ReturnBounds);\r
+}\r
+\r
+gint ett_opcua_ReadProcessedDetails = -1;\r
+void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadProcessedDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadProcessedDetails);\r
+
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_ResampleInterval);
+ parseNodeId(subtree, tvb, pOffset, "AggregateType");\r
+}\r
+\r
+gint ett_opcua_ReadAtTimeDetails = -1;\r
+void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadAtTimeDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadAtTimeDetails);\r
+
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ReqTimes, parseDateTime);\r
+}\r
+\r
+gint ett_opcua_HistoryData = -1;\r
+void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryData", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryData);\r
+
+ parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue);\r
+}\r
+\r
+gint ett_opcua_EventFieldList = -1;\r
+void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFieldList", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFieldList);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
+ parseArrayComplex(subtree, tvb, pOffset, "EventFields", parseVariant);\r
+}\r
+\r
+gint ett_opcua_EventNotification = -1;\r
+void parseEventNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventNotification", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventNotification);\r
+
+ parseArrayComplex(subtree, tvb, pOffset, "Events", parseEventFieldList);\r
+}\r
+\r
+gint ett_opcua_HistoryEvent = -1;\r
+void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryEvent", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryEvent);\r
+
+ parseArrayComplex(subtree, tvb, pOffset, "Notifications", parseEventNotification);\r
+}\r
+\r
+gint ett_opcua_WriteValue = -1;\r
+void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : WriteValue", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WriteValue);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId);
+ parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
+ parseDataValue(subtree, tvb, pOffset, "Value");\r
+}\r
+\r
+gint ett_opcua_InsertReplaceDetails = -1;\r
+void parseInsertReplaceDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertReplaceDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertReplaceDetails);\r
+
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_PerformInsert);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_PerformReplace);
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseHistoryData(subtree, tvb, pOffset, "UpdateValue");\r
+}\r
+\r
+gint ett_opcua_InsertEventDetails = -1;\r
+void parseInsertEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertEventDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertEventDetails);\r
+
+ parseHistoryEvent(subtree, tvb, pOffset, "HistoryEvent");\r
+}\r
+\r
+gint ett_opcua_DeleteRawModifiedDetails = -1;\r
+void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteRawModifiedDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteRawModifiedDetails);\r
+
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsDeleteModified);
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);\r
+}\r
+\r
+gint ett_opcua_DeleteAtTimeDetails = -1;\r
+void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteAtTimeDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteAtTimeDetails);\r
+
+ parseNodeId(subtree, tvb, pOffset, "NodeId");
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ReqTimes, parseDateTime);\r
+}\r
+\r
+gint ett_opcua_DeleteEventDetails = -1;\r
+void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteEventDetails", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteEventDetails);\r
+
+ parseEventFilter(subtree, tvb, pOffset, "EventFilter");
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);\r
+}\r
+\r
+gint ett_opcua_HistoryUpdateResult = -1;\r
+void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryUpdateResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_OperationResult, parseStatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);\r
+}\r
+\r
+gint ett_opcua_CallRequestItem = -1;\r
+void parseCallRequestItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallRequestItem", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallRequestItem);\r
+
+ parseNodeId(subtree, tvb, pOffset, "ObjectId");
+ parseNodeId(subtree, tvb, pOffset, "MethodId");
+ parseArrayComplex(subtree, tvb, pOffset, "InputArguments", parseVariant);\r
+}\r
+\r
+gint ett_opcua_CallResultItem = -1;\r
+void parseCallResultItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallResultItem", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallResultItem);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_InputArgumentResults, parseStatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "InputArgumentDiagnosticInfos", parseDiagnosticInfo);
+ parseArrayComplex(subtree, tvb, pOffset, "OutputArguments", parseVariant);\r
+}\r
+\r
+gint ett_opcua_DataChangeFilter = -1;\r
+void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeFilter", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeFilter);\r
+ /* parse base class members */
+ parseMonitoringFilter(subtree, tvb, pOffset, "[MonitoringFilter]");
+ /* parse additional members */
+ parseDataChangeTrigger(subtree, tvb, pOffset);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_DeadbandType);
+ parseDouble(subtree, tvb, pOffset, hf_opcua_DeadbandValue);\r
+}\r
+\r
+gint ett_opcua_MonitoringFilterResult = -1;\r
+void parseMonitoringFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringFilterResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringFilterResult);\r
+ \r
+}\r
+\r
+gint ett_opcua_EventFilterResult = -1;\r
+void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilterResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilterResult);\r
+ /* parse base class members */
+ parseMonitoringFilterResult(subtree, tvb, pOffset, "[MonitoringFilterResult]");
+ /* parse additional members */
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SelectClauseResults, parseStatusCode);
+ parseArrayComplex(subtree, tvb, pOffset, "SelectClauseDiagnosticInfos", parseDiagnosticInfo);
+ parseContentFilterResult(subtree, tvb, pOffset, "WhereClauseResult");\r
+}\r
+\r
+gint ett_opcua_MonitoringAttributes = -1;\r
+void parseMonitoringAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringAttributes", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringAttributes);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_SamplingInterval);
+ parseExtensionObject(subtree, tvb, pOffset, "Filter");
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_QueueSize);
+ parseBoolean(subtree, tvb, pOffset, hf_opcua_DiscardOldest);\r
+}\r
+\r
+gint ett_opcua_MonitoredItemCreateRequest = -1;\r
+void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemCreateRequest", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateRequest);\r
+
+ parseReadValueId(subtree, tvb, pOffset, "ItemToMonitor");
+ parseMonitoringMode(subtree, tvb, pOffset);
+ parseMonitoringAttributes(subtree, tvb, pOffset, "RequestedAttributes");\r
+}\r
+\r
+gint ett_opcua_MonitoredItemCreateResult = -1;\r
+void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemCreateResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize);
+ parseExtensionObject(subtree, tvb, pOffset, "FilterResult");\r
+}\r
+\r
+gint ett_opcua_MonitoredItemModifyRequest = -1;\r
+void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemModifyRequest", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyRequest);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitorItemId);
+ parseMonitoringAttributes(subtree, tvb, pOffset, "RequestedAttributes");\r
+}\r
+\r
+gint ett_opcua_MonitoredItemModifyResult = -1;\r
+void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemModifyResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize);
+ parseExtensionObject(subtree, tvb, pOffset, "FilterResult");\r
+}\r
+\r
+gint ett_opcua_SubscriptionAcknowledgement = -1;\r
+void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionAcknowledgement", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionAcknowledgement);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId);
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber);\r
+}\r
+\r
+gint ett_opcua_NotificationMessage = -1;\r
+void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NotificationMessage", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NotificationMessage);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber);
+ parseDateTime(subtree, tvb, pOffset, hf_opcua_PublishTime);
+ parseArrayComplex(subtree, tvb, pOffset, "NotificationData", parseExtensionObject);\r
+}\r
+\r
+gint ett_opcua_MonitoredItemNotification = -1;\r
+void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemNotification", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemNotification);\r
+
+ parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
+ parseDataValue(subtree, tvb, pOffset, "Value");\r
+}\r
+\r
+gint ett_opcua_DataChangeNotification = -1;\r
+void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeNotification", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeNotification);\r
+
+ parseArrayComplex(subtree, tvb, pOffset, "MonitoredItems", parseMonitoredItemNotification);
+ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);\r
+}\r
+\r
+gint ett_opcua_TransferResult = -1;\r
+void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName)\r
+{\r
+ proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TransferResult", szFieldName);\r
+ proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TransferResult);\r
+
+ parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
+ parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbersRanges, parseString);\r
+}\r
+
+/** Setup protocol subtree array */
+static gint *ett[] =
+{
+ &ett_opcua_ReferenceNode,
+ &ett_opcua_Node,
+ &ett_opcua_ObjectNode,
+ &ett_opcua_ObjectTypeNode,
+ &ett_opcua_VariableNode,
+ &ett_opcua_VariableTypeNode,
+ &ett_opcua_ReferenceTypeNode,
+ &ett_opcua_MethodNode,
+ &ett_opcua_ViewNode,
+ &ett_opcua_DataTypeNode,
+ &ett_opcua_UriTableEntry,
+ &ett_opcua_NodeSet,
+ &ett_opcua_Argument,
+ &ett_opcua_Status,
+ &ett_opcua_BaseEvent,
+ &ett_opcua_SecurityPolicy,
+ &ett_opcua_UserTokenPolicy,
+ &ett_opcua_ServerDescription,
+ &ett_opcua_EndpointDescription,
+ &ett_opcua_EndpointConfiguration,
+ &ett_opcua_UserIdentityToken,
+ &ett_opcua_UserNameIdentityToken,
+ &ett_opcua_X509IdentityToken,
+ &ett_opcua_WssIdentityToken,
+ &ett_opcua_SupportedProfile,
+ &ett_opcua_BuildInfo,
+ &ett_opcua_SoftwareCertificate,
+ &ett_opcua_SignedSoftwareCertificate,
+ &ett_opcua_NodeAttributes,
+ &ett_opcua_ObjectAttributes,
+ &ett_opcua_ObjectTypeAttributes,
+ &ett_opcua_VariableAttributes,
+ &ett_opcua_VariableTypeAttributes,
+ &ett_opcua_ReferenceTypeAttributes,
+ &ett_opcua_MethodAttributes,
+ &ett_opcua_ViewAttributes,
+ &ett_opcua_AddNodesItem,
+ &ett_opcua_AddReferencesItem,
+ &ett_opcua_DeleteNodesItem,
+ &ett_opcua_DeleteReferencesItem,
+ &ett_opcua_RedundantServerDataType,
+ &ett_opcua_SamplingRateDiagnosticsDataType,
+ &ett_opcua_ServerDiagnosticsSummaryDataType,
+ &ett_opcua_ServerStatusDataType,
+ &ett_opcua_ServiceCounterDataType,
+ &ett_opcua_SessionDiagnosticsDataType,
+ &ett_opcua_SessionSecurityDiagnosticsDataType,
+ &ett_opcua_SubscriptionDiagnosticsDataType,
+ &ett_opcua_Range,
+ &ett_opcua_EUInformation,
+ &ett_opcua_Annotation,
+ &ett_opcua_BaseStructureDataType,
+ &ett_opcua_DerivedStructureDataType,
+ &ett_opcua_ScalarValuesDataType,
+ &ett_opcua_ArrayValuesDataType,
+ &ett_opcua_RequestHeader,
+ &ett_opcua_ResponseHeader,
+ &ett_opcua_ServiceFault,
+ &ett_opcua_ComplexTestType,
+ &ett_opcua_BaseTestType,
+ &ett_opcua_DerivedTestType,
+ &ett_opcua_ScalarTestType,
+ &ett_opcua_ArrayTestType,
+ &ett_opcua_CompositeTestType,
+ &ett_opcua_RegisteredServer,
+ &ett_opcua_ChannelSecurityToken,
+ &ett_opcua_SignatureData,
+ &ett_opcua_AddNodesResult,
+ &ett_opcua_BrowsePropertiesPropertyResult,
+ &ett_opcua_BrowsePropertiesResult,
+ &ett_opcua_ReferenceDescription,
+ &ett_opcua_ViewDescription,
+ &ett_opcua_BrowsePath,
+ &ett_opcua_TranslateBrowsePathResult,
+ &ett_opcua_AttributeDescription,
+ &ett_opcua_NodeTypeDescription,
+ &ett_opcua_QueryDataSet,
+ &ett_opcua_NodeReference,
+ &ett_opcua_ContentFilterElement,
+ &ett_opcua_ContentFilter,
+ &ett_opcua_FilterOperand,
+ &ett_opcua_ElementOperand,
+ &ett_opcua_LiteralOperand,
+ &ett_opcua_AttributeOperand,
+ &ett_opcua_PropertyOperand,
+ &ett_opcua_ContentFilterResult,
+ &ett_opcua_QueryResult,
+ &ett_opcua_ReadValueId,
+ &ett_opcua_HistoryReadValueId,
+ &ett_opcua_HistoryReadResult,
+ &ett_opcua_MonitoringFilter,
+ &ett_opcua_EventFilter,
+ &ett_opcua_ReadEventDetails,
+ &ett_opcua_ReadRawModifiedDetails,
+ &ett_opcua_ReadProcessedDetails,
+ &ett_opcua_ReadAtTimeDetails,
+ &ett_opcua_HistoryData,
+ &ett_opcua_EventFieldList,
+ &ett_opcua_EventNotification,
+ &ett_opcua_HistoryEvent,
+ &ett_opcua_WriteValue,
+ &ett_opcua_InsertReplaceDetails,
+ &ett_opcua_InsertEventDetails,
+ &ett_opcua_DeleteRawModifiedDetails,
+ &ett_opcua_DeleteAtTimeDetails,
+ &ett_opcua_DeleteEventDetails,
+ &ett_opcua_HistoryUpdateResult,
+ &ett_opcua_CallRequestItem,
+ &ett_opcua_CallResultItem,
+ &ett_opcua_DataChangeFilter,
+ &ett_opcua_MonitoringFilterResult,
+ &ett_opcua_EventFilterResult,
+ &ett_opcua_MonitoringAttributes,
+ &ett_opcua_MonitoredItemCreateRequest,
+ &ett_opcua_MonitoredItemCreateResult,
+ &ett_opcua_MonitoredItemModifyRequest,
+ &ett_opcua_MonitoredItemModifyResult,
+ &ett_opcua_SubscriptionAcknowledgement,
+ &ett_opcua_NotificationMessage,
+ &ett_opcua_MonitoredItemNotification,
+ &ett_opcua_DataChangeNotification,
+ &ett_opcua_TransferResult,
+};
+
+void registerComplexTypes()
+{
+ proto_register_subtree_array(ett, array_length(ett));
+}
+