wireshark/plugins/opcua/opcua_complextypeparser.c
Evan Huus f95978cf08 From Hannes Mezger via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8327
Updates to the OPCUA plugin so that subtrees of the dissector select the
appropriate number of bytes. Also fix dissection of the array dimensions
field for matrix values and the highlighting for empty string fields.

svn path=/trunk/; revision=47673
2013-02-15 15:24:39 +00:00

1934 lines
104 KiB
C

/******************************************************************************
** $Id$
**
** 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
** modify it under the terms of the GNU General Public License
** as published by the Free Software Foundation; either version 2
** of the License, or (at your option) any later version.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** Project: OpcUa Wireshark Plugin
**
** Description: OpcUa Complex Type Parser
**
** This file was autogenerated on 12.02.2013.
** DON'T MODIFY THIS FILE!
**
******************************************************************************/
#include "config.h"
#include <glib.h>
#include <epan/packet.h>
#include "opcua_complextypeparser.h"
#include "opcua_enumparser.h"
#include "opcua_simpletypes.h"
#include "opcua_hfindeces.h"
gint ett_opcua_Node = -1;
void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : Node", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_Node);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_InstanceNode = -1;
void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : InstanceNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_InstanceNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_TypeNode = -1;
void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : TypeNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TypeNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ObjectNode = -1;
void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ObjectNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ObjectTypeNode = -1;
void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ObjectTypeNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_VariableNode = -1;
void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : VariableNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseVariant(subtree, tvb, pOffset, "Value");
parseNodeId(subtree, tvb, pOffset, "DataType");
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);
parseDouble(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval);
parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_VariableTypeNode = -1;
void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : VariableTypeNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseVariant(subtree, tvb, pOffset, "Value");
parseNodeId(subtree, tvb, pOffset, "DataType");
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReferenceTypeNode = -1;
void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ReferenceTypeNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric);
parseLocalizedText(subtree, tvb, pOffset, "InverseName");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MethodNode = -1;
void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : MethodNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable);
parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ViewNode = -1;
void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ViewNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops);
parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DataTypeNode = -1;
void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : DataTypeNode", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataTypeNode);
parseNodeId(subtree, tvb, pOffset, "NodeId");
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReferenceNode = -1;
void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_Argument = -1;
void parseArgument(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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_ValueRank);
/* Array length field ignored: NoOfArrayDimensions */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_ArrayDimensions, parseUInt32);
parseLocalizedText(subtree, tvb, pOffset, "Description");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EnumValueType = -1;
void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : EnumValueType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EnumValueType);
parseInt64(subtree, tvb, pOffset, hf_opcua_Value);
parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
parseLocalizedText(subtree, tvb, pOffset, "Description");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_TimeZoneDataType = -1;
void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ApplicationDescription = -1;
void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_RequestHeader = -1;
void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : RequestHeader", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RequestHeader);
parseNodeId(subtree, tvb, pOffset, "AuthenticationToken");
parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestHandle);
parseUInt32(subtree, tvb, pOffset, hf_opcua_ReturnDiagnostics);
parseString(subtree, tvb, pOffset, hf_opcua_AuditEntryId);
parseUInt32(subtree, tvb, pOffset, hf_opcua_TimeoutHint);
parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ResponseHeader = -1;
void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ResponseHeader", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ResponseHeader);
parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp);
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, "AdditionalHeader");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ServiceFault = -1;
void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ServiceFault", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceFault);
parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UserTokenPolicy = -1;
void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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_IssuedTokenType);
parseString(subtree, tvb, pOffset, hf_opcua_IssuerEndpointUrl);
parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EndpointDescription = -1;
void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : EndpointDescription", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointDescription);
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);
parseString(subtree, tvb, pOffset, hf_opcua_TransportProfileUri);
parseByte(subtree, tvb, pOffset, hf_opcua_SecurityLevel);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_RegisteredServer = -1;
void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : RegisteredServer", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RegisteredServer);
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ChannelSecurityToken = -1;
void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ChannelSecurityToken", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ChannelSecurityToken);
parseUInt32(subtree, tvb, pOffset, hf_opcua_ChannelId);
parseUInt32(subtree, tvb, pOffset, hf_opcua_TokenId);
parseDateTime(subtree, tvb, pOffset, hf_opcua_CreatedAt);
parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetime);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SignedSoftwareCertificate = -1;
void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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_Signature);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SignatureData = -1;
void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UserIdentityToken = -1;
void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : UserIdentityToken", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserIdentityToken);
parseString(subtree, tvb, pOffset, hf_opcua_PolicyId);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AnonymousIdentityToken = -1;
void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : AnonymousIdentityToken", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AnonymousIdentityToken);
parseString(subtree, tvb, pOffset, hf_opcua_PolicyId);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UserNameIdentityToken = -1;
void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : UserNameIdentityToken", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UserNameIdentityToken);
parseString(subtree, tvb, pOffset, hf_opcua_PolicyId);
parseString(subtree, tvb, pOffset, hf_opcua_UserName);
parseByteString(subtree, tvb, pOffset, hf_opcua_Password);
parseString(subtree, tvb, pOffset, hf_opcua_EncryptionAlgorithm);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_X509IdentityToken = -1;
void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : X509IdentityToken", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_X509IdentityToken);
parseString(subtree, tvb, pOffset, hf_opcua_PolicyId);
parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_IssuedIdentityToken = -1;
void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : IssuedIdentityToken", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_IssuedIdentityToken);
parseString(subtree, tvb, pOffset, hf_opcua_PolicyId);
parseByteString(subtree, tvb, pOffset, hf_opcua_TokenData);
parseString(subtree, tvb, pOffset, hf_opcua_EncryptionAlgorithm);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_NodeAttributes = -1;
void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ObjectAttributes = -1;
void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ObjectAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectAttributes);
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);
parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_VariableAttributes = -1;
void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : VariableAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableAttributes);
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);
parseVariant(subtree, tvb, pOffset, "Value");
parseNodeId(subtree, tvb, pOffset, "DataType");
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);
parseDouble(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval);
parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MethodAttributes = -1;
void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : MethodAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MethodAttributes);
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable);
parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ObjectTypeAttributes = -1;
void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ObjectTypeAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ObjectTypeAttributes);
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_VariableTypeAttributes = -1;
void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : VariableTypeAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_VariableTypeAttributes);
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);
parseVariant(subtree, tvb, pOffset, "Value");
parseNodeId(subtree, tvb, pOffset, "DataType");
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReferenceTypeAttributes = -1;
void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ReferenceTypeAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReferenceTypeAttributes);
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric);
parseLocalizedText(subtree, tvb, pOffset, "InverseName");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DataTypeAttributes = -1;
void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : DataTypeAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataTypeAttributes);
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ViewAttributes = -1;
void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ViewAttributes", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ViewAttributes);
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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops);
parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AddNodesItem = -1;
void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
parseNodeClass(subtree, tvb, pOffset);
parseExtensionObject(subtree, tvb, pOffset, "NodeAttributes");
parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AddNodesResult = -1;
void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AddReferencesItem = -1;
void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
parseNodeClass(subtree, tvb, pOffset);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DeleteNodesItem = -1;
void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DeleteReferencesItem = -1;
void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId");
parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteBidirectional);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ViewDescription = -1;
void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_BrowseDescription = -1;
void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReferenceDescription = -1;
void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
parseExpandedNodeId(subtree, tvb, pOffset, "NodeId");
parseQualifiedName(subtree, tvb, pOffset, "BrowseName");
parseLocalizedText(subtree, tvb, pOffset, "DisplayName");
parseNodeClass(subtree, tvb, pOffset);
parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_BrowseResult = -1;
void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_RelativePathElement = -1;
void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_RelativePath = -1;
void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_BrowsePath = -1;
void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : BrowsePath", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePath);
parseNodeId(subtree, tvb, pOffset, "StartingNode");
parseRelativePath(subtree, tvb, pOffset, "RelativePath");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_BrowsePathTarget = -1;
void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_BrowsePathResult = -1;
void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : BrowsePathResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePathResult);
parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
/* Array length field ignored: NoOfTargets */
parseArrayComplex(subtree, tvb, pOffset, "Targets", parseBrowsePathTarget);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EndpointConfiguration = -1;
void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SupportedProfile = -1;
void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : SupportedProfile", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SupportedProfile);
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SoftwareCertificate = -1;
void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : SoftwareCertificate", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SoftwareCertificate);
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_IssueDate);
/* Array length field ignored: NoOfSupportedProfiles */
parseArrayComplex(subtree, tvb, pOffset, "SupportedProfiles", parseSupportedProfile);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_QueryDataDescription = -1;
void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_NodeTypeDescription = -1;
void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : NodeTypeDescription", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NodeTypeDescription);
parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinitionNode");
parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubTypes);
/* Array length field ignored: NoOfDataToReturn */
parseArrayComplex(subtree, tvb, pOffset, "DataToReturn", parseQueryDataDescription);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_QueryDataSet = -1;
void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : QueryDataSet", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryDataSet);
parseExpandedNodeId(subtree, tvb, pOffset, "NodeId");
parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinitionNode");
/* Array length field ignored: NoOfValues */
parseArrayComplex(subtree, tvb, pOffset, "Values", parseVariant);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_NodeReference = -1;
void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ContentFilterElement = -1;
void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ContentFilter = -1;
void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ElementOperand = -1;
void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ElementOperand", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ElementOperand);
parseUInt32(subtree, tvb, pOffset, hf_opcua_Index);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_LiteralOperand = -1;
void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : LiteralOperand", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_LiteralOperand);
parseVariant(subtree, tvb, pOffset, "Value");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AttributeOperand = -1;
void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : AttributeOperand", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AttributeOperand);
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SimpleAttributeOperand = -1;
void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ContentFilterElementResult = -1;
void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ContentFilterResult = -1;
void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ContentFilterResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ContentFilterResult);
/* Array length field ignored: NoOfElementResults */
parseArrayComplex(subtree, tvb, pOffset, "ElementResults", parseContentFilterElementResult);
/* Array length field ignored: NoOfElementDiagnosticInfos */
parseArrayComplex(subtree, tvb, pOffset, "ElementDiagnosticInfos", parseDiagnosticInfo);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ParsingResult = -1;
void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ParsingResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ParsingResult);
parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
/* Array length field ignored: NoOfDataStatusCodes */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_DataStatusCodes, parseStatusCode);
/* Array length field ignored: NoOfDataDiagnosticInfos */
parseArrayComplex(subtree, tvb, pOffset, "DataDiagnosticInfos", parseDiagnosticInfo);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReadValueId = -1;
void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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, "DataEncoding");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryReadValueId = -1;
void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : HistoryReadValueId", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadValueId);
parseNodeId(subtree, tvb, pOffset, "NodeId");
parseString(subtree, tvb, pOffset, hf_opcua_IndexRange);
parseQualifiedName(subtree, tvb, pOffset, "DataEncoding");
parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryReadResult = -1;
void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReadEventDetails = -1;
void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReadRawModifiedDetails = -1;
void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReadProcessedDetails = -1;
void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
parseDouble(subtree, tvb, pOffset, hf_opcua_ProcessingInterval);
/* Array length field ignored: NoOfAggregateType */
parseArrayComplex(subtree, tvb, pOffset, "AggregateType", parseNodeId);
parseAggregateConfiguration(subtree, tvb, pOffset, "AggregateConfiguration");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ReadAtTimeDetails = -1;
void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
parseBoolean(subtree, tvb, pOffset, hf_opcua_UseSimpleBounds);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryData = -1;
void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ModificationInfo = -1;
void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ModificationInfo", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ModificationInfo);
parseDateTime(subtree, tvb, pOffset, hf_opcua_ModificationTime);
parseHistoryUpdateType(subtree, tvb, pOffset);
parseString(subtree, tvb, pOffset, hf_opcua_UserName);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryModifiedData = -1;
void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : HistoryModifiedData", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryModifiedData);
/* Array length field ignored: NoOfDataValues */
parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue);
/* Array length field ignored: NoOfModificationInfos */
parseArrayComplex(subtree, tvb, pOffset, "ModificationInfos", parseModificationInfo);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryEvent = -1;
void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : HistoryEvent", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryEvent);
/* Array length field ignored: NoOfEvents */
parseArrayComplex(subtree, tvb, pOffset, "Events", parseHistoryEventFieldList);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_WriteValue = -1;
void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryUpdateDetails = -1;
void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : HistoryUpdateDetails", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateDetails);
parseNodeId(subtree, tvb, pOffset, "NodeId");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UpdateDataDetails = -1;
void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : UpdateDataDetails", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UpdateDataDetails);
parseNodeId(subtree, tvb, pOffset, "NodeId");
parsePerformUpdateType(subtree, tvb, pOffset);
/* Array length field ignored: NoOfUpdateValues */
parseArrayComplex(subtree, tvb, pOffset, "UpdateValues", parseDataValue);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UpdateStructureDataDetails = -1;
void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : UpdateStructureDataDetails", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UpdateStructureDataDetails);
parseNodeId(subtree, tvb, pOffset, "NodeId");
parsePerformUpdateType(subtree, tvb, pOffset);
/* Array length field ignored: NoOfUpdateValues */
parseArrayComplex(subtree, tvb, pOffset, "UpdateValues", parseDataValue);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UpdateEventDetails = -1;
void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : UpdateEventDetails", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UpdateEventDetails);
parseNodeId(subtree, tvb, pOffset, "NodeId");
parsePerformUpdateType(subtree, tvb, pOffset);
parseEventFilter(subtree, tvb, pOffset, "Filter");
parseHistoryEventFieldList(subtree, tvb, pOffset, "EventData");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DeleteRawModifiedDetails = -1;
void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : DeleteRawModifiedDetails", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteRawModifiedDetails);
parseNodeId(subtree, tvb, pOffset, "NodeId");
parseBoolean(subtree, tvb, pOffset, hf_opcua_IsDeleteModified);
parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime);
parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DeleteAtTimeDetails = -1;
void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DeleteEventDetails = -1;
void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : DeleteEventDetails", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteEventDetails);
parseNodeId(subtree, tvb, pOffset, "NodeId");
/* Array length field ignored: NoOfEventIds */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_EventIds, parseByteString);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryUpdateResult = -1;
void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : HistoryUpdateResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateResult);
parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
/* Array length field ignored: NoOfOperationResults */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_OperationResults, parseStatusCode);
/* Array length field ignored: NoOfDiagnosticInfos */
parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryUpdateEventResult = -1;
void parseHistoryUpdateEventResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_CallMethodRequest = -1;
void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_CallMethodResult = -1;
void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DataChangeFilter = -1;
void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : DataChangeFilter", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DataChangeFilter);
parseDataChangeTrigger(subtree, tvb, pOffset);
parseUInt32(subtree, tvb, pOffset, hf_opcua_DeadbandType);
parseDouble(subtree, tvb, pOffset, hf_opcua_DeadbandValue);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EventFilter = -1;
void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AggregateConfiguration = -1;
void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : AggregateConfiguration", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AggregateConfiguration);
parseBoolean(subtree, tvb, pOffset, hf_opcua_UseServerCapabilitiesDefaults);
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_UseSlopedExtrapolation);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AggregateFilter = -1;
void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EventFilterResult = -1;
void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : EventFilterResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EventFilterResult);
/* 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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AggregateFilterResult = -1;
void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MonitoringParameters = -1;
void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : MonitoringParameters", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoringParameters);
parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle);
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MonitoredItemCreateRequest = -1;
void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : MonitoredItemCreateRequest", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemCreateRequest);
parseReadValueId(subtree, tvb, pOffset, "ItemToMonitor");
parseMonitoringMode(subtree, tvb, pOffset);
parseMonitoringParameters(subtree, tvb, pOffset, "RequestedParameters");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MonitoredItemCreateResult = -1;
void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval);
parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize);
parseExtensionObject(subtree, tvb, pOffset, "FilterResult");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MonitoredItemModifyRequest = -1;
void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : MonitoredItemModifyRequest", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyRequest);
parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId);
parseMonitoringParameters(subtree, tvb, pOffset, "RequestedParameters");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MonitoredItemModifyResult = -1;
void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : MonitoredItemModifyResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_MonitoredItemModifyResult);
parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval);
parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize);
parseExtensionObject(subtree, tvb, pOffset, "FilterResult");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_NotificationMessage = -1;
void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DataChangeNotification = -1;
void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_MonitoredItemNotification = -1;
void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EventNotificationList = -1;
void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EventFieldList = -1;
void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_HistoryEventFieldList = -1;
void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_StatusChangeNotification = -1;
void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SubscriptionAcknowledgement = -1;
void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_TransferResult = -1;
void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : TransferResult", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TransferResult);
parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode);
/* Array length field ignored: NoOfAvailableSequenceNumbers */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbers, parseUInt32);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ScalarTestType = -1;
void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
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");
parseEnumeratedTestType(subtree, tvb, pOffset);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ArrayTestType = -1;
void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
/* Array length field ignored: NoOfEnumeratedValues */
parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_CompositeTestType = -1;
void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : CompositeTestType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CompositeTestType);
parseScalarTestType(subtree, tvb, pOffset, "Field1");
parseArrayTestType(subtree, tvb, pOffset, "Field2");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_BuildInfo = -1;
void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : BuildInfo", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BuildInfo);
parseString(subtree, tvb, pOffset, hf_opcua_ProductUri);
parseString(subtree, tvb, pOffset, hf_opcua_ManufacturerName);
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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_RedundantServerDataType = -1;
void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EndpointUrlListDataType = -1;
void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : EndpointUrlListDataType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_EndpointUrlListDataType);
/* Array length field ignored: NoOfEndpointUrlList */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_EndpointUrlList, parseString);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_NetworkGroupDataType = -1;
void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : NetworkGroupDataType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_NetworkGroupDataType);
parseString(subtree, tvb, pOffset, hf_opcua_ServerUri);
/* Array length field ignored: NoOfNetworkPaths */
parseArrayComplex(subtree, tvb, pOffset, "NetworkPaths", parseEndpointUrlListDataType);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SamplingIntervalDiagnosticsDataType = -1;
void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ServerDiagnosticsSummaryDataType = -1;
void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ServerStatusDataType = -1;
void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SessionDiagnosticsDataType = -1;
void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SessionSecurityDiagnosticsDataType = -1;
void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ServiceCounterDataType = -1;
void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_StatusResult = -1;
void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SubscriptionDiagnosticsDataType = -1;
void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ModelChangeStructureDataType = -1;
void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_SemanticChangeStructureDataType = -1;
void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_Range = -1;
void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_EUInformation = -1;
void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ComplexNumberType = -1;
void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ComplexNumberType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ComplexNumberType);
parseFloat(subtree, tvb, pOffset, hf_opcua_Real);
parseFloat(subtree, tvb, pOffset, hf_opcua_Imaginary);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_DoubleComplexNumberType = -1;
void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : DoubleComplexNumberType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DoubleComplexNumberType);
parseDouble(subtree, tvb, pOffset, hf_opcua_Real);
parseDouble(subtree, tvb, pOffset, hf_opcua_Imaginary);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_AxisInformation = -1;
void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : AxisInformation", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AxisInformation);
parseEUInformation(subtree, tvb, pOffset, "EngineeringUnits");
parseRange(subtree, tvb, pOffset, "EURange");
parseLocalizedText(subtree, tvb, pOffset, "Title");
parseAxisScaleEnumeration(subtree, tvb, pOffset);
/* Array length field ignored: NoOfAxisSteps */
parseArraySimple(subtree, tvb, pOffset, hf_opcua_AxisSteps, parseDouble);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_XVType = -1;
void parseXVType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : XVType", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_XVType);
parseDouble(subtree, tvb, pOffset, hf_opcua_X);
parseFloat(subtree, tvb, pOffset, hf_opcua_Value);
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ProgramDiagnosticDataType = -1;
void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_Annotation = -1;
void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -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);
proto_item_set_end(ti, tvb, *pOffset);
}
/** Setup protocol subtree array */
static gint *ett[] =
{
&ett_opcua_Node,
&ett_opcua_InstanceNode,
&ett_opcua_TypeNode,
&ett_opcua_ObjectNode,
&ett_opcua_ObjectTypeNode,
&ett_opcua_VariableNode,
&ett_opcua_VariableTypeNode,
&ett_opcua_ReferenceTypeNode,
&ett_opcua_MethodNode,
&ett_opcua_ViewNode,
&ett_opcua_DataTypeNode,
&ett_opcua_ReferenceNode,
&ett_opcua_Argument,
&ett_opcua_EnumValueType,
&ett_opcua_TimeZoneDataType,
&ett_opcua_ApplicationDescription,
&ett_opcua_RequestHeader,
&ett_opcua_ResponseHeader,
&ett_opcua_ServiceFault,
&ett_opcua_UserTokenPolicy,
&ett_opcua_EndpointDescription,
&ett_opcua_RegisteredServer,
&ett_opcua_ChannelSecurityToken,
&ett_opcua_SignedSoftwareCertificate,
&ett_opcua_SignatureData,
&ett_opcua_UserIdentityToken,
&ett_opcua_AnonymousIdentityToken,
&ett_opcua_UserNameIdentityToken,
&ett_opcua_X509IdentityToken,
&ett_opcua_IssuedIdentityToken,
&ett_opcua_NodeAttributes,
&ett_opcua_ObjectAttributes,
&ett_opcua_VariableAttributes,
&ett_opcua_MethodAttributes,
&ett_opcua_ObjectTypeAttributes,
&ett_opcua_VariableTypeAttributes,
&ett_opcua_ReferenceTypeAttributes,
&ett_opcua_DataTypeAttributes,
&ett_opcua_ViewAttributes,
&ett_opcua_AddNodesItem,
&ett_opcua_AddNodesResult,
&ett_opcua_AddReferencesItem,
&ett_opcua_DeleteNodesItem,
&ett_opcua_DeleteReferencesItem,
&ett_opcua_ViewDescription,
&ett_opcua_BrowseDescription,
&ett_opcua_ReferenceDescription,
&ett_opcua_BrowseResult,
&ett_opcua_RelativePathElement,
&ett_opcua_RelativePath,
&ett_opcua_BrowsePath,
&ett_opcua_BrowsePathTarget,
&ett_opcua_BrowsePathResult,
&ett_opcua_EndpointConfiguration,
&ett_opcua_SupportedProfile,
&ett_opcua_SoftwareCertificate,
&ett_opcua_QueryDataDescription,
&ett_opcua_NodeTypeDescription,
&ett_opcua_QueryDataSet,
&ett_opcua_NodeReference,
&ett_opcua_ContentFilterElement,
&ett_opcua_ContentFilter,
&ett_opcua_ElementOperand,
&ett_opcua_LiteralOperand,
&ett_opcua_AttributeOperand,
&ett_opcua_SimpleAttributeOperand,
&ett_opcua_ContentFilterElementResult,
&ett_opcua_ContentFilterResult,
&ett_opcua_ParsingResult,
&ett_opcua_ReadValueId,
&ett_opcua_HistoryReadValueId,
&ett_opcua_HistoryReadResult,
&ett_opcua_ReadEventDetails,
&ett_opcua_ReadRawModifiedDetails,
&ett_opcua_ReadProcessedDetails,
&ett_opcua_ReadAtTimeDetails,
&ett_opcua_HistoryData,
&ett_opcua_ModificationInfo,
&ett_opcua_HistoryModifiedData,
&ett_opcua_HistoryEvent,
&ett_opcua_WriteValue,
&ett_opcua_HistoryUpdateDetails,
&ett_opcua_UpdateDataDetails,
&ett_opcua_UpdateStructureDataDetails,
&ett_opcua_UpdateEventDetails,
&ett_opcua_DeleteRawModifiedDetails,
&ett_opcua_DeleteAtTimeDetails,
&ett_opcua_DeleteEventDetails,
&ett_opcua_HistoryUpdateResult,
&ett_opcua_HistoryUpdateEventResult,
&ett_opcua_CallMethodRequest,
&ett_opcua_CallMethodResult,
&ett_opcua_DataChangeFilter,
&ett_opcua_EventFilter,
&ett_opcua_AggregateConfiguration,
&ett_opcua_AggregateFilter,
&ett_opcua_EventFilterResult,
&ett_opcua_AggregateFilterResult,
&ett_opcua_MonitoringParameters,
&ett_opcua_MonitoredItemCreateRequest,
&ett_opcua_MonitoredItemCreateResult,
&ett_opcua_MonitoredItemModifyRequest,
&ett_opcua_MonitoredItemModifyResult,
&ett_opcua_NotificationMessage,
&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_ScalarTestType,
&ett_opcua_ArrayTestType,
&ett_opcua_CompositeTestType,
&ett_opcua_BuildInfo,
&ett_opcua_RedundantServerDataType,
&ett_opcua_EndpointUrlListDataType,
&ett_opcua_NetworkGroupDataType,
&ett_opcua_SamplingIntervalDiagnosticsDataType,
&ett_opcua_ServerDiagnosticsSummaryDataType,
&ett_opcua_ServerStatusDataType,
&ett_opcua_SessionDiagnosticsDataType,
&ett_opcua_SessionSecurityDiagnosticsDataType,
&ett_opcua_ServiceCounterDataType,
&ett_opcua_StatusResult,
&ett_opcua_SubscriptionDiagnosticsDataType,
&ett_opcua_ModelChangeStructureDataType,
&ett_opcua_SemanticChangeStructureDataType,
&ett_opcua_Range,
&ett_opcua_EUInformation,
&ett_opcua_ComplexNumberType,
&ett_opcua_DoubleComplexNumberType,
&ett_opcua_AxisInformation,
&ett_opcua_XVType,
&ett_opcua_ProgramDiagnosticDataType,
&ett_opcua_Annotation,
};
void registerComplexTypes(void)
{
proto_register_subtree_array(ett, array_length(ett));
}