From 647255d6279fe6fea6ad43388a52e55afd5549e0 Mon Sep 17 00:00:00 2001 From: Hannes Mezger Date: Thu, 12 Jun 2014 16:54:25 +0200 Subject: Unify how opcua arrays are displayed - Display 'Array of ' instead of 'Array of Simple Type' - Display array indexes for simple types - Display data type in simple type arrays Change-Id: Id2cc746898f97ce329c6afb9cc49f1907a9f18e4 Reviewed-on: https://code.wireshark.org/review/2161 Reviewed-by: Anders Broman --- plugins/opcua/opcua_complextypeparser.c | 466 ++++++++++++++++---------------- plugins/opcua/opcua_identifiers.h | 2 +- plugins/opcua/opcua_serviceparser.c | 178 ++++++------ plugins/opcua/opcua_simpletypes.c | 183 +++++++------ plugins/opcua/opcua_simpletypes.h | 40 +-- 5 files changed, 450 insertions(+), 419 deletions(-) (limited to 'plugins') diff --git a/plugins/opcua/opcua_complextypeparser.c b/plugins/opcua/opcua_complextypeparser.c index f8a9a815b3..d32b6c49ce 100644 --- a/plugins/opcua/opcua_complextypeparser.c +++ b/plugins/opcua/opcua_complextypeparser.c @@ -14,7 +14,7 @@ ** ** Description: OpcUa Complex Type Parser ** -** This file was autogenerated on 10.06.2014. +** This file was autogenerated on 17.06.2014. ** DON'T MODIFY THIS FILE! ** ******************************************************************************/ @@ -31,7 +31,7 @@ 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_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); @@ -41,13 +41,13 @@ void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFie 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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_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); @@ -57,13 +57,13 @@ void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const cha 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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_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); @@ -73,13 +73,13 @@ void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *s 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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_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); @@ -89,14 +89,14 @@ void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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_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); @@ -106,14 +106,14 @@ void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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_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); @@ -123,12 +123,12 @@ void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const cha 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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); + parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", 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); @@ -138,7 +138,7 @@ void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const cha 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_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); @@ -148,19 +148,19 @@ void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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); + parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", 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_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); @@ -170,7 +170,7 @@ void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode); parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric); parseLocalizedText(subtree, tvb, pOffset, "InverseName"); @@ -179,7 +179,7 @@ void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -189,7 +189,7 @@ void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode); parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable); parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable); proto_item_set_end(ti, tvb, *pOffset); @@ -197,7 +197,7 @@ void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char 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_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); @@ -207,7 +207,7 @@ void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *s 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode); parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops); parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); proto_item_set_end(ti, tvb, *pOffset); @@ -215,7 +215,7 @@ void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *s 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_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); @@ -225,14 +225,14 @@ void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const cha 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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", 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_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); @@ -242,20 +242,20 @@ void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch 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_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); + parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", 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_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"); @@ -265,7 +265,7 @@ void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch 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_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); @@ -274,7 +274,7 @@ void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); @@ -283,13 +283,13 @@ void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, gint *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); + parseArraySimple(subtree, tvb, pOffset, "DiscoveryUrls", "String", 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_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); @@ -303,21 +303,21 @@ void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch 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_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); + parseArraySimple(subtree, tvb, pOffset, "StringTable", "String", hf_opcua_StringTable, parseString); parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader"); 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_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); @@ -329,7 +329,7 @@ void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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"); @@ -337,7 +337,7 @@ void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, co parseMessageSecurityMode(subtree, tvb, pOffset); parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); /* Array length field ignored: NoOfUserIdentityTokens */ - parseArrayComplex(subtree, tvb, pOffset, "UserIdentityTokens", parseUserTokenPolicy); + parseArrayComplex(subtree, tvb, pOffset, "UserIdentityTokens", "UserTokenPolicy", parseUserTokenPolicy); parseString(subtree, tvb, pOffset, hf_opcua_TransportProfileUri); parseByte(subtree, tvb, pOffset, hf_opcua_SecurityLevel); proto_item_set_end(ti, tvb, *pOffset); @@ -345,16 +345,16 @@ void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, co 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_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); + parseArrayComplex(subtree, tvb, pOffset, "ServerNames", "LocalizedText", 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); + parseArraySimple(subtree, tvb, pOffset, "DiscoveryUrls", "String", 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); @@ -362,7 +362,7 @@ void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); @@ -373,7 +373,7 @@ void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); @@ -382,7 +382,7 @@ void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffs 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_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); @@ -391,7 +391,7 @@ void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch 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_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); @@ -399,7 +399,7 @@ void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -407,7 +407,7 @@ void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *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_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); @@ -418,7 +418,7 @@ void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *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_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); @@ -427,7 +427,7 @@ void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -437,7 +437,7 @@ void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, co 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_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"); @@ -449,7 +449,7 @@ void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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_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"); @@ -462,7 +462,7 @@ void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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"); @@ -473,7 +473,7 @@ void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, con 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); + parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", 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); @@ -483,7 +483,7 @@ void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, con 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_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"); @@ -497,7 +497,7 @@ void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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"); @@ -510,7 +510,7 @@ void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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"); @@ -521,14 +521,14 @@ void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, 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); + parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", 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_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"); @@ -543,7 +543,7 @@ void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *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_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"); @@ -556,7 +556,7 @@ void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, con 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_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"); @@ -570,7 +570,7 @@ void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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_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"); @@ -584,7 +584,7 @@ void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const cha 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_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"); @@ -593,7 +593,7 @@ void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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_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"); @@ -606,7 +606,7 @@ void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -615,7 +615,7 @@ void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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"); @@ -627,7 +627,7 @@ void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); @@ -637,7 +637,7 @@ void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); @@ -650,7 +650,7 @@ void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -664,18 +664,18 @@ void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); + parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceDescription", 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_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); @@ -686,16 +686,16 @@ void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, co 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_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); + parseArrayComplex(subtree, tvb, pOffset, "Elements", "RelativePathElement", 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_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"); @@ -704,7 +704,7 @@ void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char 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_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); @@ -713,17 +713,17 @@ void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); + parseArrayComplex(subtree, tvb, pOffset, "Targets", "BrowsePathTarget", 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_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); @@ -739,7 +739,7 @@ void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *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_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); @@ -747,13 +747,13 @@ void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const parseDateTime(subtree, tvb, pOffset, hf_opcua_ComplianceDate); parseComplianceLevel(subtree, tvb, pOffset); /* Array length field ignored: NoOfUnsupportedUnitIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_UnsupportedUnitIds, parseString); + parseArraySimple(subtree, tvb, pOffset, "UnsupportedUnitIds", "String", 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_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); @@ -765,13 +765,13 @@ void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, co 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); + parseArrayComplex(subtree, tvb, pOffset, "SupportedProfiles", "SupportedProfile", 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_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); @@ -781,60 +781,60 @@ void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); + parseArrayComplex(subtree, tvb, pOffset, "DataToReturn", "QueryDataDescription", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "Values", "Variant", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "ReferencedNodeIds", "NodeId", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "FilterOperands", "ExtensionObject", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "Elements", "ContentFilterElement", 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_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); @@ -842,7 +842,7 @@ void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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_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); @@ -850,7 +850,7 @@ void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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_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); @@ -862,11 +862,11 @@ void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); + parseArrayComplex(subtree, tvb, pOffset, "BrowsePath", "QualifiedName", parseQualifiedName); parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); proto_item_set_end(ti, tvb, *pOffset); @@ -874,42 +874,42 @@ void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *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_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); + parseArraySimple(subtree, tvb, pOffset, "OperandStatusCodes", "StatusCode", hf_opcua_OperandStatusCodes, parseStatusCode); /* Array length field ignored: NoOfOperandDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "OperandDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "OperandDiagnosticInfos", "DiagnosticInfo", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "ElementResults", "ContentFilterElementResult", parseContentFilterElementResult); /* Array length field ignored: NoOfElementDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "ElementDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "ElementDiagnosticInfos", "DiagnosticInfo", 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_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); + parseArraySimple(subtree, tvb, pOffset, "DataStatusCodes", "StatusCode", hf_opcua_DataStatusCodes, parseStatusCode); /* Array length field ignored: NoOfDataDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DataDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DataDiagnosticInfos", "DiagnosticInfo", 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_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); @@ -920,7 +920,7 @@ void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char 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_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); @@ -931,7 +931,7 @@ void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, con 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_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); @@ -941,7 +941,7 @@ void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -952,7 +952,7 @@ void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); @@ -964,39 +964,39 @@ void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *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_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); + parseArrayComplex(subtree, tvb, pOffset, "AggregateType", "NodeId", 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_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); + parseArraySimple(subtree, tvb, pOffset, "ReqTimes", "DateTime", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "DataValues", "DataValue", 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_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); @@ -1006,27 +1006,27 @@ void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); + parseArrayComplex(subtree, tvb, pOffset, "DataValues", "DataValue", parseDataValue); /* Array length field ignored: NoOfModificationInfos */ - parseArrayComplex(subtree, tvb, pOffset, "ModificationInfos", parseModificationInfo); + parseArrayComplex(subtree, tvb, pOffset, "ModificationInfos", "ModificationInfo", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "Events", "HistoryEventFieldList", 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_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); @@ -1037,7 +1037,7 @@ void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char 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_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); @@ -1045,41 +1045,41 @@ void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); + parseArrayComplex(subtree, tvb, pOffset, "UpdateValues", "DataValue", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "UpdateValues", "DataValue", 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_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"); /* Array length field ignored: NoOfEventData */ - parseArrayComplex(subtree, tvb, pOffset, "EventData", parseHistoryEventFieldList); + parseArrayComplex(subtree, tvb, pOffset, "EventData", "HistoryEventFieldList", parseHistoryEventFieldList); 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_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); @@ -1090,64 +1090,64 @@ void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffse 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_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); + parseArraySimple(subtree, tvb, pOffset, "ReqTimes", "DateTime", 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_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); + parseArraySimple(subtree, tvb, pOffset, "EventIds", "ByteString", 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_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); + parseArraySimple(subtree, tvb, pOffset, "OperationResults", "StatusCode", hf_opcua_OperationResults, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); 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_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); + parseArrayComplex(subtree, tvb, pOffset, "InputArguments", "Variant", 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_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); + parseArraySimple(subtree, tvb, pOffset, "InputArgumentResults", "StatusCode", hf_opcua_InputArgumentResults, parseStatusCode); /* Array length field ignored: NoOfInputArgumentDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "InputArgumentDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "InputArgumentDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); /* Array length field ignored: NoOfOutputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "OutputArguments", parseVariant); + parseArrayComplex(subtree, tvb, pOffset, "OutputArguments", "Variant", 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_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); @@ -1157,17 +1157,17 @@ void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); + parseArrayComplex(subtree, tvb, pOffset, "SelectClauses", "SimpleAttributeOperand", 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_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); @@ -1179,7 +1179,7 @@ void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *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_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"); @@ -1190,19 +1190,19 @@ void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const 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_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); + parseArraySimple(subtree, tvb, pOffset, "SelectClauseResults", "StatusCode", hf_opcua_SelectClauseResults, parseStatusCode); /* Array length field ignored: NoOfSelectClauseDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "SelectClauseDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "SelectClauseDiagnosticInfos", "DiagnosticInfo", 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_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); @@ -1212,7 +1212,7 @@ void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *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_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); @@ -1224,7 +1224,7 @@ void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); @@ -1234,7 +1234,7 @@ void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOff 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_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); @@ -1246,7 +1246,7 @@ void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffs 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_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"); @@ -1255,7 +1255,7 @@ void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOff 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_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); @@ -1266,29 +1266,29 @@ void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffs 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_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); + parseArrayComplex(subtree, tvb, pOffset, "NotificationData", "ExtensionObject", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "MonitoredItems", "MonitoredItemNotification", parseMonitoredItemNotification); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", 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_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"); @@ -1297,35 +1297,35 @@ void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffs 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_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); + parseArrayComplex(subtree, tvb, pOffset, "Events", "EventFieldList", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "EventFields", "Variant", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "EventFields", "Variant", 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_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"); @@ -1334,7 +1334,7 @@ void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffse 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_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); @@ -1343,17 +1343,17 @@ void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOf 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_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); + parseArraySimple(subtree, tvb, pOffset, "AvailableSequenceNumbers", "UInt32", 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_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); @@ -1385,64 +1385,64 @@ void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c 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_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); + parseArraySimple(subtree, tvb, pOffset, "Booleans", "Boolean", hf_opcua_Booleans, parseBoolean); /* Array length field ignored: NoOfSBytes */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_SBytes, parseSByte); + parseArraySimple(subtree, tvb, pOffset, "SBytes", "SByte", hf_opcua_SBytes, parseSByte); /* Array length field ignored: NoOfInt16s */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int16s, parseInt16); + parseArraySimple(subtree, tvb, pOffset, "Int16s", "Int16", hf_opcua_Int16s, parseInt16); /* Array length field ignored: NoOfUInt16s */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt16s, parseUInt16); + parseArraySimple(subtree, tvb, pOffset, "UInt16s", "UInt16", hf_opcua_UInt16s, parseUInt16); /* Array length field ignored: NoOfInt32s */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int32s, parseInt32); + parseArraySimple(subtree, tvb, pOffset, "Int32s", "Int32", hf_opcua_Int32s, parseInt32); /* Array length field ignored: NoOfUInt32s */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt32s, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "UInt32s", "UInt32", hf_opcua_UInt32s, parseUInt32); /* Array length field ignored: NoOfInt64s */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Int64s, parseInt64); + parseArraySimple(subtree, tvb, pOffset, "Int64s", "Int64", hf_opcua_Int64s, parseInt64); /* Array length field ignored: NoOfUInt64s */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_UInt64s, parseUInt64); + parseArraySimple(subtree, tvb, pOffset, "UInt64s", "UInt64", hf_opcua_UInt64s, parseUInt64); /* Array length field ignored: NoOfFloats */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Floats, parseFloat); + parseArraySimple(subtree, tvb, pOffset, "Floats", "Float", hf_opcua_Floats, parseFloat); /* Array length field ignored: NoOfDoubles */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Doubles, parseDouble); + parseArraySimple(subtree, tvb, pOffset, "Doubles", "Double", hf_opcua_Doubles, parseDouble); /* Array length field ignored: NoOfStrings */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Strings, parseString); + parseArraySimple(subtree, tvb, pOffset, "Strings", "String", hf_opcua_Strings, parseString); /* Array length field ignored: NoOfDateTimes */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_DateTimes, parseDateTime); + parseArraySimple(subtree, tvb, pOffset, "DateTimes", "DateTime", hf_opcua_DateTimes, parseDateTime); /* Array length field ignored: NoOfGuids */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Guids, parseGuid); + parseArraySimple(subtree, tvb, pOffset, "Guids", "Guid", hf_opcua_Guids, parseGuid); /* Array length field ignored: NoOfByteStrings */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_ByteStrings, parseByteString); + parseArraySimple(subtree, tvb, pOffset, "ByteStrings", "ByteString", hf_opcua_ByteStrings, parseByteString); /* Array length field ignored: NoOfXmlElements */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_XmlElements, parseXmlElement); + parseArraySimple(subtree, tvb, pOffset, "XmlElements", "XmlElement", hf_opcua_XmlElements, parseXmlElement); /* Array length field ignored: NoOfNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "NodeIds", parseNodeId); + parseArrayComplex(subtree, tvb, pOffset, "NodeIds", "NodeId", parseNodeId); /* Array length field ignored: NoOfExpandedNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeIds", parseExpandedNodeId); + parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeIds", "ExpandedNodeId", parseExpandedNodeId); /* Array length field ignored: NoOfStatusCodes */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_StatusCodes, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "StatusCodes", "StatusCode", hf_opcua_StatusCodes, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); /* Array length field ignored: NoOfQualifiedNames */ - parseArrayComplex(subtree, tvb, pOffset, "QualifiedNames", parseQualifiedName); + parseArrayComplex(subtree, tvb, pOffset, "QualifiedNames", "QualifiedName", parseQualifiedName); /* Array length field ignored: NoOfLocalizedTexts */ - parseArrayComplex(subtree, tvb, pOffset, "LocalizedTexts", parseLocalizedText); + parseArrayComplex(subtree, tvb, pOffset, "LocalizedTexts", "LocalizedText", parseLocalizedText); /* Array length field ignored: NoOfExtensionObjects */ - parseArrayComplex(subtree, tvb, pOffset, "ExtensionObjects", parseExtensionObject); + parseArrayComplex(subtree, tvb, pOffset, "ExtensionObjects", "ExtensionObject", parseExtensionObject); /* Array length field ignored: NoOfDataValues */ - parseArrayComplex(subtree, tvb, pOffset, "DataValues", parseDataValue); + parseArrayComplex(subtree, tvb, pOffset, "DataValues", "DataValue", parseDataValue); /* Array length field ignored: NoOfVariants */ - parseArrayComplex(subtree, tvb, pOffset, "Variants", parseVariant); + parseArrayComplex(subtree, tvb, pOffset, "Variants", "Variant", parseVariant); /* Array length field ignored: NoOfEnumeratedValues */ - parseArrayEnum(subtree, tvb, pOffset, parseEnumeratedTestType); + parseArrayEnum(subtree, tvb, pOffset, "EnumeratedValues", "EnumeratedTestType", 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_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"); @@ -1451,7 +1451,7 @@ void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -1464,7 +1464,7 @@ void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char * 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_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); @@ -1474,26 +1474,26 @@ void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *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_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); + parseArraySimple(subtree, tvb, pOffset, "EndpointUrlList", "String", 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_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); + parseArrayComplex(subtree, tvb, pOffset, "NetworkPaths", "EndpointUrlListDataType", 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_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); @@ -1504,7 +1504,7 @@ void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, g 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_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); @@ -1523,7 +1523,7 @@ void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint 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_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); @@ -1536,7 +1536,7 @@ void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, c 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_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); @@ -1544,7 +1544,7 @@ void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOff 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); + parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", 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); @@ -1587,12 +1587,12 @@ void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOff 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_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); + parseArraySimple(subtree, tvb, pOffset, "ClientUserIdHistory", "String", 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); @@ -1604,7 +1604,7 @@ void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gi 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_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); @@ -1613,7 +1613,7 @@ void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *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_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"); @@ -1622,7 +1622,7 @@ void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const cha 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_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); @@ -1660,7 +1660,7 @@ void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint 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_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"); @@ -1670,7 +1670,7 @@ void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pO 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_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"); @@ -1679,7 +1679,7 @@ void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint 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_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); @@ -1688,7 +1688,7 @@ void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFi 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_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); @@ -1699,7 +1699,7 @@ void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch 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_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); @@ -1708,7 +1708,7 @@ void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, cons 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_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); @@ -1717,20 +1717,20 @@ void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *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_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); + parseArraySimple(subtree, tvb, pOffset, "AxisSteps", "Double", 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_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); @@ -1739,7 +1739,7 @@ void parseXVType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szF 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_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); @@ -1748,9 +1748,9 @@ void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffs parseString(subtree, tvb, pOffset, hf_opcua_LastMethodCall); parseNodeId(subtree, tvb, pOffset, "LastMethodSessionId"); /* Array length field ignored: NoOfLastMethodInputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "LastMethodInputArguments", parseArgument); + parseArrayComplex(subtree, tvb, pOffset, "LastMethodInputArguments", "Argument", parseArgument); /* Array length field ignored: NoOfLastMethodOutputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "LastMethodOutputArguments", parseArgument); + parseArrayComplex(subtree, tvb, pOffset, "LastMethodOutputArguments", "Argument", parseArgument); parseDateTime(subtree, tvb, pOffset, hf_opcua_LastMethodCallTime); parseStatusResult(subtree, tvb, pOffset, "LastMethodReturnStatus"); proto_item_set_end(ti, tvb, *pOffset); @@ -1758,7 +1758,7 @@ void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffs 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_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); diff --git a/plugins/opcua/opcua_identifiers.h b/plugins/opcua/opcua_identifiers.h index 5ec96e85a4..32da44f4c3 100644 --- a/plugins/opcua/opcua_identifiers.h +++ b/plugins/opcua/opcua_identifiers.h @@ -30,7 +30,7 @@ typedef void (*fctEnumParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); /* declare type parser function prototype */ typedef void (*fctComplexTypeParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); /* declare type parser function prototype */ -typedef void (*fctSimpleTypeParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex); +typedef proto_item* (*fctSimpleTypeParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex); typedef struct _ParserEntry { diff --git a/plugins/opcua/opcua_serviceparser.c b/plugins/opcua/opcua_serviceparser.c index 08c3880fe5..0a46a819f0 100644 --- a/plugins/opcua/opcua_serviceparser.c +++ b/plugins/opcua/opcua_serviceparser.c @@ -1,5 +1,5 @@ /****************************************************************************** -** Copyright (C) 2006-2009 ascolab GmbH. All Rights Reserved. +** Copyright (C) 2006-2014 ascolab GmbH. All Rights Reserved. ** Web: http://www.ascolab.com ** ** This program is free software; you can redistribute it and/or @@ -14,7 +14,7 @@ ** ** Description: OpcUa Complex Type Parser ** -** This file was autogenerated on 12.02.2013. +** This file was autogenerated on 17.06.2014. ** DON'T MODIFY THIS FILE! ** ******************************************************************************/ @@ -47,9 +47,9 @@ void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); + parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString); /* Array length field ignored: NoOfServerUris */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_ServerUris, parseString); + parseArraySimple(subtree, tvb, pOffset, "ServerUris", "String", hf_opcua_ServerUris, parseString); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_FindServersResponse = -1; @@ -60,7 +60,7 @@ void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfServers */ - parseArrayComplex(subtree, tvb, pOffset, "Servers", parseApplicationDescription); + parseArrayComplex(subtree, tvb, pOffset, "Servers", "ApplicationDescription", parseApplicationDescription); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_GetEndpointsRequest = -1; @@ -72,9 +72,9 @@ void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); + parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString); /* Array length field ignored: NoOfProfileUris */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_ProfileUris, parseString); + parseArraySimple(subtree, tvb, pOffset, "ProfileUris", "String", hf_opcua_ProfileUris, parseString); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_GetEndpointsResponse = -1; @@ -85,7 +85,7 @@ void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfEndpoints */ - parseArrayComplex(subtree, tvb, pOffset, "Endpoints", parseEndpointDescription); + parseArrayComplex(subtree, tvb, pOffset, "Endpoints", "EndpointDescription", parseEndpointDescription); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_RegisterServerRequest = -1; @@ -181,9 +181,9 @@ void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate); /* Array length field ignored: NoOfServerEndpoints */ - parseArrayComplex(subtree, tvb, pOffset, "ServerEndpoints", parseEndpointDescription); + parseArrayComplex(subtree, tvb, pOffset, "ServerEndpoints", "EndpointDescription", parseEndpointDescription); /* Array length field ignored: NoOfServerSoftwareCertificates */ - parseArrayComplex(subtree, tvb, pOffset, "ServerSoftwareCertificates", parseSignedSoftwareCertificate); + parseArrayComplex(subtree, tvb, pOffset, "ServerSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate); parseSignatureData(subtree, tvb, pOffset, "ServerSignature"); parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxRequestMessageSize); proto_item_set_end(ti, tvb, *pOffset); @@ -197,9 +197,9 @@ void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseSignatureData(subtree, tvb, pOffset, "ClientSignature"); /* Array length field ignored: NoOfClientSoftwareCertificates */ - parseArrayComplex(subtree, tvb, pOffset, "ClientSoftwareCertificates", parseSignedSoftwareCertificate); + parseArrayComplex(subtree, tvb, pOffset, "ClientSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); + parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString); parseExtensionObject(subtree, tvb, pOffset, "UserIdentityToken"); parseSignatureData(subtree, tvb, pOffset, "UserTokenSignature"); proto_item_set_end(ti, tvb, *pOffset); @@ -213,9 +213,9 @@ void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_CloseSessionRequest = -1; @@ -265,7 +265,7 @@ void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToAdd */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToAdd", parseAddNodesItem); + parseArrayComplex(subtree, tvb, pOffset, "NodesToAdd", "AddNodesItem", parseAddNodesItem); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_AddNodesResponse = -1; @@ -276,9 +276,9 @@ void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseAddNodesResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "AddNodesResult", parseAddNodesResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_AddReferencesRequest = -1; @@ -289,7 +289,7 @@ void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfReferencesToAdd */ - parseArrayComplex(subtree, tvb, pOffset, "ReferencesToAdd", parseAddReferencesItem); + parseArrayComplex(subtree, tvb, pOffset, "ReferencesToAdd", "AddReferencesItem", parseAddReferencesItem); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_AddReferencesResponse = -1; @@ -300,9 +300,9 @@ void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteNodesRequest = -1; @@ -313,7 +313,7 @@ void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToDelete */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToDelete", parseDeleteNodesItem); + parseArrayComplex(subtree, tvb, pOffset, "NodesToDelete", "DeleteNodesItem", parseDeleteNodesItem); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteNodesResponse = -1; @@ -324,9 +324,9 @@ void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteReferencesRequest = -1; @@ -337,7 +337,7 @@ void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfReferencesToDelete */ - parseArrayComplex(subtree, tvb, pOffset, "ReferencesToDelete", parseDeleteReferencesItem); + parseArrayComplex(subtree, tvb, pOffset, "ReferencesToDelete", "DeleteReferencesItem", parseDeleteReferencesItem); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteReferencesResponse = -1; @@ -348,9 +348,9 @@ void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffse parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_BrowseRequest = -1; @@ -363,7 +363,7 @@ void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseViewDescription(subtree, tvb, pOffset, "View"); parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedMaxReferencesPerNode); /* Array length field ignored: NoOfNodesToBrowse */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToBrowse", parseBrowseDescription); + parseArrayComplex(subtree, tvb, pOffset, "NodesToBrowse", "BrowseDescription", parseBrowseDescription); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_BrowseResponse = -1; @@ -374,9 +374,9 @@ void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseBrowseResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "BrowseResult", parseBrowseResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_BrowseNextRequest = -1; @@ -388,7 +388,7 @@ void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoints); /* Array length field ignored: NoOfContinuationPoints */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_ContinuationPoints, parseByteString); + parseArraySimple(subtree, tvb, pOffset, "ContinuationPoints", "ByteString", hf_opcua_ContinuationPoints, parseByteString); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_BrowseNextResponse = -1; @@ -399,9 +399,9 @@ void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseBrowseResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "BrowseResult", parseBrowseResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_TranslateBrowsePathsToNodeIdsRequest = -1; @@ -412,7 +412,7 @@ void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfBrowsePaths */ - parseArrayComplex(subtree, tvb, pOffset, "BrowsePaths", parseBrowsePath); + parseArrayComplex(subtree, tvb, pOffset, "BrowsePaths", "BrowsePath", parseBrowsePath); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_TranslateBrowsePathsToNodeIdsResponse = -1; @@ -423,9 +423,9 @@ void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseBrowsePathResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "BrowsePathResult", parseBrowsePathResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_RegisterNodesRequest = -1; @@ -436,7 +436,7 @@ void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToRegister */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToRegister", parseNodeId); + parseArrayComplex(subtree, tvb, pOffset, "NodesToRegister", "NodeId", parseNodeId); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_RegisterNodesResponse = -1; @@ -447,7 +447,7 @@ void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfRegisteredNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "RegisteredNodeIds", parseNodeId); + parseArrayComplex(subtree, tvb, pOffset, "RegisteredNodeIds", "NodeId", parseNodeId); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_UnregisterNodesRequest = -1; @@ -458,7 +458,7 @@ void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToUnregister */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToUnregister", parseNodeId); + parseArrayComplex(subtree, tvb, pOffset, "NodesToUnregister", "NodeId", parseNodeId); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_UnregisterNodesResponse = -1; @@ -479,7 +479,7 @@ void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseViewDescription(subtree, tvb, pOffset, "View"); /* Array length field ignored: NoOfNodeTypes */ - parseArrayComplex(subtree, tvb, pOffset, "NodeTypes", parseNodeTypeDescription); + parseArrayComplex(subtree, tvb, pOffset, "NodeTypes", "NodeTypeDescription", parseNodeTypeDescription); parseContentFilter(subtree, tvb, pOffset, "Filter"); parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxDataSetsToReturn); parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxReferencesToReturn); @@ -493,12 +493,12 @@ void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfQueryDataSets */ - parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", parseQueryDataSet); + parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet); parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); /* Array length field ignored: NoOfParsingResults */ - parseArrayComplex(subtree, tvb, pOffset, "ParsingResults", parseParsingResult); + parseArrayComplex(subtree, tvb, pOffset, "ParsingResults", "ParsingResult", parseParsingResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); parseContentFilterResult(subtree, tvb, pOffset, "FilterResult"); proto_item_set_end(ti, tvb, *pOffset); } @@ -521,7 +521,7 @@ void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfQueryDataSets */ - parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", parseQueryDataSet); + parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet); parseByteString(subtree, tvb, pOffset, hf_opcua_RevisedContinuationPoint); proto_item_set_end(ti, tvb, *pOffset); } @@ -535,7 +535,7 @@ void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseDouble(subtree, tvb, pOffset, hf_opcua_MaxAge); parseTimestampsToReturn(subtree, tvb, pOffset); /* Array length field ignored: NoOfNodesToRead */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", parseReadValueId); + parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", "ReadValueId", parseReadValueId); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_ReadResponse = -1; @@ -546,9 +546,9 @@ void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseDataValue); + parseArrayComplex(subtree, tvb, pOffset, "Results", "DataValue", parseDataValue); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_HistoryReadRequest = -1; @@ -562,7 +562,7 @@ void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseTimestampsToReturn(subtree, tvb, pOffset); parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoints); /* Array length field ignored: NoOfNodesToRead */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", parseHistoryReadValueId); + parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", "HistoryReadValueId", parseHistoryReadValueId); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_HistoryReadResponse = -1; @@ -573,9 +573,9 @@ void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseHistoryReadResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "HistoryReadResult", parseHistoryReadResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_WriteRequest = -1; @@ -586,7 +586,7 @@ void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToWrite */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToWrite", parseWriteValue); + parseArrayComplex(subtree, tvb, pOffset, "NodesToWrite", "WriteValue", parseWriteValue); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_WriteResponse = -1; @@ -597,9 +597,9 @@ void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_HistoryUpdateRequest = -1; @@ -610,7 +610,7 @@ void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfHistoryUpdateDetails */ - parseArrayComplex(subtree, tvb, pOffset, "HistoryUpdateDetails", parseExtensionObject); + parseArrayComplex(subtree, tvb, pOffset, "HistoryUpdateDetails", "ExtensionObject", parseExtensionObject); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_HistoryUpdateResponse = -1; @@ -621,9 +621,9 @@ void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseHistoryUpdateResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "HistoryUpdateResult", parseHistoryUpdateResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_CallRequest = -1; @@ -634,7 +634,7 @@ void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfMethodsToCall */ - parseArrayComplex(subtree, tvb, pOffset, "MethodsToCall", parseCallMethodRequest); + parseArrayComplex(subtree, tvb, pOffset, "MethodsToCall", "CallMethodRequest", parseCallMethodRequest); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_CallResponse = -1; @@ -645,9 +645,9 @@ void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseCallMethodResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "CallMethodResult", parseCallMethodResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_CreateMonitoredItemsRequest = -1; @@ -660,7 +660,7 @@ void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseTimestampsToReturn(subtree, tvb, pOffset); /* Array length field ignored: NoOfItemsToCreate */ - parseArrayComplex(subtree, tvb, pOffset, "ItemsToCreate", parseMonitoredItemCreateRequest); + parseArrayComplex(subtree, tvb, pOffset, "ItemsToCreate", "MonitoredItemCreateRequest", parseMonitoredItemCreateRequest); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_CreateMonitoredItemsResponse = -1; @@ -671,9 +671,9 @@ void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pO parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseMonitoredItemCreateResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "MonitoredItemCreateResult", parseMonitoredItemCreateResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_ModifyMonitoredItemsRequest = -1; @@ -686,7 +686,7 @@ void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseTimestampsToReturn(subtree, tvb, pOffset); /* Array length field ignored: NoOfItemsToModify */ - parseArrayComplex(subtree, tvb, pOffset, "ItemsToModify", parseMonitoredItemModifyRequest); + parseArrayComplex(subtree, tvb, pOffset, "ItemsToModify", "MonitoredItemModifyRequest", parseMonitoredItemModifyRequest); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_ModifyMonitoredItemsResponse = -1; @@ -697,9 +697,9 @@ void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pO parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseMonitoredItemModifyResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "MonitoredItemModifyResult", parseMonitoredItemModifyResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_SetMonitoringModeRequest = -1; @@ -712,7 +712,7 @@ void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffse parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseMonitoringMode(subtree, tvb, pOffset); /* Array length field ignored: NoOfMonitoredItemIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_MonitoredItemIds, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_SetMonitoringModeResponse = -1; @@ -723,9 +723,9 @@ void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffs parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_SetTriggeringRequest = -1; @@ -738,9 +738,9 @@ void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseUInt32(subtree, tvb, pOffset, hf_opcua_TriggeringItemId); /* Array length field ignored: NoOfLinksToAdd */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_LinksToAdd, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "LinksToAdd", "UInt32", hf_opcua_LinksToAdd, parseUInt32); /* Array length field ignored: NoOfLinksToRemove */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_LinksToRemove, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "LinksToRemove", "UInt32", hf_opcua_LinksToRemove, parseUInt32); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_SetTriggeringResponse = -1; @@ -751,13 +751,13 @@ void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfAddResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_AddResults, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "AddResults", "StatusCode", hf_opcua_AddResults, parseStatusCode); /* Array length field ignored: NoOfAddDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "AddDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "AddDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); /* Array length field ignored: NoOfRemoveResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_RemoveResults, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "RemoveResults", "StatusCode", hf_opcua_RemoveResults, parseStatusCode); /* Array length field ignored: NoOfRemoveDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "RemoveDiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "RemoveDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteMonitoredItemsRequest = -1; @@ -769,7 +769,7 @@ void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); /* Array length field ignored: NoOfMonitoredItemIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_MonitoredItemIds, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteMonitoredItemsResponse = -1; @@ -780,9 +780,9 @@ void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pO parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_CreateSubscriptionRequest = -1; @@ -849,7 +849,7 @@ void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffse parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled); /* Array length field ignored: NoOfSubscriptionIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_SubscriptionIds, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_SetPublishingModeResponse = -1; @@ -860,9 +860,9 @@ void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffs parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_PublishRequest = -1; @@ -873,7 +873,7 @@ void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfSubscriptionAcknowledgements */ - parseArrayComplex(subtree, tvb, pOffset, "SubscriptionAcknowledgements", parseSubscriptionAcknowledgement); + parseArrayComplex(subtree, tvb, pOffset, "SubscriptionAcknowledgements", "SubscriptionAcknowledgement", parseSubscriptionAcknowledgement); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_PublishResponse = -1; @@ -885,13 +885,13 @@ void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); /* Array length field ignored: NoOfAvailableSequenceNumbers */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbers, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32); parseBoolean(subtree, tvb, pOffset, hf_opcua_MoreNotifications); parseNotificationMessage(subtree, tvb, pOffset, "NotificationMessage"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_RepublishRequest = -1; @@ -923,7 +923,7 @@ void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pO parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfSubscriptionIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_SubscriptionIds, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32); parseBoolean(subtree, tvb, pOffset, hf_opcua_SendInitialValues); proto_item_set_end(ti, tvb, *pOffset); } @@ -935,9 +935,9 @@ void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *p parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", parseTransferResult); + parseArrayComplex(subtree, tvb, pOffset, "Results", "TransferResult", parseTransferResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteSubscriptionsRequest = -1; @@ -948,7 +948,7 @@ void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOff parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); /* Array length field ignored: NoOfSubscriptionIds */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_SubscriptionIds, parseUInt32); + parseArraySimple(subtree, tvb, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_DeleteSubscriptionsResponse = -1; @@ -959,9 +959,9 @@ void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } gint ett_opcua_TestStackRequest = -1; diff --git a/plugins/opcua/opcua_simpletypes.c b/plugins/opcua/opcua_simpletypes.c index b9fcd38f42..24600f5223 100644 --- a/plugins/opcua/opcua_simpletypes.c +++ b/plugins/opcua/opcua_simpletypes.c @@ -382,53 +382,72 @@ void registerSimpleTypes(int proto) proto_register_subtree_array(ett, array_length(ett)); } -void parseBoolean(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseBoolean(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); *pOffset+=1; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); + *pOffset+=1; + return item; } -void parseByte(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseByte(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); *pOffset+=1; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); + *pOffset+=1; + return item; } -void parseSByte(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseSByte(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); *pOffset+=1; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); + *pOffset+=1; + return item; } -void parseUInt16(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseUInt16(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 2, ENC_LITTLE_ENDIAN); *pOffset+=2; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 2, ENC_LITTLE_ENDIAN); + *pOffset+=2; + return item; } -void parseInt16(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseInt16(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 2, ENC_LITTLE_ENDIAN); *pOffset+=2; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 2, ENC_LITTLE_ENDIAN); + *pOffset+=2; + return item; } -void parseUInt32(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseUInt32(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); + *pOffset+=4; + return item; } -void parseInt32(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseInt32(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); + *pOffset+=4; + return item; } -void parseUInt64(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseUInt64(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 8, ENC_LITTLE_ENDIAN); *pOffset+=8; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 8, ENC_LITTLE_ENDIAN); + *pOffset+=8; + return item; } -void parseInt64(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseInt64(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 8, ENC_LITTLE_ENDIAN); *pOffset+=8; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 8, ENC_LITTLE_ENDIAN); + *pOffset+=8; + return item; } -void parseString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { + proto_item *item = NULL; char *szValue; gint iOffset = *pOffset; gint32 iLen = tvb_get_letohl(tvb, *pOffset); @@ -436,33 +455,34 @@ void parseString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) if (iLen == -1) { - proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); proto_item_append_text(item, "[OpcUa Null String]"); proto_item_set_end(item, tvb, *pOffset + 4); } else if (iLen == 0) { - proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); proto_item_append_text(item, "[OpcUa Empty String]"); proto_item_set_end(item, tvb, *pOffset + 4); } else if (iLen > 0) { - proto_tree_add_item(tree, hfIndex, tvb, iOffset, iLen, ENC_UTF_8|ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, iOffset, iLen, ENC_UTF_8|ENC_NA); iOffset += iLen; /* eat the whole string */ } else { - proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); szValue = wmem_strdup_printf(wmem_packet_scope(), "[Invalid String] Invalid length: %d", iLen); proto_item_append_text(item, "%s", szValue); proto_item_set_end(item, tvb, *pOffset + 4); } *pOffset = iOffset; + return item; } -void parseStatusCode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseStatusCode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { proto_item *item = NULL; guint32 uStatusCode = 0; @@ -509,6 +529,7 @@ void parseStatusCode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex } *pOffset += 4; + return item; } void parseLocalizedText(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) @@ -545,13 +566,16 @@ void parseLocalizedText(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch *pOffset = iOffset; } -void parseGuid(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseGuid(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, GUID_LEN, ENC_NA); *pOffset+=GUID_LEN; + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, GUID_LEN, ENC_NA); + *pOffset+=GUID_LEN; + return item; } -void parseByteString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseByteString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { + proto_item *item = NULL; char *szValue; int iOffset = *pOffset; gint32 iLen = tvb_get_letohl(tvb, iOffset); @@ -559,52 +583,57 @@ void parseByteString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex if (iLen == -1) { - proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); proto_item_append_text(item, "[OpcUa Null ByteString]"); proto_item_set_end(item, tvb, *pOffset + 4); } else if (iLen == 0) { - proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); proto_item_append_text(item, "[OpcUa Empty ByteString]"); proto_item_set_end(item, tvb, *pOffset + 4); } else if (iLen > 0) { - proto_tree_add_item(tree, hfIndex, tvb, iOffset, iLen, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, iOffset, iLen, ENC_NA); iOffset += iLen; /* eat the whole bytestring */ } else { - proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); + item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 0, ENC_NA); szValue = wmem_strdup_printf(wmem_packet_scope(), "[Invalid ByteString] Invalid length: %d", iLen); proto_item_append_text(item, "%s", szValue); proto_item_set_end(item, tvb, *pOffset + 4); } *pOffset = iOffset; + return item; } -void parseXmlElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseXmlElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - parseByteString(tree, tvb, pOffset, hfIndex); + return parseByteString(tree, tvb, pOffset, hfIndex); } -void parseFloat(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseFloat(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, (int)sizeof(gfloat), ENC_LITTLE_ENDIAN); - *pOffset += (int)sizeof(gfloat); + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, (int)sizeof(gfloat), ENC_LITTLE_ENDIAN); + *pOffset += (int)sizeof(gfloat); + return item; } -void parseDouble(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseDouble(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - proto_tree_add_item(tree, hfIndex, tvb, *pOffset, (int)sizeof(gdouble), ENC_LITTLE_ENDIAN); - *pOffset += (int)sizeof(gdouble); + proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, (int)sizeof(gdouble), ENC_LITTLE_ENDIAN); + *pOffset += (int)sizeof(gdouble); + return item; } -void parseDateTime(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseDateTime(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) { - *pOffset = dissect_nt_64bit_time(tvb, tree, *pOffset, hfIndex); + proto_item *item = NULL; + *pOffset = dissect_nt_64bit_time_ex(tvb, tree, *pOffset, hfIndex, &item); + return item; } void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) @@ -738,31 +767,31 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *sz switch(EncodingMask & 0x3f) { case OpcUaType_Null: break; - case OpcUaType_Boolean: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Boolean, parseBoolean); break; - case OpcUaType_SByte: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_SByte, parseSByte); break; - case OpcUaType_Byte: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Byte, parseByte); break; - case OpcUaType_Int16: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Int16, parseInt16); break; - case OpcUaType_UInt16: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_UInt16, parseUInt16); break; - case OpcUaType_Int32: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Int32, parseInt32); break; - case OpcUaType_UInt32: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_UInt32, parseUInt32); break; - case OpcUaType_Int64: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Int64, parseInt64); break; - case OpcUaType_UInt64: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_UInt64, parseUInt64); break; - case OpcUaType_Float: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Float, parseFloat); break; - case OpcUaType_Double: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Double, parseDouble); break; - case OpcUaType_String: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_String, parseString); break; - case OpcUaType_DateTime: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_DateTime, parseDateTime); break; - case OpcUaType_Guid: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_Guid, parseGuid); break; - case OpcUaType_ByteString: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_ByteString, parseByteString); break; - case OpcUaType_XmlElement: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_XmlElement, parseXmlElement); break; - case OpcUaType_NodeId: parseArrayComplex(subtree, tvb, &iOffset, "NodeId", parseNodeId); break; - case OpcUaType_ExpandedNodeId: parseArrayComplex(subtree, tvb, &iOffset, "ExpandedNodeId", parseExpandedNodeId); break; - case OpcUaType_StatusCode: parseArraySimple(subtree, tvb, &iOffset, hf_opcua_StatusCode, parseStatusCode); break; - case OpcUaType_DiagnosticInfo: parseArrayComplex(subtree, tvb, &iOffset, "DiagnosticInfo", parseDiagnosticInfo); break; - case OpcUaType_QualifiedName: parseArrayComplex(subtree, tvb, &iOffset, "QualifiedName", parseQualifiedName); break; - case OpcUaType_LocalizedText: parseArrayComplex(subtree, tvb, &iOffset, "LocalizedText", parseLocalizedText); break; - case OpcUaType_ExtensionObject: parseArrayComplex(subtree, tvb, &iOffset, "ExtensionObject", parseExtensionObject); break; - case OpcUaType_DataValue: parseArrayComplex(subtree, tvb, &iOffset, "DataValue", parseDataValue); break; - case OpcUaType_Variant: parseArrayComplex(subtree, tvb, &iOffset, "Variant", parseVariant); break; + case OpcUaType_Boolean: parseArraySimple(subtree, tvb, &iOffset, "Boolean", "Boolean", hf_opcua_Boolean, parseBoolean); break; + case OpcUaType_SByte: parseArraySimple(subtree, tvb, &iOffset, "SByte", "SByte", hf_opcua_SByte, parseSByte); break; + case OpcUaType_Byte: parseArraySimple(subtree, tvb, &iOffset, "Byte", "Byte", hf_opcua_Byte, parseByte); break; + case OpcUaType_Int16: parseArraySimple(subtree, tvb, &iOffset, "Int16", "Int16", hf_opcua_Int16, parseInt16); break; + case OpcUaType_UInt16: parseArraySimple(subtree, tvb, &iOffset, "UInt16", "UInt16", hf_opcua_UInt16, parseUInt16); break; + case OpcUaType_Int32: parseArraySimple(subtree, tvb, &iOffset, "Int32", "Int32", hf_opcua_Int32, parseInt32); break; + case OpcUaType_UInt32: parseArraySimple(subtree, tvb, &iOffset, "UInt32", "UInt32", hf_opcua_UInt32, parseUInt32); break; + case OpcUaType_Int64: parseArraySimple(subtree, tvb, &iOffset, "Int64", "Int64", hf_opcua_Int64, parseInt64); break; + case OpcUaType_UInt64: parseArraySimple(subtree, tvb, &iOffset, "UInt64", "UInt64", hf_opcua_UInt64, parseUInt64); break; + case OpcUaType_Float: parseArraySimple(subtree, tvb, &iOffset, "Float", "Float", hf_opcua_Float, parseFloat); break; + case OpcUaType_Double: parseArraySimple(subtree, tvb, &iOffset, "Double", "Double", hf_opcua_Double, parseDouble); break; + case OpcUaType_String: parseArraySimple(subtree, tvb, &iOffset, "String", "String", hf_opcua_String, parseString); break; + case OpcUaType_DateTime: parseArraySimple(subtree, tvb, &iOffset, "DateTime", "DateTime", hf_opcua_DateTime, parseDateTime); break; + case OpcUaType_Guid: parseArraySimple(subtree, tvb, &iOffset, "Guid", "Guid", hf_opcua_Guid, parseGuid); break; + case OpcUaType_ByteString: parseArraySimple(subtree, tvb, &iOffset, "ByteString", "ByteString", hf_opcua_ByteString, parseByteString); break; + case OpcUaType_XmlElement: parseArraySimple(subtree, tvb, &iOffset, "XmlElement", "XmlElement", hf_opcua_XmlElement, parseXmlElement); break; + case OpcUaType_NodeId: parseArrayComplex(subtree, tvb, &iOffset, "NodeId", "NodeId", parseNodeId); break; + case OpcUaType_ExpandedNodeId: parseArrayComplex(subtree, tvb, &iOffset, "ExpandedNodeId", "ExpandedNodeId", parseExpandedNodeId); break; + case OpcUaType_StatusCode: parseArraySimple(subtree, tvb, &iOffset, "StatusCode", "StatusCode", hf_opcua_StatusCode, parseStatusCode); break; + case OpcUaType_DiagnosticInfo: parseArrayComplex(subtree, tvb, &iOffset, "DiagnosticInfo", "DiagnosticInfo", parseDiagnosticInfo); break; + case OpcUaType_QualifiedName: parseArrayComplex(subtree, tvb, &iOffset, "QualifiedName", "QualifiedName", parseQualifiedName); break; + case OpcUaType_LocalizedText: parseArrayComplex(subtree, tvb, &iOffset, "LocalizedText", "LocalizedText", parseLocalizedText); break; + case OpcUaType_ExtensionObject: parseArrayComplex(subtree, tvb, &iOffset, "ExtensionObject", "ExtensionObject", parseExtensionObject); break; + case OpcUaType_DataValue: parseArrayComplex(subtree, tvb, &iOffset, "DataValue", "DataValue", parseDataValue); break; + case OpcUaType_Variant: parseArrayComplex(subtree, tvb, &iOffset, "Variant", "Variant", parseVariant); break; } if (EncodingMask & VARIANT_ARRAYDIMENSIONS) @@ -833,10 +862,9 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *sz * All arrays have one 4 byte signed integer length information, * followed by n data elements. */ -void parseArraySimple(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex, fctSimpleTypeParser pParserFunction) +void parseArraySimple(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName, const char *szTypeName, int hfIndex, fctSimpleTypeParser pParserFunction) { - static const char szFieldName[] = "Array of Simple Type"; - proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s", szFieldName); + proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s: Array of %s", szFieldName, szTypeName); proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_array); int i; gint32 iLen; @@ -856,7 +884,11 @@ void parseArraySimple(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfInde *pOffset += 4; for (i=0; i