diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2009-04-06 18:30:04 +0000 |
---|---|---|
committer | Jaap Keuter <jaap.keuter@xs4all.nl> | 2009-04-06 18:30:04 +0000 |
commit | 8ecf45961110d5783b7c99715b7c7cf05c5b41ed (patch) | |
tree | 926b3b5c94b33b4dbdca1083214be171806a0c9e /plugins/opcua/opcua_complextypeparser.c | |
parent | 680cf63be8e8fc8f77de645f217d33e28cd61513 (diff) |
From Gerhard Gappmeier:
This patch updates the plugin to fit the released OPCUA protocol version.
svn path=/trunk/; revision=27974
Diffstat (limited to 'plugins/opcua/opcua_complextypeparser.c')
-rw-r--r-- | plugins/opcua/opcua_complextypeparser.c | 1645 |
1 files changed, 725 insertions, 920 deletions
diff --git a/plugins/opcua/opcua_complextypeparser.c b/plugins/opcua/opcua_complextypeparser.c index 11efbf3cff..9ac6a6f623 100644 --- a/plugins/opcua/opcua_complextypeparser.c +++ b/plugins/opcua/opcua_complextypeparser.c @@ -1,7 +1,7 @@ /****************************************************************************** ** $Id$ ** -** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved. +** Copyright (C) 2006-2009 ascolab GmbH. All Rights Reserved. ** Web: http://www.ascolab.com ** ** This program is free software; you can redistribute it and/or @@ -16,7 +16,7 @@ ** ** Description: OpcUa Complex Type Parser ** -** This file was autogenerated on 8.5.2007 18:53:26. +** This file was autogenerated on 01.04.2009. ** DON'T MODIFY THIS FILE! ** ******************************************************************************/ @@ -32,875 +32,441 @@ #include "opcua_simpletypes.h" #include "opcua_hfindeces.h" - -gint ett_opcua_ReferenceNode = -1; -void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceNode", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceNode); - - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerIndex); - parseExpandedNodeId(subtree, tvb, pOffset, "TargetId"); -} - gint ett_opcua_Node = -1; void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Node", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Node); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClass); + parseNodeClass(subtree, tvb, pOffset); parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); parseLocalizedText(subtree, tvb, pOffset, "Description"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + /* Array length field ignored: NoOfReferences */ parseArrayComplex(subtree, tvb, pOffset, "References", parseReferenceNode); } - gint ett_opcua_ObjectNode = -1; void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectNode); - /* parse base class members */ - parseNode(subtree, tvb, pOffset, "[Node]"); - /* parse additional members */ parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); } - gint ett_opcua_ObjectTypeNode = -1; void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeNode); - /* parse base class members */ - parseNode(subtree, tvb, pOffset, "[Node]"); - /* parse additional members */ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); } - gint ett_opcua_VariableNode = -1; void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableNode); - /* 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); + parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + /* Array length field ignored: NoOfArrayDimensions */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_ArrayDimensions, parseUInt32); parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel); parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel); - parseInt32(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval); + parseDouble(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval); parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing); } - gint ett_opcua_VariableTypeNode = -1; void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableTypeNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeNode); - /* 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); + parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + /* Array length field ignored: NoOfArrayDimensions */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_ArrayDimensions, parseUInt32); parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); } - gint ett_opcua_ReferenceTypeNode = -1; void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceTypeNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeNode); - /* 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"); } - gint ett_opcua_MethodNode = -1; void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodNode); - /* 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); } - gint ett_opcua_ViewNode = -1; void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewNode); - /* 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); } - gint ett_opcua_DataTypeNode = -1; void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataTypeNode", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataTypeNode); - /* parse base class members */ - parseNode(subtree, tvb, pOffset, "[Node]"); - /* parse additional members */ parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); } - -gint ett_opcua_UriTableEntry = -1; -void parseUriTableEntry(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UriTableEntry", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UriTableEntry); - - parseUInt32(subtree, tvb, pOffset, hf_opcua_Index); - parseString(subtree, tvb, pOffset, hf_opcua_Uri); -} - -gint ett_opcua_NodeSet = -1; -void parseNodeSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_ReferenceNode = -1; +void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeSet", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeSet); - - parseArrayComplex(subtree, tvb, pOffset, "NamespaceUris", parseUriTableEntry); - parseArrayComplex(subtree, tvb, pOffset, "ServerUris", parseUriTableEntry); - parseArrayComplex(subtree, tvb, pOffset, "Nodes", parseExtensionObject); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceNode", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceNode); + parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse); + parseExpandedNodeId(subtree, tvb, pOffset, "TargetId"); } - gint ett_opcua_Argument = -1; void parseArgument(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Argument", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Argument); - parseString(subtree, tvb, pOffset, hf_opcua_Name); parseNodeId(subtree, tvb, pOffset, "DataType"); - parseInt32(subtree, tvb, pOffset, hf_opcua_ArraySize); + parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + /* Array length field ignored: NoOfArrayDimensions */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_ArrayDimensions, parseUInt32); parseLocalizedText(subtree, tvb, pOffset, "Description"); } - -gint ett_opcua_Status = -1; -void parseStatus(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_TimeZoneDataType = -1; +void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Status", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Status); - - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TimeZoneDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TimeZoneDataType); + parseInt16(subtree, tvb, pOffset, hf_opcua_Offset); + parseBoolean(subtree, tvb, pOffset, hf_opcua_DaylightSavingInOffset); } - -gint ett_opcua_BaseEvent = -1; -void parseBaseEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_EnumValueInfo = -1; +void parseEnumValueInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseEvent", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseEvent); - - 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); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EnumValueInfo", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EnumValueInfo); + parseLocalizedText(subtree, tvb, pOffset, "Name"); + parseInt32(subtree, tvb, pOffset, hf_opcua_Value); } - -gint ett_opcua_SecurityPolicy = -1; -void parseSecurityPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_StatusResult = -1; +void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SecurityPolicy", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SecurityPolicy); - - 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); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : StatusResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_StatusResult); + parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); } - gint ett_opcua_UserTokenPolicy = -1; void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserTokenPolicy", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserTokenPolicy); - + parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); parseUserTokenType(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_IssuerType); - parseString(subtree, tvb, pOffset, hf_opcua_IssuerUrl); + parseString(subtree, tvb, pOffset, hf_opcua_IssuedTokenType); + parseString(subtree, tvb, pOffset, hf_opcua_IssuerEndpointUrl); + parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); } - -gint ett_opcua_ServerDescription = -1; -void parseServerDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_ApplicationDescription = -1; +void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDescription", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDescription); - - parseServerDescriptionType(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); - parseLocalizedText(subtree, tvb, pOffset, "ServerName"); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ApplicationDescription", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ApplicationDescription); + parseString(subtree, tvb, pOffset, hf_opcua_ApplicationUri); + parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); + parseLocalizedText(subtree, tvb, pOffset, "ApplicationName"); + parseApplicationType(subtree, tvb, pOffset); + parseString(subtree, tvb, pOffset, hf_opcua_GatewayServerUri); + parseString(subtree, tvb, pOffset, hf_opcua_DiscoveryProfileUri); + /* Array length field ignored: NoOfDiscoveryUrls */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DiscoveryUrls, parseString); } - gint ett_opcua_EndpointDescription = -1; void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointDescription", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointDescription); - - parseServerDescription(subtree, tvb, pOffset, "Server"); parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + parseApplicationDescription(subtree, tvb, pOffset, "Server"); parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate); parseMessageSecurityMode(subtree, tvb, pOffset); parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); + /* Array length field ignored: NoOfUserIdentityTokens */ parseArrayComplex(subtree, tvb, pOffset, "UserIdentityTokens", parseUserTokenPolicy); - parseArraySimple(subtree, tvb, pOffset, hf_opcua_SupportedProfiles, parseString); + parseString(subtree, tvb, pOffset, hf_opcua_TransportProfileUri); + parseByte(subtree, tvb, pOffset, hf_opcua_SecurityLevel); } - -gint ett_opcua_EndpointConfiguration = -1; -void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointConfiguration", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointConfiguration); - - 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); -} - gint ett_opcua_UserIdentityToken = -1; -void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset _U_, char *szFieldName) +void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserIdentityToken", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserIdentityToken); - subtree = 0; + parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); } - gint ett_opcua_UserNameIdentityToken = -1; void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UserNameIdentityToken", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserNameIdentityToken); - /* 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); + parseByteString(subtree, tvb, pOffset, hf_opcua_Password); + parseString(subtree, tvb, pOffset, hf_opcua_EncryptionAlgorithm); } - gint ett_opcua_X509IdentityToken = -1; void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : X509IdentityToken", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_X509IdentityToken); - /* parse base class members */ - parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]"); - /* parse additional members */ parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData); } - -gint ett_opcua_WssIdentityToken = -1; -void parseWssIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_IssuedIdentityToken = -1; +void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : WssIdentityToken", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WssIdentityToken); - /* parse base class members */ - parseUserIdentityToken(subtree, tvb, pOffset, "[UserIdentityToken]"); - /* parse additional members */ - parseXmlElement(subtree, tvb, pOffset, hf_opcua_TokenData); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : IssuedIdentityToken", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_IssuedIdentityToken); + parseByteString(subtree, tvb, pOffset, hf_opcua_TokenData); + parseString(subtree, tvb, pOffset, hf_opcua_EncryptionAlgorithm); +} +gint ett_opcua_EndpointConfiguration = -1; +void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EndpointConfiguration", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointConfiguration); + parseInt32(subtree, tvb, pOffset, hf_opcua_OperationTimeout); + parseBoolean(subtree, tvb, pOffset, hf_opcua_UseBinaryEncoding); + parseInt32(subtree, tvb, pOffset, hf_opcua_MaxStringLength); + parseInt32(subtree, tvb, pOffset, hf_opcua_MaxByteStringLength); + parseInt32(subtree, tvb, pOffset, hf_opcua_MaxArrayLength); + parseInt32(subtree, tvb, pOffset, hf_opcua_MaxMessageSize); + parseInt32(subtree, tvb, pOffset, hf_opcua_MaxBufferSize); + parseInt32(subtree, tvb, pOffset, hf_opcua_ChannelLifetime); + parseInt32(subtree, tvb, pOffset, hf_opcua_SecurityTokenLifetime); } - gint ett_opcua_SupportedProfile = -1; void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SupportedProfile", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SupportedProfile); - - parseString(subtree, tvb, pOffset, hf_opcua_ProfileUri); - parseString(subtree, tvb, pOffset, hf_opcua_ProfileName); + parseString(subtree, tvb, pOffset, hf_opcua_OrganizationUri); + parseString(subtree, tvb, pOffset, hf_opcua_ProfileId); + parseString(subtree, tvb, pOffset, hf_opcua_ComplianceTool); + parseDateTime(subtree, tvb, pOffset, hf_opcua_ComplianceDate); parseComplianceLevel(subtree, tvb, pOffset); + /* Array length field ignored: NoOfUnsupportedUnitIds */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_UnsupportedUnitIds, parseString); } - gint ett_opcua_BuildInfo = -1; void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BuildInfo", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BuildInfo); - - parseString(subtree, tvb, pOffset, hf_opcua_ApplicationUri); + parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); parseString(subtree, tvb, pOffset, hf_opcua_ManufacturerName); - parseString(subtree, tvb, pOffset, hf_opcua_ApplicationName); + parseString(subtree, tvb, pOffset, hf_opcua_ProductName); parseString(subtree, tvb, pOffset, hf_opcua_SoftwareVersion); parseString(subtree, tvb, pOffset, hf_opcua_BuildNumber); parseDateTime(subtree, tvb, pOffset, hf_opcua_BuildDate); } - gint ett_opcua_SoftwareCertificate = -1; void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SoftwareCertificate", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SoftwareCertificate); - - parseBuildInfo(subtree, tvb, pOffset, "ServerInfo"); + parseString(subtree, tvb, pOffset, hf_opcua_ProductName); + parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); + parseString(subtree, tvb, pOffset, hf_opcua_VendorName); + parseByteString(subtree, tvb, pOffset, hf_opcua_VendorProductCertificate); + parseString(subtree, tvb, pOffset, hf_opcua_SoftwareVersion); + parseString(subtree, tvb, pOffset, hf_opcua_BuildNumber); + parseDateTime(subtree, tvb, pOffset, hf_opcua_BuildDate); 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); + parseDateTime(subtree, tvb, pOffset, hf_opcua_IssueDate); + /* Array length field ignored: NoOfSupportedProfiles */ parseArrayComplex(subtree, tvb, pOffset, "SupportedProfiles", parseSupportedProfile); } - gint ett_opcua_SignedSoftwareCertificate = -1; void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SignedSoftwareCertificate", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SignedSoftwareCertificate); - parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData); - parseByteString(subtree, tvb, pOffset, hf_opcua_IssuerSignature); + parseByteString(subtree, tvb, pOffset, hf_opcua_Signature); } - gint ett_opcua_NodeAttributes = -1; void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeAttributes", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeAttributes); - + parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); parseLocalizedText(subtree, tvb, pOffset, "Description"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); } - gint ett_opcua_ObjectAttributes = -1; void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectAttributes", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectAttributes); - /* parse base class members */ - parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]"); - /* parse additional members */ parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); } - -gint ett_opcua_ObjectTypeAttributes = -1; -void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeAttributes", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeAttributes); - /* parse base class members */ - parseNodeAttributes(subtree, tvb, pOffset, "[NodeAttributes]"); - /* parse additional members */ - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); -} - gint ett_opcua_VariableAttributes = -1; void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableAttributes", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableAttributes); - /* 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); + parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + /* Array length field ignored: NoOfArrayDimensions */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_ArrayDimensions, parseUInt32); parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel); parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel); - parseInt32(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval); + parseDouble(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval); parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing); } - +gint ett_opcua_MethodAttributes = -1; +void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodAttributes", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodAttributes); + parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable); + parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable); +} +gint ett_opcua_ObjectTypeAttributes = -1; +void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ObjectTypeAttributes", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeAttributes); + parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); +} gint ett_opcua_VariableTypeAttributes = -1; void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : VariableTypeAttributes", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeAttributes); - /* 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); + parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + /* Array length field ignored: NoOfArrayDimensions */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_ArrayDimensions, parseUInt32); parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); } - gint ett_opcua_ReferenceTypeAttributes = -1; void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceTypeAttributes", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeAttributes); - /* 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"); } - -gint ett_opcua_MethodAttributes = -1; -void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_DataTypeAttributes = -1; +void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MethodAttributes", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodAttributes); - /* 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); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataTypeAttributes", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataTypeAttributes); + parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); } - gint ett_opcua_ViewAttributes = -1; void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewAttributes", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewAttributes); - /* 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); } - gint ett_opcua_AddNodesItem = -1; void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddNodesItem", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesItem); - 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); + parseNodeClass(subtree, tvb, pOffset); parseExtensionObject(subtree, tvb, pOffset, "NodeAttributes"); parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition"); } - gint ett_opcua_AddReferencesItem = -1; void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddReferencesItem", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddReferencesItem); - 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); + parseNodeClass(subtree, tvb, pOffset); } - gint ett_opcua_DeleteNodesItem = -1; void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteNodesItem", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteNodesItem); - parseNodeId(subtree, tvb, pOffset, "NodeId"); parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteTargetReferences); } - gint ett_opcua_DeleteReferencesItem = -1; void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteReferencesItem", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteReferencesItem); - 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"); + parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteBidirectional); } - -gint ett_opcua_RedundantServerDataType = -1; -void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RedundantServerDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RedundantServerDataType); - - parseString(subtree, tvb, pOffset, hf_opcua_ServerId); - parseSByte(subtree, tvb, pOffset, hf_opcua_ServiceLevel); - parseServerState(subtree, tvb, pOffset); -} - -gint ett_opcua_SamplingRateDiagnosticsDataType = -1; -void parseSamplingRateDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SamplingRateDiagnosticsDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SamplingRateDiagnosticsDataType); - - 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); -} - -gint ett_opcua_ServerDiagnosticsSummaryDataType = -1; -void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDiagnosticsSummaryDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDiagnosticsSummaryDataType); - - 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); -} - -gint ett_opcua_ServerStatusDataType = -1; -void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerStatusDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerStatusDataType); - - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_CurrentTime); - parseServerState(subtree, tvb, pOffset); - parseBuildInfo(subtree, tvb, pOffset, "BuildInfo"); -} - -gint ett_opcua_ServiceCounterDataType = -1; -void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceCounterDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceCounterDataType); - - parseUInt32(subtree, tvb, pOffset, hf_opcua_TotalCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UnauthorizedCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ErrorCount); -} - -gint ett_opcua_SessionDiagnosticsDataType = -1; -void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionDiagnosticsDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionDiagnosticsDataType); - - 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"); -} - -gint ett_opcua_SessionSecurityDiagnosticsDataType = -1; -void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionSecurityDiagnosticsDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionSecurityDiagnosticsDataType); - - 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); -} - -gint ett_opcua_SubscriptionDiagnosticsDataType = -1; -void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionDiagnosticsDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionDiagnosticsDataType); - - 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); -} - -gint ett_opcua_Range = -1; -void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Range", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Range); - - parseDouble(subtree, tvb, pOffset, hf_opcua_Low); - parseDouble(subtree, tvb, pOffset, hf_opcua_High); -} - -gint ett_opcua_EUInformation = -1; -void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EUInformation", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EUInformation); - - parseString(subtree, tvb, pOffset, hf_opcua_NamespaceUri); - parseInt32(subtree, tvb, pOffset, hf_opcua_UnitId); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); -} - -gint ett_opcua_Annotation = -1; -void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Annotation", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Annotation); - - 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); -} - -gint ett_opcua_BaseStructureDataType = -1; -void parseBaseStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseStructureDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseStructureDataType); - - parseInt32(subtree, tvb, pOffset, hf_opcua_Id); - parseString(subtree, tvb, pOffset, hf_opcua_Name); -} - -gint ett_opcua_DerivedStructureDataType = -1; -void parseDerivedStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DerivedStructureDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DerivedStructureDataType); - /* 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); -} - -gint ett_opcua_ScalarValuesDataType = -1; -void parseScalarValuesDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ScalarValuesDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ScalarValuesDataType); - - 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); -} - -gint ett_opcua_ArrayValuesDataType = -1; -void parseArrayValuesDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ArrayValuesDataType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ArrayValuesDataType); - - 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); -} - gint ett_opcua_RequestHeader = -1; void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RequestHeader", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RequestHeader); - - parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId); + parseNodeId(subtree, tvb, pOffset, "AuthenticationToken"); parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestId); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestHandle); 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"); + parseString(subtree, tvb, pOffset, hf_opcua_AuditEntryId); + parseUInt32(subtree, tvb, pOffset, hf_opcua_TimeoutHint); + parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader"); } - gint ett_opcua_ResponseHeader = -1; void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ResponseHeader", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ResponseHeader); - - 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_RequestHandle); parseStatusCode(subtree, tvb, pOffset, hf_opcua_ServiceResult); parseDiagnosticInfo(subtree, tvb, pOffset, "ServiceDiagnostics"); + /* Array length field ignored: NoOfStringTable */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_StringTable, parseString); - parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeaders"); + parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader"); } - gint ett_opcua_ServiceFault = -1; void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceFault", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceFault); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); } - -gint ett_opcua_ComplexTestType = -1; -void parseComplexTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ComplexTestType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ComplexTestType); - - parseDateTime(subtree, tvb, pOffset, hf_opcua_Value1); - parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType); -} - -gint ett_opcua_BaseTestType = -1; -void parseBaseTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BaseTestType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BaseTestType); - - parseDateTime(subtree, tvb, pOffset, hf_opcua_Value1); -} - -gint ett_opcua_DerivedTestType = -1; -void parseDerivedTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DerivedTestType", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DerivedTestType); - /* parse base class members */ - parseBaseTestType(subtree, tvb, pOffset, "[BaseTestType]"); - /* parse additional members */ - parseDateTime(subtree, tvb, pOffset, hf_opcua_Value2); -} - gint ett_opcua_ScalarTestType = -1; void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ScalarTestType", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ScalarTestType); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Boolean); parseSByte(subtree, tvb, pOffset, hf_opcua_SByte); parseByte(subtree, tvb, pOffset, hf_opcua_Byte); @@ -925,700 +491,935 @@ void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *s 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); } - gint ett_opcua_ArrayTestType = -1; void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ArrayTestType", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ArrayTestType); - + /* Array length field ignored: NoOfBooleans */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Booleans, parseBoolean); + /* Array length field ignored: NoOfSBytes */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SBytes, parseSByte); + /* Array length field ignored: NoOfInt16s */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int16s, parseInt16); + /* Array length field ignored: NoOfUInt16s */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt16s, parseUInt16); + /* Array length field ignored: NoOfInt32s */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int32s, parseInt32); + /* Array length field ignored: NoOfUInt32s */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt32s, parseUInt32); + /* Array length field ignored: NoOfInt64s */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int64s, parseInt64); + /* Array length field ignored: NoOfUInt64s */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt64s, parseUInt64); + /* Array length field ignored: NoOfFloats */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Floats, parseFloat); + /* Array length field ignored: NoOfDoubles */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Doubles, parseDouble); + /* Array length field ignored: NoOfStrings */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Strings, parseString); + /* Array length field ignored: NoOfDateTimes */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DateTimes, parseDateTime); + /* Array length field ignored: NoOfGuids */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Guids, parseGuid); + /* Array length field ignored: NoOfByteStrings */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ByteStrings, parseByteString); + /* Array length field ignored: NoOfXmlElements */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_XmlElements, parseXmlElement); + /* Array length field ignored: NoOfNodeIds */ parseArrayComplex(subtree, tvb, pOffset, "NodeIds", parseNodeId); + /* Array length field ignored: NoOfExpandedNodeIds */ parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeIds", parseExpandedNodeId); + /* Array length field ignored: NoOfStatusCodes */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_StatusCodes, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + /* Array length field ignored: NoOfQualifiedNames */ parseArrayComplex(subtree, tvb, pOffset, "QualifiedNames", parseQualifiedName); + /* Array length field ignored: NoOfLocalizedTexts */ parseArrayComplex(subtree, tvb, pOffset, "LocalizedTexts", parseLocalizedText); + /* Array length field ignored: NoOfExtensionObjects */ parseArrayComplex(subtree, tvb, pOffset, "ExtensionObjects", parseExtensionObject); + /* Array length field ignored: NoOfDataValues */ parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue); + /* Array length field ignored: NoOfVariants */ parseArrayComplex(subtree, tvb, pOffset, "Variants", parseVariant); - parseArrayComplex(subtree, tvb, pOffset, "ComplexValues", parseComplexTestType); + /* Array length field ignored: NoOfEnumeratedValues */ parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType); } - gint ett_opcua_CompositeTestType = -1; void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CompositeTestType", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CompositeTestType); - - parseScalarTestType(subtree, tvb, pOffset, "Input1"); - parseArrayTestType(subtree, tvb, pOffset, "Input2"); + parseScalarTestType(subtree, tvb, pOffset, "Field1"); + parseArrayTestType(subtree, tvb, pOffset, "Field2"); } - gint ett_opcua_RegisteredServer = -1; void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RegisteredServer", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RegisteredServer); - - parseServerDescriptionType(subtree, tvb, pOffset); parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); + parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); + /* Array length field ignored: NoOfServerNames */ parseArrayComplex(subtree, tvb, pOffset, "ServerNames", parseLocalizedText); + parseApplicationType(subtree, tvb, pOffset); + parseString(subtree, tvb, pOffset, hf_opcua_GatewayServerUri); + /* Array length field ignored: NoOfDiscoveryUrls */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_DiscoveryUrls, parseString); parseString(subtree, tvb, pOffset, hf_opcua_SemaphoreFilePath); parseBoolean(subtree, tvb, pOffset, hf_opcua_IsOnline); } - gint ett_opcua_ChannelSecurityToken = -1; void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ChannelSecurityToken", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ChannelSecurityToken); - - parseGuid(subtree, tvb, pOffset, hf_opcua_ChannelId); - parseString(subtree, tvb, pOffset, hf_opcua_TokenId); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ChannelId); + parseUInt32(subtree, tvb, pOffset, hf_opcua_TokenId); parseDateTime(subtree, tvb, pOffset, hf_opcua_CreatedAt); - parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetime); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetime); } - gint ett_opcua_SignatureData = -1; void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SignatureData", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SignatureData); - parseString(subtree, tvb, pOffset, hf_opcua_Algorithm); parseByteString(subtree, tvb, pOffset, hf_opcua_Signature); } - gint ett_opcua_AddNodesResult = -1; void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AddNodesResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesResult); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); parseNodeId(subtree, tvb, pOffset, "AddedNodeId"); } - -gint ett_opcua_BrowsePropertiesPropertyResult = -1; -void parseBrowsePropertiesPropertyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_ViewDescription = -1; +void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePropertiesPropertyResult", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesPropertyResult); - - parseQualifiedName(subtree, tvb, pOffset, "PropertyName"); - parseLocalizedText(subtree, tvb, pOffset, "PropertyDisplayName"); - parseNodeId(subtree, tvb, pOffset, "PropertyNodeId"); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_PropertyStatusCode); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewDescription", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewDescription); + parseNodeId(subtree, tvb, pOffset, "ViewId"); + parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ViewVersion); } - -gint ett_opcua_BrowsePropertiesResult = -1; -void parseBrowsePropertiesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_BrowseDescription = -1; +void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePropertiesResult", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesResult); - - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseArrayComplex(subtree, tvb, pOffset, "PropertyResults", parseBrowsePropertiesPropertyResult); - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowseDescription", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowseDescription); + parseNodeId(subtree, tvb, pOffset, "NodeId"); + parseBrowseDirection(subtree, tvb, pOffset); + parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubtypes); + parseUInt32(subtree, tvb, pOffset, hf_opcua_NodeClassMask); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ResultMask); } - gint ett_opcua_ReferenceDescription = -1; void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReferenceDescription", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceDescription); - 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); + parseNodeClass(subtree, tvb, pOffset); parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition"); } - -gint ett_opcua_ViewDescription = -1; -void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_BrowseResult = -1; +void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ViewDescription", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewDescription); - - parseNodeId(subtree, tvb, pOffset, "ViewId"); - parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp); - parseInt32(subtree, tvb, pOffset, hf_opcua_ViewVersion); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowseResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowseResult); + parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); + /* Array length field ignored: NoOfReferences */ + parseArrayComplex(subtree, tvb, pOffset, "References", parseReferenceDescription); +} +gint ett_opcua_RelativePathElement = -1; +void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RelativePathElement", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RelativePathElement); + parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse); + parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubtypes); + parseQualifiedName(subtree, tvb, pOffset, "TargetName"); +} +gint ett_opcua_RelativePath = -1; +void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RelativePath", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RelativePath); + /* Array length field ignored: NoOfElements */ + parseArrayComplex(subtree, tvb, pOffset, "Elements", parseRelativePathElement); } - gint ett_opcua_BrowsePath = -1; void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePath", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePath); - parseNodeId(subtree, tvb, pOffset, "StartingNode"); - parseString(subtree, tvb, pOffset, hf_opcua_RelativePath); + parseRelativePath(subtree, tvb, pOffset, "RelativePath"); } - -gint ett_opcua_TranslateBrowsePathResult = -1; -void parseTranslateBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_BrowsePathTarget = -1; +void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TranslateBrowsePathResult", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TranslateBrowsePathResult); - + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePathTarget", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePathTarget); + parseExpandedNodeId(subtree, tvb, pOffset, "TargetId"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RemainingPathIndex); +} +gint ett_opcua_BrowsePathResult = -1; +void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : BrowsePathResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePathResult); parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseArrayComplex(subtree, tvb, pOffset, "MatchingNodeIds", parseNodeId); + /* Array length field ignored: NoOfTargets */ + parseArrayComplex(subtree, tvb, pOffset, "Targets", parseBrowsePathTarget); } - -gint ett_opcua_AttributeDescription = -1; -void parseAttributeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_QueryDataDescription = -1; +void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AttributeDescription", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeDescription); - - parseString(subtree, tvb, pOffset, hf_opcua_RelativePath); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryDataDescription", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryDataDescription); + parseRelativePath(subtree, tvb, pOffset, "RelativePath"); parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); } - gint ett_opcua_NodeTypeDescription = -1; void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeTypeDescription", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeTypeDescription); - - parseNodeId(subtree, tvb, pOffset, "TypeDefinitionNode"); + parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinitionNode"); parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubTypes); - parseArrayComplex(subtree, tvb, pOffset, "AttributesToReturn", parseAttributeDescription); + /* Array length field ignored: NoOfDataToReturn */ + parseArrayComplex(subtree, tvb, pOffset, "DataToReturn", parseQueryDataDescription); } - gint ett_opcua_QueryDataSet = -1; void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryDataSet", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryDataSet); - parseExpandedNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeId(subtree, tvb, pOffset, "TypeDefinitionNodeId"); + parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinitionNode"); + /* Array length field ignored: NoOfValues */ parseArrayComplex(subtree, tvb, pOffset, "Values", parseVariant); } - gint ett_opcua_NodeReference = -1; void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NodeReference", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeReference); - parseNodeId(subtree, tvb, pOffset, "NodeId"); parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward); + /* Array length field ignored: NoOfReferencedNodeIds */ parseArrayComplex(subtree, tvb, pOffset, "ReferencedNodeIds", parseNodeId); } - gint ett_opcua_ContentFilterElement = -1; void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterElement", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterElement); - parseFilterOperator(subtree, tvb, pOffset); + /* Array length field ignored: NoOfFilterOperands */ parseArrayComplex(subtree, tvb, pOffset, "FilterOperands", parseExtensionObject); } - gint ett_opcua_ContentFilter = -1; void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilter", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilter); - + /* Array length field ignored: NoOfElements */ parseArrayComplex(subtree, tvb, pOffset, "Elements", parseContentFilterElement); } - -gint ett_opcua_FilterOperand = -1; -void parseFilterOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset _U_, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : FilterOperand", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_FilterOperand); - subtree = 0; -} - gint ett_opcua_ElementOperand = -1; void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ElementOperand", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ElementOperand); - /* parse base class members */ - parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]"); - /* parse additional members */ parseUInt32(subtree, tvb, pOffset, hf_opcua_Index); } - gint ett_opcua_LiteralOperand = -1; void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : LiteralOperand", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_LiteralOperand); - /* parse base class members */ - parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]"); - /* parse additional members */ parseVariant(subtree, tvb, pOffset, "Value"); } - gint ett_opcua_AttributeOperand = -1; void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AttributeOperand", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeOperand); - /* parse base class members */ - parseFilterOperand(subtree, tvb, pOffset, "[FilterOperand]"); - /* parse additional members */ parseNodeId(subtree, tvb, pOffset, "NodeId"); parseString(subtree, tvb, pOffset, hf_opcua_Alias); + parseRelativePath(subtree, tvb, pOffset, "BrowsePath"); parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); } - -gint ett_opcua_PropertyOperand = -1; -void parsePropertyOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : PropertyOperand", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_PropertyOperand); - /* 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"); +gint ett_opcua_SimpleAttributeOperand = -1; +void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SimpleAttributeOperand", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SimpleAttributeOperand); + parseNodeId(subtree, tvb, pOffset, "TypeDefinitionId"); + /* Array length field ignored: NoOfBrowsePath */ + parseArrayComplex(subtree, tvb, pOffset, "BrowsePath", parseQualifiedName); + parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); } - +gint ett_opcua_ContentFilterElementResult = -1; +void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterElementResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterElementResult); + parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + /* Array length field ignored: NoOfOperandStatusCodes */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_OperandStatusCodes, parseStatusCode); + /* Array length field ignored: NoOfOperandDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "OperandDiagnosticInfos", parseDiagnosticInfo); +} gint ett_opcua_ContentFilterResult = -1; void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ContentFilterResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterResult); - - parseStatusCode(subtree, tvb, pOffset, hf_opcua_Result); - parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_IndexOfInvalidElement); + /* Array length field ignored: NoOfElementResults */ + parseArrayComplex(subtree, tvb, pOffset, "ElementResults", parseContentFilterElementResult); + /* Array length field ignored: NoOfElementDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "ElementDiagnosticInfos", parseDiagnosticInfo); } - -gint ett_opcua_QueryResult = -1; -void parseQueryResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_ParsingResult = -1; +void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : QueryResult", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryResult); - + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ParsingResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ParsingResult); parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseArraySimple(subtree, tvb, pOffset, hf_opcua_AttributeStatusCodes, parseStatusCode); - parseArrayComplex(subtree, tvb, pOffset, "AttributeDiagnosticInfos", parseDiagnosticInfo); + /* Array length field ignored: NoOfDataStatusCodes */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_DataStatusCodes, parseStatusCode); + /* Array length field ignored: NoOfDataDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DataDiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_ReadValueId = -1; void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadValueId", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadValueId); - parseNodeId(subtree, tvb, pOffset, "NodeId"); parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); - parseQualifiedName(subtree, tvb, pOffset, "Encoding"); + parseQualifiedName(subtree, tvb, pOffset, "DataEncoding"); } - gint ett_opcua_HistoryReadValueId = -1; void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryReadValueId", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadValueId); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseQualifiedName(subtree, tvb, pOffset, "Encoding"); + parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); + parseQualifiedName(subtree, tvb, pOffset, "DataEncoding"); parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); } - gint ett_opcua_HistoryReadResult = -1; void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryReadResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadResult); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); parseExtensionObject(subtree, tvb, pOffset, "HistoryData"); } - -gint ett_opcua_MonitoringFilter = -1; -void parseMonitoringFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset _U_, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringFilter", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringFilter); - subtree = 0; -} - -gint ett_opcua_EventFilter = -1; -void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilter", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilter); - /* parse base class members */ - parseMonitoringFilter(subtree, tvb, pOffset, "[MonitoringFilter]"); - /* parse additional members */ - parseArrayComplex(subtree, tvb, pOffset, "SelectClauses", parseNodeId); - parseContentFilter(subtree, tvb, pOffset, "WhereClause"); -} - gint ett_opcua_ReadEventDetails = -1; void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadEventDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadEventDetails); - 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"); } - gint ett_opcua_ReadRawModifiedDetails = -1; void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadRawModifiedDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadRawModifiedDetails); - 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); } - gint ett_opcua_ReadProcessedDetails = -1; void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadProcessedDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadProcessedDetails); - 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"); + parseDouble(subtree, tvb, pOffset, hf_opcua_ResampleInterval); + /* Array length field ignored: NoOfAggregateType */ + parseArrayComplex(subtree, tvb, pOffset, "AggregateType", parseNodeId); + parseAggregateConfiguration(subtree, tvb, pOffset, "AggregateConfiguration"); } - gint ett_opcua_ReadAtTimeDetails = -1; void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ReadAtTimeDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadAtTimeDetails); - + /* Array length field ignored: NoOfReqTimes */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ReqTimes, parseDateTime); } - gint ett_opcua_HistoryData = -1; void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryData", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryData); - + /* Array length field ignored: NoOfDataValues */ parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue); } - -gint ett_opcua_EventFieldList = -1; -void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFieldList", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFieldList); - - parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); - parseArrayComplex(subtree, tvb, pOffset, "EventFields", parseVariant); -} - -gint ett_opcua_EventNotification = -1; -void parseEventNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventNotification", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventNotification); - - parseArrayComplex(subtree, tvb, pOffset, "Events", parseEventFieldList); -} - gint ett_opcua_HistoryEvent = -1; void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryEvent", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryEvent); - - parseArrayComplex(subtree, tvb, pOffset, "Notifications", parseEventNotification); + /* Array length field ignored: NoOfEvents */ + parseArrayComplex(subtree, tvb, pOffset, "Events", parseHistoryEventFieldList); } - gint ett_opcua_WriteValue = -1; void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : WriteValue", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WriteValue); - parseNodeId(subtree, tvb, pOffset, "NodeId"); parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); parseDataValue(subtree, tvb, pOffset, "Value"); } - -gint ett_opcua_InsertReplaceDetails = -1; -void parseInsertReplaceDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_HistoryUpdateDetails = -1; +void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertReplaceDetails", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertReplaceDetails); - - parseBoolean(subtree, tvb, pOffset, hf_opcua_PerformInsert); - parseBoolean(subtree, tvb, pOffset, hf_opcua_PerformReplace); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryUpdateDetails", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateDetails); parseNodeId(subtree, tvb, pOffset, "NodeId"); +} +gint ett_opcua_UpdateDataDetails = -1; +void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UpdateDataDetails", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UpdateDataDetails); + parseHistoryUpdateMode(subtree, tvb, pOffset); parseHistoryData(subtree, tvb, pOffset, "UpdateValue"); } - -gint ett_opcua_InsertEventDetails = -1; -void parseInsertEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_InsertReplaceEventDetails = -1; +void parseInsertReplaceEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertEventDetails", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertEventDetails); - - parseHistoryEvent(subtree, tvb, pOffset, "HistoryEvent"); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : InsertReplaceEventDetails", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InsertReplaceEventDetails); + parseHistoryUpdateMode(subtree, tvb, pOffset); + /* Array length field ignored: NoOfSelectClause */ + parseArrayComplex(subtree, tvb, pOffset, "SelectClause", parseSimpleAttributeOperand); + /* Array length field ignored: NoOfEventData */ + parseArrayComplex(subtree, tvb, pOffset, "EventData", parseHistoryEventFieldList); +} +gint ett_opcua_UpdateEventDetails = -1; +void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : UpdateEventDetails", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UpdateEventDetails); + parseHistoryUpdateMode(subtree, tvb, pOffset); + parseEventFilter(subtree, tvb, pOffset, "Filter"); + parseHistoryEventFieldList(subtree, tvb, pOffset, "EventData"); } - gint ett_opcua_DeleteRawModifiedDetails = -1; void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteRawModifiedDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteRawModifiedDetails); - 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); } - gint ett_opcua_DeleteAtTimeDetails = -1; void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteAtTimeDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteAtTimeDetails); - - parseNodeId(subtree, tvb, pOffset, "NodeId"); + /* Array length field ignored: NoOfReqTimes */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ReqTimes, parseDateTime); } - gint ett_opcua_DeleteEventDetails = -1; void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DeleteEventDetails", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteEventDetails); - - parseEventFilter(subtree, tvb, pOffset, "EventFilter"); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime); + parseByteString(subtree, tvb, pOffset, hf_opcua_EventIds); } - gint ett_opcua_HistoryUpdateResult = -1; void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryUpdateResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateResult); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseArraySimple(subtree, tvb, pOffset, hf_opcua_OperationResult, parseStatusCode); + /* Array length field ignored: NoOfOperationResults */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_OperationResults, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - -gint ett_opcua_CallRequestItem = -1; -void parseCallRequestItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_HistoryUpdateEventResult = -1; +void parseHistoryUpdateEventResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallRequestItem", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallRequestItem); - + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryUpdateEventResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateEventResult); + parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseEventFilterResult(subtree, tvb, pOffset, "EventFilterResult"); +} +gint ett_opcua_CallMethodRequest = -1; +void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallMethodRequest", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallMethodRequest); parseNodeId(subtree, tvb, pOffset, "ObjectId"); parseNodeId(subtree, tvb, pOffset, "MethodId"); + /* Array length field ignored: NoOfInputArguments */ parseArrayComplex(subtree, tvb, pOffset, "InputArguments", parseVariant); } - -gint ett_opcua_CallResultItem = -1; -void parseCallResultItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_CallMethodResult = -1; +void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallResultItem", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallResultItem); - + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : CallMethodResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallMethodResult); parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + /* Array length field ignored: NoOfInputArgumentResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_InputArgumentResults, parseStatusCode); + /* Array length field ignored: NoOfInputArgumentDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "InputArgumentDiagnosticInfos", parseDiagnosticInfo); + /* Array length field ignored: NoOfOutputArguments */ parseArrayComplex(subtree, tvb, pOffset, "OutputArguments", parseVariant); } - gint ett_opcua_DataChangeFilter = -1; void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeFilter", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeFilter); - /* 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); } - -gint ett_opcua_MonitoringFilterResult = -1; -void parseMonitoringFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset _U_, char *szFieldName) +gint ett_opcua_EventFilter = -1; +void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringFilterResult", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringFilterResult); - subtree = 0; + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilter", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilter); + /* Array length field ignored: NoOfSelectClauses */ + parseArrayComplex(subtree, tvb, pOffset, "SelectClauses", parseSimpleAttributeOperand); + parseContentFilter(subtree, tvb, pOffset, "WhereClause"); +} +gint ett_opcua_AggregateConfiguration = -1; +void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AggregateConfiguration", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AggregateConfiguration); + parseBoolean(subtree, tvb, pOffset, hf_opcua_UseSeverCapabilitiesDefaults); + parseBoolean(subtree, tvb, pOffset, hf_opcua_TreatUncertainAsBad); + parseByte(subtree, tvb, pOffset, hf_opcua_PercentDataBad); + parseByte(subtree, tvb, pOffset, hf_opcua_PercentDataGood); + parseBoolean(subtree, tvb, pOffset, hf_opcua_SteppedSlopedExtrapolation); +} +gint ett_opcua_AggregateFilter = -1; +void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AggregateFilter", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AggregateFilter); + parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); + parseNodeId(subtree, tvb, pOffset, "AggregateType"); + parseDouble(subtree, tvb, pOffset, hf_opcua_ProcessingInterval); + parseAggregateConfiguration(subtree, tvb, pOffset, "AggregateConfiguration"); } - gint ett_opcua_EventFilterResult = -1; void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFilterResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilterResult); - /* parse base class members */ - parseMonitoringFilterResult(subtree, tvb, pOffset, "[MonitoringFilterResult]"); - /* parse additional members */ + /* Array length field ignored: NoOfSelectClauseResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SelectClauseResults, parseStatusCode); + /* Array length field ignored: NoOfSelectClauseDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "SelectClauseDiagnosticInfos", parseDiagnosticInfo); parseContentFilterResult(subtree, tvb, pOffset, "WhereClauseResult"); } - -gint ett_opcua_MonitoringAttributes = -1; -void parseMonitoringAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_AggregateFilterResult = -1; +void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringAttributes", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringAttributes); - + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : AggregateFilterResult", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AggregateFilterResult); + parseDateTime(subtree, tvb, pOffset, hf_opcua_RevisedStartTime); + parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedProcessingInterval); + parseAggregateConfiguration(subtree, tvb, pOffset, "RevisedAggregateConfiguration"); +} +gint ett_opcua_MonitoringParameters = -1; +void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoringParameters", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringParameters); parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); - parseInt32(subtree, tvb, pOffset, hf_opcua_SamplingInterval); + parseDouble(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); } - gint ett_opcua_MonitoredItemCreateRequest = -1; void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemCreateRequest", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateRequest); - parseReadValueId(subtree, tvb, pOffset, "ItemToMonitor"); parseMonitoringMode(subtree, tvb, pOffset); - parseMonitoringAttributes(subtree, tvb, pOffset, "RequestedAttributes"); + parseMonitoringParameters(subtree, tvb, pOffset, "RequestedParameters"); } - gint ett_opcua_MonitoredItemCreateResult = -1; void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemCreateResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateResult); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId); - parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval); + parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval); parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize); parseExtensionObject(subtree, tvb, pOffset, "FilterResult"); } - gint ett_opcua_MonitoredItemModifyRequest = -1; void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemModifyRequest", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyRequest); - - parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitorItemId); - parseMonitoringAttributes(subtree, tvb, pOffset, "RequestedAttributes"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId); + parseMonitoringParameters(subtree, tvb, pOffset, "RequestedParameters"); } - gint ett_opcua_MonitoredItemModifyResult = -1; void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemModifyResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyResult); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval); + parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval); parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize); parseExtensionObject(subtree, tvb, pOffset, "FilterResult"); } - -gint ett_opcua_SubscriptionAcknowledgement = -1; -void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionAcknowledgement", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionAcknowledgement); - - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber); -} - gint ett_opcua_NotificationMessage = -1; void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : NotificationMessage", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NotificationMessage); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber); parseDateTime(subtree, tvb, pOffset, hf_opcua_PublishTime); + /* Array length field ignored: NoOfNotificationData */ parseArrayComplex(subtree, tvb, pOffset, "NotificationData", parseExtensionObject); } - +gint ett_opcua_DataChangeNotification = -1; +void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeNotification", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeNotification); + /* Array length field ignored: NoOfMonitoredItems */ + parseArrayComplex(subtree, tvb, pOffset, "MonitoredItems", parseMonitoredItemNotification); + /* Array length field ignored: NoOfDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); +} gint ett_opcua_MonitoredItemNotification = -1; void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : MonitoredItemNotification", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemNotification); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); parseDataValue(subtree, tvb, pOffset, "Value"); } - -gint ett_opcua_DataChangeNotification = -1; -void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +gint ett_opcua_EventNotificationList = -1; +void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : DataChangeNotification", szFieldName); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeNotification); - - parseArrayComplex(subtree, tvb, pOffset, "MonitoredItems", parseMonitoredItemNotification); - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventNotificationList", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventNotificationList); + /* Array length field ignored: NoOfEvents */ + parseArrayComplex(subtree, tvb, pOffset, "Events", parseEventFieldList); +} +gint ett_opcua_EventFieldList = -1; +void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EventFieldList", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFieldList); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); + /* Array length field ignored: NoOfEventFields */ + parseArrayComplex(subtree, tvb, pOffset, "EventFields", parseVariant); +} +gint ett_opcua_HistoryEventFieldList = -1; +void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : HistoryEventFieldList", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryEventFieldList); + /* Array length field ignored: NoOfEventFields */ + parseArrayComplex(subtree, tvb, pOffset, "EventFields", parseVariant); +} +gint ett_opcua_StatusChangeNotification = -1; +void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : StatusChangeNotification", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_StatusChangeNotification); + parseStatusCode(subtree, tvb, pOffset, hf_opcua_Status); + parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); +} +gint ett_opcua_SubscriptionAcknowledgement = -1; +void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionAcknowledgement", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionAcknowledgement); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber); } - gint ett_opcua_TransferResult = -1; void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) { proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : TransferResult", szFieldName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TransferResult); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbersRanges, parseString); + /* Array length field ignored: NoOfAvailableSequenceNumbers */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbers, parseUInt32); +} +gint ett_opcua_RedundantServerDataType = -1; +void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : RedundantServerDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RedundantServerDataType); + parseString(subtree, tvb, pOffset, hf_opcua_ServerId); + parseByte(subtree, tvb, pOffset, hf_opcua_ServiceLevel); + parseServerState(subtree, tvb, pOffset); +} +gint ett_opcua_SamplingIntervalDiagnosticsDataType = -1; +void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SamplingIntervalDiagnosticsDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SamplingIntervalDiagnosticsDataType); + parseDouble(subtree, tvb, pOffset, hf_opcua_SamplingInterval); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxMonitoredItemCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_DisabledMonitoredItemCount); +} +gint ett_opcua_ServerDiagnosticsSummaryDataType = -1; +void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerDiagnosticsSummaryDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerDiagnosticsSummaryDataType); + 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_RejectedSessionCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionTimeoutCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionAbortCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSubscriptionCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingIntervalCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedRequestsCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectedRequestsCount); +} +gint ett_opcua_ServerStatusDataType = -1; +void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServerStatusDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServerStatusDataType); + parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); + parseDateTime(subtree, tvb, pOffset, hf_opcua_CurrentTime); + parseServerState(subtree, tvb, pOffset); + parseBuildInfo(subtree, tvb, pOffset, "BuildInfo"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SecondsTillShutdown); + parseLocalizedText(subtree, tvb, pOffset, "ShutdownReason"); +} +gint ett_opcua_SessionDiagnosticsDataType = -1; +void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionDiagnosticsDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionDiagnosticsDataType); + parseNodeId(subtree, tvb, pOffset, "SessionId"); + parseString(subtree, tvb, pOffset, hf_opcua_SessionName); + parseApplicationDescription(subtree, tvb, pOffset, "ClientDescription"); + parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); + parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + /* Array length field ignored: NoOfLocaleIds */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); + parseDouble(subtree, tvb, pOffset, hf_opcua_ActualSessionTimeout); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxResponseMessageSize); + 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); + parseServiceCounterDataType(subtree, tvb, pOffset, "TotalRequestCount"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_UnauthorizedRequestCount); + 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, "TransferSubscriptionsCount"); + 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"); + parseServiceCounterDataType(subtree, tvb, pOffset, "RegisterNodesCount"); + parseServiceCounterDataType(subtree, tvb, pOffset, "UnregisterNodesCount"); +} +gint ett_opcua_SessionSecurityDiagnosticsDataType = -1; +void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SessionSecurityDiagnosticsDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SessionSecurityDiagnosticsDataType); + parseNodeId(subtree, tvb, pOffset, "SessionId"); + parseString(subtree, tvb, pOffset, hf_opcua_ClientUserIdOfSession); + /* Array length field ignored: NoOfClientUserIdHistory */ + 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); + parseMessageSecurityMode(subtree, tvb, pOffset); + parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); + parseByteString(subtree, tvb, pOffset, hf_opcua_ClientCertificate); +} +gint ett_opcua_ServiceCounterDataType = -1; +void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ServiceCounterDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceCounterDataType); + parseUInt32(subtree, tvb, pOffset, hf_opcua_TotalCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ErrorCount); +} +gint ett_opcua_SubscriptionDiagnosticsDataType = -1; +void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SubscriptionDiagnosticsDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SubscriptionDiagnosticsDataType); + parseNodeId(subtree, tvb, pOffset, "SessionId"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); + parseByte(subtree, tvb, pOffset, hf_opcua_Priority); + parseDouble(subtree, tvb, pOffset, hf_opcua_PublishingInterval); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxKeepAliveCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxLifetimeCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxNotificationsPerPublish); + 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_LatePublishRequestCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentKeepAliveCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentLifetimeCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_UnacknowledgedMessageCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_DiscardedMessageCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_DisabledMonitoredItemCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoringQueueOverflowCount); + parseUInt32(subtree, tvb, pOffset, hf_opcua_NextSequenceNumber); + parseUInt32(subtree, tvb, pOffset, hf_opcua_EventQueueOverFlowCount); +} +gint ett_opcua_ModelChangeStructureDataType = -1; +void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ModelChangeStructureDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ModelChangeStructureDataType); + parseNodeId(subtree, tvb, pOffset, "Affected"); + parseNodeId(subtree, tvb, pOffset, "AffectedType"); + parseByte(subtree, tvb, pOffset, hf_opcua_Verb); +} +gint ett_opcua_SemanticChangeStructureDataType = -1; +void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : SemanticChangeStructureDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SemanticChangeStructureDataType); + parseNodeId(subtree, tvb, pOffset, "Affected"); + parseNodeId(subtree, tvb, pOffset, "AffectedType"); +} +gint ett_opcua_Range = -1; +void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Range", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Range); + parseDouble(subtree, tvb, pOffset, hf_opcua_Low); + parseDouble(subtree, tvb, pOffset, hf_opcua_High); +} +gint ett_opcua_EUInformation = -1; +void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : EUInformation", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EUInformation); + parseString(subtree, tvb, pOffset, hf_opcua_NamespaceUri); + parseInt32(subtree, tvb, pOffset, hf_opcua_UnitId); + parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pOffset, "Description"); +} +gint ett_opcua_Annotation = -1; +void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : Annotation", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Annotation); + parseString(subtree, tvb, pOffset, hf_opcua_Message); + parseString(subtree, tvb, pOffset, hf_opcua_UserName); + parseDateTime(subtree, tvb, pOffset, hf_opcua_AnnotationTime); +} +gint ett_opcua_ProgramDiagnosticDataType = -1; +void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, char *szFieldName) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "%s : ProgramDiagnosticDataType", szFieldName); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ProgramDiagnosticDataType); + parseNodeId(subtree, tvb, pOffset, "CreateSessionId"); + parseString(subtree, tvb, pOffset, hf_opcua_CreateClientName); + parseDateTime(subtree, tvb, pOffset, hf_opcua_InvocationCreationTime); + parseDateTime(subtree, tvb, pOffset, hf_opcua_LastTransitionTime); + parseString(subtree, tvb, pOffset, hf_opcua_LastMethodCall); + parseNodeId(subtree, tvb, pOffset, "LastMethodSessionId"); + /* Array length field ignored: NoOfLastMethodInputArguments */ + parseArrayComplex(subtree, tvb, pOffset, "LastMethodInputArguments", parseArgument); + /* Array length field ignored: NoOfLastMethodOutputArguments */ + parseArrayComplex(subtree, tvb, pOffset, "LastMethodOutputArguments", parseArgument); + parseDateTime(subtree, tvb, pOffset, hf_opcua_LastMethodCallTime); + parseStatusResult(subtree, tvb, pOffset, "LastMethodReturnStatus"); } /** Setup protocol subtree array */ static gint *ett[] = { - &ett_opcua_ReferenceNode, &ett_opcua_Node, &ett_opcua_ObjectNode, &ett_opcua_ObjectTypeNode, @@ -1628,57 +1429,39 @@ static gint *ett[] = &ett_opcua_MethodNode, &ett_opcua_ViewNode, &ett_opcua_DataTypeNode, - &ett_opcua_UriTableEntry, - &ett_opcua_NodeSet, + &ett_opcua_ReferenceNode, &ett_opcua_Argument, - &ett_opcua_Status, - &ett_opcua_BaseEvent, - &ett_opcua_SecurityPolicy, + &ett_opcua_TimeZoneDataType, + &ett_opcua_EnumValueInfo, + &ett_opcua_StatusResult, &ett_opcua_UserTokenPolicy, - &ett_opcua_ServerDescription, + &ett_opcua_ApplicationDescription, &ett_opcua_EndpointDescription, - &ett_opcua_EndpointConfiguration, &ett_opcua_UserIdentityToken, &ett_opcua_UserNameIdentityToken, &ett_opcua_X509IdentityToken, - &ett_opcua_WssIdentityToken, + &ett_opcua_IssuedIdentityToken, + &ett_opcua_EndpointConfiguration, &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_MethodAttributes, + &ett_opcua_ObjectTypeAttributes, &ett_opcua_VariableTypeAttributes, &ett_opcua_ReferenceTypeAttributes, - &ett_opcua_MethodAttributes, + &ett_opcua_DataTypeAttributes, &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, @@ -1686,60 +1469,83 @@ static gint *ett[] = &ett_opcua_ChannelSecurityToken, &ett_opcua_SignatureData, &ett_opcua_AddNodesResult, - &ett_opcua_BrowsePropertiesPropertyResult, - &ett_opcua_BrowsePropertiesResult, - &ett_opcua_ReferenceDescription, &ett_opcua_ViewDescription, + &ett_opcua_BrowseDescription, + &ett_opcua_ReferenceDescription, + &ett_opcua_BrowseResult, + &ett_opcua_RelativePathElement, + &ett_opcua_RelativePath, &ett_opcua_BrowsePath, - &ett_opcua_TranslateBrowsePathResult, - &ett_opcua_AttributeDescription, + &ett_opcua_BrowsePathTarget, + &ett_opcua_BrowsePathResult, + &ett_opcua_QueryDataDescription, &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_SimpleAttributeOperand, + &ett_opcua_ContentFilterElementResult, &ett_opcua_ContentFilterResult, - &ett_opcua_QueryResult, + &ett_opcua_ParsingResult, &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_HistoryUpdateDetails, + &ett_opcua_UpdateDataDetails, + &ett_opcua_InsertReplaceEventDetails, + &ett_opcua_UpdateEventDetails, &ett_opcua_DeleteRawModifiedDetails, &ett_opcua_DeleteAtTimeDetails, &ett_opcua_DeleteEventDetails, &ett_opcua_HistoryUpdateResult, - &ett_opcua_CallRequestItem, - &ett_opcua_CallResultItem, + &ett_opcua_HistoryUpdateEventResult, + &ett_opcua_CallMethodRequest, + &ett_opcua_CallMethodResult, &ett_opcua_DataChangeFilter, - &ett_opcua_MonitoringFilterResult, + &ett_opcua_EventFilter, + &ett_opcua_AggregateConfiguration, + &ett_opcua_AggregateFilter, &ett_opcua_EventFilterResult, - &ett_opcua_MonitoringAttributes, + &ett_opcua_AggregateFilterResult, + &ett_opcua_MonitoringParameters, &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_MonitoredItemNotification, + &ett_opcua_EventNotificationList, + &ett_opcua_EventFieldList, + &ett_opcua_HistoryEventFieldList, + &ett_opcua_StatusChangeNotification, + &ett_opcua_SubscriptionAcknowledgement, &ett_opcua_TransferResult, + &ett_opcua_RedundantServerDataType, + &ett_opcua_SamplingIntervalDiagnosticsDataType, + &ett_opcua_ServerDiagnosticsSummaryDataType, + &ett_opcua_ServerStatusDataType, + &ett_opcua_SessionDiagnosticsDataType, + &ett_opcua_SessionSecurityDiagnosticsDataType, + &ett_opcua_ServiceCounterDataType, + &ett_opcua_SubscriptionDiagnosticsDataType, + &ett_opcua_ModelChangeStructureDataType, + &ett_opcua_SemanticChangeStructureDataType, + &ett_opcua_Range, + &ett_opcua_EUInformation, + &ett_opcua_Annotation, + &ett_opcua_ProgramDiagnosticDataType, }; void registerComplexTypes(void) @@ -1747,4 +1553,3 @@ void registerComplexTypes(void) proto_register_subtree_array(ett, array_length(ett)); } - |