Move ServiceFault from ComplexType- to ServiceParser

ServiceFaults are always sent as a service response and never as value, this moves the parsing code to the correct location.

Change-Id: Ida9cb561aa40fcbfc3c0429aed732d108b295138
Reviewed-on: https://code.wireshark.org/review/2124
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
This commit is contained in:
Hannes Mezger 2014-06-10 12:27:34 +02:00 committed by Alexis La Goutte
parent fabee432de
commit baa5888788
8 changed files with 14 additions and 12 deletions

View File

@ -314,14 +314,6 @@ void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const c
parseExtensionObject(subtree, tvb, pOffset, "AdditionalHeader");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_ServiceFault = -1;
void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "%s : ServiceFault", szFieldName);
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceFault);
parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_UserTokenPolicy = -1;
void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const char *szFieldName)
{
@ -1803,7 +1795,6 @@ static gint *ett[] =
&ett_opcua_ApplicationDescription,
&ett_opcua_RequestHeader,
&ett_opcua_ResponseHeader,
&ett_opcua_ServiceFault,
&ett_opcua_UserTokenPolicy,
&ett_opcua_EndpointDescription,
&ett_opcua_RegisteredServer,

View File

@ -42,7 +42,6 @@ void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, gint *pOffset, const
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 parseServiceFault(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);

View File

@ -34,7 +34,6 @@
#define OpcUaId_ApplicationDescription_Encoding_DefaultBinary 310
#define OpcUaId_RequestHeader_Encoding_DefaultBinary 391
#define OpcUaId_ResponseHeader_Encoding_DefaultBinary 394
#define OpcUaId_ServiceFault_Encoding_DefaultBinary 397
#define OpcUaId_FindServersRequest_Encoding_DefaultBinary 422
#define OpcUaId_FindServersResponse_Encoding_DefaultBinary 425
#define OpcUaId_UserTokenPolicy_Encoding_DefaultBinary 306

View File

@ -49,7 +49,6 @@ ExtensionObjectParserEntry g_arExtensionObjectParserTable[] = {
{ OpcUaId_ApplicationDescription_Encoding_DefaultBinary, parseApplicationDescription, "ApplicationDescription" },
{ OpcUaId_RequestHeader_Encoding_DefaultBinary, parseRequestHeader, "RequestHeader" },
{ OpcUaId_ResponseHeader_Encoding_DefaultBinary, parseResponseHeader, "ResponseHeader" },
{ OpcUaId_ServiceFault_Encoding_DefaultBinary, parseServiceFault, "ServiceFault" },
{ OpcUaId_UserTokenPolicy_Encoding_DefaultBinary, parseUserTokenPolicy, "UserTokenPolicy" },
{ OpcUaId_EndpointDescription_Encoding_DefaultBinary, parseEndpointDescription, "EndpointDescription" },
{ OpcUaId_RegisteredServer_Encoding_DefaultBinary, parseRegisteredServer, "RegisteredServer" },

View File

@ -20,6 +20,7 @@
**
******************************************************************************/
#define OpcUaId_ServiceFault_Encoding_DefaultBinary 397
#define OpcUaId_TestStackRequest_Encoding_DefaultBinary 410
#define OpcUaId_TestStackResponse_Encoding_DefaultBinary 413
#define OpcUaId_TestStackExRequest_Encoding_DefaultBinary 416

View File

@ -29,6 +29,15 @@
#include "opcua_hfindeces.h"
#include "opcua_serviceparser.h"
gint ett_opcua_ServiceFault = -1;
void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
{
proto_item *ti = proto_tree_add_text(tree, tvb, *pOffset, -1, "ServiceFault");
proto_tree *subtree = proto_item_add_subtree(ti, ett_opcua_ServiceFault);
parseResponseHeader(subtree, tvb, pOffset, "ResponseHeader");
proto_item_set_end(ti, tvb, *pOffset);
}
gint ett_opcua_FindServersRequest = -1;
void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
{
@ -1003,6 +1012,7 @@ void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, gint *pOffset)
/** Setup protocol subtree array */
static gint *ett[] =
{
&ett_opcua_ServiceFault,
&ett_opcua_FindServersRequest,
&ett_opcua_FindServersResponse,
&ett_opcua_GetEndpointsRequest,

View File

@ -23,6 +23,7 @@
#include <glib.h>
#include <epan/packet.h>
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);

View File

@ -29,6 +29,7 @@
#include "opcua_servicetable.h"
ParserEntry g_arParserTable[] = {
{ OpcUaId_ServiceFault_Encoding_DefaultBinary, parseServiceFault },
{ OpcUaId_FindServersRequest_Encoding_DefaultBinary, parseFindServersRequest },
{ OpcUaId_FindServersResponse_Encoding_DefaultBinary, parseFindServersResponse },
{ OpcUaId_GetEndpointsRequest_Encoding_DefaultBinary, parseGetEndpointsRequest },
@ -112,6 +113,7 @@ const int g_NumServices = sizeof(g_arParserTable) / sizeof(ParserEntry);
/** Service type table */
const value_string g_requesttypes[] = {
{ OpcUaId_ServiceFault_Encoding_DefaultBinary, "ServiceFault" },
{ OpcUaId_FindServersRequest_Encoding_DefaultBinary, "FindServersRequest" },
{ OpcUaId_FindServersResponse_Encoding_DefaultBinary, "FindServersResponse" },
{ OpcUaId_GetEndpointsRequest_Encoding_DefaultBinary, "GetEndpointsRequest" },