From e5bbfa0f1516c74b4fc81651be94405bcb4be0b9 Mon Sep 17 00:00:00 2001 From: Hannes Mezger Date: Thu, 16 Oct 2014 19:06:31 +0200 Subject: Add argument 'packet_info *pinfo' to all dissecting functions Change-Id: Ie02326e365ee3f620fcbe3f2e8e45dc5300d3418 Reviewed-on: https://code.wireshark.org/review/4728 Petri-Dish: Alexis La Goutte Tested-by: Petri Dish Buildbot Reviewed-by: Michael Mann --- plugins/opcua/opcua.c | 6 +- plugins/opcua/opcua_complextypeparser.c | 1672 ++++++++++++++-------------- plugins/opcua/opcua_complextypeparser.h | 272 ++--- plugins/opcua/opcua_enumparser.c | 54 +- plugins/opcua/opcua_enumparser.h | 54 +- plugins/opcua/opcua_extensionobjecttable.c | 11 +- plugins/opcua/opcua_identifiers.h | 8 +- plugins/opcua/opcua_serviceparser.c | 678 +++++------ plugins/opcua/opcua_serviceparser.h | 160 +-- plugins/opcua/opcua_servicetable.c | 8 +- plugins/opcua/opcua_servicetable.h | 2 +- plugins/opcua/opcua_simpletypes.c | 220 ++-- plugins/opcua/opcua_simpletypes.h | 58 +- plugins/opcua/opcua_transport_layer.c | 30 +- plugins/opcua/opcua_transport_layer.h | 14 +- 15 files changed, 1624 insertions(+), 1623 deletions(-) (limited to 'plugins') diff --git a/plugins/opcua/opcua.c b/plugins/opcua/opcua.c index a61623b031..2b7f5615a8 100644 --- a/plugins/opcua/opcua.c +++ b/plugins/opcua/opcua.c @@ -43,7 +43,7 @@ extern const int g_NumServices; /* forward reference */ void proto_reg_handoff_opcua(void); /* declare parse function pointer */ -typedef int (*FctParse)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); +typedef int (*FctParse)(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); static int proto_opcua = -1; static dissector_handle_t opcua_handle; @@ -317,7 +317,7 @@ static int dissect_opcua_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree * offset = 0; /* call the transport message dissector */ - iServiceId = (*pfctParse)(transport_tree, tvb, &offset); + iServiceId = (*pfctParse)(transport_tree, tvb, pinfo, &offset); /* parse the service if not chunked or last chunk */ if (msgtype == MSG_MESSAGE && bParseService) @@ -326,7 +326,7 @@ static int dissect_opcua_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree * { offset = 0; } - iServiceId = parseService(transport_tree, next_tvb, &offset); + iServiceId = parseService(transport_tree, next_tvb, pinfo, &offset); } /* display the service type in addition to the message type */ diff --git a/plugins/opcua/opcua_complextypeparser.c b/plugins/opcua/opcua_complextypeparser.c index adb0f52152..b7cd1edf05 100644 --- a/plugins/opcua/opcua_complextypeparser.c +++ b/plugins/opcua/opcua_complextypeparser.c @@ -299,1605 +299,1605 @@ gint ett_opcua_array_ProgramDiagnosticDataType = -1; gint ett_opcua_Annotation = -1; gint ett_opcua_array_Annotation = -1; -void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Node, &ti, "%s: Node", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); proto_item_set_end(ti, tvb, *pOffset); } -void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_InstanceNode, &ti, "%s: InstanceNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); proto_item_set_end(ti, tvb, *pOffset); } -void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TypeNode, &ti, "%s: TypeNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); proto_item_set_end(ti, tvb, *pOffset); } -void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectNode, &ti, "%s: ObjectNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); proto_item_set_end(ti, tvb, *pOffset); } -void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectTypeNode, &ti, "%s: ObjectTypeNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); proto_item_set_end(ti, tvb, *pOffset); } -void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableNode, &ti, "%s: VariableNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseVariant(subtree, tvb, pOffset, "Value"); - parseNodeId(subtree, tvb, pOffset, "DataType"); - parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseVariant(subtree, tvb, pinfo, pOffset, "Value"); + parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); /* Array length field ignored: NoOfArrayDimensions */ - parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); - parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel); - parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel); - parseDouble(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_AccessLevel); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_UserAccessLevel); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MinimumSamplingInterval); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Historizing); proto_item_set_end(ti, tvb, *pOffset); } -void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableTypeNode, &ti, "%s: VariableTypeNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseVariant(subtree, tvb, pOffset, "Value"); - parseNodeId(subtree, tvb, pOffset, "DataType"); - parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseVariant(subtree, tvb, pinfo, pOffset, "Value"); + parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); /* Array length field ignored: NoOfArrayDimensions */ - parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); proto_item_set_end(ti, tvb, *pOffset); } -void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceTypeNode, &ti, "%s: ReferenceTypeNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric); - parseLocalizedText(subtree, tvb, pOffset, "InverseName"); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Symmetric); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "InverseName"); proto_item_set_end(ti, tvb, *pOffset); } -void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MethodNode, &ti, "%s: MethodNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable); - parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Executable); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UserExecutable); proto_item_set_end(ti, tvb, *pOffset); } -void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseViewNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewNode, &ti, "%s: ViewNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops); - parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ContainsNoLoops); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); proto_item_set_end(ti, tvb, *pOffset); } -void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataTypeNode, &ti, "%s: DataTypeNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeClass(subtree, tvb, pOffset); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); proto_item_set_end(ti, tvb, *pOffset); } -void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceNode, &ti, "%s: ReferenceNode", szFieldName); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse); - parseExpandedNodeId(subtree, tvb, pOffset, "TargetId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsInverse); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetId"); proto_item_set_end(ti, tvb, *pOffset); } -void parseArgument(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseArgument(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Argument, &ti, "%s: Argument", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_Name); - parseNodeId(subtree, tvb, pOffset, "DataType"); - parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Name); + parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); /* Array length field ignored: NoOfArrayDimensions */ - parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); - parseLocalizedText(subtree, tvb, pOffset, "Description"); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); proto_item_set_end(ti, tvb, *pOffset); } -void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EnumValueType, &ti, "%s: EnumValueType", szFieldName); - parseInt64(subtree, tvb, pOffset, hf_opcua_Value); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); + parseInt64(subtree, tvb, pinfo, pOffset, hf_opcua_Value); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); proto_item_set_end(ti, tvb, *pOffset); } -void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TimeZoneDataType, &ti, "%s: TimeZoneDataType", szFieldName); - parseInt16(subtree, tvb, pOffset, hf_opcua_Offset); - parseBoolean(subtree, tvb, pOffset, hf_opcua_DaylightSavingInOffset); + parseInt16(subtree, tvb, pinfo, pOffset, hf_opcua_Offset); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DaylightSavingInOffset); proto_item_set_end(ti, tvb, *pOffset); } -void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ApplicationDescription, &ti, "%s: ApplicationDescription", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_ApplicationUri); - parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); - parseLocalizedText(subtree, tvb, pOffset, "ApplicationName"); - parseApplicationType(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_GatewayServerUri); - parseString(subtree, tvb, pOffset, hf_opcua_DiscoveryProfileUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ApplicationUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "ApplicationName"); + parseApplicationType(subtree, tvb, pinfo, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_GatewayServerUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_DiscoveryProfileUri); /* Array length field ignored: NoOfDiscoveryUrls */ - parseArraySimple(subtree, tvb, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String); proto_item_set_end(ti, tvb, *pOffset); } -void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RequestHeader, &ti, "%s: RequestHeader", szFieldName); - parseNodeId(subtree, tvb, pOffset, "AuthenticationToken"); - parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestHandle); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ReturnDiagnostics); - parseString(subtree, tvb, pOffset, hf_opcua_AuditEntryId); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TimeoutHint); - parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader"); + parseNodeId(subtree, tvb, pinfo, pOffset, "AuthenticationToken"); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ReturnDiagnostics); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_AuditEntryId); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TimeoutHint); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "AdditionalHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ResponseHeader, &ti, "%s: ResponseHeader", szFieldName); - 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"); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_ServiceResult); + parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "ServiceDiagnostics"); /* Array length field ignored: NoOfStringTable */ - parseArraySimple(subtree, tvb, pOffset, "StringTable", "String", hf_opcua_StringTable, parseString, ett_opcua_array_String); - parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader"); + parseArraySimple(subtree, tvb, pinfo, pOffset, "StringTable", "String", hf_opcua_StringTable, parseString, ett_opcua_array_String); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "AdditionalHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserTokenPolicy, &ti, "%s: UserTokenPolicy", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); - parseUserTokenType(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_IssuedTokenType); - parseString(subtree, tvb, pOffset, hf_opcua_IssuerEndpointUrl); - parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); + parseUserTokenType(subtree, tvb, pinfo, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuedTokenType); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuerEndpointUrl); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri); proto_item_set_end(ti, tvb, *pOffset); } -void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointDescription, &ti, "%s: EndpointDescription", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); - parseApplicationDescription(subtree, tvb, pOffset, "Server"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate); - parseMessageSecurityMode(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); + parseApplicationDescription(subtree, tvb, pinfo, pOffset, "Server"); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerCertificate); + parseMessageSecurityMode(subtree, tvb, pinfo, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri); /* Array length field ignored: NoOfUserIdentityTokens */ - parseArrayComplex(subtree, tvb, pOffset, "UserIdentityTokens", "UserTokenPolicy", parseUserTokenPolicy, ett_opcua_array_UserTokenPolicy); - parseString(subtree, tvb, pOffset, hf_opcua_TransportProfileUri); - parseByte(subtree, tvb, pOffset, hf_opcua_SecurityLevel); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "UserIdentityTokens", "UserTokenPolicy", parseUserTokenPolicy, ett_opcua_array_UserTokenPolicy); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TransportProfileUri); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityLevel); proto_item_set_end(ti, tvb, *pOffset); } -void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RegisteredServer, &ti, "%s: RegisteredServer", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); - parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); /* Array length field ignored: NoOfServerNames */ - parseArrayComplex(subtree, tvb, pOffset, "ServerNames", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); - parseApplicationType(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_GatewayServerUri); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerNames", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); + parseApplicationType(subtree, tvb, pinfo, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_GatewayServerUri); /* Array length field ignored: NoOfDiscoveryUrls */ - parseArraySimple(subtree, tvb, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String); - parseString(subtree, tvb, pOffset, hf_opcua_SemaphoreFilePath); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsOnline); + parseArraySimple(subtree, tvb, pinfo, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SemaphoreFilePath); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsOnline); proto_item_set_end(ti, tvb, *pOffset); } -void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ChannelSecurityToken, &ti, "%s: ChannelSecurityToken", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ChannelId); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TokenId); - parseDateTime(subtree, tvb, pOffset, hf_opcua_CreatedAt); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetime); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ChannelId); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TokenId); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_CreatedAt); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetime); proto_item_set_end(ti, tvb, *pOffset); } -void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SignedSoftwareCertificate, &ti, "%s: SignedSoftwareCertificate", szFieldName); - parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData); - parseByteString(subtree, tvb, pOffset, hf_opcua_Signature); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_CertificateData); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Signature); proto_item_set_end(ti, tvb, *pOffset); } -void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SignatureData, &ti, "%s: SignatureData", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_Algorithm); - parseByteString(subtree, tvb, pOffset, hf_opcua_Signature); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Algorithm); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Signature); proto_item_set_end(ti, tvb, *pOffset); } -void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserIdentityToken, &ti, "%s: UserIdentityToken", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); proto_item_set_end(ti, tvb, *pOffset); } -void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AnonymousIdentityToken, &ti, "%s: AnonymousIdentityToken", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); proto_item_set_end(ti, tvb, *pOffset); } -void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserNameIdentityToken, &ti, "%s: UserNameIdentityToken", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); - parseString(subtree, tvb, pOffset, hf_opcua_UserName); - parseByteString(subtree, tvb, pOffset, hf_opcua_Password); - parseString(subtree, tvb, pOffset, hf_opcua_EncryptionAlgorithm); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Password); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EncryptionAlgorithm); proto_item_set_end(ti, tvb, *pOffset); } -void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_X509IdentityToken, &ti, "%s: X509IdentityToken", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); - parseByteString(subtree, tvb, pOffset, hf_opcua_CertificateData); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_CertificateData); proto_item_set_end(ti, tvb, *pOffset); } -void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_IssuedIdentityToken, &ti, "%s: IssuedIdentityToken", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_PolicyId); - parseByteString(subtree, tvb, pOffset, hf_opcua_TokenData); - parseString(subtree, tvb, pOffset, hf_opcua_EncryptionAlgorithm); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_TokenData); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EncryptionAlgorithm); proto_item_set_end(ti, tvb, *pOffset); } -void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeAttributes, &ti, "%s: NodeAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); proto_item_set_end(ti, tvb, *pOffset); } -void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectAttributes, &ti, "%s: ObjectAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); proto_item_set_end(ti, tvb, *pOffset); } -void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableAttributes, &ti, "%s: VariableAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseVariant(subtree, tvb, pOffset, "Value"); - parseNodeId(subtree, tvb, pOffset, "DataType"); - parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseVariant(subtree, tvb, pinfo, pOffset, "Value"); + parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); /* Array length field ignored: NoOfArrayDimensions */ - parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); - parseByte(subtree, tvb, pOffset, hf_opcua_AccessLevel); - parseByte(subtree, tvb, pOffset, hf_opcua_UserAccessLevel); - parseDouble(subtree, tvb, pOffset, hf_opcua_MinimumSamplingInterval); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Historizing); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_AccessLevel); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_UserAccessLevel); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MinimumSamplingInterval); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Historizing); proto_item_set_end(ti, tvb, *pOffset); } -void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MethodAttributes, &ti, "%s: MethodAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Executable); - parseBoolean(subtree, tvb, pOffset, hf_opcua_UserExecutable); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Executable); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UserExecutable); proto_item_set_end(ti, tvb, *pOffset); } -void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectTypeAttributes, &ti, "%s: ObjectTypeAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); proto_item_set_end(ti, tvb, *pOffset); } -void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableTypeAttributes, &ti, "%s: VariableTypeAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseVariant(subtree, tvb, pOffset, "Value"); - parseNodeId(subtree, tvb, pOffset, "DataType"); - parseInt32(subtree, tvb, pOffset, hf_opcua_ValueRank); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseVariant(subtree, tvb, pinfo, pOffset, "Value"); + parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); /* Array length field ignored: NoOfArrayDimensions */ - parseArraySimple(subtree, tvb, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); proto_item_set_end(ti, tvb, *pOffset); } -void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceTypeAttributes, &ti, "%s: ReferenceTypeAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Symmetric); - parseLocalizedText(subtree, tvb, pOffset, "InverseName"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Symmetric); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "InverseName"); proto_item_set_end(ti, tvb, *pOffset); } -void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataTypeAttributes, &ti, "%s: DataTypeAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsAbstract); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); proto_item_set_end(ti, tvb, *pOffset); } -void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewAttributes, &ti, "%s: ViewAttributes", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SpecifiedAttributes); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_WriteMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UserWriteMask); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ContainsNoLoops); - parseByte(subtree, tvb, pOffset, hf_opcua_EventNotifier); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ContainsNoLoops); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddNodesItem, &ti, "%s: AddNodesItem", szFieldName); - parseExpandedNodeId(subtree, tvb, pOffset, "ParentNodeId"); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseExpandedNodeId(subtree, tvb, pOffset, "RequestedNewNodeId"); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseNodeClass(subtree, tvb, pOffset); - parseExtensionObject(subtree, tvb, pOffset, "NodeAttributes"); - parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition"); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "ParentNodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "RequestedNewNodeId"); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "NodeAttributes"); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinition"); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddNodesResult, &ti, "%s: AddNodesResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseNodeId(subtree, tvb, pOffset, "AddedNodeId"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseNodeId(subtree, tvb, pinfo, pOffset, "AddedNodeId"); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesItem, &ti, "%s: AddReferencesItem", szFieldName); - parseNodeId(subtree, tvb, pOffset, "SourceNodeId"); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward); - parseString(subtree, tvb, pOffset, hf_opcua_TargetServerUri); - parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId"); - parseNodeClass(subtree, tvb, pOffset); + parseNodeId(subtree, tvb, pinfo, pOffset, "SourceNodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TargetServerUri); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetNodeId"); + parseNodeClass(subtree, tvb, pinfo, pOffset); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesItem, &ti, "%s: DeleteNodesItem", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteTargetReferences); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteTargetReferences); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesItem, &ti, "%s: DeleteReferencesItem", szFieldName); - parseNodeId(subtree, tvb, pOffset, "SourceNodeId"); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward); - parseExpandedNodeId(subtree, tvb, pOffset, "TargetNodeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteBidirectional); + parseNodeId(subtree, tvb, pinfo, pOffset, "SourceNodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetNodeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteBidirectional); proto_item_set_end(ti, tvb, *pOffset); } -void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewDescription, &ti, "%s: ViewDescription", szFieldName); - parseNodeId(subtree, tvb, pOffset, "ViewId"); - parseDateTime(subtree, tvb, pOffset, hf_opcua_Timestamp); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ViewVersion); + parseNodeId(subtree, tvb, pinfo, pOffset, "ViewId"); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ViewVersion); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowseDescription, &ti, "%s: BrowseDescription", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseBrowseDirection(subtree, tvb, pOffset); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubtypes); - parseUInt32(subtree, tvb, pOffset, hf_opcua_NodeClassMask); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ResultMask); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseBrowseDirection(subtree, tvb, pinfo, pOffset); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubtypes); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NodeClassMask); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ResultMask); proto_item_set_end(ti, tvb, *pOffset); } -void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceDescription, &ti, "%s: ReferenceDescription", szFieldName); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward); - parseExpandedNodeId(subtree, tvb, pOffset, "NodeId"); - parseQualifiedName(subtree, tvb, pOffset, "BrowseName"); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseNodeClass(subtree, tvb, pOffset); - parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinition"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseNodeClass(subtree, tvb, pinfo, pOffset); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinition"); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowseResult, &ti, "%s: BrowseResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); /* Array length field ignored: NoOfReferences */ - parseArrayComplex(subtree, tvb, pOffset, "References", "ReferenceDescription", parseReferenceDescription, ett_opcua_array_ReferenceDescription); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceDescription", parseReferenceDescription, ett_opcua_array_ReferenceDescription); proto_item_set_end(ti, tvb, *pOffset); } -void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RelativePathElement, &ti, "%s: RelativePathElement", szFieldName); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsInverse); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubtypes); - parseQualifiedName(subtree, tvb, pOffset, "TargetName"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsInverse); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubtypes); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "TargetName"); proto_item_set_end(ti, tvb, *pOffset); } -void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RelativePath, &ti, "%s: RelativePath", szFieldName); /* Array length field ignored: NoOfElements */ - parseArrayComplex(subtree, tvb, pOffset, "Elements", "RelativePathElement", parseRelativePathElement, ett_opcua_array_RelativePathElement); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Elements", "RelativePathElement", parseRelativePathElement, ett_opcua_array_RelativePathElement); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePath, &ti, "%s: BrowsePath", szFieldName); - parseNodeId(subtree, tvb, pOffset, "StartingNode"); - parseRelativePath(subtree, tvb, pOffset, "RelativePath"); + parseNodeId(subtree, tvb, pinfo, pOffset, "StartingNode"); + parseRelativePath(subtree, tvb, pinfo, pOffset, "RelativePath"); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePathTarget, &ti, "%s: BrowsePathTarget", szFieldName); - parseExpandedNodeId(subtree, tvb, pOffset, "TargetId"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RemainingPathIndex); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetId"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RemainingPathIndex); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePathResult, &ti, "%s: BrowsePathResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); /* Array length field ignored: NoOfTargets */ - parseArrayComplex(subtree, tvb, pOffset, "Targets", "BrowsePathTarget", parseBrowsePathTarget, ett_opcua_array_BrowsePathTarget); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Targets", "BrowsePathTarget", parseBrowsePathTarget, ett_opcua_array_BrowsePathTarget); proto_item_set_end(ti, tvb, *pOffset); } -void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointConfiguration, &ti, "%s: EndpointConfiguration", szFieldName); - parseInt32(subtree, tvb, pOffset, hf_opcua_OperationTimeout); - parseBoolean(subtree, tvb, pOffset, hf_opcua_UseBinaryEncoding); - parseInt32(subtree, tvb, pOffset, hf_opcua_MaxStringLength); - parseInt32(subtree, tvb, pOffset, hf_opcua_MaxByteStringLength); - parseInt32(subtree, tvb, pOffset, hf_opcua_MaxArrayLength); - parseInt32(subtree, tvb, pOffset, hf_opcua_MaxMessageSize); - parseInt32(subtree, tvb, pOffset, hf_opcua_MaxBufferSize); - parseInt32(subtree, tvb, pOffset, hf_opcua_ChannelLifetime); - parseInt32(subtree, tvb, pOffset, hf_opcua_SecurityTokenLifetime); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_OperationTimeout); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseBinaryEncoding); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxStringLength); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxByteStringLength); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxArrayLength); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxMessageSize); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxBufferSize); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ChannelLifetime); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityTokenLifetime); proto_item_set_end(ti, tvb, *pOffset); } -void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SupportedProfile, &ti, "%s: SupportedProfile", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_OrganizationUri); - parseString(subtree, tvb, pOffset, hf_opcua_ProfileId); - parseString(subtree, tvb, pOffset, hf_opcua_ComplianceTool); - parseDateTime(subtree, tvb, pOffset, hf_opcua_ComplianceDate); - parseComplianceLevel(subtree, tvb, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_OrganizationUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProfileId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ComplianceTool); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ComplianceDate); + parseComplianceLevel(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfUnsupportedUnitIds */ - parseArraySimple(subtree, tvb, pOffset, "UnsupportedUnitIds", "String", hf_opcua_UnsupportedUnitIds, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "UnsupportedUnitIds", "String", hf_opcua_UnsupportedUnitIds, parseString, ett_opcua_array_String); proto_item_set_end(ti, tvb, *pOffset); } -void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SoftwareCertificate, &ti, "%s: SoftwareCertificate", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_ProductName); - parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); - parseString(subtree, tvb, pOffset, hf_opcua_VendorName); - parseByteString(subtree, tvb, pOffset, hf_opcua_VendorProductCertificate); - parseString(subtree, tvb, pOffset, hf_opcua_SoftwareVersion); - parseString(subtree, tvb, pOffset, hf_opcua_BuildNumber); - parseDateTime(subtree, tvb, pOffset, hf_opcua_BuildDate); - parseString(subtree, tvb, pOffset, hf_opcua_IssuedBy); - parseDateTime(subtree, tvb, pOffset, hf_opcua_IssueDate); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductName); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_VendorName); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_VendorProductCertificate); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SoftwareVersion); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_BuildNumber); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_BuildDate); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuedBy); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_IssueDate); /* Array length field ignored: NoOfSupportedProfiles */ - parseArrayComplex(subtree, tvb, pOffset, "SupportedProfiles", "SupportedProfile", parseSupportedProfile, ett_opcua_array_SupportedProfile); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "SupportedProfiles", "SupportedProfile", parseSupportedProfile, ett_opcua_array_SupportedProfile); proto_item_set_end(ti, tvb, *pOffset); } -void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_QueryDataDescription, &ti, "%s: QueryDataDescription", szFieldName); - parseRelativePath(subtree, tvb, pOffset, "RelativePath"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); - parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); + parseRelativePath(subtree, tvb, pinfo, pOffset, "RelativePath"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_AttributeId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); proto_item_set_end(ti, tvb, *pOffset); } -void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeTypeDescription, &ti, "%s: NodeTypeDescription", szFieldName); - parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinitionNode"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubTypes); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionNode"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubTypes); /* Array length field ignored: NoOfDataToReturn */ - parseArrayComplex(subtree, tvb, pOffset, "DataToReturn", "QueryDataDescription", parseQueryDataDescription, ett_opcua_array_QueryDataDescription); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataToReturn", "QueryDataDescription", parseQueryDataDescription, ett_opcua_array_QueryDataDescription); proto_item_set_end(ti, tvb, *pOffset); } -void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_QueryDataSet, &ti, "%s: QueryDataSet", szFieldName); - parseExpandedNodeId(subtree, tvb, pOffset, "NodeId"); - parseExpandedNodeId(subtree, tvb, pOffset, "TypeDefinitionNode"); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionNode"); /* Array length field ignored: NoOfValues */ - parseArrayComplex(subtree, tvb, pOffset, "Values", "Variant", parseVariant, ett_opcua_array_Variant); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Values", "Variant", parseVariant, ett_opcua_array_Variant); proto_item_set_end(ti, tvb, *pOffset); } -void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeReference, &ti, "%s: NodeReference", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsForward); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); /* Array length field ignored: NoOfReferencedNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "ReferencedNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencedNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); proto_item_set_end(ti, tvb, *pOffset); } -void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterElement, &ti, "%s: ContentFilterElement", szFieldName); - parseFilterOperator(subtree, tvb, pOffset); + parseFilterOperator(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfFilterOperands */ - parseArrayComplex(subtree, tvb, pOffset, "FilterOperands", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "FilterOperands", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); proto_item_set_end(ti, tvb, *pOffset); } -void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilter, &ti, "%s: ContentFilter", szFieldName); /* Array length field ignored: NoOfElements */ - parseArrayComplex(subtree, tvb, pOffset, "Elements", "ContentFilterElement", parseContentFilterElement, ett_opcua_array_ContentFilterElement); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Elements", "ContentFilterElement", parseContentFilterElement, ett_opcua_array_ContentFilterElement); proto_item_set_end(ti, tvb, *pOffset); } -void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ElementOperand, &ti, "%s: ElementOperand", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_Index); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Index); proto_item_set_end(ti, tvb, *pOffset); } -void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_LiteralOperand, &ti, "%s: LiteralOperand", szFieldName); - parseVariant(subtree, tvb, pOffset, "Value"); + parseVariant(subtree, tvb, pinfo, pOffset, "Value"); proto_item_set_end(ti, tvb, *pOffset); } -void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AttributeOperand, &ti, "%s: AttributeOperand", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseString(subtree, tvb, pOffset, hf_opcua_Alias); - parseRelativePath(subtree, tvb, pOffset, "BrowsePath"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); - parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Alias); + parseRelativePath(subtree, tvb, pinfo, pOffset, "BrowsePath"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_AttributeId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); proto_item_set_end(ti, tvb, *pOffset); } -void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SimpleAttributeOperand, &ti, "%s: SimpleAttributeOperand", szFieldName); - parseNodeId(subtree, tvb, pOffset, "TypeDefinitionId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionId"); /* Array length field ignored: NoOfBrowsePath */ - parseArrayComplex(subtree, tvb, pOffset, "BrowsePath", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); - parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "BrowsePath", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_AttributeId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); proto_item_set_end(ti, tvb, *pOffset); } -void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterElementResult, &ti, "%s: ContentFilterElementResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); /* Array length field ignored: NoOfOperandStatusCodes */ - parseArraySimple(subtree, tvb, pOffset, "OperandStatusCodes", "StatusCode", hf_opcua_OperandStatusCodes, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "OperandStatusCodes", "StatusCode", hf_opcua_OperandStatusCodes, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfOperandDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "OperandDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "OperandDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterResult, &ti, "%s: ContentFilterResult", szFieldName); /* Array length field ignored: NoOfElementResults */ - parseArrayComplex(subtree, tvb, pOffset, "ElementResults", "ContentFilterElementResult", parseContentFilterElementResult, ett_opcua_array_ContentFilterElementResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ElementResults", "ContentFilterElementResult", parseContentFilterElementResult, ett_opcua_array_ContentFilterElementResult); /* Array length field ignored: NoOfElementDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "ElementDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ElementDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ParsingResult, &ti, "%s: ParsingResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); /* Array length field ignored: NoOfDataStatusCodes */ - parseArraySimple(subtree, tvb, pOffset, "DataStatusCodes", "StatusCode", hf_opcua_DataStatusCodes, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "DataStatusCodes", "StatusCode", hf_opcua_DataStatusCodes, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDataDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DataDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadValueId, &ti, "%s: ReadValueId", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); - parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); - parseQualifiedName(subtree, tvb, pOffset, "DataEncoding"); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_AttributeId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "DataEncoding"); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadValueId, &ti, "%s: HistoryReadValueId", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); - parseQualifiedName(subtree, tvb, pOffset, "DataEncoding"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "DataEncoding"); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadResult, &ti, "%s: HistoryReadResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); - parseExtensionObject(subtree, tvb, pOffset, "HistoryData"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "HistoryData"); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadEventDetails, &ti, "%s: ReadEventDetails", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_NumValuesPerNode); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime); - parseEventFilter(subtree, tvb, pOffset, "Filter"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NumValuesPerNode); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); + parseEventFilter(subtree, tvb, pinfo, pOffset, "Filter"); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadRawModifiedDetails, &ti, "%s: ReadRawModifiedDetails", szFieldName); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsReadModified); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime); - parseUInt32(subtree, tvb, pOffset, hf_opcua_NumValuesPerNode); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ReturnBounds); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsReadModified); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NumValuesPerNode); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReturnBounds); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadProcessedDetails, &ti, "%s: ReadProcessedDetails", szFieldName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime); - parseDouble(subtree, tvb, pOffset, hf_opcua_ProcessingInterval); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ProcessingInterval); /* Array length field ignored: NoOfAggregateType */ - parseArrayComplex(subtree, tvb, pOffset, "AggregateType", "NodeId", parseNodeId, ett_opcua_array_NodeId); - parseAggregateConfiguration(subtree, tvb, pOffset, "AggregateConfiguration"); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "AggregateType", "NodeId", parseNodeId, ett_opcua_array_NodeId); + parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "AggregateConfiguration"); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadAtTimeDetails, &ti, "%s: ReadAtTimeDetails", szFieldName); /* Array length field ignored: NoOfReqTimes */ - parseArraySimple(subtree, tvb, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime); - parseBoolean(subtree, tvb, pOffset, hf_opcua_UseSimpleBounds); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseSimpleBounds); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryData, &ti, "%s: HistoryData", szFieldName); /* Array length field ignored: NoOfDataValues */ - parseArrayComplex(subtree, tvb, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); proto_item_set_end(ti, tvb, *pOffset); } -void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ModificationInfo, &ti, "%s: ModificationInfo", szFieldName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_ModificationTime); - parseHistoryUpdateType(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_UserName); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ModificationTime); + parseHistoryUpdateType(subtree, tvb, pinfo, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryModifiedData, &ti, "%s: HistoryModifiedData", szFieldName); /* Array length field ignored: NoOfDataValues */ - parseArrayComplex(subtree, tvb, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); /* Array length field ignored: NoOfModificationInfos */ - parseArrayComplex(subtree, tvb, pOffset, "ModificationInfos", "ModificationInfo", parseModificationInfo, ett_opcua_array_ModificationInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ModificationInfos", "ModificationInfo", parseModificationInfo, ett_opcua_array_ModificationInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryEvent, &ti, "%s: HistoryEvent", szFieldName); /* Array length field ignored: NoOfEvents */ - parseArrayComplex(subtree, tvb, pOffset, "Events", "HistoryEventFieldList", parseHistoryEventFieldList, ett_opcua_array_HistoryEventFieldList); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Events", "HistoryEventFieldList", parseHistoryEventFieldList, ett_opcua_array_HistoryEventFieldList); proto_item_set_end(ti, tvb, *pOffset); } -void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_WriteValue, &ti, "%s: WriteValue", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_AttributeId); - parseString(subtree, tvb, pOffset, hf_opcua_IndexRange); - parseDataValue(subtree, tvb, pOffset, "Value"); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_AttributeId); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); + parseDataValue(subtree, tvb, pinfo, pOffset, "Value"); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateDetails, &ti, "%s: HistoryUpdateDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); proto_item_set_end(ti, tvb, *pOffset); } -void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateDataDetails, &ti, "%s: UpdateDataDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parsePerformUpdateType(subtree, tvb, pOffset); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parsePerformUpdateType(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfUpdateValues */ - parseArrayComplex(subtree, tvb, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); proto_item_set_end(ti, tvb, *pOffset); } -void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateStructureDataDetails, &ti, "%s: UpdateStructureDataDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parsePerformUpdateType(subtree, tvb, pOffset); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parsePerformUpdateType(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfUpdateValues */ - parseArrayComplex(subtree, tvb, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); proto_item_set_end(ti, tvb, *pOffset); } -void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateEventDetails, &ti, "%s: UpdateEventDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parsePerformUpdateType(subtree, tvb, pOffset); - parseEventFilter(subtree, tvb, pOffset, "Filter"); - parseHistoryEventFieldList(subtree, tvb, pOffset, "EventData"); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parsePerformUpdateType(subtree, tvb, pinfo, pOffset); + parseEventFilter(subtree, tvb, pinfo, pOffset, "Filter"); + parseHistoryEventFieldList(subtree, tvb, pinfo, pOffset, "EventData"); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteRawModifiedDetails, &ti, "%s: DeleteRawModifiedDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IsDeleteModified); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_EndTime); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsDeleteModified); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteAtTimeDetails, &ti, "%s: DeleteAtTimeDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); /* Array length field ignored: NoOfReqTimes */ - parseArraySimple(subtree, tvb, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteEventDetails, &ti, "%s: DeleteEventDetails", szFieldName); - parseNodeId(subtree, tvb, pOffset, "NodeId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); /* Array length field ignored: NoOfEventIds */ - parseArraySimple(subtree, tvb, pOffset, "EventIds", "ByteString", hf_opcua_EventIds, parseByteString, ett_opcua_array_ByteString); + parseArraySimple(subtree, tvb, pinfo, pOffset, "EventIds", "ByteString", hf_opcua_EventIds, parseByteString, ett_opcua_array_ByteString); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateResult, &ti, "%s: HistoryUpdateResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); /* Array length field ignored: NoOfOperationResults */ - parseArraySimple(subtree, tvb, pOffset, "OperationResults", "StatusCode", hf_opcua_OperationResults, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "OperationResults", "StatusCode", hf_opcua_OperationResults, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CallMethodRequest, &ti, "%s: CallMethodRequest", szFieldName); - parseNodeId(subtree, tvb, pOffset, "ObjectId"); - parseNodeId(subtree, tvb, pOffset, "MethodId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "ObjectId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "MethodId"); /* Array length field ignored: NoOfInputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "InputArguments", "Variant", parseVariant, ett_opcua_array_Variant); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "InputArguments", "Variant", parseVariant, ett_opcua_array_Variant); proto_item_set_end(ti, tvb, *pOffset); } -void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CallMethodResult, &ti, "%s: CallMethodResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); /* Array length field ignored: NoOfInputArgumentResults */ - parseArraySimple(subtree, tvb, pOffset, "InputArgumentResults", "StatusCode", hf_opcua_InputArgumentResults, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "InputArgumentResults", "StatusCode", hf_opcua_InputArgumentResults, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfInputArgumentDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "InputArgumentDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "InputArgumentDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); /* Array length field ignored: NoOfOutputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "OutputArguments", "Variant", parseVariant, ett_opcua_array_Variant); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "OutputArguments", "Variant", parseVariant, ett_opcua_array_Variant); proto_item_set_end(ti, tvb, *pOffset); } -void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataChangeFilter, &ti, "%s: DataChangeFilter", szFieldName); - parseDataChangeTrigger(subtree, tvb, pOffset); - parseUInt32(subtree, tvb, pOffset, hf_opcua_DeadbandType); - parseDouble(subtree, tvb, pOffset, hf_opcua_DeadbandValue); + parseDataChangeTrigger(subtree, tvb, pinfo, pOffset); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DeadbandType); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_DeadbandValue); proto_item_set_end(ti, tvb, *pOffset); } -void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFilter, &ti, "%s: EventFilter", szFieldName); /* Array length field ignored: NoOfSelectClauses */ - parseArrayComplex(subtree, tvb, pOffset, "SelectClauses", "SimpleAttributeOperand", parseSimpleAttributeOperand, ett_opcua_array_SimpleAttributeOperand); - parseContentFilter(subtree, tvb, pOffset, "WhereClause"); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "SelectClauses", "SimpleAttributeOperand", parseSimpleAttributeOperand, ett_opcua_array_SimpleAttributeOperand); + parseContentFilter(subtree, tvb, pinfo, pOffset, "WhereClause"); proto_item_set_end(ti, tvb, *pOffset); } -void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateConfiguration, &ti, "%s: AggregateConfiguration", szFieldName); - parseBoolean(subtree, tvb, pOffset, hf_opcua_UseServerCapabilitiesDefaults); - parseBoolean(subtree, tvb, pOffset, hf_opcua_TreatUncertainAsBad); - parseByte(subtree, tvb, pOffset, hf_opcua_PercentDataBad); - parseByte(subtree, tvb, pOffset, hf_opcua_PercentDataGood); - parseBoolean(subtree, tvb, pOffset, hf_opcua_UseSlopedExtrapolation); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseServerCapabilitiesDefaults); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_TreatUncertainAsBad); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_PercentDataBad); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_PercentDataGood); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseSlopedExtrapolation); proto_item_set_end(ti, tvb, *pOffset); } -void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateFilter, &ti, "%s: AggregateFilter", szFieldName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseNodeId(subtree, tvb, pOffset, "AggregateType"); - parseDouble(subtree, tvb, pOffset, hf_opcua_ProcessingInterval); - parseAggregateConfiguration(subtree, tvb, pOffset, "AggregateConfiguration"); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); + parseNodeId(subtree, tvb, pinfo, pOffset, "AggregateType"); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ProcessingInterval); + parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "AggregateConfiguration"); proto_item_set_end(ti, tvb, *pOffset); } -void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFilterResult, &ti, "%s: EventFilterResult", szFieldName); /* Array length field ignored: NoOfSelectClauseResults */ - parseArraySimple(subtree, tvb, pOffset, "SelectClauseResults", "StatusCode", hf_opcua_SelectClauseResults, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "SelectClauseResults", "StatusCode", hf_opcua_SelectClauseResults, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfSelectClauseDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "SelectClauseDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); - parseContentFilterResult(subtree, tvb, pOffset, "WhereClauseResult"); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "SelectClauseDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseContentFilterResult(subtree, tvb, pinfo, pOffset, "WhereClauseResult"); proto_item_set_end(ti, tvb, *pOffset); } -void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateFilterResult, &ti, "%s: AggregateFilterResult", szFieldName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_RevisedStartTime); - parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedProcessingInterval); - parseAggregateConfiguration(subtree, tvb, pOffset, "RevisedAggregateConfiguration"); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedStartTime); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedProcessingInterval); + parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "RevisedAggregateConfiguration"); proto_item_set_end(ti, tvb, *pOffset); } -void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoringParameters, &ti, "%s: MonitoringParameters", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); - parseDouble(subtree, tvb, pOffset, hf_opcua_SamplingInterval); - parseExtensionObject(subtree, tvb, pOffset, "Filter"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_QueueSize); - parseBoolean(subtree, tvb, pOffset, hf_opcua_DiscardOldest); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_SamplingInterval); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "Filter"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_QueueSize); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DiscardOldest); proto_item_set_end(ti, tvb, *pOffset); } -void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemCreateRequest, &ti, "%s: MonitoredItemCreateRequest", szFieldName); - parseReadValueId(subtree, tvb, pOffset, "ItemToMonitor"); - parseMonitoringMode(subtree, tvb, pOffset); - parseMonitoringParameters(subtree, tvb, pOffset, "RequestedParameters"); + parseReadValueId(subtree, tvb, pinfo, pOffset, "ItemToMonitor"); + parseMonitoringMode(subtree, tvb, pinfo, pOffset); + parseMonitoringParameters(subtree, tvb, pinfo, pOffset, "RequestedParameters"); proto_item_set_end(ti, tvb, *pOffset); } -void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemCreateResult, &ti, "%s: MonitoredItemCreateResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId); - parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize); - parseExtensionObject(subtree, tvb, pOffset, "FilterResult"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemId); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSamplingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedQueueSize); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "FilterResult"); proto_item_set_end(ti, tvb, *pOffset); } -void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemModifyRequest, &ti, "%s: MonitoredItemModifyRequest", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemId); - parseMonitoringParameters(subtree, tvb, pOffset, "RequestedParameters"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemId); + parseMonitoringParameters(subtree, tvb, pinfo, pOffset, "RequestedParameters"); proto_item_set_end(ti, tvb, *pOffset); } -void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemModifyResult, &ti, "%s: MonitoredItemModifyResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSamplingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedQueueSize); - parseExtensionObject(subtree, tvb, pOffset, "FilterResult"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSamplingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedQueueSize); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "FilterResult"); proto_item_set_end(ti, tvb, *pOffset); } -void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NotificationMessage, &ti, "%s: NotificationMessage", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber); - parseDateTime(subtree, tvb, pOffset, hf_opcua_PublishTime); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SequenceNumber); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_PublishTime); /* Array length field ignored: NoOfNotificationData */ - parseArrayComplex(subtree, tvb, pOffset, "NotificationData", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NotificationData", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); proto_item_set_end(ti, tvb, *pOffset); } -void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataChangeNotification, &ti, "%s: DataChangeNotification", szFieldName); /* Array length field ignored: NoOfMonitoredItems */ - parseArrayComplex(subtree, tvb, pOffset, "MonitoredItems", "MonitoredItemNotification", parseMonitoredItemNotification, ett_opcua_array_MonitoredItemNotification); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "MonitoredItems", "MonitoredItemNotification", parseMonitoredItemNotification, ett_opcua_array_MonitoredItemNotification); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemNotification, &ti, "%s: MonitoredItemNotification", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); - parseDataValue(subtree, tvb, pOffset, "Value"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle); + parseDataValue(subtree, tvb, pinfo, pOffset, "Value"); proto_item_set_end(ti, tvb, *pOffset); } -void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventNotificationList, &ti, "%s: EventNotificationList", szFieldName); /* Array length field ignored: NoOfEvents */ - parseArrayComplex(subtree, tvb, pOffset, "Events", "EventFieldList", parseEventFieldList, ett_opcua_array_EventFieldList); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Events", "EventFieldList", parseEventFieldList, ett_opcua_array_EventFieldList); proto_item_set_end(ti, tvb, *pOffset); } -void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFieldList, &ti, "%s: EventFieldList", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientHandle); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle); /* Array length field ignored: NoOfEventFields */ - parseArrayComplex(subtree, tvb, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryEventFieldList, &ti, "%s: HistoryEventFieldList", szFieldName); /* Array length field ignored: NoOfEventFields */ - parseArrayComplex(subtree, tvb, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant); proto_item_set_end(ti, tvb, *pOffset); } -void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_StatusChangeNotification, &ti, "%s: StatusChangeNotification", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_Status); - parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_Status); + parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo"); proto_item_set_end(ti, tvb, *pOffset); } -void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SubscriptionAcknowledgement, &ti, "%s: SubscriptionAcknowledgement", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SequenceNumber); proto_item_set_end(ti, tvb, *pOffset); } -void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TransferResult, &ti, "%s: TransferResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); /* Array length field ignored: NoOfAvailableSequenceNumbers */ - parseArraySimple(subtree, tvb, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32); proto_item_set_end(ti, tvb, *pOffset); } -void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ScalarTestType, &ti, "%s: ScalarTestType", szFieldName); - parseBoolean(subtree, tvb, pOffset, hf_opcua_Boolean); - parseSByte(subtree, tvb, pOffset, hf_opcua_SByte); - parseByte(subtree, tvb, pOffset, hf_opcua_Byte); - parseInt16(subtree, tvb, pOffset, hf_opcua_Int16); - parseUInt16(subtree, tvb, pOffset, hf_opcua_UInt16); - parseInt32(subtree, tvb, pOffset, hf_opcua_Int32); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UInt32); - parseInt64(subtree, tvb, pOffset, hf_opcua_Int64); - parseUInt64(subtree, tvb, pOffset, hf_opcua_UInt64); - parseFloat(subtree, tvb, pOffset, hf_opcua_Float); - parseDouble(subtree, tvb, pOffset, hf_opcua_Double); - parseString(subtree, tvb, pOffset, hf_opcua_String); - parseDateTime(subtree, tvb, pOffset, hf_opcua_DateTime); - parseGuid(subtree, tvb, pOffset, hf_opcua_Guid); - parseByteString(subtree, tvb, pOffset, hf_opcua_ByteString); - parseXmlElement(subtree, tvb, pOffset, hf_opcua_XmlElement); - parseNodeId(subtree, tvb, pOffset, "NodeId"); - parseExpandedNodeId(subtree, tvb, pOffset, "ExpandedNodeId"); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); - parseQualifiedName(subtree, tvb, pOffset, "QualifiedName"); - parseLocalizedText(subtree, tvb, pOffset, "LocalizedText"); - parseExtensionObject(subtree, tvb, pOffset, "ExtensionObject"); - parseDataValue(subtree, tvb, pOffset, "DataValue"); - parseEnumeratedTestType(subtree, tvb, pOffset); - proto_item_set_end(ti, tvb, *pOffset); -} -void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Boolean); + parseSByte(subtree, tvb, pinfo, pOffset, hf_opcua_SByte); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Byte); + parseInt16(subtree, tvb, pinfo, pOffset, hf_opcua_Int16); + parseUInt16(subtree, tvb, pinfo, pOffset, hf_opcua_UInt16); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Int32); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UInt32); + parseInt64(subtree, tvb, pinfo, pOffset, hf_opcua_Int64); + parseUInt64(subtree, tvb, pinfo, pOffset, hf_opcua_UInt64); + parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Float); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Double); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_String); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_DateTime); + parseGuid(subtree, tvb, pinfo, pOffset, hf_opcua_Guid); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ByteString); + parseXmlElement(subtree, tvb, pinfo, pOffset, hf_opcua_XmlElement); + parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); + parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "ExpandedNodeId"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo"); + parseQualifiedName(subtree, tvb, pinfo, pOffset, "QualifiedName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "LocalizedText"); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "ExtensionObject"); + parseDataValue(subtree, tvb, pinfo, pOffset, "DataValue"); + parseEnumeratedTestType(subtree, tvb, pinfo, pOffset); + proto_item_set_end(ti, tvb, *pOffset); +} +void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ArrayTestType, &ti, "%s: ArrayTestType", szFieldName); /* Array length field ignored: NoOfBooleans */ - parseArraySimple(subtree, tvb, pOffset, "Booleans", "Boolean", hf_opcua_Booleans, parseBoolean, ett_opcua_array_Boolean); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Booleans", "Boolean", hf_opcua_Booleans, parseBoolean, ett_opcua_array_Boolean); /* Array length field ignored: NoOfSBytes */ - parseArraySimple(subtree, tvb, pOffset, "SBytes", "SByte", hf_opcua_SBytes, parseSByte, ett_opcua_array_SByte); + parseArraySimple(subtree, tvb, pinfo, pOffset, "SBytes", "SByte", hf_opcua_SBytes, parseSByte, ett_opcua_array_SByte); /* Array length field ignored: NoOfInt16s */ - parseArraySimple(subtree, tvb, pOffset, "Int16s", "Int16", hf_opcua_Int16s, parseInt16, ett_opcua_array_Int16); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Int16s", "Int16", hf_opcua_Int16s, parseInt16, ett_opcua_array_Int16); /* Array length field ignored: NoOfUInt16s */ - parseArraySimple(subtree, tvb, pOffset, "UInt16s", "UInt16", hf_opcua_UInt16s, parseUInt16, ett_opcua_array_UInt16); + parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt16s", "UInt16", hf_opcua_UInt16s, parseUInt16, ett_opcua_array_UInt16); /* Array length field ignored: NoOfInt32s */ - parseArraySimple(subtree, tvb, pOffset, "Int32s", "Int32", hf_opcua_Int32s, parseInt32, ett_opcua_array_Int32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Int32s", "Int32", hf_opcua_Int32s, parseInt32, ett_opcua_array_Int32); /* Array length field ignored: NoOfUInt32s */ - parseArraySimple(subtree, tvb, pOffset, "UInt32s", "UInt32", hf_opcua_UInt32s, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt32s", "UInt32", hf_opcua_UInt32s, parseUInt32, ett_opcua_array_UInt32); /* Array length field ignored: NoOfInt64s */ - parseArraySimple(subtree, tvb, pOffset, "Int64s", "Int64", hf_opcua_Int64s, parseInt64, ett_opcua_array_Int64); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Int64s", "Int64", hf_opcua_Int64s, parseInt64, ett_opcua_array_Int64); /* Array length field ignored: NoOfUInt64s */ - parseArraySimple(subtree, tvb, pOffset, "UInt64s", "UInt64", hf_opcua_UInt64s, parseUInt64, ett_opcua_array_UInt64); + parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt64s", "UInt64", hf_opcua_UInt64s, parseUInt64, ett_opcua_array_UInt64); /* Array length field ignored: NoOfFloats */ - parseArraySimple(subtree, tvb, pOffset, "Floats", "Float", hf_opcua_Floats, parseFloat, ett_opcua_array_Float); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Floats", "Float", hf_opcua_Floats, parseFloat, ett_opcua_array_Float); /* Array length field ignored: NoOfDoubles */ - parseArraySimple(subtree, tvb, pOffset, "Doubles", "Double", hf_opcua_Doubles, parseDouble, ett_opcua_array_Double); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Doubles", "Double", hf_opcua_Doubles, parseDouble, ett_opcua_array_Double); /* Array length field ignored: NoOfStrings */ - parseArraySimple(subtree, tvb, pOffset, "Strings", "String", hf_opcua_Strings, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Strings", "String", hf_opcua_Strings, parseString, ett_opcua_array_String); /* Array length field ignored: NoOfDateTimes */ - parseArraySimple(subtree, tvb, pOffset, "DateTimes", "DateTime", hf_opcua_DateTimes, parseDateTime, ett_opcua_array_DateTime); + parseArraySimple(subtree, tvb, pinfo, pOffset, "DateTimes", "DateTime", hf_opcua_DateTimes, parseDateTime, ett_opcua_array_DateTime); /* Array length field ignored: NoOfGuids */ - parseArraySimple(subtree, tvb, pOffset, "Guids", "Guid", hf_opcua_Guids, parseGuid, ett_opcua_array_Guid); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Guids", "Guid", hf_opcua_Guids, parseGuid, ett_opcua_array_Guid); /* Array length field ignored: NoOfByteStrings */ - parseArraySimple(subtree, tvb, pOffset, "ByteStrings", "ByteString", hf_opcua_ByteStrings, parseByteString, ett_opcua_array_ByteString); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ByteStrings", "ByteString", hf_opcua_ByteStrings, parseByteString, ett_opcua_array_ByteString); /* Array length field ignored: NoOfXmlElements */ - parseArraySimple(subtree, tvb, pOffset, "XmlElements", "XmlElement", hf_opcua_XmlElements, parseXmlElement, ett_opcua_array_XmlElement); + parseArraySimple(subtree, tvb, pinfo, pOffset, "XmlElements", "XmlElement", hf_opcua_XmlElements, parseXmlElement, ett_opcua_array_XmlElement); /* Array length field ignored: NoOfNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "NodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); /* Array length field ignored: NoOfExpandedNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "ExpandedNodeIds", "ExpandedNodeId", parseExpandedNodeId, ett_opcua_array_ExpandedNodeId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ExpandedNodeIds", "ExpandedNodeId", parseExpandedNodeId, ett_opcua_array_ExpandedNodeId); /* Array length field ignored: NoOfStatusCodes */ - parseArraySimple(subtree, tvb, pOffset, "StatusCodes", "StatusCode", hf_opcua_StatusCodes, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "StatusCodes", "StatusCode", hf_opcua_StatusCodes, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); /* Array length field ignored: NoOfQualifiedNames */ - parseArrayComplex(subtree, tvb, pOffset, "QualifiedNames", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "QualifiedNames", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); /* Array length field ignored: NoOfLocalizedTexts */ - parseArrayComplex(subtree, tvb, pOffset, "LocalizedTexts", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "LocalizedTexts", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); /* Array length field ignored: NoOfExtensionObjects */ - parseArrayComplex(subtree, tvb, pOffset, "ExtensionObjects", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ExtensionObjects", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); /* Array length field ignored: NoOfDataValues */ - parseArrayComplex(subtree, tvb, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); /* Array length field ignored: NoOfVariants */ - parseArrayComplex(subtree, tvb, pOffset, "Variants", "Variant", parseVariant, ett_opcua_array_Variant); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Variants", "Variant", parseVariant, ett_opcua_array_Variant); /* Array length field ignored: NoOfEnumeratedValues */ - parseArrayEnum(subtree, tvb, pOffset, "EnumeratedValues", "EnumeratedTestType", parseEnumeratedTestType, ett_opcua_array_EnumeratedTestType); + parseArrayEnum(subtree, tvb, pinfo, pOffset, "EnumeratedValues", "EnumeratedTestType", parseEnumeratedTestType, ett_opcua_array_EnumeratedTestType); proto_item_set_end(ti, tvb, *pOffset); } -void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CompositeTestType, &ti, "%s: CompositeTestType", szFieldName); - parseScalarTestType(subtree, tvb, pOffset, "Field1"); - parseArrayTestType(subtree, tvb, pOffset, "Field2"); + parseScalarTestType(subtree, tvb, pinfo, pOffset, "Field1"); + parseArrayTestType(subtree, tvb, pinfo, pOffset, "Field2"); proto_item_set_end(ti, tvb, *pOffset); } -void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BuildInfo, &ti, "%s: BuildInfo", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_ProductUri); - parseString(subtree, tvb, pOffset, hf_opcua_ManufacturerName); - parseString(subtree, tvb, pOffset, hf_opcua_ProductName); - parseString(subtree, tvb, pOffset, hf_opcua_SoftwareVersion); - parseString(subtree, tvb, pOffset, hf_opcua_BuildNumber); - parseDateTime(subtree, tvb, pOffset, hf_opcua_BuildDate); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ManufacturerName); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductName); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SoftwareVersion); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_BuildNumber); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_BuildDate); proto_item_set_end(ti, tvb, *pOffset); } -void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RedundantServerDataType, &ti, "%s: RedundantServerDataType", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_ServerId); - parseByte(subtree, tvb, pOffset, hf_opcua_ServiceLevel); - parseServerState(subtree, tvb, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerId); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_ServiceLevel); + parseServerState(subtree, tvb, pinfo, pOffset); proto_item_set_end(ti, tvb, *pOffset); } -void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointUrlListDataType, &ti, "%s: EndpointUrlListDataType", szFieldName); /* Array length field ignored: NoOfEndpointUrlList */ - parseArraySimple(subtree, tvb, pOffset, "EndpointUrlList", "String", hf_opcua_EndpointUrlList, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "EndpointUrlList", "String", hf_opcua_EndpointUrlList, parseString, ett_opcua_array_String); proto_item_set_end(ti, tvb, *pOffset); } -void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NetworkGroupDataType, &ti, "%s: NetworkGroupDataType", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); /* Array length field ignored: NoOfNetworkPaths */ - parseArrayComplex(subtree, tvb, pOffset, "NetworkPaths", "EndpointUrlListDataType", parseEndpointUrlListDataType, ett_opcua_array_EndpointUrlListDataType); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NetworkPaths", "EndpointUrlListDataType", parseEndpointUrlListDataType, ett_opcua_array_EndpointUrlListDataType); proto_item_set_end(ti, tvb, *pOffset); } -void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SamplingIntervalDiagnosticsDataType, &ti, "%s: SamplingIntervalDiagnosticsDataType", szFieldName); - parseDouble(subtree, tvb, pOffset, hf_opcua_SamplingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxMonitoredItemCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_DisabledMonitoredItemCount); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_SamplingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxMonitoredItemCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisabledMonitoredItemCount); proto_item_set_end(ti, tvb, *pOffset); } -void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerDiagnosticsSummaryDataType, &ti, "%s: ServerDiagnosticsSummaryDataType", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerViewCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSessionCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSessionCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedSessionCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectedSessionCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionTimeoutCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionAbortCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CumulatedSubscriptionCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishingIntervalCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SecurityRejectedRequestsCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RejectedRequestsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ServerViewCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSessionCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CumulatedSessionCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityRejectedSessionCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RejectedSessionCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SessionTimeoutCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SessionAbortCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSubscriptionCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CumulatedSubscriptionCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingIntervalCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityRejectedRequestsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RejectedRequestsCount); proto_item_set_end(ti, tvb, *pOffset); } -void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerStatusDataType, &ti, "%s: ServerStatusDataType", szFieldName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_StartTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_CurrentTime); - parseServerState(subtree, tvb, pOffset); - parseBuildInfo(subtree, tvb, pOffset, "BuildInfo"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SecondsTillShutdown); - parseLocalizedText(subtree, tvb, pOffset, "ShutdownReason"); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentTime); + parseServerState(subtree, tvb, pinfo, pOffset); + parseBuildInfo(subtree, tvb, pinfo, pOffset, "BuildInfo"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecondsTillShutdown); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "ShutdownReason"); proto_item_set_end(ti, tvb, *pOffset); } -void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SessionDiagnosticsDataType, &ti, "%s: SessionDiagnosticsDataType", szFieldName); - parseNodeId(subtree, tvb, pOffset, "SessionId"); - parseString(subtree, tvb, pOffset, hf_opcua_SessionName); - parseApplicationDescription(subtree, tvb, pOffset, "ClientDescription"); - parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); - parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SessionName); + parseApplicationDescription(subtree, tvb, pinfo, pOffset, "ClientDescription"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); - parseDouble(subtree, tvb, pOffset, hf_opcua_ActualSessionTimeout); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxResponseMessageSize); - parseDateTime(subtree, tvb, pOffset, hf_opcua_ClientConnectionTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_ClientLastContactTime); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentSubscriptionsCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentMonitoredItemsCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentPublishRequestsInQueue); - parseServiceCounterDataType(subtree, tvb, pOffset, "TotalRequestCount"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UnauthorizedRequestCount); - parseServiceCounterDataType(subtree, tvb, pOffset, "ReadCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "HistoryReadCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "WriteCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "HistoryUpdateCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "CallCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "CreateMonitoredItemsCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "ModifyMonitoredItemsCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "SetMonitoringModeCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "SetTriggeringCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteMonitoredItemsCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "CreateSubscriptionCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "ModifySubscriptionCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "SetPublishingModeCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "PublishCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "RepublishCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "TransferSubscriptionsCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteSubscriptionsCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "AddNodesCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "AddReferencesCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteNodesCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "DeleteReferencesCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "BrowseCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "BrowseNextCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "TranslateBrowsePathsToNodeIdsCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "QueryFirstCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "QueryNextCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "RegisterNodesCount"); - parseServiceCounterDataType(subtree, tvb, pOffset, "UnregisterNodesCount"); - proto_item_set_end(ti, tvb, *pOffset); -} -void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) + parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ActualSessionTimeout); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxResponseMessageSize); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ClientConnectionTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ClientLastContactTime); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSubscriptionsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentMonitoredItemsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentPublishRequestsInQueue); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TotalRequestCount"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnauthorizedRequestCount); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ReadCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "HistoryReadCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "WriteCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "HistoryUpdateCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CallCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CreateMonitoredItemsCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ModifyMonitoredItemsCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetMonitoringModeCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetTriggeringCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteMonitoredItemsCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CreateSubscriptionCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ModifySubscriptionCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetPublishingModeCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "PublishCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "RepublishCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TransferSubscriptionsCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteSubscriptionsCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "AddNodesCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "AddReferencesCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteNodesCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteReferencesCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "BrowseCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "BrowseNextCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TranslateBrowsePathsToNodeIdsCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "QueryFirstCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "QueryNextCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "RegisterNodesCount"); + parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "UnregisterNodesCount"); + proto_item_set_end(ti, tvb, *pOffset); +} +void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SessionSecurityDiagnosticsDataType, &ti, "%s: SessionSecurityDiagnosticsDataType", szFieldName); - parseNodeId(subtree, tvb, pOffset, "SessionId"); - parseString(subtree, tvb, pOffset, hf_opcua_ClientUserIdOfSession); + parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientUserIdOfSession); /* Array length field ignored: NoOfClientUserIdHistory */ - parseArraySimple(subtree, tvb, pOffset, "ClientUserIdHistory", "String", hf_opcua_ClientUserIdHistory, parseString, ett_opcua_array_String); - parseString(subtree, tvb, pOffset, hf_opcua_AuthenticationMechanism); - parseString(subtree, tvb, pOffset, hf_opcua_Encoding); - parseString(subtree, tvb, pOffset, hf_opcua_TransportProtocol); - parseMessageSecurityMode(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); - parseByteString(subtree, tvb, pOffset, hf_opcua_ClientCertificate); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ClientUserIdHistory", "String", hf_opcua_ClientUserIdHistory, parseString, ett_opcua_array_String); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_AuthenticationMechanism); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Encoding); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TransportProtocol); + parseMessageSecurityMode(subtree, tvb, pinfo, pOffset); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientCertificate); proto_item_set_end(ti, tvb, *pOffset); } -void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServiceCounterDataType, &ti, "%s: ServiceCounterDataType", szFieldName); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TotalCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ErrorCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TotalCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ErrorCount); proto_item_set_end(ti, tvb, *pOffset); } -void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_StatusResult, &ti, "%s: StatusResult", szFieldName); - parseStatusCode(subtree, tvb, pOffset, hf_opcua_StatusCode); - parseDiagnosticInfo(subtree, tvb, pOffset, "DiagnosticInfo"); + parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); + parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo"); proto_item_set_end(ti, tvb, *pOffset); } -void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SubscriptionDiagnosticsDataType, &ti, "%s: SubscriptionDiagnosticsDataType", szFieldName); - parseNodeId(subtree, tvb, pOffset, "SessionId"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseByte(subtree, tvb, pOffset, hf_opcua_Priority); - parseDouble(subtree, tvb, pOffset, hf_opcua_PublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxKeepAliveCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxLifetimeCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxNotificationsPerPublish); - parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ModifyCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_EnableCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_DisableCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishRequestCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishMessageRequestCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RepublishMessageCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferRequestCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferredToAltClientCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TransferredToSameClientCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_PublishRequestCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_DataChangeNotificationsCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_EventNotificationsCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_NotificationsCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_LatePublishRequestCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentKeepAliveCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CurrentLifetimeCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_UnacknowledgedMessageCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_DiscardedMessageCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoredItemCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_DisabledMonitoredItemCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MonitoringQueueOverflowCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_NextSequenceNumber); - parseUInt32(subtree, tvb, pOffset, hf_opcua_EventQueueOverFlowCount); - proto_item_set_end(ti, tvb, *pOffset); -} -void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) + parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxKeepAliveCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxLifetimeCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ModifyCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EnableCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisableCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishRequestCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishMessageRequestCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishMessageCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferRequestCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferredToAltClientCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferredToSameClientCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_PublishRequestCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DataChangeNotificationsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotificationsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NotificationsCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_LatePublishRequestCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentKeepAliveCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentLifetimeCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnacknowledgedMessageCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DiscardedMessageCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisabledMonitoredItemCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoringQueueOverflowCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NextSequenceNumber); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EventQueueOverFlowCount); + proto_item_set_end(ti, tvb, *pOffset); +} +void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ModelChangeStructureDataType, &ti, "%s: ModelChangeStructureDataType", szFieldName); - parseNodeId(subtree, tvb, pOffset, "Affected"); - parseNodeId(subtree, tvb, pOffset, "AffectedType"); - parseByte(subtree, tvb, pOffset, hf_opcua_Verb); + parseNodeId(subtree, tvb, pinfo, pOffset, "Affected"); + parseNodeId(subtree, tvb, pinfo, pOffset, "AffectedType"); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Verb); proto_item_set_end(ti, tvb, *pOffset); } -void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SemanticChangeStructureDataType, &ti, "%s: SemanticChangeStructureDataType", szFieldName); - parseNodeId(subtree, tvb, pOffset, "Affected"); - parseNodeId(subtree, tvb, pOffset, "AffectedType"); + parseNodeId(subtree, tvb, pinfo, pOffset, "Affected"); + parseNodeId(subtree, tvb, pinfo, pOffset, "AffectedType"); proto_item_set_end(ti, tvb, *pOffset); } -void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseRange(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Range, &ti, "%s: Range", szFieldName); - parseDouble(subtree, tvb, pOffset, hf_opcua_Low); - parseDouble(subtree, tvb, pOffset, hf_opcua_High); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Low); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_High); proto_item_set_end(ti, tvb, *pOffset); } -void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EUInformation, &ti, "%s: EUInformation", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_NamespaceUri); - parseInt32(subtree, tvb, pOffset, hf_opcua_UnitId); - parseLocalizedText(subtree, tvb, pOffset, "DisplayName"); - parseLocalizedText(subtree, tvb, pOffset, "Description"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_NamespaceUri); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnitId); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); proto_item_set_end(ti, tvb, *pOffset); } -void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ComplexNumberType, &ti, "%s: ComplexNumberType", szFieldName); - parseFloat(subtree, tvb, pOffset, hf_opcua_Real); - parseFloat(subtree, tvb, pOffset, hf_opcua_Imaginary); + parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Real); + parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Imaginary); proto_item_set_end(ti, tvb, *pOffset); } -void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DoubleComplexNumberType, &ti, "%s: DoubleComplexNumberType", szFieldName); - parseDouble(subtree, tvb, pOffset, hf_opcua_Real); - parseDouble(subtree, tvb, pOffset, hf_opcua_Imaginary); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Real); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Imaginary); proto_item_set_end(ti, tvb, *pOffset); } -void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AxisInformation, &ti, "%s: AxisInformation", szFieldName); - parseEUInformation(subtree, tvb, pOffset, "EngineeringUnits"); - parseRange(subtree, tvb, pOffset, "EURange"); - parseLocalizedText(subtree, tvb, pOffset, "Title"); - parseAxisScaleEnumeration(subtree, tvb, pOffset); + parseEUInformation(subtree, tvb, pinfo, pOffset, "EngineeringUnits"); + parseRange(subtree, tvb, pinfo, pOffset, "EURange"); + parseLocalizedText(subtree, tvb, pinfo, pOffset, "Title"); + parseAxisScaleEnumeration(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfAxisSteps */ - parseArraySimple(subtree, tvb, pOffset, "AxisSteps", "Double", hf_opcua_AxisSteps, parseDouble, ett_opcua_array_Double); + parseArraySimple(subtree, tvb, pinfo, pOffset, "AxisSteps", "Double", hf_opcua_AxisSteps, parseDouble, ett_opcua_array_Double); proto_item_set_end(ti, tvb, *pOffset); } -void parseXVType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseXVType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_XVType, &ti, "%s: XVType", szFieldName); - parseDouble(subtree, tvb, pOffset, hf_opcua_X); - parseFloat(subtree, tvb, pOffset, hf_opcua_Value); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_X); + parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Value); proto_item_set_end(ti, tvb, *pOffset); } -void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ProgramDiagnosticDataType, &ti, "%s: ProgramDiagnosticDataType", szFieldName); - parseNodeId(subtree, tvb, pOffset, "CreateSessionId"); - parseString(subtree, tvb, pOffset, hf_opcua_CreateClientName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_InvocationCreationTime); - parseDateTime(subtree, tvb, pOffset, hf_opcua_LastTransitionTime); - parseString(subtree, tvb, pOffset, hf_opcua_LastMethodCall); - parseNodeId(subtree, tvb, pOffset, "LastMethodSessionId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "CreateSessionId"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_CreateClientName); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_InvocationCreationTime); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastTransitionTime); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_LastMethodCall); + parseNodeId(subtree, tvb, pinfo, pOffset, "LastMethodSessionId"); /* Array length field ignored: NoOfLastMethodInputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "LastMethodInputArguments", "Argument", parseArgument, ett_opcua_array_Argument); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "LastMethodInputArguments", "Argument", parseArgument, ett_opcua_array_Argument); /* Array length field ignored: NoOfLastMethodOutputArguments */ - parseArrayComplex(subtree, tvb, pOffset, "LastMethodOutputArguments", "Argument", parseArgument, ett_opcua_array_Argument); - parseDateTime(subtree, tvb, pOffset, hf_opcua_LastMethodCallTime); - parseStatusResult(subtree, tvb, pOffset, "LastMethodReturnStatus"); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "LastMethodOutputArguments", "Argument", parseArgument, ett_opcua_array_Argument); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastMethodCallTime); + parseStatusResult(subtree, tvb, pinfo, pOffset, "LastMethodReturnStatus"); proto_item_set_end(ti, tvb, *pOffset); } -void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Annotation, &ti, "%s: Annotation", szFieldName); - parseString(subtree, tvb, pOffset, hf_opcua_Message); - parseString(subtree, tvb, pOffset, hf_opcua_UserName); - parseDateTime(subtree, tvb, pOffset, hf_opcua_AnnotationTime); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Message); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName); + parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_AnnotationTime); proto_item_set_end(ti, tvb, *pOffset); } diff --git a/plugins/opcua/opcua_complextypeparser.h b/plugins/opcua/opcua_complextypeparser.h index ca176c2a93..7eb63afa27 100644 --- a/plugins/opcua/opcua_complextypeparser.h +++ b/plugins/opcua/opcua_complextypeparser.h @@ -14,7 +14,7 @@ ** ** Description: OpcUa Complex Type Parser ** -** This file was autogenerated on 17.06.2014. +** This file was autogenerated on 16.10.2014. ** DON'T MODIFY THIS FILE! ** XXX - well, except that you may have to. See the README. ** @@ -294,140 +294,140 @@ extern gint ett_opcua_array_ProgramDiagnosticDataType; extern gint ett_opcua_Annotation; extern gint ett_opcua_array_Annotation; -void parseNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseViewNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseArgument(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseRange(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseXVType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); -void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); +void parseNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseViewNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseArgument(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseRange(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseXVType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); +void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); void registerComplexTypes(void); diff --git a/plugins/opcua/opcua_enumparser.c b/plugins/opcua/opcua_enumparser.c index 36b26bb944..54113a2ddd 100644 --- a/plugins/opcua/opcua_enumparser.c +++ b/plugins/opcua/opcua_enumparser.c @@ -14,7 +14,7 @@ ** ** Description: OpcUa Enum Type Parser ** -** This file was autogenerated on 17.06.2014. +** This file was autogenerated on 16.10.2014. ** DON'T MODIFY THIS FILE! ** ******************************************************************************/ @@ -65,7 +65,7 @@ static const value_string g_NodeIdTypeTable[] = { }; static int hf_opcua_NodeIdType = -1; -void parseNodeIdType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseNodeIdType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_NodeIdType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -79,7 +79,7 @@ static const value_string g_OpenFileModeTable[] = { }; static int hf_opcua_OpenFileMode = -1; -void parseOpenFileMode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseOpenFileMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_OpenFileMode, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -93,7 +93,7 @@ static const value_string g_IdTypeTable[] = { }; static int hf_opcua_IdType = -1; -void parseIdType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseIdType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_IdType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -112,7 +112,7 @@ static const value_string g_NodeClassTable[] = { }; static int hf_opcua_NodeClass = -1; -void parseNodeClass(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseNodeClass(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_NodeClass, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -126,7 +126,7 @@ static const value_string g_ApplicationTypeTable[] = { }; static int hf_opcua_ApplicationType = -1; -void parseApplicationType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseApplicationType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_ApplicationType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -140,7 +140,7 @@ static const value_string g_MessageSecurityModeTable[] = { }; static int hf_opcua_MessageSecurityMode = -1; -void parseMessageSecurityMode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseMessageSecurityMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_MessageSecurityMode, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -154,7 +154,7 @@ static const value_string g_UserTokenTypeTable[] = { }; static int hf_opcua_UserTokenType = -1; -void parseUserTokenType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseUserTokenType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_UserTokenType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -166,7 +166,7 @@ static const value_string g_SecurityTokenRequestTypeTable[] = { }; static int hf_opcua_SecurityTokenRequestType = -1; -void parseSecurityTokenRequestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSecurityTokenRequestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_SecurityTokenRequestType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -208,7 +208,7 @@ static const value_string g_NodeAttributesMaskTable[] = { }; static int hf_opcua_NodeAttributesMask = -1; -void parseNodeAttributesMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseNodeAttributesMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_NodeAttributesMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -241,7 +241,7 @@ static const value_string g_AttributeWriteMaskTable[] = { }; static int hf_opcua_AttributeWriteMask = -1; -void parseAttributeWriteMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseAttributeWriteMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_AttributeWriteMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -254,7 +254,7 @@ static const value_string g_BrowseDirectionTable[] = { }; static int hf_opcua_BrowseDirection = -1; -void parseBrowseDirection(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseBrowseDirection(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_BrowseDirection, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -274,7 +274,7 @@ static const value_string g_BrowseResultMaskTable[] = { }; static int hf_opcua_BrowseResultMask = -1; -void parseBrowseResultMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseBrowseResultMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_BrowseResultMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -288,7 +288,7 @@ static const value_string g_ComplianceLevelTable[] = { }; static int hf_opcua_ComplianceLevel = -1; -void parseComplianceLevel(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseComplianceLevel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_ComplianceLevel, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -316,7 +316,7 @@ static const value_string g_FilterOperatorTable[] = { }; static int hf_opcua_FilterOperator = -1; -void parseFilterOperator(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseFilterOperator(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_FilterOperator, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -330,7 +330,7 @@ static const value_string g_TimestampsToReturnTable[] = { }; static int hf_opcua_TimestampsToReturn = -1; -void parseTimestampsToReturn(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTimestampsToReturn(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_TimestampsToReturn, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -344,7 +344,7 @@ static const value_string g_HistoryUpdateTypeTable[] = { }; static int hf_opcua_HistoryUpdateType = -1; -void parseHistoryUpdateType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseHistoryUpdateType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_HistoryUpdateType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -358,7 +358,7 @@ static const value_string g_PerformUpdateTypeTable[] = { }; static int hf_opcua_PerformUpdateType = -1; -void parsePerformUpdateType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parsePerformUpdateType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_PerformUpdateType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -371,7 +371,7 @@ static const value_string g_MonitoringModeTable[] = { }; static int hf_opcua_MonitoringMode = -1; -void parseMonitoringMode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseMonitoringMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_MonitoringMode, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -384,7 +384,7 @@ static const value_string g_DataChangeTriggerTable[] = { }; static int hf_opcua_DataChangeTrigger = -1; -void parseDataChangeTrigger(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDataChangeTrigger(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_DataChangeTrigger, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -397,7 +397,7 @@ static const value_string g_DeadbandTypeTable[] = { }; static int hf_opcua_DeadbandType = -1; -void parseDeadbandType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeadbandType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_DeadbandType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -410,7 +410,7 @@ static const value_string g_EnumeratedTestTypeTable[] = { }; static int hf_opcua_EnumeratedTestType = -1; -void parseEnumeratedTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseEnumeratedTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_EnumeratedTestType, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -426,7 +426,7 @@ static const value_string g_RedundancySupportTable[] = { }; static int hf_opcua_RedundancySupport = -1; -void parseRedundancySupport(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRedundancySupport(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_RedundancySupport, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -444,7 +444,7 @@ static const value_string g_ServerStateTable[] = { }; static int hf_opcua_ServerState = -1; -void parseServerState(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseServerState(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_ServerState, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -459,7 +459,7 @@ static const value_string g_ModelChangeStructureVerbMaskTable[] = { }; static int hf_opcua_ModelChangeStructureVerbMask = -1; -void parseModelChangeStructureVerbMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseModelChangeStructureVerbMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_ModelChangeStructureVerbMask, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -472,7 +472,7 @@ static const value_string g_AxisScaleEnumerationTable[] = { }; static int hf_opcua_AxisScaleEnumeration = -1; -void parseAxisScaleEnumeration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseAxisScaleEnumeration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_AxisScaleEnumeration, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } @@ -487,7 +487,7 @@ static const value_string g_ExceptionDeviationFormatTable[] = { }; static int hf_opcua_ExceptionDeviationFormat = -1; -void parseExceptionDeviationFormat(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseExceptionDeviationFormat(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset) { proto_tree_add_item(tree, hf_opcua_ExceptionDeviationFormat, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; } diff --git a/plugins/opcua/opcua_enumparser.h b/plugins/opcua/opcua_enumparser.h index cedb9a9209..a029f3d14b 100644 --- a/plugins/opcua/opcua_enumparser.h +++ b/plugins/opcua/opcua_enumparser.h @@ -14,7 +14,7 @@ ** ** Description: OpcUa Enum Type Parser ** -** This file was autogenerated on 17.06.2014. +** This file was autogenerated on 16.10.2014. ** DON'T MODIFY THIS FILE! ** XXX - well, except that you may have to. See the README. ** @@ -50,30 +50,30 @@ extern gint ett_opcua_array_ModelChangeStructureVerbMask; extern gint ett_opcua_array_AxisScaleEnumeration; extern gint ett_opcua_array_ExceptionDeviationFormat; -void parseNodeIdType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseOpenFileMode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseIdType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseNodeClass(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseApplicationType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseMessageSecurityMode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseUserTokenType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSecurityTokenRequestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseNodeAttributesMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseAttributeWriteMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseBrowseDirection(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseBrowseResultMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseComplianceLevel(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseFilterOperator(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTimestampsToReturn(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseHistoryUpdateType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parsePerformUpdateType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseMonitoringMode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDataChangeTrigger(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeadbandType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseEnumeratedTestType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRedundancySupport(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseServerState(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseModelChangeStructureVerbMask(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseAxisScaleEnumeration(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseExceptionDeviationFormat(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); +void parseNodeIdType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseOpenFileMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseIdType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseNodeClass(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseApplicationType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseMessageSecurityMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseUserTokenType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSecurityTokenRequestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseNodeAttributesMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseAttributeWriteMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseBrowseDirection(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseBrowseResultMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseComplianceLevel(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseFilterOperator(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTimestampsToReturn(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseHistoryUpdateType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parsePerformUpdateType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseMonitoringMode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDataChangeTrigger(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeadbandType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseEnumeratedTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRedundancySupport(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseServerState(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseModelChangeStructureVerbMask(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseAxisScaleEnumeration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseExceptionDeviationFormat(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); void registerEnumTypes(int proto); diff --git a/plugins/opcua/opcua_extensionobjecttable.c b/plugins/opcua/opcua_extensionobjecttable.c index cc4067c7a5..9ca5960b62 100644 --- a/plugins/opcua/opcua_extensionobjecttable.c +++ b/plugins/opcua/opcua_extensionobjecttable.c @@ -14,7 +14,7 @@ ** ** Description: Service table and service dispatcher. ** -** This file was autogenerated on 10.06.2014. +** This file was autogenerated on 16.10.2014. ** DON'T MODIFY THIS FILE! ** XXX - well, except that you may have to. See the README. ** @@ -170,7 +170,7 @@ ExtensionObjectParserEntry g_arExtensionObjectParserTable[] = { const int g_NumTypes = sizeof(g_arExtensionObjectParserTable) / sizeof(ExtensionObjectParserEntry); /** Dispatch all extension objects to a special parser function. */ -void dispatchExtensionObjectType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int TypeId) +void dispatchExtensionObjectType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, int TypeId) { gint iOffset = *pOffset; int indx = 0; @@ -186,7 +186,7 @@ void dispatchExtensionObjectType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, if (g_arExtensionObjectParserTable[indx].iRequestId == TypeId) { bFound = 1; - (*g_arExtensionObjectParserTable[indx].pParser)(tree, tvb, &iOffset, g_arExtensionObjectParserTable[indx].typeName); + (*g_arExtensionObjectParserTable[indx].pParser)(tree, tvb, pinfo, &iOffset, g_arExtensionObjectParserTable[indx].typeName); break; } indx++; @@ -197,7 +197,7 @@ void dispatchExtensionObjectType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, { if (iLen == -1) { - proto_tree_add_bytes_format(tree, hf_opcua_ByteString, tvb, *pOffset, 4, NULL, "[OpcUa Null ByteString]"); + proto_tree_add_text(tree, tvb, *pOffset, 4, "[OpcUa Null ByteString]"); } else if (iLen >= 0) { @@ -206,7 +206,8 @@ void dispatchExtensionObjectType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, } else { - proto_tree_add_bytes_format(tree, hf_opcua_ByteString, tvb, *pOffset, 4, NULL, "[Invalid ByteString] Invalid length: %d", iLen); + char *szValue = wmem_strdup_printf(wmem_packet_scope(), "[Invalid ByteString] Invalid length: %d", iLen); + proto_tree_add_text(tree, tvb, *pOffset, 4, "%s", szValue); } } diff --git a/plugins/opcua/opcua_identifiers.h b/plugins/opcua/opcua_identifiers.h index 32da44f4c3..18891834da 100644 --- a/plugins/opcua/opcua_identifiers.h +++ b/plugins/opcua/opcua_identifiers.h @@ -24,13 +24,13 @@ #include /* declare service parser function prototype */ -typedef void (*fctServiceParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); +typedef void (*fctServiceParser)(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); /* declare enum parser function prototype */ -typedef void (*fctEnumParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); +typedef void (*fctEnumParser)(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); /* declare type parser function prototype */ -typedef void (*fctComplexTypeParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName); +typedef void (*fctComplexTypeParser)(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName); /* declare type parser function prototype */ -typedef proto_item* (*fctSimpleTypeParser)(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex); +typedef proto_item* (*fctSimpleTypeParser)(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, int hfIndex); typedef struct _ParserEntry { diff --git a/plugins/opcua/opcua_serviceparser.c b/plugins/opcua/opcua_serviceparser.c index 5718228f5a..e7799376aa 100644 --- a/plugins/opcua/opcua_serviceparser.c +++ b/plugins/opcua/opcua_serviceparser.c @@ -188,904 +188,904 @@ gint ett_opcua_array_TestStackExRequest = -1; gint ett_opcua_TestStackExResponse = -1; gint ett_opcua_array_TestStackExResponse = -1; -void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ServiceFault, &ti, "ServiceFault"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_FindServersRequest, &ti, "FindServersRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); /* Array length field ignored: NoOfServerUris */ - parseArraySimple(subtree, tvb, pOffset, "ServerUris", "String", hf_opcua_ServerUris, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerUris", "String", hf_opcua_ServerUris, parseString, ett_opcua_array_String); proto_item_set_end(ti, tvb, *pOffset); } -void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_FindServersResponse, &ti, "FindServersResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfServers */ - parseArrayComplex(subtree, tvb, pOffset, "Servers", "ApplicationDescription", parseApplicationDescription, ett_opcua_array_ApplicationDescription); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Servers", "ApplicationDescription", parseApplicationDescription, ett_opcua_array_ApplicationDescription); proto_item_set_end(ti, tvb, *pOffset); } -void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_GetEndpointsRequest, &ti, "GetEndpointsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); /* Array length field ignored: NoOfProfileUris */ - parseArraySimple(subtree, tvb, pOffset, "ProfileUris", "String", hf_opcua_ProfileUris, parseString, ett_opcua_array_String); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ProfileUris", "String", hf_opcua_ProfileUris, parseString, ett_opcua_array_String); proto_item_set_end(ti, tvb, *pOffset); } -void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_GetEndpointsResponse, &ti, "GetEndpointsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfEndpoints */ - parseArrayComplex(subtree, tvb, pOffset, "Endpoints", "EndpointDescription", parseEndpointDescription, ett_opcua_array_EndpointDescription); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Endpoints", "EndpointDescription", parseEndpointDescription, ett_opcua_array_EndpointDescription); proto_item_set_end(ti, tvb, *pOffset); } -void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterServerRequest, &ti, "RegisterServerRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseRegisteredServer(subtree, tvb, pOffset, "Server"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseRegisteredServer(subtree, tvb, pinfo, pOffset, "Server"); proto_item_set_end(ti, tvb, *pOffset); } -void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterServerResponse, &ti, "RegisterServerResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_OpenSecureChannelRequest, &ti, "OpenSecureChannelRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientProtocolVersion); - parseSecurityTokenRequestType(subtree, tvb, pOffset); - parseMessageSecurityMode(subtree, tvb, pOffset); - parseByteString(subtree, tvb, pOffset, hf_opcua_ClientNonce); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetime); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientProtocolVersion); + parseSecurityTokenRequestType(subtree, tvb, pinfo, pOffset); + parseMessageSecurityMode(subtree, tvb, pinfo, pOffset); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientNonce); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedLifetime); proto_item_set_end(ti, tvb, *pOffset); } -void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_OpenSecureChannelResponse, &ti, "OpenSecureChannelResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerProtocolVersion); - parseChannelSecurityToken(subtree, tvb, pOffset, "SecurityToken"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ServerProtocolVersion); + parseChannelSecurityToken(subtree, tvb, pinfo, pOffset, "SecurityToken"); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerNonce); proto_item_set_end(ti, tvb, *pOffset); } -void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSecureChannelRequest, &ti, "CloseSecureChannelRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSecureChannelResponse, &ti, "CloseSecureChannelResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSessionRequest, &ti, "CreateSessionRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseApplicationDescription(subtree, tvb, pOffset, "ClientDescription"); - parseString(subtree, tvb, pOffset, hf_opcua_ServerUri); - parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); - parseString(subtree, tvb, pOffset, hf_opcua_SessionName); - parseByteString(subtree, tvb, pOffset, hf_opcua_ClientNonce); - parseByteString(subtree, tvb, pOffset, hf_opcua_ClientCertificate); - parseDouble(subtree, tvb, pOffset, hf_opcua_RequestedSessionTimeout); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxResponseMessageSize); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseApplicationDescription(subtree, tvb, pinfo, pOffset, "ClientDescription"); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SessionName); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientNonce); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientCertificate); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedSessionTimeout); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxResponseMessageSize); proto_item_set_end(ti, tvb, *pOffset); } -void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSessionResponse, &ti, "CreateSessionResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseNodeId(subtree, tvb, pOffset, "SessionId"); - parseNodeId(subtree, tvb, pOffset, "AuthenticationToken"); - parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedSessionTimeout); - parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); - parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); + parseNodeId(subtree, tvb, pinfo, pOffset, "AuthenticationToken"); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSessionTimeout); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerNonce); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerCertificate); /* Array length field ignored: NoOfServerEndpoints */ - parseArrayComplex(subtree, tvb, pOffset, "ServerEndpoints", "EndpointDescription", parseEndpointDescription, ett_opcua_array_EndpointDescription); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerEndpoints", "EndpointDescription", parseEndpointDescription, ett_opcua_array_EndpointDescription); /* Array length field ignored: NoOfServerSoftwareCertificates */ - parseArrayComplex(subtree, tvb, pOffset, "ServerSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate, ett_opcua_array_SignedSoftwareCertificate); - parseSignatureData(subtree, tvb, pOffset, "ServerSignature"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxRequestMessageSize); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate, ett_opcua_array_SignedSoftwareCertificate); + parseSignatureData(subtree, tvb, pinfo, pOffset, "ServerSignature"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxRequestMessageSize); proto_item_set_end(ti, tvb, *pOffset); } -void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ActivateSessionRequest, &ti, "ActivateSessionRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseSignatureData(subtree, tvb, pOffset, "ClientSignature"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseSignatureData(subtree, tvb, pinfo, pOffset, "ClientSignature"); /* Array length field ignored: NoOfClientSoftwareCertificates */ - parseArrayComplex(subtree, tvb, pOffset, "ClientSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate, ett_opcua_array_SignedSoftwareCertificate); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ClientSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate, ett_opcua_array_SignedSoftwareCertificate); /* Array length field ignored: NoOfLocaleIds */ - parseArraySimple(subtree, tvb, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); - parseExtensionObject(subtree, tvb, pOffset, "UserIdentityToken"); - parseSignatureData(subtree, tvb, pOffset, "UserTokenSignature"); + parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "UserIdentityToken"); + parseSignatureData(subtree, tvb, pinfo, pOffset, "UserTokenSignature"); proto_item_set_end(ti, tvb, *pOffset); } -void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ActivateSessionResponse, &ti, "ActivateSessionResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerNonce); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSessionRequest, &ti, "CloseSessionRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteSubscriptions); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteSubscriptions); proto_item_set_end(ti, tvb, *pOffset); } -void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSessionResponse, &ti, "CloseSessionResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CancelRequest, &ti, "CancelRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestHandle); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle); proto_item_set_end(ti, tvb, *pOffset); } -void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CancelResponse, &ti, "CancelResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_CancelCount); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CancelCount); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddNodesRequest, &ti, "AddNodesRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToAdd */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToAdd", "AddNodesItem", parseAddNodesItem, ett_opcua_array_AddNodesItem); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToAdd", "AddNodesItem", parseAddNodesItem, ett_opcua_array_AddNodesItem); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddNodesResponse, &ti, "AddNodesResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "AddNodesResult", parseAddNodesResult, ett_opcua_array_AddNodesResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "AddNodesResult", parseAddNodesResult, ett_opcua_array_AddNodesResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesRequest, &ti, "AddReferencesRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfReferencesToAdd */ - parseArrayComplex(subtree, tvb, pOffset, "ReferencesToAdd", "AddReferencesItem", parseAddReferencesItem, ett_opcua_array_AddReferencesItem); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencesToAdd", "AddReferencesItem", parseAddReferencesItem, ett_opcua_array_AddReferencesItem); proto_item_set_end(ti, tvb, *pOffset); } -void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesResponse, &ti, "AddReferencesResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesRequest, &ti, "DeleteNodesRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToDelete */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToDelete", "DeleteNodesItem", parseDeleteNodesItem, ett_opcua_array_DeleteNodesItem); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToDelete", "DeleteNodesItem", parseDeleteNodesItem, ett_opcua_array_DeleteNodesItem); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesResponse, &ti, "DeleteNodesResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesRequest, &ti, "DeleteReferencesRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfReferencesToDelete */ - parseArrayComplex(subtree, tvb, pOffset, "ReferencesToDelete", "DeleteReferencesItem", parseDeleteReferencesItem, ett_opcua_array_DeleteReferencesItem); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencesToDelete", "DeleteReferencesItem", parseDeleteReferencesItem, ett_opcua_array_DeleteReferencesItem); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesResponse, &ti, "DeleteReferencesResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseRequest, &ti, "BrowseRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseViewDescription(subtree, tvb, pOffset, "View"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedMaxReferencesPerNode); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseViewDescription(subtree, tvb, pinfo, pOffset, "View"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedMaxReferencesPerNode); /* Array length field ignored: NoOfNodesToBrowse */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToBrowse", "BrowseDescription", parseBrowseDescription, ett_opcua_array_BrowseDescription); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToBrowse", "BrowseDescription", parseBrowseDescription, ett_opcua_array_BrowseDescription); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseResponse, &ti, "BrowseResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "BrowseResult", parseBrowseResult, ett_opcua_array_BrowseResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "BrowseResult", parseBrowseResult, ett_opcua_array_BrowseResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseNextRequest, &ti, "BrowseNextRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoints); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReleaseContinuationPoints); /* Array length field ignored: NoOfContinuationPoints */ - parseArraySimple(subtree, tvb, pOffset, "ContinuationPoints", "ByteString", hf_opcua_ContinuationPoints, parseByteString, ett_opcua_array_ByteString); + parseArraySimple(subtree, tvb, pinfo, pOffset, "ContinuationPoints", "ByteString", hf_opcua_ContinuationPoints, parseByteString, ett_opcua_array_ByteString); proto_item_set_end(ti, tvb, *pOffset); } -void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseNextResponse, &ti, "BrowseNextResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "BrowseResult", parseBrowseResult, ett_opcua_array_BrowseResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "BrowseResult", parseBrowseResult, ett_opcua_array_BrowseResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TranslateBrowsePathsToNodeIdsRequest, &ti, "TranslateBrowsePathsToNodeIdsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfBrowsePaths */ - parseArrayComplex(subtree, tvb, pOffset, "BrowsePaths", "BrowsePath", parseBrowsePath, ett_opcua_array_BrowsePath); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "BrowsePaths", "BrowsePath", parseBrowsePath, ett_opcua_array_BrowsePath); proto_item_set_end(ti, tvb, *pOffset); } -void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TranslateBrowsePathsToNodeIdsResponse, &ti, "TranslateBrowsePathsToNodeIdsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "BrowsePathResult", parseBrowsePathResult, ett_opcua_array_BrowsePathResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "BrowsePathResult", parseBrowsePathResult, ett_opcua_array_BrowsePathResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterNodesRequest, &ti, "RegisterNodesRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToRegister */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToRegister", "NodeId", parseNodeId, ett_opcua_array_NodeId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToRegister", "NodeId", parseNodeId, ett_opcua_array_NodeId); proto_item_set_end(ti, tvb, *pOffset); } -void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterNodesResponse, &ti, "RegisterNodesResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfRegisteredNodeIds */ - parseArrayComplex(subtree, tvb, pOffset, "RegisteredNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "RegisteredNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); proto_item_set_end(ti, tvb, *pOffset); } -void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_UnregisterNodesRequest, &ti, "UnregisterNodesRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToUnregister */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToUnregister", "NodeId", parseNodeId, ett_opcua_array_NodeId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToUnregister", "NodeId", parseNodeId, ett_opcua_array_NodeId); proto_item_set_end(ti, tvb, *pOffset); } -void parseUnregisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseUnregisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_UnregisterNodesResponse, &ti, "UnregisterNodesResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); proto_item_set_end(ti, tvb, *pOffset); } -void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryFirstRequest, &ti, "QueryFirstRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseViewDescription(subtree, tvb, pOffset, "View"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseViewDescription(subtree, tvb, pinfo, pOffset, "View"); /* Array length field ignored: NoOfNodeTypes */ - parseArrayComplex(subtree, tvb, pOffset, "NodeTypes", "NodeTypeDescription", parseNodeTypeDescription, ett_opcua_array_NodeTypeDescription); - parseContentFilter(subtree, tvb, pOffset, "Filter"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxDataSetsToReturn); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxReferencesToReturn); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodeTypes", "NodeTypeDescription", parseNodeTypeDescription, ett_opcua_array_NodeTypeDescription); + parseContentFilter(subtree, tvb, pinfo, pOffset, "Filter"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxDataSetsToReturn); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxReferencesToReturn); proto_item_set_end(ti, tvb, *pOffset); } -void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryFirstResponse, &ti, "QueryFirstResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfQueryDataSets */ - parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet, ett_opcua_array_QueryDataSet); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet, ett_opcua_array_QueryDataSet); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); /* Array length field ignored: NoOfParsingResults */ - parseArrayComplex(subtree, tvb, pOffset, "ParsingResults", "ParsingResult", parseParsingResult, ett_opcua_array_ParsingResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ParsingResults", "ParsingResult", parseParsingResult, ett_opcua_array_ParsingResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); - parseContentFilterResult(subtree, tvb, pOffset, "FilterResult"); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseContentFilterResult(subtree, tvb, pinfo, pOffset, "FilterResult"); proto_item_set_end(ti, tvb, *pOffset); } -void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryNextRequest, &ti, "QueryNextRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoint); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReleaseContinuationPoint); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); proto_item_set_end(ti, tvb, *pOffset); } -void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryNextResponse, &ti, "QueryNextResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfQueryDataSets */ - parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet, ett_opcua_array_QueryDataSet); - parseByteString(subtree, tvb, pOffset, hf_opcua_RevisedContinuationPoint); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet, ett_opcua_array_QueryDataSet); + parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedContinuationPoint); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ReadRequest, &ti, "ReadRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseDouble(subtree, tvb, pOffset, hf_opcua_MaxAge); - parseTimestampsToReturn(subtree, tvb, pOffset); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MaxAge); + parseTimestampsToReturn(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfNodesToRead */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", "ReadValueId", parseReadValueId, ett_opcua_array_ReadValueId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToRead", "ReadValueId", parseReadValueId, ett_opcua_array_ReadValueId); proto_item_set_end(ti, tvb, *pOffset); } -void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ReadResponse, &ti, "ReadResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "DataValue", parseDataValue, ett_opcua_array_DataValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "DataValue", parseDataValue, ett_opcua_array_DataValue); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadRequest, &ti, "HistoryReadRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseExtensionObject(subtree, tvb, pOffset, "HistoryReadDetails"); - parseTimestampsToReturn(subtree, tvb, pOffset); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoints); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseExtensionObject(subtree, tvb, pinfo, pOffset, "HistoryReadDetails"); + parseTimestampsToReturn(subtree, tvb, pinfo, pOffset); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReleaseContinuationPoints); /* Array length field ignored: NoOfNodesToRead */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", "HistoryReadValueId", parseHistoryReadValueId, ett_opcua_array_HistoryReadValueId); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToRead", "HistoryReadValueId", parseHistoryReadValueId, ett_opcua_array_HistoryReadValueId); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadResponse, &ti, "HistoryReadResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "HistoryReadResult", parseHistoryReadResult, ett_opcua_array_HistoryReadResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "HistoryReadResult", parseHistoryReadResult, ett_opcua_array_HistoryReadResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_WriteRequest, &ti, "WriteRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfNodesToWrite */ - parseArrayComplex(subtree, tvb, pOffset, "NodesToWrite", "WriteValue", parseWriteValue, ett_opcua_array_WriteValue); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToWrite", "WriteValue", parseWriteValue, ett_opcua_array_WriteValue); proto_item_set_end(ti, tvb, *pOffset); } -void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_WriteResponse, &ti, "WriteResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateRequest, &ti, "HistoryUpdateRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfHistoryUpdateDetails */ - parseArrayComplex(subtree, tvb, pOffset, "HistoryUpdateDetails", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "HistoryUpdateDetails", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); proto_item_set_end(ti, tvb, *pOffset); } -void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateResponse, &ti, "HistoryUpdateResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "HistoryUpdateResult", parseHistoryUpdateResult, ett_opcua_array_HistoryUpdateResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "HistoryUpdateResult", parseHistoryUpdateResult, ett_opcua_array_HistoryUpdateResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CallRequest, &ti, "CallRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfMethodsToCall */ - parseArrayComplex(subtree, tvb, pOffset, "MethodsToCall", "CallMethodRequest", parseCallMethodRequest, ett_opcua_array_CallMethodRequest); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "MethodsToCall", "CallMethodRequest", parseCallMethodRequest, ett_opcua_array_CallMethodRequest); proto_item_set_end(ti, tvb, *pOffset); } -void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CallResponse, &ti, "CallResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "CallMethodResult", parseCallMethodResult, ett_opcua_array_CallMethodResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "CallMethodResult", parseCallMethodResult, ett_opcua_array_CallMethodResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateMonitoredItemsRequest, &ti, "CreateMonitoredItemsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseTimestampsToReturn(subtree, tvb, pOffset); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseTimestampsToReturn(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfItemsToCreate */ - parseArrayComplex(subtree, tvb, pOffset, "ItemsToCreate", "MonitoredItemCreateRequest", parseMonitoredItemCreateRequest, ett_opcua_array_MonitoredItemCreateRequest); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ItemsToCreate", "MonitoredItemCreateRequest", parseMonitoredItemCreateRequest, ett_opcua_array_MonitoredItemCreateRequest); proto_item_set_end(ti, tvb, *pOffset); } -void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateMonitoredItemsResponse, &ti, "CreateMonitoredItemsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "MonitoredItemCreateResult", parseMonitoredItemCreateResult, ett_opcua_array_MonitoredItemCreateResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "MonitoredItemCreateResult", parseMonitoredItemCreateResult, ett_opcua_array_MonitoredItemCreateResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifyMonitoredItemsRequest, &ti, "ModifyMonitoredItemsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseTimestampsToReturn(subtree, tvb, pOffset); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseTimestampsToReturn(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfItemsToModify */ - parseArrayComplex(subtree, tvb, pOffset, "ItemsToModify", "MonitoredItemModifyRequest", parseMonitoredItemModifyRequest, ett_opcua_array_MonitoredItemModifyRequest); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "ItemsToModify", "MonitoredItemModifyRequest", parseMonitoredItemModifyRequest, ett_opcua_array_MonitoredItemModifyRequest); proto_item_set_end(ti, tvb, *pOffset); } -void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifyMonitoredItemsResponse, &ti, "ModifyMonitoredItemsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "MonitoredItemModifyResult", parseMonitoredItemModifyResult, ett_opcua_array_MonitoredItemModifyResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "MonitoredItemModifyResult", parseMonitoredItemModifyResult, ett_opcua_array_MonitoredItemModifyResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetMonitoringModeRequest, &ti, "SetMonitoringModeRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseMonitoringMode(subtree, tvb, pOffset); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseMonitoringMode(subtree, tvb, pinfo, pOffset); /* Array length field ignored: NoOfMonitoredItemIds */ - parseArraySimple(subtree, tvb, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32, ett_opcua_array_UInt32); proto_item_set_end(ti, tvb, *pOffset); } -void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetMonitoringModeResponse, &ti, "SetMonitoringModeResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetTriggeringRequest, &ti, "SetTriggeringRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TriggeringItemId); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TriggeringItemId); /* Array length field ignored: NoOfLinksToAdd */ - parseArraySimple(subtree, tvb, pOffset, "LinksToAdd", "UInt32", hf_opcua_LinksToAdd, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "LinksToAdd", "UInt32", hf_opcua_LinksToAdd, parseUInt32, ett_opcua_array_UInt32); /* Array length field ignored: NoOfLinksToRemove */ - parseArraySimple(subtree, tvb, pOffset, "LinksToRemove", "UInt32", hf_opcua_LinksToRemove, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "LinksToRemove", "UInt32", hf_opcua_LinksToRemove, parseUInt32, ett_opcua_array_UInt32); proto_item_set_end(ti, tvb, *pOffset); } -void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetTriggeringResponse, &ti, "SetTriggeringResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfAddResults */ - parseArraySimple(subtree, tvb, pOffset, "AddResults", "StatusCode", hf_opcua_AddResults, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "AddResults", "StatusCode", hf_opcua_AddResults, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfAddDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "AddDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "AddDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); /* Array length field ignored: NoOfRemoveResults */ - parseArraySimple(subtree, tvb, pOffset, "RemoveResults", "StatusCode", hf_opcua_RemoveResults, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "RemoveResults", "StatusCode", hf_opcua_RemoveResults, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfRemoveDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "RemoveDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "RemoveDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteMonitoredItemsRequest, &ti, "DeleteMonitoredItemsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); /* Array length field ignored: NoOfMonitoredItemIds */ - parseArraySimple(subtree, tvb, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32, ett_opcua_array_UInt32); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteMonitoredItemsResponse, &ti, "DeleteMonitoredItemsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSubscriptionRequest, &ti, "CreateSubscriptionRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseDouble(subtree, tvb, pOffset, hf_opcua_RequestedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetimeCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedMaxKeepAliveCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxNotificationsPerPublish); - parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled); - parseByte(subtree, tvb, pOffset, hf_opcua_Priority); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedPublishingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedLifetimeCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedMaxKeepAliveCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority); proto_item_set_end(ti, tvb, *pOffset); } -void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSubscriptionResponse, &ti, "CreateSubscriptionResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetimeCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedMaxKeepAliveCount); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedPublishingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetimeCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedMaxKeepAliveCount); proto_item_set_end(ti, tvb, *pOffset); } -void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifySubscriptionRequest, &ti, "ModifySubscriptionRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseDouble(subtree, tvb, pOffset, hf_opcua_RequestedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetimeCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedMaxKeepAliveCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxNotificationsPerPublish); - parseByte(subtree, tvb, pOffset, hf_opcua_Priority); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedPublishingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedLifetimeCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedMaxKeepAliveCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish); + parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority); proto_item_set_end(ti, tvb, *pOffset); } -void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifySubscriptionResponse, &ti, "ModifySubscriptionResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetimeCount); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedMaxKeepAliveCount); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedPublishingInterval); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetimeCount); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedMaxKeepAliveCount); proto_item_set_end(ti, tvb, *pOffset); } -void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetPublishingModeRequest, &ti, "SetPublishingModeRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled); /* Array length field ignored: NoOfSubscriptionIds */ - parseArraySimple(subtree, tvb, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32); proto_item_set_end(ti, tvb, *pOffset); } -void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetPublishingModeResponse, &ti, "SetPublishingModeResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_PublishRequest, &ti, "PublishRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfSubscriptionAcknowledgements */ - parseArrayComplex(subtree, tvb, pOffset, "SubscriptionAcknowledgements", "SubscriptionAcknowledgement", parseSubscriptionAcknowledgement, ett_opcua_array_SubscriptionAcknowledgement); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "SubscriptionAcknowledgements", "SubscriptionAcknowledgement", parseSubscriptionAcknowledgement, ett_opcua_array_SubscriptionAcknowledgement); proto_item_set_end(ti, tvb, *pOffset); } -void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_PublishResponse, &ti, "PublishResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); /* Array length field ignored: NoOfAvailableSequenceNumbers */ - parseArraySimple(subtree, tvb, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32); - parseBoolean(subtree, tvb, pOffset, hf_opcua_MoreNotifications); - parseNotificationMessage(subtree, tvb, pOffset, "NotificationMessage"); + parseArraySimple(subtree, tvb, pinfo, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_MoreNotifications); + parseNotificationMessage(subtree, tvb, pinfo, pOffset, "NotificationMessage"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RepublishRequest, &ti, "RepublishRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RetransmitSequenceNumber); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RetransmitSequenceNumber); proto_item_set_end(ti, tvb, *pOffset); } -void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RepublishResponse, &ti, "RepublishResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseNotificationMessage(subtree, tvb, pOffset, "NotificationMessage"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseNotificationMessage(subtree, tvb, pinfo, pOffset, "NotificationMessage"); proto_item_set_end(ti, tvb, *pOffset); } -void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TransferSubscriptionsRequest, &ti, "TransferSubscriptionsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfSubscriptionIds */ - parseArraySimple(subtree, tvb, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32); - parseBoolean(subtree, tvb, pOffset, hf_opcua_SendInitialValues); + parseArraySimple(subtree, tvb, pinfo, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32); + parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_SendInitialValues); proto_item_set_end(ti, tvb, *pOffset); } -void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TransferSubscriptionsResponse, &ti, "TransferSubscriptionsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArrayComplex(subtree, tvb, pOffset, "Results", "TransferResult", parseTransferResult, ett_opcua_array_TransferResult); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "TransferResult", parseTransferResult, ett_opcua_array_TransferResult); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteSubscriptionsRequest, &ti, "DeleteSubscriptionsRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); /* Array length field ignored: NoOfSubscriptionIds */ - parseArraySimple(subtree, tvb, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32); + parseArraySimple(subtree, tvb, pinfo, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32); proto_item_set_end(ti, tvb, *pOffset); } -void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteSubscriptionsResponse, &ti, "DeleteSubscriptionsResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); /* Array length field ignored: NoOfResults */ - parseArraySimple(subtree, tvb, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); + parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode); /* Array length field ignored: NoOfDiagnosticInfos */ - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); + parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); proto_item_set_end(ti, tvb, *pOffset); } -void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackRequest, &ti, "TestStackRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TestId); - parseInt32(subtree, tvb, pOffset, hf_opcua_Iteration); - parseVariant(subtree, tvb, pOffset, "Input"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TestId); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Iteration); + parseVariant(subtree, tvb, pinfo, pOffset, "Input"); proto_item_set_end(ti, tvb, *pOffset); } -void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackResponse, &ti, "TestStackResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseVariant(subtree, tvb, pOffset, "Output"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseVariant(subtree, tvb, pinfo, pOffset, "Output"); proto_item_set_end(ti, tvb, *pOffset); } -void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackExRequest, &ti, "TestStackExRequest"); - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_TestId); - parseInt32(subtree, tvb, pOffset, hf_opcua_Iteration); - parseCompositeTestType(subtree, tvb, pOffset, "Input"); + parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader"); + parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TestId); + parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Iteration); + parseCompositeTestType(subtree, tvb, pinfo, pOffset, "Input"); proto_item_set_end(ti, tvb, *pOffset); } -void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackExResponse, &ti, "TestStackExResponse"); - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseCompositeTestType(subtree, tvb, pOffset, "Output"); + parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader"); + parseCompositeTestType(subtree, tvb, pinfo, pOffset, "Output"); proto_item_set_end(ti, tvb, *pOffset); } diff --git a/plugins/opcua/opcua_serviceparser.h b/plugins/opcua/opcua_serviceparser.h index df6ab4c2cb..c380613093 100644 --- a/plugins/opcua/opcua_serviceparser.h +++ b/plugins/opcua/opcua_serviceparser.h @@ -14,7 +14,7 @@ ** ** Description: OpcUa Service Type Parser ** -** This file was autogenerated on 13.10.2014. +** This file was autogenerated on 16.10.2014. ** DON'T MODIFY THIS FILE! ** XXX - well, except that you may have to. See the README. ** @@ -182,83 +182,83 @@ extern gint ett_opcua_array_TestStackExRequest; extern gint ett_opcua_TestStackExResponse; extern gint ett_opcua_array_TestStackExResponse; -void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseUnregisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); -void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset); +void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseUnregisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); +void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset); void registerServiceTypes(void); diff --git a/plugins/opcua/opcua_servicetable.c b/plugins/opcua/opcua_servicetable.c index 1f1150747c..a839046dc5 100644 --- a/plugins/opcua/opcua_servicetable.c +++ b/plugins/opcua/opcua_servicetable.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: Service table and service dispatcher. ** -** This file was autogenerated on 12.02.2013. +** This file was autogenerated on 16.10.2014. ** DON'T MODIFY THIS FILE! ** ******************************************************************************/ @@ -196,7 +196,7 @@ const value_string g_requesttypes[] = { }; /** Dispatch all services to a special parser function. */ -void dispatchService(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int ServiceId) +void dispatchService(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, int ServiceId) { int indx = 0; @@ -204,7 +204,7 @@ void dispatchService(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int Service { if (g_arParserTable[indx].iRequestId == ServiceId) { - (*g_arParserTable[indx].pParser)(tree, tvb, pOffset); + (*g_arParserTable[indx].pParser)(tree, tvb, pinfo, pOffset); break; } indx++; diff --git a/plugins/opcua/opcua_servicetable.h b/plugins/opcua/opcua_servicetable.h index 3eb86357d7..870cda9898 100644 --- a/plugins/opcua/opcua_servicetable.h +++ b/plugins/opcua/opcua_servicetable.h @@ -16,5 +16,5 @@ ** ******************************************************************************/ -void dispatchService(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int ServiceId); +void dispatchService(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, int ServiceId); diff --git a/plugins/opcua/opcua_simpletypes.c b/plugins/opcua/opcua_simpletypes.c index f4897ed423..168491d02c 100644 --- a/plugins/opcua/opcua_simpletypes.c +++ b/plugins/opcua/opcua_simpletypes.c @@ -423,70 +423,70 @@ void registerSimpleTypes(int proto) proto_register_subtree_array(ett, array_length(ett)); } -proto_item* parseBoolean(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseBoolean(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); *pOffset+=1; return item; } -proto_item* parseByte(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseByte(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); *pOffset+=1; return item; } -proto_item* parseSByte(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseSByte(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 1, ENC_LITTLE_ENDIAN); *pOffset+=1; return item; } -proto_item* parseUInt16(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseUInt16(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 2, ENC_LITTLE_ENDIAN); *pOffset+=2; return item; } -proto_item* parseInt16(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseInt16(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 2, ENC_LITTLE_ENDIAN); *pOffset+=2; return item; } -proto_item* parseUInt32(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseUInt32(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; return item; } -proto_item* parseInt32(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseInt32(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 4, ENC_LITTLE_ENDIAN); *pOffset+=4; return item; } -proto_item* parseUInt64(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseUInt64(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 8, ENC_LITTLE_ENDIAN); *pOffset+=8; return item; } -proto_item* parseInt64(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseInt64(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, 8, ENC_LITTLE_ENDIAN); *pOffset+=8; return item; } -proto_item* parseString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseString(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = NULL; char *szValue; @@ -523,7 +523,7 @@ proto_item* parseString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIn return item; } -proto_item* parseStatusCode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseStatusCode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = NULL; guint32 uStatusCode = 0; @@ -573,7 +573,7 @@ proto_item* parseStatusCode(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int return item; } -void parseLocalizedText(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseLocalizedText(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { static const int *loctext_mask[] = {&hf_opcua_loctext_mask_localeflag, &hf_opcua_loctext_mask_textflag, @@ -593,26 +593,26 @@ void parseLocalizedText(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const ch if (EncodingMask & LOCALIZEDTEXT_ENCODINGBYTE_LOCALE) { - parseString(subtree, tvb, &iOffset, hf_opcua_localizedtext_locale); + parseString(subtree, tvb, pinfo, &iOffset, hf_opcua_localizedtext_locale); } if (EncodingMask & LOCALIZEDTEXT_ENCODINGBYTE_TEXT) { - parseString(subtree, tvb, &iOffset, hf_opcua_localizedtext_text); + parseString(subtree, tvb, pinfo, &iOffset, hf_opcua_localizedtext_text); } proto_item_set_end(ti, tvb, iOffset); *pOffset = iOffset; } -proto_item* parseGuid(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseGuid(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, GUID_LEN, ENC_NA); *pOffset+=GUID_LEN; return item; } -proto_item* parseByteString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseByteString(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = NULL; char *szValue; @@ -649,33 +649,33 @@ proto_item* parseByteString(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int return item; } -proto_item* parseXmlElement(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseXmlElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, int hfIndex) { - return parseByteString(tree, tvb, pOffset, hfIndex); + return parseByteString(tree, tvb, pinfo, pOffset, hfIndex); } -proto_item* parseFloat(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseFloat(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, (int)sizeof(gfloat), ENC_LITTLE_ENDIAN); *pOffset += (int)sizeof(gfloat); return item; } -proto_item* parseDouble(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseDouble(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = proto_tree_add_item(tree, hfIndex, tvb, *pOffset, (int)sizeof(gdouble), ENC_LITTLE_ENDIAN); *pOffset += (int)sizeof(gdouble); return item; } -proto_item* parseDateTime(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, int hfIndex) +proto_item* parseDateTime(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo _U_, gint *pOffset, int hfIndex) { proto_item *item = NULL; *pOffset = dissect_nt_64bit_time_ex(tvb, tree, *pOffset, hfIndex, &item, FALSE); return item; } -void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { static const int *diag_mask[] = {&hf_opcua_diag_mask_symbolicflag, &hf_opcua_diag_mask_namespaceflag, @@ -700,50 +700,50 @@ void parseDiagnosticInfo(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_SYMBOLICID_FLAG) { - parseInt32(subtree, tvb, &iOffset, hf_opcua_diag_symbolicid); + parseInt32(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_symbolicid); } if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_NAMESPACE_FLAG) { - parseInt32(subtree, tvb, &iOffset, hf_opcua_diag_namespace); + parseInt32(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_namespace); } if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_LOCALIZEDTEXT_FLAG) { - parseInt32(subtree, tvb, &iOffset, hf_opcua_diag_localizedtext); + parseInt32(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_localizedtext); } if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_LOCALE_FLAG) { - parseInt32(subtree, tvb, &iOffset, hf_opcua_diag_locale); + parseInt32(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_locale); } if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_ADDITIONALINFO_FLAG) { - parseString(subtree, tvb, &iOffset, hf_opcua_diag_additionalinfo); + parseString(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_additionalinfo); } if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_INNERSTATUSCODE_FLAG) { - parseStatusCode(subtree, tvb, &iOffset, hf_opcua_diag_innerstatuscode); + parseStatusCode(subtree, tvb, pinfo, &iOffset, hf_opcua_diag_innerstatuscode); } if (EncodingMask & DIAGNOSTICINFO_ENCODINGMASK_INNERDIAGNOSTICINFO_FLAG) { - parseDiagnosticInfo(subtree, tvb, &iOffset, "Inner DiagnosticInfo"); + parseDiagnosticInfo(subtree, tvb, pinfo, &iOffset, "Inner DiagnosticInfo"); } proto_item_set_end(ti, tvb, iOffset); *pOffset = iOffset; } -void parseQualifiedName(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseQualifiedName(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_qualifiedname, &ti, "%s: QualifiedName", szFieldName); - parseUInt16(subtree, tvb, pOffset, hf_opcua_qualifiedname_id); - parseString(subtree, tvb, pOffset, hf_opcua_qualifiedname_name); + parseUInt16(subtree, tvb, pinfo, pOffset, hf_opcua_qualifiedname_id); + parseString(subtree, tvb, pinfo, pOffset, hf_opcua_qualifiedname_name); proto_item_set_end(ti, tvb, *pOffset); } -void parseDataValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseDataValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { static const int *datavalue_mask[] = {&hf_opcua_datavalue_mask_valueflag, &hf_opcua_datavalue_mask_statuscodeflag, @@ -765,34 +765,34 @@ void parseDataValue(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char * if (EncodingMask & DATAVALUE_ENCODINGBYTE_VALUE) { - parseVariant(subtree, tvb, &iOffset, "Value"); + parseVariant(subtree, tvb, pinfo, &iOffset, "Value"); } if (EncodingMask & DATAVALUE_ENCODINGBYTE_STATUSCODE) { - parseStatusCode(subtree, tvb, &iOffset, hf_opcua_StatusCode); + parseStatusCode(subtree, tvb, pinfo, &iOffset, hf_opcua_StatusCode); } if (EncodingMask & DATAVALUE_ENCODINGBYTE_SOURCETIMESTAMP) { - parseDateTime(subtree, tvb, &iOffset, hf_opcua_SourceTimestamp); + parseDateTime(subtree, tvb, pinfo, &iOffset, hf_opcua_SourceTimestamp); } if (EncodingMask & DATAVALUE_ENCODINGBYTE_SOURCEPICOSECONDS) { - parseUInt16(subtree, tvb, &iOffset, hf_opcua_SourcePicoseconds); + parseUInt16(subtree, tvb, pinfo, &iOffset, hf_opcua_SourcePicoseconds); } if (EncodingMask & DATAVALUE_ENCODINGBYTE_SERVERTIMESTAMP) { - parseDateTime(subtree, tvb, &iOffset, hf_opcua_ServerTimestamp); + parseDateTime(subtree, tvb, pinfo, &iOffset, hf_opcua_ServerTimestamp); } if (EncodingMask & DATAVALUE_ENCODINGBYTE_SERVERPICOSECONDS) { - parseUInt16(subtree, tvb, &iOffset, hf_opcua_ServerPicoseconds); + parseUInt16(subtree, tvb, pinfo, &iOffset, hf_opcua_ServerPicoseconds); } proto_item_set_end(ti, tvb, iOffset); *pOffset = iOffset; } -void parseVariant(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName) +void parseVariant(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) { proto_item *ti; proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, @@ -811,31 +811,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, "Boolean", "Boolean", hf_opcua_Boolean, parseBoolean, ett_opcua_array_Boolean); break; - case OpcUaType_SByte: parseArraySimple(subtree, tvb, &iOffset, "SByte", "SByte", hf_opcua_SByte, parseSByte, ett_opcua_array_SByte); break; - case OpcUaType_Byte: parseArraySimple(subtree, tvb, &iOffset, "Byte", "Byte", hf_opcua_Byte, parseByte, ett_opcua_array_Byte); break; - case OpcUaType_Int16: parseArraySimple(subtree, tvb, &iOffset, "Int16", "Int16", hf_opcua_Int16, parseInt16, ett_opcua_array_Int16); break; - case OpcUaType_UInt16: parseArraySimple(subtree, tvb, &iOffset, "UInt16", "UInt16", hf_opcua_UInt16, parseUInt16, ett_opcua_array_UInt16); break; - case OpcUaType_Int32: parseArraySimple(subtree, tvb, &iOffset, "Int32", "Int32", hf_opcua_Int32, parseInt32, ett_opcua_array_Int32); break; - case OpcUaType_UInt32: parseArraySimple(subtree, tvb, &iOffset, "UInt32", "UInt32", hf_opcua_UInt32, parseUInt32, ett_opcua_array_UInt32); break; - case OpcUaType_Int64: parseArraySimple(subtree, tvb, &iOffset, "Int64", "Int64", hf_opcua_Int64, parseInt64, ett_opcua_array_Int64); break; - case OpcUaType_UInt64: parseArraySimple(subtree, tvb, &iOffset, "UInt64", "UInt64", hf_opcua_UInt64, parseUInt64, ett_opcua_array_UInt64); break; - case OpcUaType_Float: parseArraySimple(subtree, tvb, &iOffset, "Float", "Float", hf_opcua_Float, parseFloat, ett_opcua_array_Float); break; - case OpcUaType_Double: parseArraySimple(subtree, tvb, &iOffset, "Double", "Double", hf_opcua_Double, parseDouble, ett_opcua_array_Double); break; - case OpcUaType_String: parseArraySimple(subtree, tvb, &iOffset, "String", "String", hf_opcua_String, parseString, ett_opcua_array_String); break; - case OpcUaType_DateTime: parseArraySimple(subtree, tvb, &iOffset, "DateTime", "DateTime", hf_opcua_DateTime, parseDateTime, ett_opcua_array_DateTime); break; - case OpcUaType_Guid: parseArraySimple(subtree, tvb, &iOffset, "Guid", "Guid", hf_opcua_Guid, parseGuid, ett_opcua_array_Guid); break; - case OpcUaType_ByteString: parseArraySimple(subtree, tvb, &iOffset, "ByteString", "ByteString", hf_opcua_ByteString, parseByteString, ett_opcua_array_ByteString); break; - case OpcUaType_XmlElement: parseArraySimple(subtree, tvb, &iOffset, "XmlElement", "XmlElement", hf_opcua_XmlElement, parseXmlElement, ett_opcua_array_XmlElement); break; - case OpcUaType_NodeId: parseArrayComplex(subtree, tvb, &iOffset, "NodeId", "NodeId", parseNodeId, ett_opcua_array_NodeId); break; - case OpcUaType_ExpandedNodeId: parseArrayComplex(subtree, tvb, &iOffset, "ExpandedNodeId", "ExpandedNodeId", parseExpandedNodeId, ett_opcua_array_ExpandedNodeId); break; - case OpcUaType_StatusCode: parseArraySimple(subtree, tvb, &iOffset, "StatusCode", "StatusCode", hf_opcua_StatusCode, parseStatusCode, ett_opcua_array_StatusCode); break; - case OpcUaType_DiagnosticInfo: parseArrayComplex(subtree, tvb, &iOffset, "DiagnosticInfo", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); break; - case OpcUaType_QualifiedName: parseArrayComplex(subtree, tvb, &iOffset, "QualifiedName", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); break; - case OpcUaType_LocalizedText: parseArrayComplex(subtree, tvb, &iOffset, "LocalizedText", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); break; - case OpcUaType_ExtensionObject: parseArrayComplex(subtree, tvb, &iOffset, "ExtensionObject", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); break; - case OpcUaType_DataValue: parseArrayComplex(subtree, tvb, &iOffset, "DataValue", "DataValue", parseDataValue, ett_opcua_array_DataValue); break; - case OpcUaType_Variant: parseArrayComplex(subtree, tvb, &iOffset, "Variant", "Variant", parseVariant, ett_opcua_array_Variant); break; + case OpcUaType_Boolean: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Boolean", "Boolean", hf_opcua_Boolean, parseBoolean, ett_opcua_array_Boolean); break; + case OpcUaType_SByte: parseArraySimple(subtree, tvb, pinfo, &iOffset, "SByte", "SByte", hf_opcua_SByte, parseSByte, ett_opcua_array_SByte); break; + case OpcUaType_Byte: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Byte", "Byte", hf_opcua_Byte, parseByte, ett_opcua_array_Byte); break; + case OpcUaType_Int16: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Int16", "Int16", hf_opcua_Int16, parseInt16, ett_opcua_array_Int16); break; + case OpcUaType_UInt16: parseArraySimple(subtree, tvb, pinfo, &iOffset, "UInt16", "UInt16", hf_opcua_UInt16, parseUInt16, ett_opcua_array_UInt16); break; + case OpcUaType_Int32: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Int32", "Int32", hf_opcua_Int32, parseInt32, ett_opcua_array_Int32); break; + case OpcUaType_UInt32: parseArraySimple(subtree, tvb, pinfo, &iOffset, "UInt32", "UInt32", hf_opcua_UInt32, parseUInt32, ett_opcua_array_UInt32); break; + case OpcUaType_Int64: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Int64", "Int64", hf_opcua_Int64, parseInt64, ett_opcua_array_Int64); break; + case OpcUaType_UInt64: parseArraySimple(subtree, tvb, pinfo, &iOffset, "UInt64", "UInt64", hf_opcua_UInt64, parseUInt64, ett_opcua_array_UInt64); break; + case OpcUaType_Float: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Float", "Float", hf_opcua_Float, parseFloat, ett_opcua_array_Float); break; + case OpcUaType_Double: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Double", "Double", hf_opcua_Double, parseDouble, ett_opcua_array_Double); break; + case OpcUaType_String: parseArraySimple(subtree, tvb, pinfo, &iOffset, "String", "String", hf_opcua_String, parseString, ett_opcua_array_String); break; + case OpcUaType_DateTime: parseArraySimple(subtree, tvb, pinfo, &iOffset, "DateTime", "DateTime", hf_opcua_DateTime, parseDateTime, ett_opcua_array_DateTime); break; + case OpcUaType_Guid: parseArraySimple(subtree, tvb, pinfo, &iOffset, "Guid", "Guid", hf_opcua_Guid, parseGuid, ett_opcua_array_Guid); break; + case OpcUaType_ByteString: parseArraySimple(subtree, tvb, pinfo, &iOffset, "ByteString", "ByteString", hf_opcua_ByteString, parseByteString, ett_opcua_array_ByteString); break; + case OpcUaType_XmlElement: parseArraySimple(subtree, tvb, pinfo, &iOffset, "XmlElement", "XmlElement", hf_opcua_XmlElement, parseXmlElement, ett_opcua_array_XmlElement); break; + case OpcUaType_NodeId: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "NodeId", "NodeId", parseNodeId, ett_opcua_array_NodeId); break; + case OpcUaType_ExpandedNodeId: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "ExpandedNodeId", "ExpandedNodeId", parseExpandedNodeId, ett_opcua_array_ExpandedNodeId); break; + case OpcUaType_StatusCode: parseArraySimple(subtree, tvb, pinfo, &iOffset, "StatusCode", "StatusCode", hf_opcua_StatusCode, parseStatusCode, ett_opcua_array_StatusCode); break; + case OpcUaType_DiagnosticInfo: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "DiagnosticInfo", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); break; + case OpcUaType_QualifiedName: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "QualifiedName", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); break; + case OpcUaType_LocalizedText: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "LocalizedText", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); break; + case OpcUaType_ExtensionObject: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "ExtensionObject", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); break; + case OpcUaType_DataValue: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "DataValue", "DataValue", parseDataValue, ett_opcua_array_DataValue); break; + case OpcUaType_Variant: parseArrayComplex(subtree, tvb, pinfo, &iOffset, "Variant", "Variant", parseVariant, ett_opcua_array_Variant); break; } if (EncodingMask & VARIANT_ARRAYDIMENSIONS) @@ -860,7 +860,7 @@ void parseVariant(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *sz iOffset += 4; for (i=0; i