diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2009-04-06 18:30:04 +0000 |
---|---|---|
committer | Jaap Keuter <jaap.keuter@xs4all.nl> | 2009-04-06 18:30:04 +0000 |
commit | 8ecf45961110d5783b7c99715b7c7cf05c5b41ed (patch) | |
tree | 926b3b5c94b33b4dbdca1083214be171806a0c9e /plugins/opcua/opcua_serviceparser.c | |
parent | 680cf63be8e8fc8f77de645f217d33e28cd61513 (diff) |
From Gerhard Gappmeier:
This patch updates the plugin to fit the released OPCUA protocol version.
svn path=/trunk/; revision=27974
Diffstat (limited to 'plugins/opcua/opcua_serviceparser.c')
-rw-r--r-- | plugins/opcua/opcua_serviceparser.c | 333 |
1 files changed, 182 insertions, 151 deletions
diff --git a/plugins/opcua/opcua_serviceparser.c b/plugins/opcua/opcua_serviceparser.c index 4efba325a8..aa54b02ee1 100644 --- a/plugins/opcua/opcua_serviceparser.c +++ b/plugins/opcua/opcua_serviceparser.c @@ -1,7 +1,7 @@ /****************************************************************************** ** $Id$ ** -** Copyright (C) 2006-2007 ascolab GmbH. All Rights Reserved. +** Copyright (C) 2006-2009 ascolab GmbH. All Rights Reserved. ** Web: http://www.ascolab.com ** ** This program is free software; you can redistribute it and/or @@ -14,9 +14,9 @@ ** ** Project: OpcUa Wireshark Plugin ** -** Description: OpcUa Service Type Parser +** Description: OpcUa Complex Type Parser ** -** This file was autogenerated on 8.5.2007 18:53:26. +** This file was autogenerated on 01.04.2009. ** DON'T MODIFY THIS FILE! ** ******************************************************************************/ @@ -27,13 +27,11 @@ #include <glib.h> #include <epan/packet.h> -#include "opcua_serviceparser.h" #include "opcua_complextypeparser.h" #include "opcua_enumparser.h" #include "opcua_simpletypes.h" #include "opcua_hfindeces.h" - gint ett_opcua_TestStackRequest = -1; void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -45,7 +43,6 @@ void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseInt32(subtree, tvb, pOffset, hf_opcua_Iteration); parseVariant(subtree, tvb, pOffset, "Input"); } - gint ett_opcua_TestStackResponse = -1; void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -55,7 +52,6 @@ void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseVariant(subtree, tvb, pOffset, "Output"); } - gint ett_opcua_TestStackExRequest = -1; void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -65,9 +61,8 @@ void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_TestId); parseInt32(subtree, tvb, pOffset, hf_opcua_Iteration); - parseExtensionObject(subtree, tvb, pOffset, "Input"); + parseCompositeTestType(subtree, tvb, pOffset, "Input"); } - gint ett_opcua_TestStackExResponse = -1; void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -75,9 +70,8 @@ void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TestStackExResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseExtensionObject(subtree, tvb, pOffset, "Output"); + parseCompositeTestType(subtree, tvb, pOffset, "Output"); } - gint ett_opcua_FindServersRequest = -1; void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -85,10 +79,12 @@ void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_FindServersRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseArrayComplex(subtree, tvb, pOffset, "LocaleIds", parseLocalizedText); + parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + /* Array length field ignored: NoOfLocaleIds */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); + /* Array length field ignored: NoOfServerUris */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ServerUris, parseString); } - gint ett_opcua_FindServersResponse = -1; void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -96,9 +92,9 @@ void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_FindServersResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseArrayComplex(subtree, tvb, pOffset, "Servers", parseServerDescription); + /* Array length field ignored: NoOfServers */ + parseArrayComplex(subtree, tvb, pOffset, "Servers", parseApplicationDescription); } - gint ett_opcua_GetEndpointsRequest = -1; void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -106,10 +102,12 @@ void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_GetEndpointsRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseArrayComplex(subtree, tvb, pOffset, "LocaleIds", parseLocalizedText); + parseString(subtree, tvb, pOffset, hf_opcua_EndpointUrl); + /* Array length field ignored: NoOfLocaleIds */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); + /* Array length field ignored: NoOfProfileUris */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_ProfileUris, parseString); } - gint ett_opcua_GetEndpointsResponse = -1; void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -117,9 +115,9 @@ void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_GetEndpointsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfEndpoints */ parseArrayComplex(subtree, tvb, pOffset, "Endpoints", parseEndpointDescription); } - gint ett_opcua_RegisterServerRequest = -1; void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -129,7 +127,6 @@ void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseRegisteredServer(subtree, tvb, pOffset, "Server"); } - gint ett_opcua_RegisterServerResponse = -1; void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -138,7 +135,6 @@ void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); } - gint ett_opcua_OpenSecureChannelRequest = -1; void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -146,16 +142,12 @@ void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffse proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_OpenSecureChannelRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ClientCertificate); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ClientProtocolVersion); parseSecurityTokenRequestType(subtree, tvb, pOffset); - parseGuid(subtree, tvb, pOffset, hf_opcua_SecureChannelId); parseMessageSecurityMode(subtree, tvb, pOffset); - parseString(subtree, tvb, pOffset, hf_opcua_SecurityPolicyUri); - parseSecurityPolicy(subtree, tvb, pOffset, "SecurityPolicy"); parseByteString(subtree, tvb, pOffset, hf_opcua_ClientNonce); - parseInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetime); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetime); } - gint ett_opcua_OpenSecureChannelResponse = -1; void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -163,11 +155,10 @@ void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffs proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_OpenSecureChannelResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ServerCertificate); + parseUInt32(subtree, tvb, pOffset, hf_opcua_ServerProtocolVersion); parseChannelSecurityToken(subtree, tvb, pOffset, "SecurityToken"); parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); } - gint ett_opcua_CloseSecureChannelRequest = -1; void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -175,9 +166,7 @@ void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffs proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CloseSecureChannelRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseGuid(subtree, tvb, pOffset, hf_opcua_SecureChannelId); } - gint ett_opcua_CloseSecureChannelResponse = -1; void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -186,7 +175,6 @@ void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOff parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); } - gint ett_opcua_CreateSessionRequest = -1; void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -194,12 +182,15 @@ void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CreateSessionRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseString(subtree, tvb, pOffset, hf_opcua_ClientName); + 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); - parseInt32(subtree, tvb, pOffset, hf_opcua_RequestedSessionTimeout); + parseDouble(subtree, tvb, pOffset, hf_opcua_RequestedSessionTimeout); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxResponseMessageSize); } - gint ett_opcua_CreateSessionResponse = -1; void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -207,14 +198,18 @@ void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CreateSessionResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SessionId); - parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedSessionTimeout); + 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); + /* Array length field ignored: NoOfServerEndpoints */ + parseArrayComplex(subtree, tvb, pOffset, "ServerEndpoints", parseEndpointDescription); + /* Array length field ignored: NoOfServerSoftwareCertificates */ parseArrayComplex(subtree, tvb, pOffset, "ServerSoftwareCertificates", parseSignedSoftwareCertificate); parseSignatureData(subtree, tvb, pOffset, "ServerSignature"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxRequestMessageSize); } - gint ett_opcua_ActivateSessionRequest = -1; void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -223,12 +218,13 @@ void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseSignatureData(subtree, tvb, pOffset, "ClientSignature"); + /* Array length field ignored: NoOfClientSoftwareCertificates */ parseArrayComplex(subtree, tvb, pOffset, "ClientSoftwareCertificates", parseSignedSoftwareCertificate); + /* Array length field ignored: NoOfLocaleIds */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_LocaleIds, parseString); parseExtensionObject(subtree, tvb, pOffset, "UserIdentityToken"); parseSignatureData(subtree, tvb, pOffset, "UserTokenSignature"); } - gint ett_opcua_ActivateSessionResponse = -1; void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -237,10 +233,11 @@ void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseByteString(subtree, tvb, pOffset, hf_opcua_ServerNonce); - parseArraySimple(subtree, tvb, pOffset, hf_opcua_CertificateResults, parseStatusCode); - parseArrayComplex(subtree, tvb, pOffset, "CertificateDiagnosticInfos", parseDiagnosticInfo); + /* Array length field ignored: NoOfResults */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_CloseSessionRequest = -1; void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -248,8 +245,8 @@ void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CloseSessionRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + parseBoolean(subtree, tvb, pOffset, hf_opcua_DeleteSubscriptions); } - gint ett_opcua_CloseSessionResponse = -1; void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -258,7 +255,6 @@ void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); } - gint ett_opcua_CancelRequest = -1; void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -266,9 +262,8 @@ void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CancelRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_SequenceNumber); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestHandle); } - gint ett_opcua_CancelResponse = -1; void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -276,8 +271,8 @@ void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CancelResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + parseUInt32(subtree, tvb, pOffset, hf_opcua_CancelCount); } - gint ett_opcua_AddNodesRequest = -1; void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -285,9 +280,9 @@ void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfNodesToAdd */ parseArrayComplex(subtree, tvb, pOffset, "NodesToAdd", parseAddNodesItem); } - gint ett_opcua_AddNodesResponse = -1; void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -295,10 +290,11 @@ void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddNodesResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseAddNodesResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_AddReferencesRequest = -1; void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -306,9 +302,9 @@ void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddReferencesRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfReferencesToAdd */ parseArrayComplex(subtree, tvb, pOffset, "ReferencesToAdd", parseAddReferencesItem); } - gint ett_opcua_AddReferencesResponse = -1; void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -316,10 +312,11 @@ void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_AddReferencesResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_DeleteNodesRequest = -1; void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -327,9 +324,9 @@ void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteNodesRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfNodesToDelete */ parseArrayComplex(subtree, tvb, pOffset, "NodesToDelete", parseDeleteNodesItem); } - gint ett_opcua_DeleteNodesResponse = -1; void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -337,10 +334,11 @@ void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteNodesResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); - parseArrayComplex(subtree, tvb, pOffset, "Diagnostics", parseDiagnosticInfo); + /* Array length field ignored: NoOfDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_DeleteReferencesRequest = -1; void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -348,9 +346,9 @@ void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteReferencesRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfReferencesToDelete */ parseArrayComplex(subtree, tvb, pOffset, "ReferencesToDelete", parseDeleteReferencesItem); } - gint ett_opcua_DeleteReferencesResponse = -1; void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -358,32 +356,11 @@ void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffse proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteReferencesResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - -gint ett_opcua_BrowsePropertiesRequest = -1; -void parseBrowsePropertiesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "BrowsePropertiesRequest"); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesRequest); - - parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseArrayComplex(subtree, tvb, pOffset, "NodesToAccess", parseNodeId); - parseArrayComplex(subtree, tvb, pOffset, "Properties", parseQualifiedName); -} - -gint ett_opcua_BrowsePropertiesResponse = -1; -void parseBrowsePropertiesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) -{ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "BrowsePropertiesResponse"); - proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowsePropertiesResponse); - - parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseArrayComplex(subtree, tvb, pOffset, "NodeResults", parseBrowsePropertiesResult); - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); -} - gint ett_opcua_BrowseRequest = -1; void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -392,14 +369,10 @@ void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseViewDescription(subtree, tvb, pOffset, "View"); - parseNodeId(subtree, tvb, pOffset, "NodeToBrowse"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxResultsToReturn); - parseBrowseDirection(subtree, tvb, pOffset); - parseNodeId(subtree, tvb, pOffset, "ReferenceTypeId"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_IncludeSubtypes); - parseInt32(subtree, tvb, pOffset, hf_opcua_NodeClassMask); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedMaxReferencesPerNode); + /* Array length field ignored: NoOfNodesToBrowse */ + parseArrayComplex(subtree, tvb, pOffset, "NodesToBrowse", parseBrowseDescription); } - gint ett_opcua_BrowseResponse = -1; void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -407,10 +380,11 @@ void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowseResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); - parseArrayComplex(subtree, tvb, pOffset, "References", parseReferenceDescription); + /* Array length field ignored: NoOfResults */ + parseArrayComplex(subtree, tvb, pOffset, "Results", parseBrowseResult); + /* Array length field ignored: NoOfDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_BrowseNextRequest = -1; void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -418,10 +392,10 @@ void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowseNextRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoint); - parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); + parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoints); + /* Array length field ignored: NoOfContinuationPoints */ + parseArraySimple(subtree, tvb, pOffset, hf_opcua_ContinuationPoints, parseByteString); } - gint ett_opcua_BrowseNextResponse = -1; void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -429,10 +403,11 @@ void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_BrowseNextResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseByteString(subtree, tvb, pOffset, hf_opcua_RevisedContinuationPoint); - parseArrayComplex(subtree, tvb, pOffset, "References", parseReferenceDescription); + /* Array length field ignored: NoOfResults */ + parseArrayComplex(subtree, tvb, pOffset, "Results", parseBrowseResult); + /* Array length field ignored: NoOfDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_TranslateBrowsePathsToNodeIdsRequest = -1; void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -440,9 +415,9 @@ void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TranslateBrowsePathsToNodeIdsRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfBrowsePaths */ parseArrayComplex(subtree, tvb, pOffset, "BrowsePaths", parseBrowsePath); } - gint ett_opcua_TranslateBrowsePathsToNodeIdsResponse = -1; void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -450,10 +425,49 @@ void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TranslateBrowsePathsToNodeIdsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseArrayComplex(subtree, tvb, pOffset, "Results", parseTranslateBrowsePathResult); + /* Array length field ignored: NoOfResults */ + parseArrayComplex(subtree, tvb, pOffset, "Results", parseBrowsePathResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } +gint ett_opcua_RegisterNodesRequest = -1; +void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "RegisterNodesRequest"); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RegisterNodesRequest); + parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfNodesToRegister */ + parseArrayComplex(subtree, tvb, pOffset, "NodesToRegister", parseNodeId); +} +gint ett_opcua_RegisterNodesResponse = -1; +void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "RegisterNodesResponse"); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_RegisterNodesResponse); + + parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfRegisteredNodeIds */ + parseArrayComplex(subtree, tvb, pOffset, "RegisteredNodeIds", parseNodeId); +} +gint ett_opcua_UnregisterNodesRequest = -1; +void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "UnregisterNodesRequest"); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UnregisterNodesRequest); + + parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfNodesToUnregister */ + parseArrayComplex(subtree, tvb, pOffset, "NodesToUnregister", parseNodeId); +} +gint ett_opcua_UnregisterNodesResponse = -1; +void parseUnregisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) +{ + proto_item *ti = proto_tree_add_text(tree, tvb, 0, -1, "UnregisterNodesResponse"); + proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_UnregisterNodesResponse); + + parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); +} gint ett_opcua_QueryFirstRequest = -1; void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -462,14 +476,12 @@ void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseViewDescription(subtree, tvb, pOffset, "View"); + /* Array length field ignored: NoOfNodeTypes */ parseArrayComplex(subtree, tvb, pOffset, "NodeTypes", parseNodeTypeDescription); parseContentFilter(subtree, tvb, pOffset, "Filter"); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxDescriptionsToReturn); + parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxDataSetsToReturn); parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxReferencesToReturn); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxReferencedNodesToReturn); - parseUInt32(subtree, tvb, pOffset, hf_opcua_MaxTime); } - gint ett_opcua_QueryFirstResponse = -1; void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -477,13 +489,15 @@ void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryFirstResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfQueryDataSets */ parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", parseQueryDataSet); parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); - parseArrayComplex(subtree, tvb, pOffset, "Results", parseQueryResult); - parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfo", parseDiagnosticInfo); - parseContentFilterResult(subtree, tvb, pOffset, "ContentFilterResult"); + /* Array length field ignored: NoOfParsingResults */ + parseArrayComplex(subtree, tvb, pOffset, "ParsingResults", parseParsingResult); + /* Array length field ignored: NoOfDiagnosticInfos */ + parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); + parseContentFilterResult(subtree, tvb, pOffset, "FilterResult"); } - gint ett_opcua_QueryNextRequest = -1; void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -494,7 +508,6 @@ void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoint); parseByteString(subtree, tvb, pOffset, hf_opcua_ContinuationPoint); } - gint ett_opcua_QueryNextResponse = -1; void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -502,10 +515,10 @@ void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_QueryNextResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfQueryDataSets */ parseArrayComplex(subtree, tvb, pOffset, "QueryDataSets", parseQueryDataSet); parseByteString(subtree, tvb, pOffset, hf_opcua_RevisedContinuationPoint); } - gint ett_opcua_ReadRequest = -1; void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -513,11 +526,11 @@ void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseInt32(subtree, tvb, pOffset, hf_opcua_MaxAge); + parseDouble(subtree, tvb, pOffset, hf_opcua_MaxAge); parseTimestampsToReturn(subtree, tvb, pOffset); + /* Array length field ignored: NoOfNodesToRead */ parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", parseReadValueId); } - gint ett_opcua_ReadResponse = -1; void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -525,10 +538,11 @@ void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ReadResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseDataValue); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_HistoryReadRequest = -1; void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -539,9 +553,9 @@ void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseExtensionObject(subtree, tvb, pOffset, "HistoryReadDetails"); parseTimestampsToReturn(subtree, tvb, pOffset); parseBoolean(subtree, tvb, pOffset, hf_opcua_ReleaseContinuationPoints); + /* Array length field ignored: NoOfNodesToRead */ parseArrayComplex(subtree, tvb, pOffset, "NodesToRead", parseHistoryReadValueId); } - gint ett_opcua_HistoryReadResponse = -1; void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -549,10 +563,11 @@ void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryReadResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseHistoryReadResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_WriteRequest = -1; void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -560,9 +575,9 @@ void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WriteRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfNodesToWrite */ parseArrayComplex(subtree, tvb, pOffset, "NodesToWrite", parseWriteValue); } - gint ett_opcua_WriteResponse = -1; void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -570,10 +585,11 @@ void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_WriteResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_HistoryUpdateRequest = -1; void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -581,9 +597,9 @@ void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfHistoryUpdateDetails */ parseArrayComplex(subtree, tvb, pOffset, "HistoryUpdateDetails", parseExtensionObject); } - gint ett_opcua_HistoryUpdateResponse = -1; void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -591,10 +607,11 @@ void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_HistoryUpdateResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseHistoryUpdateResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_CallRequest = -1; void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -602,9 +619,9 @@ void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseArrayComplex(subtree, tvb, pOffset, "MethodsToCall", parseCallRequestItem); + /* Array length field ignored: NoOfMethodsToCall */ + parseArrayComplex(subtree, tvb, pOffset, "MethodsToCall", parseCallMethodRequest); } - gint ett_opcua_CallResponse = -1; void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -612,10 +629,11 @@ void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CallResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseArrayComplex(subtree, tvb, pOffset, "Results", parseCallResultItem); + /* Array length field ignored: NoOfResults */ + parseArrayComplex(subtree, tvb, pOffset, "Results", parseCallMethodResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_CreateMonitoredItemsRequest = -1; void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -625,9 +643,9 @@ void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseTimestampsToReturn(subtree, tvb, pOffset); + /* Array length field ignored: NoOfItemsToCreate */ parseArrayComplex(subtree, tvb, pOffset, "ItemsToCreate", parseMonitoredItemCreateRequest); } - gint ett_opcua_CreateMonitoredItemsResponse = -1; void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -635,10 +653,11 @@ void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pO proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CreateMonitoredItemsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseMonitoredItemCreateResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_ModifyMonitoredItemsRequest = -1; void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -648,9 +667,9 @@ void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseTimestampsToReturn(subtree, tvb, pOffset); + /* Array length field ignored: NoOfItemsToModify */ parseArrayComplex(subtree, tvb, pOffset, "ItemsToModify", parseMonitoredItemModifyRequest); } - gint ett_opcua_ModifyMonitoredItemsResponse = -1; void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -658,10 +677,11 @@ void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pO proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ModifyMonitoredItemsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseMonitoredItemModifyResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_SetMonitoringModeRequest = -1; void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -671,9 +691,9 @@ void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffse parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseMonitoringMode(subtree, tvb, pOffset); + /* Array length field ignored: NoOfMonitoredItemIds */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_MonitoredItemIds, parseUInt32); } - gint ett_opcua_SetMonitoringModeResponse = -1; void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -681,10 +701,11 @@ void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffs proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SetMonitoringModeResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_SetTriggeringRequest = -1; void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -694,10 +715,11 @@ void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseUInt32(subtree, tvb, pOffset, hf_opcua_TriggeringItemId); + /* Array length field ignored: NoOfLinksToAdd */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_LinksToAdd, parseUInt32); + /* Array length field ignored: NoOfLinksToRemove */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_LinksToRemove, parseUInt32); } - gint ett_opcua_SetTriggeringResponse = -1; void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -705,12 +727,15 @@ void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SetTriggeringResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfAddResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_AddResults, parseStatusCode); + /* Array length field ignored: NoOfAddDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "AddDiagnosticInfos", parseDiagnosticInfo); + /* Array length field ignored: NoOfRemoveResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_RemoveResults, parseStatusCode); + /* Array length field ignored: NoOfRemoveDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "RemoveDiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_DeleteMonitoredItemsRequest = -1; void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -719,9 +744,9 @@ void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOf parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); + /* Array length field ignored: NoOfMonitoredItemIds */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_MonitoredItemIds, parseUInt32); } - gint ett_opcua_DeleteMonitoredItemsResponse = -1; void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -729,10 +754,11 @@ void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pO proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteMonitoredItemsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_CreateSubscriptionRequest = -1; void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -740,13 +766,13 @@ void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffs proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_CreateSubscriptionRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); - parseInt32(subtree, tvb, pOffset, hf_opcua_RequestedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetimeCounter); + 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); } - gint ett_opcua_CreateSubscriptionResponse = -1; void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -755,11 +781,10 @@ void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOff parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetimeCounter); + parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedPublishingInterval); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetimeCount); parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedMaxKeepAliveCount); } - gint ett_opcua_ModifySubscriptionRequest = -1; void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -768,12 +793,12 @@ void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffs parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); - parseInt32(subtree, tvb, pOffset, hf_opcua_RequestedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RequestedLifetimeCounter); + 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); } - gint ett_opcua_ModifySubscriptionResponse = -1; void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -781,11 +806,10 @@ void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOff proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ModifySubscriptionResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); - parseInt32(subtree, tvb, pOffset, hf_opcua_RevisedPublishingInterval); - parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetimeCounter); + parseDouble(subtree, tvb, pOffset, hf_opcua_RevisedPublishingInterval); + parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedLifetimeCount); parseUInt32(subtree, tvb, pOffset, hf_opcua_RevisedMaxKeepAliveCount); } - gint ett_opcua_SetPublishingModeRequest = -1; void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -794,9 +818,9 @@ void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffse parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); parseBoolean(subtree, tvb, pOffset, hf_opcua_PublishingEnabled); + /* Array length field ignored: NoOfSubscriptionIds */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SubscriptionIds, parseUInt32); } - gint ett_opcua_SetPublishingModeResponse = -1; void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -804,10 +828,11 @@ void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffs proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_SetPublishingModeResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_PublishRequest = -1; void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -815,9 +840,9 @@ void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_PublishRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfSubscriptionAcknowledgements */ parseArrayComplex(subtree, tvb, pOffset, "SubscriptionAcknowledgements", parseSubscriptionAcknowledgement); } - gint ett_opcua_PublishResponse = -1; void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -826,13 +851,15 @@ void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); + /* Array length field ignored: NoOfAvailableSequenceNumbers */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_AvailableSequenceNumbers, parseUInt32); parseBoolean(subtree, tvb, pOffset, hf_opcua_MoreNotifications); parseNotificationMessage(subtree, tvb, pOffset, "NotificationMessage"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_RepublishRequest = -1; void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -843,7 +870,6 @@ void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseUInt32(subtree, tvb, pOffset, hf_opcua_SubscriptionId); parseUInt32(subtree, tvb, pOffset, hf_opcua_RetransmitSequenceNumber); } - gint ett_opcua_RepublishResponse = -1; void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -853,7 +879,6 @@ void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); parseNotificationMessage(subtree, tvb, pOffset, "NotificationMessage"); } - gint ett_opcua_TransferSubscriptionsRequest = -1; void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -861,9 +886,10 @@ void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pO proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TransferSubscriptionsRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfSubscriptionIds */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SubscriptionIds, parseUInt32); + parseBoolean(subtree, tvb, pOffset, hf_opcua_SendInitialValues); } - gint ett_opcua_TransferSubscriptionsResponse = -1; void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -871,10 +897,11 @@ void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *p proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_TransferSubscriptionsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArrayComplex(subtree, tvb, pOffset, "Results", parseTransferResult); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } - gint ett_opcua_DeleteSubscriptionsRequest = -1; void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -882,9 +909,9 @@ void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOff proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteSubscriptionsRequest); parseRequestHeader(subtree, tvb, pOffset, "RequestHeader"); + /* Array length field ignored: NoOfSubscriptionIds */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_SubscriptionIds, parseUInt32); } - gint ett_opcua_DeleteSubscriptionsResponse = -1; void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset) { @@ -892,7 +919,9 @@ void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOf proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_DeleteSubscriptionsResponse); parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader"); + /* Array length field ignored: NoOfResults */ parseArraySimple(subtree, tvb, pOffset, hf_opcua_Results, parseStatusCode); + /* Array length field ignored: NoOfDiagnosticInfos */ parseArrayComplex(subtree, tvb, pOffset, "DiagnosticInfos", parseDiagnosticInfo); } @@ -929,14 +958,16 @@ static gint *ett[] = &ett_opcua_DeleteNodesResponse, &ett_opcua_DeleteReferencesRequest, &ett_opcua_DeleteReferencesResponse, - &ett_opcua_BrowsePropertiesRequest, - &ett_opcua_BrowsePropertiesResponse, &ett_opcua_BrowseRequest, &ett_opcua_BrowseResponse, &ett_opcua_BrowseNextRequest, &ett_opcua_BrowseNextResponse, &ett_opcua_TranslateBrowsePathsToNodeIdsRequest, &ett_opcua_TranslateBrowsePathsToNodeIdsResponse, + &ett_opcua_RegisterNodesRequest, + &ett_opcua_RegisterNodesResponse, + &ett_opcua_UnregisterNodesRequest, + &ett_opcua_UnregisterNodesResponse, &ett_opcua_QueryFirstRequest, &ett_opcua_QueryFirstResponse, &ett_opcua_QueryNextRequest, |