1 /******************************************************************************
4 ** Copyright (C) 2006-2009 ascolab GmbH. All Rights Reserved.
5 ** Web: http://www.ascolab.com
7 ** This program is free software; you can redistribute it and/or
8 ** modify it under the terms of the GNU General Public License
9 ** as published by the Free Software Foundation; either version 2
10 ** of the License, or (at your option) any later version.
12 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
13 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
15 ** Project: OpcUa Wireshark Plugin
17 ** Description: Service table and service dispatcher.
19 ** This file was autogenerated on 12.02.2013.
20 ** DON'T MODIFY THIS FILE!
21 ** XXX - well, except that you may have to. See the README.
23 ******************************************************************************/
28 #include <epan/packet.h>
29 #include <epan/wmem/wmem.h>
30 #include "opcua_simpletypes.h"
31 #include "opcua_complextypeparser.h"
32 #include "opcua_extensionobjectids.h"
33 #include "opcua_hfindeces.h"
35 ExtensionObjectParserEntry g_arExtensionObjectParserTable
[] = {
36 { OpcUaId_Node_Encoding_DefaultBinary
, parseNode
, "Node" },
37 { OpcUaId_InstanceNode_Encoding_DefaultBinary
, parseInstanceNode
, "InstanceNode" },
38 { OpcUaId_TypeNode_Encoding_DefaultBinary
, parseTypeNode
, "TypeNode" },
39 { OpcUaId_ObjectNode_Encoding_DefaultBinary
, parseObjectNode
, "ObjectNode" },
40 { OpcUaId_ObjectTypeNode_Encoding_DefaultBinary
, parseObjectTypeNode
, "ObjectTypeNode" },
41 { OpcUaId_VariableNode_Encoding_DefaultBinary
, parseVariableNode
, "VariableNode" },
42 { OpcUaId_VariableTypeNode_Encoding_DefaultBinary
, parseVariableTypeNode
, "VariableTypeNode" },
43 { OpcUaId_ReferenceTypeNode_Encoding_DefaultBinary
, parseReferenceTypeNode
, "ReferenceTypeNode" },
44 { OpcUaId_MethodNode_Encoding_DefaultBinary
, parseMethodNode
, "MethodNode" },
45 { OpcUaId_ViewNode_Encoding_DefaultBinary
, parseViewNode
, "ViewNode" },
46 { OpcUaId_DataTypeNode_Encoding_DefaultBinary
, parseDataTypeNode
, "DataTypeNode" },
47 { OpcUaId_ReferenceNode_Encoding_DefaultBinary
, parseReferenceNode
, "ReferenceNode" },
48 { OpcUaId_Argument_Encoding_DefaultBinary
, parseArgument
, "Argument" },
49 { OpcUaId_EnumValueType_Encoding_DefaultBinary
, parseEnumValueType
, "EnumValueType" },
50 { OpcUaId_TimeZoneDataType_Encoding_DefaultBinary
, parseTimeZoneDataType
, "TimeZoneDataType" },
51 { OpcUaId_ApplicationDescription_Encoding_DefaultBinary
, parseApplicationDescription
, "ApplicationDescription" },
52 { OpcUaId_RequestHeader_Encoding_DefaultBinary
, parseRequestHeader
, "RequestHeader" },
53 { OpcUaId_ResponseHeader_Encoding_DefaultBinary
, parseResponseHeader
, "ResponseHeader" },
54 { OpcUaId_ServiceFault_Encoding_DefaultBinary
, parseServiceFault
, "ServiceFault" },
55 { OpcUaId_UserTokenPolicy_Encoding_DefaultBinary
, parseUserTokenPolicy
, "UserTokenPolicy" },
56 { OpcUaId_EndpointDescription_Encoding_DefaultBinary
, parseEndpointDescription
, "EndpointDescription" },
57 { OpcUaId_RegisteredServer_Encoding_DefaultBinary
, parseRegisteredServer
, "RegisteredServer" },
58 { OpcUaId_ChannelSecurityToken_Encoding_DefaultBinary
, parseChannelSecurityToken
, "ChannelSecurityToken" },
59 { OpcUaId_SignedSoftwareCertificate_Encoding_DefaultBinary
, parseSignedSoftwareCertificate
, "SignedSoftwareCertificate" },
60 { OpcUaId_SignatureData_Encoding_DefaultBinary
, parseSignatureData
, "SignatureData" },
61 { OpcUaId_UserIdentityToken_Encoding_DefaultBinary
, parseUserIdentityToken
, "UserIdentityToken" },
62 { OpcUaId_AnonymousIdentityToken_Encoding_DefaultBinary
, parseAnonymousIdentityToken
, "AnonymousIdentityToken" },
63 { OpcUaId_UserNameIdentityToken_Encoding_DefaultBinary
, parseUserNameIdentityToken
, "UserNameIdentityToken" },
64 { OpcUaId_X509IdentityToken_Encoding_DefaultBinary
, parseX509IdentityToken
, "X509IdentityToken" },
65 { OpcUaId_IssuedIdentityToken_Encoding_DefaultBinary
, parseIssuedIdentityToken
, "IssuedIdentityToken" },
66 { OpcUaId_NodeAttributes_Encoding_DefaultBinary
, parseNodeAttributes
, "NodeAttributes" },
67 { OpcUaId_ObjectAttributes_Encoding_DefaultBinary
, parseObjectAttributes
, "ObjectAttributes" },
68 { OpcUaId_VariableAttributes_Encoding_DefaultBinary
, parseVariableAttributes
, "VariableAttributes" },
69 { OpcUaId_MethodAttributes_Encoding_DefaultBinary
, parseMethodAttributes
, "MethodAttributes" },
70 { OpcUaId_ObjectTypeAttributes_Encoding_DefaultBinary
, parseObjectTypeAttributes
, "ObjectTypeAttributes" },
71 { OpcUaId_VariableTypeAttributes_Encoding_DefaultBinary
, parseVariableTypeAttributes
, "VariableTypeAttributes" },
72 { OpcUaId_ReferenceTypeAttributes_Encoding_DefaultBinary
, parseReferenceTypeAttributes
, "ReferenceTypeAttributes" },
73 { OpcUaId_DataTypeAttributes_Encoding_DefaultBinary
, parseDataTypeAttributes
, "DataTypeAttributes" },
74 { OpcUaId_ViewAttributes_Encoding_DefaultBinary
, parseViewAttributes
, "ViewAttributes" },
75 { OpcUaId_AddNodesItem_Encoding_DefaultBinary
, parseAddNodesItem
, "AddNodesItem" },
76 { OpcUaId_AddNodesResult_Encoding_DefaultBinary
, parseAddNodesResult
, "AddNodesResult" },
77 { OpcUaId_AddReferencesItem_Encoding_DefaultBinary
, parseAddReferencesItem
, "AddReferencesItem" },
78 { OpcUaId_DeleteNodesItem_Encoding_DefaultBinary
, parseDeleteNodesItem
, "DeleteNodesItem" },
79 { OpcUaId_DeleteReferencesItem_Encoding_DefaultBinary
, parseDeleteReferencesItem
, "DeleteReferencesItem" },
80 { OpcUaId_ViewDescription_Encoding_DefaultBinary
, parseViewDescription
, "ViewDescription" },
81 { OpcUaId_BrowseDescription_Encoding_DefaultBinary
, parseBrowseDescription
, "BrowseDescription" },
82 { OpcUaId_ReferenceDescription_Encoding_DefaultBinary
, parseReferenceDescription
, "ReferenceDescription" },
83 { OpcUaId_BrowseResult_Encoding_DefaultBinary
, parseBrowseResult
, "BrowseResult" },
84 { OpcUaId_RelativePathElement_Encoding_DefaultBinary
, parseRelativePathElement
, "RelativePathElement" },
85 { OpcUaId_RelativePath_Encoding_DefaultBinary
, parseRelativePath
, "RelativePath" },
86 { OpcUaId_BrowsePath_Encoding_DefaultBinary
, parseBrowsePath
, "BrowsePath" },
87 { OpcUaId_BrowsePathTarget_Encoding_DefaultBinary
, parseBrowsePathTarget
, "BrowsePathTarget" },
88 { OpcUaId_BrowsePathResult_Encoding_DefaultBinary
, parseBrowsePathResult
, "BrowsePathResult" },
89 { OpcUaId_EndpointConfiguration_Encoding_DefaultBinary
, parseEndpointConfiguration
, "EndpointConfiguration" },
90 { OpcUaId_SupportedProfile_Encoding_DefaultBinary
, parseSupportedProfile
, "SupportedProfile" },
91 { OpcUaId_SoftwareCertificate_Encoding_DefaultBinary
, parseSoftwareCertificate
, "SoftwareCertificate" },
92 { OpcUaId_QueryDataDescription_Encoding_DefaultBinary
, parseQueryDataDescription
, "QueryDataDescription" },
93 { OpcUaId_NodeTypeDescription_Encoding_DefaultBinary
, parseNodeTypeDescription
, "NodeTypeDescription" },
94 { OpcUaId_QueryDataSet_Encoding_DefaultBinary
, parseQueryDataSet
, "QueryDataSet" },
95 { OpcUaId_NodeReference_Encoding_DefaultBinary
, parseNodeReference
, "NodeReference" },
96 { OpcUaId_ContentFilterElement_Encoding_DefaultBinary
, parseContentFilterElement
, "ContentFilterElement" },
97 { OpcUaId_ContentFilter_Encoding_DefaultBinary
, parseContentFilter
, "ContentFilter" },
98 { OpcUaId_ElementOperand_Encoding_DefaultBinary
, parseElementOperand
, "ElementOperand" },
99 { OpcUaId_LiteralOperand_Encoding_DefaultBinary
, parseLiteralOperand
, "LiteralOperand" },
100 { OpcUaId_AttributeOperand_Encoding_DefaultBinary
, parseAttributeOperand
, "AttributeOperand" },
101 { OpcUaId_SimpleAttributeOperand_Encoding_DefaultBinary
, parseSimpleAttributeOperand
, "SimpleAttributeOperand" },
102 { OpcUaId_ContentFilterElementResult_Encoding_DefaultBinary
, parseContentFilterElementResult
, "ContentFilterElementResult" },
103 { OpcUaId_ContentFilterResult_Encoding_DefaultBinary
, parseContentFilterResult
, "ContentFilterResult" },
104 { OpcUaId_ParsingResult_Encoding_DefaultBinary
, parseParsingResult
, "ParsingResult" },
105 { OpcUaId_ReadValueId_Encoding_DefaultBinary
, parseReadValueId
, "ReadValueId" },
106 { OpcUaId_HistoryReadValueId_Encoding_DefaultBinary
, parseHistoryReadValueId
, "HistoryReadValueId" },
107 { OpcUaId_HistoryReadResult_Encoding_DefaultBinary
, parseHistoryReadResult
, "HistoryReadResult" },
108 { OpcUaId_ReadEventDetails_Encoding_DefaultBinary
, parseReadEventDetails
, "ReadEventDetails" },
109 { OpcUaId_ReadRawModifiedDetails_Encoding_DefaultBinary
, parseReadRawModifiedDetails
, "ReadRawModifiedDetails" },
110 { OpcUaId_ReadProcessedDetails_Encoding_DefaultBinary
, parseReadProcessedDetails
, "ReadProcessedDetails" },
111 { OpcUaId_ReadAtTimeDetails_Encoding_DefaultBinary
, parseReadAtTimeDetails
, "ReadAtTimeDetails" },
112 { OpcUaId_HistoryData_Encoding_DefaultBinary
, parseHistoryData
, "HistoryData" },
113 { OpcUaId_ModificationInfo_Encoding_DefaultBinary
, parseModificationInfo
, "ModificationInfo" },
114 { OpcUaId_HistoryModifiedData_Encoding_DefaultBinary
, parseHistoryModifiedData
, "HistoryModifiedData" },
115 { OpcUaId_HistoryEvent_Encoding_DefaultBinary
, parseHistoryEvent
, "HistoryEvent" },
116 { OpcUaId_WriteValue_Encoding_DefaultBinary
, parseWriteValue
, "WriteValue" },
117 { OpcUaId_HistoryUpdateDetails_Encoding_DefaultBinary
, parseHistoryUpdateDetails
, "HistoryUpdateDetails" },
118 { OpcUaId_UpdateDataDetails_Encoding_DefaultBinary
, parseUpdateDataDetails
, "UpdateDataDetails" },
119 { OpcUaId_UpdateStructureDataDetails_Encoding_DefaultBinary
, parseUpdateStructureDataDetails
, "UpdateStructureDataDetails" },
120 { OpcUaId_UpdateEventDetails_Encoding_DefaultBinary
, parseUpdateEventDetails
, "UpdateEventDetails" },
121 { OpcUaId_DeleteRawModifiedDetails_Encoding_DefaultBinary
, parseDeleteRawModifiedDetails
, "DeleteRawModifiedDetails" },
122 { OpcUaId_DeleteAtTimeDetails_Encoding_DefaultBinary
, parseDeleteAtTimeDetails
, "DeleteAtTimeDetails" },
123 { OpcUaId_DeleteEventDetails_Encoding_DefaultBinary
, parseDeleteEventDetails
, "DeleteEventDetails" },
124 { OpcUaId_HistoryUpdateResult_Encoding_DefaultBinary
, parseHistoryUpdateResult
, "HistoryUpdateResult" },
125 { OpcUaId_HistoryUpdateEventResult_Encoding_DefaultBinary
, parseHistoryUpdateEventResult
, "HistoryUpdateEventResult" },
126 { OpcUaId_CallMethodRequest_Encoding_DefaultBinary
, parseCallMethodRequest
, "CallMethodRequest" },
127 { OpcUaId_CallMethodResult_Encoding_DefaultBinary
, parseCallMethodResult
, "CallMethodResult" },
128 { OpcUaId_DataChangeFilter_Encoding_DefaultBinary
, parseDataChangeFilter
, "DataChangeFilter" },
129 { OpcUaId_EventFilter_Encoding_DefaultBinary
, parseEventFilter
, "EventFilter" },
130 { OpcUaId_AggregateConfiguration_Encoding_DefaultBinary
, parseAggregateConfiguration
, "AggregateConfiguration" },
131 { OpcUaId_AggregateFilter_Encoding_DefaultBinary
, parseAggregateFilter
, "AggregateFilter" },
132 { OpcUaId_EventFilterResult_Encoding_DefaultBinary
, parseEventFilterResult
, "EventFilterResult" },
133 { OpcUaId_AggregateFilterResult_Encoding_DefaultBinary
, parseAggregateFilterResult
, "AggregateFilterResult" },
134 { OpcUaId_MonitoringParameters_Encoding_DefaultBinary
, parseMonitoringParameters
, "MonitoringParameters" },
135 { OpcUaId_MonitoredItemCreateRequest_Encoding_DefaultBinary
, parseMonitoredItemCreateRequest
, "MonitoredItemCreateRequest" },
136 { OpcUaId_MonitoredItemCreateResult_Encoding_DefaultBinary
, parseMonitoredItemCreateResult
, "MonitoredItemCreateResult" },
137 { OpcUaId_MonitoredItemModifyRequest_Encoding_DefaultBinary
, parseMonitoredItemModifyRequest
, "MonitoredItemModifyRequest" },
138 { OpcUaId_MonitoredItemModifyResult_Encoding_DefaultBinary
, parseMonitoredItemModifyResult
, "MonitoredItemModifyResult" },
139 { OpcUaId_NotificationMessage_Encoding_DefaultBinary
, parseNotificationMessage
, "NotificationMessage" },
140 { OpcUaId_DataChangeNotification_Encoding_DefaultBinary
, parseDataChangeNotification
, "DataChangeNotification" },
141 { OpcUaId_MonitoredItemNotification_Encoding_DefaultBinary
, parseMonitoredItemNotification
, "MonitoredItemNotification" },
142 { OpcUaId_EventNotificationList_Encoding_DefaultBinary
, parseEventNotificationList
, "EventNotificationList" },
143 { OpcUaId_EventFieldList_Encoding_DefaultBinary
, parseEventFieldList
, "EventFieldList" },
144 { OpcUaId_HistoryEventFieldList_Encoding_DefaultBinary
, parseHistoryEventFieldList
, "HistoryEventFieldList" },
145 { OpcUaId_StatusChangeNotification_Encoding_DefaultBinary
, parseStatusChangeNotification
, "StatusChangeNotification" },
146 { OpcUaId_SubscriptionAcknowledgement_Encoding_DefaultBinary
, parseSubscriptionAcknowledgement
, "SubscriptionAcknowledgement" },
147 { OpcUaId_TransferResult_Encoding_DefaultBinary
, parseTransferResult
, "TransferResult" },
148 { OpcUaId_ScalarTestType_Encoding_DefaultBinary
, parseScalarTestType
, "ScalarTestType" },
149 { OpcUaId_ArrayTestType_Encoding_DefaultBinary
, parseArrayTestType
, "ArrayTestType" },
150 { OpcUaId_CompositeTestType_Encoding_DefaultBinary
, parseCompositeTestType
, "CompositeTestType" },
151 { OpcUaId_BuildInfo_Encoding_DefaultBinary
, parseBuildInfo
, "BuildInfo" },
152 { OpcUaId_RedundantServerDataType_Encoding_DefaultBinary
, parseRedundantServerDataType
, "RedundantServerDataType" },
153 { OpcUaId_EndpointUrlListDataType_Encoding_DefaultBinary
, parseEndpointUrlListDataType
, "EndpointUrlListDataType" },
154 { OpcUaId_NetworkGroupDataType_Encoding_DefaultBinary
, parseNetworkGroupDataType
, "NetworkGroupDataType" },
155 { OpcUaId_SamplingIntervalDiagnosticsDataType_Encoding_DefaultBinary
, parseSamplingIntervalDiagnosticsDataType
, "SamplingIntervalDiagnosticsDataType" },
156 { OpcUaId_ServerDiagnosticsSummaryDataType_Encoding_DefaultBinary
, parseServerDiagnosticsSummaryDataType
, "ServerDiagnosticsSummaryDataType" },
157 { OpcUaId_ServerStatusDataType_Encoding_DefaultBinary
, parseServerStatusDataType
, "ServerStatusDataType" },
158 { OpcUaId_SessionDiagnosticsDataType_Encoding_DefaultBinary
, parseSessionDiagnosticsDataType
, "SessionDiagnosticsDataType" },
159 { OpcUaId_SessionSecurityDiagnosticsDataType_Encoding_DefaultBinary
, parseSessionSecurityDiagnosticsDataType
, "SessionSecurityDiagnosticsDataType" },
160 { OpcUaId_ServiceCounterDataType_Encoding_DefaultBinary
, parseServiceCounterDataType
, "ServiceCounterDataType" },
161 { OpcUaId_StatusResult_Encoding_DefaultBinary
, parseStatusResult
, "StatusResult" },
162 { OpcUaId_SubscriptionDiagnosticsDataType_Encoding_DefaultBinary
, parseSubscriptionDiagnosticsDataType
, "SubscriptionDiagnosticsDataType" },
163 { OpcUaId_ModelChangeStructureDataType_Encoding_DefaultBinary
, parseModelChangeStructureDataType
, "ModelChangeStructureDataType" },
164 { OpcUaId_SemanticChangeStructureDataType_Encoding_DefaultBinary
, parseSemanticChangeStructureDataType
, "SemanticChangeStructureDataType" },
165 { OpcUaId_Range_Encoding_DefaultBinary
, parseRange
, "Range" },
166 { OpcUaId_EUInformation_Encoding_DefaultBinary
, parseEUInformation
, "EUInformation" },
167 { OpcUaId_ComplexNumberType_Encoding_DefaultBinary
, parseComplexNumberType
, "ComplexNumberType" },
168 { OpcUaId_DoubleComplexNumberType_Encoding_DefaultBinary
, parseDoubleComplexNumberType
, "DoubleComplexNumberType" },
169 { OpcUaId_AxisInformation_Encoding_DefaultBinary
, parseAxisInformation
, "AxisInformation" },
170 { OpcUaId_XVType_Encoding_DefaultBinary
, parseXVType
, "XVType" },
171 { OpcUaId_ProgramDiagnosticDataType_Encoding_DefaultBinary
, parseProgramDiagnosticDataType
, "ProgramDiagnosticDataType" },
172 { OpcUaId_Annotation_Encoding_DefaultBinary
, parseAnnotation
, "Annotation" },
174 const int g_NumTypes
= sizeof(g_arExtensionObjectParserTable
) / sizeof(ExtensionObjectParserEntry
);
176 /** Dispatch all extension objects to a special parser function. */
177 void dispatchExtensionObjectType(proto_tree
*tree
, tvbuff_t
*tvb
, gint
*pOffset
, int TypeId
)
179 gint iOffset
= *pOffset
;
184 /* get the length of the body */
185 iLen
= tvb_get_letohl(tvb
, iOffset
);
188 while (indx
< g_NumTypes
)
190 if (g_arExtensionObjectParserTable
[indx
].iRequestId
== TypeId
)
193 (*g_arExtensionObjectParserTable
[indx
].pParser
)(tree
, tvb
, &iOffset
, g_arExtensionObjectParserTable
[indx
].typeName
);
199 /* display contained object as ByteString if unknown type */
204 proto_tree_add_text(tree
, tvb
, *pOffset
, 4, "[OpcUa Null ByteString]");
208 proto_tree_add_item(tree
, hf_opcua_ByteString
, tvb
, iOffset
, iLen
, ENC_NA
);
209 iOffset
+= iLen
; /* eat the whole bytestring */
213 char *szValue
= wmem_strdup_printf(wmem_packet_scope(), "[Invalid ByteString] Invalid length: %d", iLen
);
214 proto_tree_add_text(tree
, tvb
, *pOffset
, 4, "%s", szValue
);