nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | /****************************************************************************** |
2 | ** Copyright (C) 2006-2015 ascolab GmbH. All Rights Reserved. |
||
3 | ** Web: http://www.ascolab.com |
||
4 | ** |
||
5 | ** This program is free software; you can redistribute it and/or |
||
6 | ** modify it under the terms of the GNU General Public License |
||
7 | ** as published by the Free Software Foundation; either version 2 |
||
8 | ** of the License, or (at your option) any later version. |
||
9 | ** |
||
10 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
||
11 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
||
12 | ** |
||
13 | ** Project: OpcUa Wireshark Plugin |
||
14 | ** |
||
15 | ** Description: OpcUa Complex Type Parser |
||
16 | ** |
||
17 | ** This file was autogenerated on 13.10.2015. |
||
18 | ** DON'T MODIFY THIS FILE! |
||
19 | ** |
||
20 | ******************************************************************************/ |
||
21 | |||
22 | #include "config.h" |
||
23 | |||
24 | #include <epan/packet.h> |
||
25 | #include "opcua_complextypeparser.h" |
||
26 | #include "opcua_enumparser.h" |
||
27 | #include "opcua_simpletypes.h" |
||
28 | #include "opcua_hfindeces.h" |
||
29 | |||
30 | gint ett_opcua_TrustListDataType = -1; |
||
31 | gint ett_opcua_array_TrustListDataType = -1; |
||
32 | gint ett_opcua_Node = -1; |
||
33 | gint ett_opcua_array_Node = -1; |
||
34 | gint ett_opcua_InstanceNode = -1; |
||
35 | gint ett_opcua_array_InstanceNode = -1; |
||
36 | gint ett_opcua_TypeNode = -1; |
||
37 | gint ett_opcua_array_TypeNode = -1; |
||
38 | gint ett_opcua_ObjectNode = -1; |
||
39 | gint ett_opcua_array_ObjectNode = -1; |
||
40 | gint ett_opcua_ObjectTypeNode = -1; |
||
41 | gint ett_opcua_array_ObjectTypeNode = -1; |
||
42 | gint ett_opcua_VariableNode = -1; |
||
43 | gint ett_opcua_array_VariableNode = -1; |
||
44 | gint ett_opcua_VariableTypeNode = -1; |
||
45 | gint ett_opcua_array_VariableTypeNode = -1; |
||
46 | gint ett_opcua_ReferenceTypeNode = -1; |
||
47 | gint ett_opcua_array_ReferenceTypeNode = -1; |
||
48 | gint ett_opcua_MethodNode = -1; |
||
49 | gint ett_opcua_array_MethodNode = -1; |
||
50 | gint ett_opcua_ViewNode = -1; |
||
51 | gint ett_opcua_array_ViewNode = -1; |
||
52 | gint ett_opcua_DataTypeNode = -1; |
||
53 | gint ett_opcua_array_DataTypeNode = -1; |
||
54 | gint ett_opcua_ReferenceNode = -1; |
||
55 | gint ett_opcua_array_ReferenceNode = -1; |
||
56 | gint ett_opcua_Argument = -1; |
||
57 | gint ett_opcua_array_Argument = -1; |
||
58 | gint ett_opcua_EnumValueType = -1; |
||
59 | gint ett_opcua_array_EnumValueType = -1; |
||
60 | gint ett_opcua_OptionSet = -1; |
||
61 | gint ett_opcua_array_OptionSet = -1; |
||
62 | gint ett_opcua_TimeZoneDataType = -1; |
||
63 | gint ett_opcua_array_TimeZoneDataType = -1; |
||
64 | gint ett_opcua_ApplicationDescription = -1; |
||
65 | gint ett_opcua_array_ApplicationDescription = -1; |
||
66 | gint ett_opcua_RequestHeader = -1; |
||
67 | gint ett_opcua_array_RequestHeader = -1; |
||
68 | gint ett_opcua_ResponseHeader = -1; |
||
69 | gint ett_opcua_array_ResponseHeader = -1; |
||
70 | gint ett_opcua_ServerOnNetwork = -1; |
||
71 | gint ett_opcua_array_ServerOnNetwork = -1; |
||
72 | gint ett_opcua_UserTokenPolicy = -1; |
||
73 | gint ett_opcua_array_UserTokenPolicy = -1; |
||
74 | gint ett_opcua_EndpointDescription = -1; |
||
75 | gint ett_opcua_array_EndpointDescription = -1; |
||
76 | gint ett_opcua_RegisteredServer = -1; |
||
77 | gint ett_opcua_array_RegisteredServer = -1; |
||
78 | gint ett_opcua_MdnsDiscoveryConfiguration = -1; |
||
79 | gint ett_opcua_array_MdnsDiscoveryConfiguration = -1; |
||
80 | gint ett_opcua_ChannelSecurityToken = -1; |
||
81 | gint ett_opcua_array_ChannelSecurityToken = -1; |
||
82 | gint ett_opcua_SignedSoftwareCertificate = -1; |
||
83 | gint ett_opcua_array_SignedSoftwareCertificate = -1; |
||
84 | gint ett_opcua_SignatureData = -1; |
||
85 | gint ett_opcua_array_SignatureData = -1; |
||
86 | gint ett_opcua_UserIdentityToken = -1; |
||
87 | gint ett_opcua_array_UserIdentityToken = -1; |
||
88 | gint ett_opcua_AnonymousIdentityToken = -1; |
||
89 | gint ett_opcua_array_AnonymousIdentityToken = -1; |
||
90 | gint ett_opcua_UserNameIdentityToken = -1; |
||
91 | gint ett_opcua_array_UserNameIdentityToken = -1; |
||
92 | gint ett_opcua_X509IdentityToken = -1; |
||
93 | gint ett_opcua_array_X509IdentityToken = -1; |
||
94 | gint ett_opcua_KerberosIdentityToken = -1; |
||
95 | gint ett_opcua_array_KerberosIdentityToken = -1; |
||
96 | gint ett_opcua_IssuedIdentityToken = -1; |
||
97 | gint ett_opcua_array_IssuedIdentityToken = -1; |
||
98 | gint ett_opcua_NodeAttributes = -1; |
||
99 | gint ett_opcua_array_NodeAttributes = -1; |
||
100 | gint ett_opcua_ObjectAttributes = -1; |
||
101 | gint ett_opcua_array_ObjectAttributes = -1; |
||
102 | gint ett_opcua_VariableAttributes = -1; |
||
103 | gint ett_opcua_array_VariableAttributes = -1; |
||
104 | gint ett_opcua_MethodAttributes = -1; |
||
105 | gint ett_opcua_array_MethodAttributes = -1; |
||
106 | gint ett_opcua_ObjectTypeAttributes = -1; |
||
107 | gint ett_opcua_array_ObjectTypeAttributes = -1; |
||
108 | gint ett_opcua_VariableTypeAttributes = -1; |
||
109 | gint ett_opcua_array_VariableTypeAttributes = -1; |
||
110 | gint ett_opcua_ReferenceTypeAttributes = -1; |
||
111 | gint ett_opcua_array_ReferenceTypeAttributes = -1; |
||
112 | gint ett_opcua_DataTypeAttributes = -1; |
||
113 | gint ett_opcua_array_DataTypeAttributes = -1; |
||
114 | gint ett_opcua_ViewAttributes = -1; |
||
115 | gint ett_opcua_array_ViewAttributes = -1; |
||
116 | gint ett_opcua_AddNodesItem = -1; |
||
117 | gint ett_opcua_array_AddNodesItem = -1; |
||
118 | gint ett_opcua_AddNodesResult = -1; |
||
119 | gint ett_opcua_array_AddNodesResult = -1; |
||
120 | gint ett_opcua_AddReferencesItem = -1; |
||
121 | gint ett_opcua_array_AddReferencesItem = -1; |
||
122 | gint ett_opcua_DeleteNodesItem = -1; |
||
123 | gint ett_opcua_array_DeleteNodesItem = -1; |
||
124 | gint ett_opcua_DeleteReferencesItem = -1; |
||
125 | gint ett_opcua_array_DeleteReferencesItem = -1; |
||
126 | gint ett_opcua_ViewDescription = -1; |
||
127 | gint ett_opcua_array_ViewDescription = -1; |
||
128 | gint ett_opcua_BrowseDescription = -1; |
||
129 | gint ett_opcua_array_BrowseDescription = -1; |
||
130 | gint ett_opcua_ReferenceDescription = -1; |
||
131 | gint ett_opcua_array_ReferenceDescription = -1; |
||
132 | gint ett_opcua_BrowseResult = -1; |
||
133 | gint ett_opcua_array_BrowseResult = -1; |
||
134 | gint ett_opcua_RelativePathElement = -1; |
||
135 | gint ett_opcua_array_RelativePathElement = -1; |
||
136 | gint ett_opcua_RelativePath = -1; |
||
137 | gint ett_opcua_array_RelativePath = -1; |
||
138 | gint ett_opcua_BrowsePath = -1; |
||
139 | gint ett_opcua_array_BrowsePath = -1; |
||
140 | gint ett_opcua_BrowsePathTarget = -1; |
||
141 | gint ett_opcua_array_BrowsePathTarget = -1; |
||
142 | gint ett_opcua_BrowsePathResult = -1; |
||
143 | gint ett_opcua_array_BrowsePathResult = -1; |
||
144 | gint ett_opcua_EndpointConfiguration = -1; |
||
145 | gint ett_opcua_array_EndpointConfiguration = -1; |
||
146 | gint ett_opcua_SupportedProfile = -1; |
||
147 | gint ett_opcua_array_SupportedProfile = -1; |
||
148 | gint ett_opcua_SoftwareCertificate = -1; |
||
149 | gint ett_opcua_array_SoftwareCertificate = -1; |
||
150 | gint ett_opcua_QueryDataDescription = -1; |
||
151 | gint ett_opcua_array_QueryDataDescription = -1; |
||
152 | gint ett_opcua_NodeTypeDescription = -1; |
||
153 | gint ett_opcua_array_NodeTypeDescription = -1; |
||
154 | gint ett_opcua_QueryDataSet = -1; |
||
155 | gint ett_opcua_array_QueryDataSet = -1; |
||
156 | gint ett_opcua_NodeReference = -1; |
||
157 | gint ett_opcua_array_NodeReference = -1; |
||
158 | gint ett_opcua_ContentFilterElement = -1; |
||
159 | gint ett_opcua_array_ContentFilterElement = -1; |
||
160 | gint ett_opcua_ContentFilter = -1; |
||
161 | gint ett_opcua_array_ContentFilter = -1; |
||
162 | gint ett_opcua_ElementOperand = -1; |
||
163 | gint ett_opcua_array_ElementOperand = -1; |
||
164 | gint ett_opcua_LiteralOperand = -1; |
||
165 | gint ett_opcua_array_LiteralOperand = -1; |
||
166 | gint ett_opcua_AttributeOperand = -1; |
||
167 | gint ett_opcua_array_AttributeOperand = -1; |
||
168 | gint ett_opcua_SimpleAttributeOperand = -1; |
||
169 | gint ett_opcua_array_SimpleAttributeOperand = -1; |
||
170 | gint ett_opcua_ContentFilterElementResult = -1; |
||
171 | gint ett_opcua_array_ContentFilterElementResult = -1; |
||
172 | gint ett_opcua_ContentFilterResult = -1; |
||
173 | gint ett_opcua_array_ContentFilterResult = -1; |
||
174 | gint ett_opcua_ParsingResult = -1; |
||
175 | gint ett_opcua_array_ParsingResult = -1; |
||
176 | gint ett_opcua_ReadValueId = -1; |
||
177 | gint ett_opcua_array_ReadValueId = -1; |
||
178 | gint ett_opcua_HistoryReadValueId = -1; |
||
179 | gint ett_opcua_array_HistoryReadValueId = -1; |
||
180 | gint ett_opcua_HistoryReadResult = -1; |
||
181 | gint ett_opcua_array_HistoryReadResult = -1; |
||
182 | gint ett_opcua_ReadEventDetails = -1; |
||
183 | gint ett_opcua_array_ReadEventDetails = -1; |
||
184 | gint ett_opcua_ReadRawModifiedDetails = -1; |
||
185 | gint ett_opcua_array_ReadRawModifiedDetails = -1; |
||
186 | gint ett_opcua_ReadProcessedDetails = -1; |
||
187 | gint ett_opcua_array_ReadProcessedDetails = -1; |
||
188 | gint ett_opcua_ReadAtTimeDetails = -1; |
||
189 | gint ett_opcua_array_ReadAtTimeDetails = -1; |
||
190 | gint ett_opcua_HistoryData = -1; |
||
191 | gint ett_opcua_array_HistoryData = -1; |
||
192 | gint ett_opcua_ModificationInfo = -1; |
||
193 | gint ett_opcua_array_ModificationInfo = -1; |
||
194 | gint ett_opcua_HistoryModifiedData = -1; |
||
195 | gint ett_opcua_array_HistoryModifiedData = -1; |
||
196 | gint ett_opcua_HistoryEvent = -1; |
||
197 | gint ett_opcua_array_HistoryEvent = -1; |
||
198 | gint ett_opcua_WriteValue = -1; |
||
199 | gint ett_opcua_array_WriteValue = -1; |
||
200 | gint ett_opcua_HistoryUpdateDetails = -1; |
||
201 | gint ett_opcua_array_HistoryUpdateDetails = -1; |
||
202 | gint ett_opcua_UpdateDataDetails = -1; |
||
203 | gint ett_opcua_array_UpdateDataDetails = -1; |
||
204 | gint ett_opcua_UpdateStructureDataDetails = -1; |
||
205 | gint ett_opcua_array_UpdateStructureDataDetails = -1; |
||
206 | gint ett_opcua_UpdateEventDetails = -1; |
||
207 | gint ett_opcua_array_UpdateEventDetails = -1; |
||
208 | gint ett_opcua_DeleteRawModifiedDetails = -1; |
||
209 | gint ett_opcua_array_DeleteRawModifiedDetails = -1; |
||
210 | gint ett_opcua_DeleteAtTimeDetails = -1; |
||
211 | gint ett_opcua_array_DeleteAtTimeDetails = -1; |
||
212 | gint ett_opcua_DeleteEventDetails = -1; |
||
213 | gint ett_opcua_array_DeleteEventDetails = -1; |
||
214 | gint ett_opcua_HistoryUpdateResult = -1; |
||
215 | gint ett_opcua_array_HistoryUpdateResult = -1; |
||
216 | gint ett_opcua_CallMethodRequest = -1; |
||
217 | gint ett_opcua_array_CallMethodRequest = -1; |
||
218 | gint ett_opcua_CallMethodResult = -1; |
||
219 | gint ett_opcua_array_CallMethodResult = -1; |
||
220 | gint ett_opcua_DataChangeFilter = -1; |
||
221 | gint ett_opcua_array_DataChangeFilter = -1; |
||
222 | gint ett_opcua_EventFilter = -1; |
||
223 | gint ett_opcua_array_EventFilter = -1; |
||
224 | gint ett_opcua_AggregateConfiguration = -1; |
||
225 | gint ett_opcua_array_AggregateConfiguration = -1; |
||
226 | gint ett_opcua_AggregateFilter = -1; |
||
227 | gint ett_opcua_array_AggregateFilter = -1; |
||
228 | gint ett_opcua_EventFilterResult = -1; |
||
229 | gint ett_opcua_array_EventFilterResult = -1; |
||
230 | gint ett_opcua_AggregateFilterResult = -1; |
||
231 | gint ett_opcua_array_AggregateFilterResult = -1; |
||
232 | gint ett_opcua_MonitoringParameters = -1; |
||
233 | gint ett_opcua_array_MonitoringParameters = -1; |
||
234 | gint ett_opcua_MonitoredItemCreateRequest = -1; |
||
235 | gint ett_opcua_array_MonitoredItemCreateRequest = -1; |
||
236 | gint ett_opcua_MonitoredItemCreateResult = -1; |
||
237 | gint ett_opcua_array_MonitoredItemCreateResult = -1; |
||
238 | gint ett_opcua_MonitoredItemModifyRequest = -1; |
||
239 | gint ett_opcua_array_MonitoredItemModifyRequest = -1; |
||
240 | gint ett_opcua_MonitoredItemModifyResult = -1; |
||
241 | gint ett_opcua_array_MonitoredItemModifyResult = -1; |
||
242 | gint ett_opcua_NotificationMessage = -1; |
||
243 | gint ett_opcua_array_NotificationMessage = -1; |
||
244 | gint ett_opcua_DataChangeNotification = -1; |
||
245 | gint ett_opcua_array_DataChangeNotification = -1; |
||
246 | gint ett_opcua_MonitoredItemNotification = -1; |
||
247 | gint ett_opcua_array_MonitoredItemNotification = -1; |
||
248 | gint ett_opcua_EventNotificationList = -1; |
||
249 | gint ett_opcua_array_EventNotificationList = -1; |
||
250 | gint ett_opcua_EventFieldList = -1; |
||
251 | gint ett_opcua_array_EventFieldList = -1; |
||
252 | gint ett_opcua_HistoryEventFieldList = -1; |
||
253 | gint ett_opcua_array_HistoryEventFieldList = -1; |
||
254 | gint ett_opcua_StatusChangeNotification = -1; |
||
255 | gint ett_opcua_array_StatusChangeNotification = -1; |
||
256 | gint ett_opcua_SubscriptionAcknowledgement = -1; |
||
257 | gint ett_opcua_array_SubscriptionAcknowledgement = -1; |
||
258 | gint ett_opcua_TransferResult = -1; |
||
259 | gint ett_opcua_array_TransferResult = -1; |
||
260 | gint ett_opcua_ScalarTestType = -1; |
||
261 | gint ett_opcua_array_ScalarTestType = -1; |
||
262 | gint ett_opcua_ArrayTestType = -1; |
||
263 | gint ett_opcua_array_ArrayTestType = -1; |
||
264 | gint ett_opcua_CompositeTestType = -1; |
||
265 | gint ett_opcua_array_CompositeTestType = -1; |
||
266 | gint ett_opcua_BuildInfo = -1; |
||
267 | gint ett_opcua_array_BuildInfo = -1; |
||
268 | gint ett_opcua_RedundantServerDataType = -1; |
||
269 | gint ett_opcua_array_RedundantServerDataType = -1; |
||
270 | gint ett_opcua_EndpointUrlListDataType = -1; |
||
271 | gint ett_opcua_array_EndpointUrlListDataType = -1; |
||
272 | gint ett_opcua_NetworkGroupDataType = -1; |
||
273 | gint ett_opcua_array_NetworkGroupDataType = -1; |
||
274 | gint ett_opcua_SamplingIntervalDiagnosticsDataType = -1; |
||
275 | gint ett_opcua_array_SamplingIntervalDiagnosticsDataType = -1; |
||
276 | gint ett_opcua_ServerDiagnosticsSummaryDataType = -1; |
||
277 | gint ett_opcua_array_ServerDiagnosticsSummaryDataType = -1; |
||
278 | gint ett_opcua_ServerStatusDataType = -1; |
||
279 | gint ett_opcua_array_ServerStatusDataType = -1; |
||
280 | gint ett_opcua_SessionDiagnosticsDataType = -1; |
||
281 | gint ett_opcua_array_SessionDiagnosticsDataType = -1; |
||
282 | gint ett_opcua_SessionSecurityDiagnosticsDataType = -1; |
||
283 | gint ett_opcua_array_SessionSecurityDiagnosticsDataType = -1; |
||
284 | gint ett_opcua_ServiceCounterDataType = -1; |
||
285 | gint ett_opcua_array_ServiceCounterDataType = -1; |
||
286 | gint ett_opcua_StatusResult = -1; |
||
287 | gint ett_opcua_array_StatusResult = -1; |
||
288 | gint ett_opcua_SubscriptionDiagnosticsDataType = -1; |
||
289 | gint ett_opcua_array_SubscriptionDiagnosticsDataType = -1; |
||
290 | gint ett_opcua_ModelChangeStructureDataType = -1; |
||
291 | gint ett_opcua_array_ModelChangeStructureDataType = -1; |
||
292 | gint ett_opcua_SemanticChangeStructureDataType = -1; |
||
293 | gint ett_opcua_array_SemanticChangeStructureDataType = -1; |
||
294 | gint ett_opcua_Range = -1; |
||
295 | gint ett_opcua_array_Range = -1; |
||
296 | gint ett_opcua_EUInformation = -1; |
||
297 | gint ett_opcua_array_EUInformation = -1; |
||
298 | gint ett_opcua_ComplexNumberType = -1; |
||
299 | gint ett_opcua_array_ComplexNumberType = -1; |
||
300 | gint ett_opcua_DoubleComplexNumberType = -1; |
||
301 | gint ett_opcua_array_DoubleComplexNumberType = -1; |
||
302 | gint ett_opcua_AxisInformation = -1; |
||
303 | gint ett_opcua_array_AxisInformation = -1; |
||
304 | gint ett_opcua_XVType = -1; |
||
305 | gint ett_opcua_array_XVType = -1; |
||
306 | gint ett_opcua_ProgramDiagnosticDataType = -1; |
||
307 | gint ett_opcua_array_ProgramDiagnosticDataType = -1; |
||
308 | gint ett_opcua_Annotation = -1; |
||
309 | gint ett_opcua_array_Annotation = -1; |
||
310 | |||
311 | void parseTrustListDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
312 | { |
||
313 | proto_item *ti; |
||
314 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TrustListDataType, &ti, "%s: TrustListDataType", szFieldName); |
||
315 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedLists); |
||
316 | /* Array length field ignored: NoOfTrustedCertificates */ |
||
317 | parseArraySimple(subtree, tvb, pinfo, pOffset, "TrustedCertificates", "ByteString", hf_opcua_TrustedCertificates, parseByteString, ett_opcua_array_ByteString); |
||
318 | /* Array length field ignored: NoOfTrustedCrls */ |
||
319 | parseArraySimple(subtree, tvb, pinfo, pOffset, "TrustedCrls", "ByteString", hf_opcua_TrustedCrls, parseByteString, ett_opcua_array_ByteString); |
||
320 | /* Array length field ignored: NoOfIssuerCertificates */ |
||
321 | parseArraySimple(subtree, tvb, pinfo, pOffset, "IssuerCertificates", "ByteString", hf_opcua_IssuerCertificates, parseByteString, ett_opcua_array_ByteString); |
||
322 | /* Array length field ignored: NoOfIssuerCrls */ |
||
323 | parseArraySimple(subtree, tvb, pinfo, pOffset, "IssuerCrls", "ByteString", hf_opcua_IssuerCrls, parseByteString, ett_opcua_array_ByteString); |
||
324 | proto_item_set_end(ti, tvb, *pOffset); |
||
325 | } |
||
326 | void parseNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
327 | { |
||
328 | proto_item *ti; |
||
329 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Node, &ti, "%s: Node", szFieldName); |
||
330 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
331 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
332 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
333 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
334 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
335 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
336 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
337 | /* Array length field ignored: NoOfReferences */ |
||
338 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
339 | proto_item_set_end(ti, tvb, *pOffset); |
||
340 | } |
||
341 | void parseInstanceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
342 | { |
||
343 | proto_item *ti; |
||
344 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_InstanceNode, &ti, "%s: InstanceNode", szFieldName); |
||
345 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
346 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
347 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
348 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
349 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
350 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
351 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
352 | /* Array length field ignored: NoOfReferences */ |
||
353 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
354 | proto_item_set_end(ti, tvb, *pOffset); |
||
355 | } |
||
356 | void parseTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
357 | { |
||
358 | proto_item *ti; |
||
359 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TypeNode, &ti, "%s: TypeNode", szFieldName); |
||
360 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
361 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
362 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
363 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
364 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
365 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
366 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
367 | /* Array length field ignored: NoOfReferences */ |
||
368 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
369 | proto_item_set_end(ti, tvb, *pOffset); |
||
370 | } |
||
371 | void parseObjectNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
372 | { |
||
373 | proto_item *ti; |
||
374 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectNode, &ti, "%s: ObjectNode", szFieldName); |
||
375 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
376 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
377 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
378 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
379 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
380 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
381 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
382 | /* Array length field ignored: NoOfReferences */ |
||
383 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
384 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); |
||
385 | proto_item_set_end(ti, tvb, *pOffset); |
||
386 | } |
||
387 | void parseObjectTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
388 | { |
||
389 | proto_item *ti; |
||
390 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectTypeNode, &ti, "%s: ObjectTypeNode", szFieldName); |
||
391 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
392 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
393 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
394 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
395 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
396 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
397 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
398 | /* Array length field ignored: NoOfReferences */ |
||
399 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
400 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
401 | proto_item_set_end(ti, tvb, *pOffset); |
||
402 | } |
||
403 | void parseVariableNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
404 | { |
||
405 | proto_item *ti; |
||
406 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableNode, &ti, "%s: VariableNode", szFieldName); |
||
407 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
408 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
409 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
410 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
411 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
412 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
413 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
414 | /* Array length field ignored: NoOfReferences */ |
||
415 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
416 | parseVariant(subtree, tvb, pinfo, pOffset, "Value"); |
||
417 | parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); |
||
418 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); |
||
419 | /* Array length field ignored: NoOfArrayDimensions */ |
||
420 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); |
||
421 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_AccessLevel); |
||
422 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_UserAccessLevel); |
||
423 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MinimumSamplingInterval); |
||
424 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Historizing); |
||
425 | proto_item_set_end(ti, tvb, *pOffset); |
||
426 | } |
||
427 | void parseVariableTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
428 | { |
||
429 | proto_item *ti; |
||
430 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableTypeNode, &ti, "%s: VariableTypeNode", szFieldName); |
||
431 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
432 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
433 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
434 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
435 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
436 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
437 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
438 | /* Array length field ignored: NoOfReferences */ |
||
439 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
440 | parseVariant(subtree, tvb, pinfo, pOffset, "Value"); |
||
441 | parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); |
||
442 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); |
||
443 | /* Array length field ignored: NoOfArrayDimensions */ |
||
444 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); |
||
445 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
446 | proto_item_set_end(ti, tvb, *pOffset); |
||
447 | } |
||
448 | void parseReferenceTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
449 | { |
||
450 | proto_item *ti; |
||
451 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceTypeNode, &ti, "%s: ReferenceTypeNode", szFieldName); |
||
452 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
453 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
454 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
455 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
456 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
457 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
458 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
459 | /* Array length field ignored: NoOfReferences */ |
||
460 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
461 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
462 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Symmetric); |
||
463 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "InverseName"); |
||
464 | proto_item_set_end(ti, tvb, *pOffset); |
||
465 | } |
||
466 | void parseMethodNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
467 | { |
||
468 | proto_item *ti; |
||
469 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MethodNode, &ti, "%s: MethodNode", szFieldName); |
||
470 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
471 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
472 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
473 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
474 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
475 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
476 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
477 | /* Array length field ignored: NoOfReferences */ |
||
478 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
479 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Executable); |
||
480 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UserExecutable); |
||
481 | proto_item_set_end(ti, tvb, *pOffset); |
||
482 | } |
||
483 | void parseViewNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
484 | { |
||
485 | proto_item *ti; |
||
486 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewNode, &ti, "%s: ViewNode", szFieldName); |
||
487 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
488 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
489 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
490 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
491 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
492 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
493 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
494 | /* Array length field ignored: NoOfReferences */ |
||
495 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
496 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ContainsNoLoops); |
||
497 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); |
||
498 | proto_item_set_end(ti, tvb, *pOffset); |
||
499 | } |
||
500 | void parseDataTypeNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
501 | { |
||
502 | proto_item *ti; |
||
503 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataTypeNode, &ti, "%s: DataTypeNode", szFieldName); |
||
504 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
505 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
506 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
507 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
508 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
509 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
510 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
511 | /* Array length field ignored: NoOfReferences */ |
||
512 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceNode", parseReferenceNode, ett_opcua_array_ReferenceNode); |
||
513 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
514 | proto_item_set_end(ti, tvb, *pOffset); |
||
515 | } |
||
516 | void parseReferenceNode(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
517 | { |
||
518 | proto_item *ti; |
||
519 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceNode, &ti, "%s: ReferenceNode", szFieldName); |
||
520 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
521 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsInverse); |
||
522 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetId"); |
||
523 | proto_item_set_end(ti, tvb, *pOffset); |
||
524 | } |
||
525 | void parseArgument(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
526 | { |
||
527 | proto_item *ti; |
||
528 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Argument, &ti, "%s: Argument", szFieldName); |
||
529 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Name); |
||
530 | parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); |
||
531 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); |
||
532 | /* Array length field ignored: NoOfArrayDimensions */ |
||
533 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); |
||
534 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
535 | proto_item_set_end(ti, tvb, *pOffset); |
||
536 | } |
||
537 | void parseEnumValueType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
538 | { |
||
539 | proto_item *ti; |
||
540 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EnumValueType, &ti, "%s: EnumValueType", szFieldName); |
||
541 | parseInt64(subtree, tvb, pinfo, pOffset, hf_opcua_Value); |
||
542 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
543 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
544 | proto_item_set_end(ti, tvb, *pOffset); |
||
545 | } |
||
546 | void parseOptionSet(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
547 | { |
||
548 | proto_item *ti; |
||
549 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_OptionSet, &ti, "%s: OptionSet", szFieldName); |
||
550 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Value); |
||
551 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ValidBits); |
||
552 | proto_item_set_end(ti, tvb, *pOffset); |
||
553 | } |
||
554 | void parseTimeZoneDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
555 | { |
||
556 | proto_item *ti; |
||
557 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TimeZoneDataType, &ti, "%s: TimeZoneDataType", szFieldName); |
||
558 | parseInt16(subtree, tvb, pinfo, pOffset, hf_opcua_Offset); |
||
559 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DaylightSavingInOffset); |
||
560 | proto_item_set_end(ti, tvb, *pOffset); |
||
561 | } |
||
562 | void parseApplicationDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
563 | { |
||
564 | proto_item *ti; |
||
565 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ApplicationDescription, &ti, "%s: ApplicationDescription", szFieldName); |
||
566 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ApplicationUri); |
||
567 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); |
||
568 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "ApplicationName"); |
||
569 | parseApplicationType(subtree, tvb, pinfo, pOffset); |
||
570 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_GatewayServerUri); |
||
571 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_DiscoveryProfileUri); |
||
572 | /* Array length field ignored: NoOfDiscoveryUrls */ |
||
573 | parseArraySimple(subtree, tvb, pinfo, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String); |
||
574 | proto_item_set_end(ti, tvb, *pOffset); |
||
575 | } |
||
576 | void parseRequestHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
577 | { |
||
578 | static const int *returnDiagnostics_mask[] = { |
||
579 | &hf_opcua_returnDiag_mask_sl_symbolicId, |
||
580 | &hf_opcua_returnDiag_mask_sl_localizedText, |
||
581 | &hf_opcua_returnDiag_mask_sl_additionalinfo, |
||
582 | &hf_opcua_returnDiag_mask_sl_innerstatuscode, |
||
583 | &hf_opcua_returnDiag_mask_sl_innerdiagnostics, |
||
584 | &hf_opcua_returnDiag_mask_ol_symbolicId, |
||
585 | &hf_opcua_returnDiag_mask_ol_localizedText, |
||
586 | &hf_opcua_returnDiag_mask_ol_additionalinfo, |
||
587 | &hf_opcua_returnDiag_mask_ol_innerstatuscode, |
||
588 | &hf_opcua_returnDiag_mask_ol_innerdiagnostics, |
||
589 | NULL}; |
||
590 | |||
591 | proto_item *ti; |
||
592 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RequestHeader, &ti, "%s: RequestHeader", szFieldName); |
||
593 | parseNodeId(subtree, tvb, pinfo, pOffset, "AuthenticationToken"); |
||
594 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp); |
||
595 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle); |
||
596 | proto_tree_add_bitmask(subtree, tvb, *pOffset, hf_opcua_returnDiag, ett_opcua_returnDiagnostics, returnDiagnostics_mask, ENC_LITTLE_ENDIAN); *pOffset += 4; |
||
597 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_AuditEntryId); |
||
598 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TimeoutHint); |
||
599 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "AdditionalHeader"); |
||
600 | proto_item_set_end(ti, tvb, *pOffset); |
||
601 | } |
||
602 | void parseResponseHeader(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
603 | { |
||
604 | proto_item *ti; |
||
605 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ResponseHeader, &ti, "%s: ResponseHeader", szFieldName); |
||
606 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp); |
||
607 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle); |
||
608 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_ServiceResult); |
||
609 | parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "ServiceDiagnostics"); |
||
610 | /* Array length field ignored: NoOfStringTable */ |
||
611 | parseArraySimple(subtree, tvb, pinfo, pOffset, "StringTable", "String", hf_opcua_StringTable, parseString, ett_opcua_array_String); |
||
612 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "AdditionalHeader"); |
||
613 | proto_item_set_end(ti, tvb, *pOffset); |
||
614 | } |
||
615 | void parseServerOnNetwork(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
616 | { |
||
617 | proto_item *ti; |
||
618 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerOnNetwork, &ti, "%s: ServerOnNetwork", szFieldName); |
||
619 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RecordId); |
||
620 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerName); |
||
621 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_DiscoveryUrl); |
||
622 | /* Array length field ignored: NoOfServerCapabilities */ |
||
623 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerCapabilities", "String", hf_opcua_ServerCapabilities, parseString, ett_opcua_array_String); |
||
624 | proto_item_set_end(ti, tvb, *pOffset); |
||
625 | } |
||
626 | void parseUserTokenPolicy(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
627 | { |
||
628 | proto_item *ti; |
||
629 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserTokenPolicy, &ti, "%s: UserTokenPolicy", szFieldName); |
||
630 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
631 | parseUserTokenType(subtree, tvb, pinfo, pOffset); |
||
632 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuedTokenType); |
||
633 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuerEndpointUrl); |
||
634 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri); |
||
635 | proto_item_set_end(ti, tvb, *pOffset); |
||
636 | } |
||
637 | void parseEndpointDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
638 | { |
||
639 | proto_item *ti; |
||
640 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointDescription, &ti, "%s: EndpointDescription", szFieldName); |
||
641 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); |
||
642 | parseApplicationDescription(subtree, tvb, pinfo, pOffset, "Server"); |
||
643 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerCertificate); |
||
644 | parseMessageSecurityMode(subtree, tvb, pinfo, pOffset); |
||
645 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri); |
||
646 | /* Array length field ignored: NoOfUserIdentityTokens */ |
||
647 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "UserIdentityTokens", "UserTokenPolicy", parseUserTokenPolicy, ett_opcua_array_UserTokenPolicy); |
||
648 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TransportProfileUri); |
||
649 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityLevel); |
||
650 | proto_item_set_end(ti, tvb, *pOffset); |
||
651 | } |
||
652 | void parseRegisteredServer(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
653 | { |
||
654 | proto_item *ti; |
||
655 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RegisteredServer, &ti, "%s: RegisteredServer", szFieldName); |
||
656 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); |
||
657 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); |
||
658 | /* Array length field ignored: NoOfServerNames */ |
||
659 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerNames", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); |
||
660 | parseApplicationType(subtree, tvb, pinfo, pOffset); |
||
661 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_GatewayServerUri); |
||
662 | /* Array length field ignored: NoOfDiscoveryUrls */ |
||
663 | parseArraySimple(subtree, tvb, pinfo, pOffset, "DiscoveryUrls", "String", hf_opcua_DiscoveryUrls, parseString, ett_opcua_array_String); |
||
664 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SemaphoreFilePath); |
||
665 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsOnline); |
||
666 | proto_item_set_end(ti, tvb, *pOffset); |
||
667 | } |
||
668 | void parseMdnsDiscoveryConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
669 | { |
||
670 | proto_item *ti; |
||
671 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MdnsDiscoveryConfiguration, &ti, "%s: MdnsDiscoveryConfiguration", szFieldName); |
||
672 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_MdnsServerName); |
||
673 | /* Array length field ignored: NoOfServerCapabilities */ |
||
674 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerCapabilities", "String", hf_opcua_ServerCapabilities, parseString, ett_opcua_array_String); |
||
675 | proto_item_set_end(ti, tvb, *pOffset); |
||
676 | } |
||
677 | void parseChannelSecurityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
678 | { |
||
679 | proto_item *ti; |
||
680 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ChannelSecurityToken, &ti, "%s: ChannelSecurityToken", szFieldName); |
||
681 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ChannelId); |
||
682 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TokenId); |
||
683 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_CreatedAt); |
||
684 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetime); |
||
685 | proto_item_set_end(ti, tvb, *pOffset); |
||
686 | } |
||
687 | void parseSignedSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
688 | { |
||
689 | proto_item *ti; |
||
690 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SignedSoftwareCertificate, &ti, "%s: SignedSoftwareCertificate", szFieldName); |
||
691 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_CertificateData); |
||
692 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Signature); |
||
693 | proto_item_set_end(ti, tvb, *pOffset); |
||
694 | } |
||
695 | void parseSignatureData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
696 | { |
||
697 | proto_item *ti; |
||
698 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SignatureData, &ti, "%s: SignatureData", szFieldName); |
||
699 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Algorithm); |
||
700 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Signature); |
||
701 | proto_item_set_end(ti, tvb, *pOffset); |
||
702 | } |
||
703 | void parseUserIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
704 | { |
||
705 | proto_item *ti; |
||
706 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserIdentityToken, &ti, "%s: UserIdentityToken", szFieldName); |
||
707 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
708 | proto_item_set_end(ti, tvb, *pOffset); |
||
709 | } |
||
710 | void parseAnonymousIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
711 | { |
||
712 | proto_item *ti; |
||
713 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AnonymousIdentityToken, &ti, "%s: AnonymousIdentityToken", szFieldName); |
||
714 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
715 | proto_item_set_end(ti, tvb, *pOffset); |
||
716 | } |
||
717 | void parseUserNameIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
718 | { |
||
719 | proto_item *ti; |
||
720 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UserNameIdentityToken, &ti, "%s: UserNameIdentityToken", szFieldName); |
||
721 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
722 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName); |
||
723 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_Password); |
||
724 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EncryptionAlgorithm); |
||
725 | proto_item_set_end(ti, tvb, *pOffset); |
||
726 | } |
||
727 | void parseX509IdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
728 | { |
||
729 | proto_item *ti; |
||
730 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_X509IdentityToken, &ti, "%s: X509IdentityToken", szFieldName); |
||
731 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
732 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_CertificateData); |
||
733 | proto_item_set_end(ti, tvb, *pOffset); |
||
734 | } |
||
735 | void parseKerberosIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
736 | { |
||
737 | proto_item *ti; |
||
738 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_KerberosIdentityToken, &ti, "%s: KerberosIdentityToken", szFieldName); |
||
739 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
740 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_TicketData); |
||
741 | proto_item_set_end(ti, tvb, *pOffset); |
||
742 | } |
||
743 | void parseIssuedIdentityToken(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
744 | { |
||
745 | proto_item *ti; |
||
746 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_IssuedIdentityToken, &ti, "%s: IssuedIdentityToken", szFieldName); |
||
747 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_PolicyId); |
||
748 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_TokenData); |
||
749 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EncryptionAlgorithm); |
||
750 | proto_item_set_end(ti, tvb, *pOffset); |
||
751 | } |
||
752 | void parseNodeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
753 | { |
||
754 | proto_item *ti; |
||
755 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeAttributes, &ti, "%s: NodeAttributes", szFieldName); |
||
756 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
757 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
758 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
759 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
760 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
761 | proto_item_set_end(ti, tvb, *pOffset); |
||
762 | } |
||
763 | void parseObjectAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
764 | { |
||
765 | proto_item *ti; |
||
766 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectAttributes, &ti, "%s: ObjectAttributes", szFieldName); |
||
767 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
768 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
769 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
770 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
771 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
772 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); |
||
773 | proto_item_set_end(ti, tvb, *pOffset); |
||
774 | } |
||
775 | void parseVariableAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
776 | { |
||
777 | proto_item *ti; |
||
778 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableAttributes, &ti, "%s: VariableAttributes", szFieldName); |
||
779 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
780 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
781 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
782 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
783 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
784 | parseVariant(subtree, tvb, pinfo, pOffset, "Value"); |
||
785 | parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); |
||
786 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); |
||
787 | /* Array length field ignored: NoOfArrayDimensions */ |
||
788 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); |
||
789 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_AccessLevel); |
||
790 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_UserAccessLevel); |
||
791 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MinimumSamplingInterval); |
||
792 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Historizing); |
||
793 | proto_item_set_end(ti, tvb, *pOffset); |
||
794 | } |
||
795 | void parseMethodAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
796 | { |
||
797 | proto_item *ti; |
||
798 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MethodAttributes, &ti, "%s: MethodAttributes", szFieldName); |
||
799 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
800 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
801 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
802 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
803 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
804 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Executable); |
||
805 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UserExecutable); |
||
806 | proto_item_set_end(ti, tvb, *pOffset); |
||
807 | } |
||
808 | void parseObjectTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
809 | { |
||
810 | proto_item *ti; |
||
811 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ObjectTypeAttributes, &ti, "%s: ObjectTypeAttributes", szFieldName); |
||
812 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
813 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
814 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
815 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
816 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
817 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
818 | proto_item_set_end(ti, tvb, *pOffset); |
||
819 | } |
||
820 | void parseVariableTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
821 | { |
||
822 | proto_item *ti; |
||
823 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_VariableTypeAttributes, &ti, "%s: VariableTypeAttributes", szFieldName); |
||
824 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
825 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
826 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
827 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
828 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
829 | parseVariant(subtree, tvb, pinfo, pOffset, "Value"); |
||
830 | parseNodeId(subtree, tvb, pinfo, pOffset, "DataType"); |
||
831 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ValueRank); |
||
832 | /* Array length field ignored: NoOfArrayDimensions */ |
||
833 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ArrayDimensions", "UInt32", hf_opcua_ArrayDimensions, parseUInt32, ett_opcua_array_UInt32); |
||
834 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
835 | proto_item_set_end(ti, tvb, *pOffset); |
||
836 | } |
||
837 | void parseReferenceTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
838 | { |
||
839 | proto_item *ti; |
||
840 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceTypeAttributes, &ti, "%s: ReferenceTypeAttributes", szFieldName); |
||
841 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
842 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
843 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
844 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
845 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
846 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
847 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Symmetric); |
||
848 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "InverseName"); |
||
849 | proto_item_set_end(ti, tvb, *pOffset); |
||
850 | } |
||
851 | void parseDataTypeAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
852 | { |
||
853 | proto_item *ti; |
||
854 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataTypeAttributes, &ti, "%s: DataTypeAttributes", szFieldName); |
||
855 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
856 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
857 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
858 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
859 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
860 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsAbstract); |
||
861 | proto_item_set_end(ti, tvb, *pOffset); |
||
862 | } |
||
863 | void parseViewAttributes(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
864 | { |
||
865 | proto_item *ti; |
||
866 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewAttributes, &ti, "%s: ViewAttributes", szFieldName); |
||
867 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SpecifiedAttributes); |
||
868 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
869 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
870 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_WriteMask); |
||
871 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UserWriteMask); |
||
872 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ContainsNoLoops); |
||
873 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotifier); |
||
874 | proto_item_set_end(ti, tvb, *pOffset); |
||
875 | } |
||
876 | void parseAddNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
877 | { |
||
878 | proto_item *ti; |
||
879 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddNodesItem, &ti, "%s: AddNodesItem", szFieldName); |
||
880 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "ParentNodeId"); |
||
881 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
882 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "RequestedNewNodeId"); |
||
883 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
884 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
885 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "NodeAttributes"); |
||
886 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinition"); |
||
887 | proto_item_set_end(ti, tvb, *pOffset); |
||
888 | } |
||
889 | void parseAddNodesResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
890 | { |
||
891 | proto_item *ti; |
||
892 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddNodesResult, &ti, "%s: AddNodesResult", szFieldName); |
||
893 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
894 | parseNodeId(subtree, tvb, pinfo, pOffset, "AddedNodeId"); |
||
895 | proto_item_set_end(ti, tvb, *pOffset); |
||
896 | } |
||
897 | void parseAddReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
898 | { |
||
899 | proto_item *ti; |
||
900 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesItem, &ti, "%s: AddReferencesItem", szFieldName); |
||
901 | parseNodeId(subtree, tvb, pinfo, pOffset, "SourceNodeId"); |
||
902 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
903 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); |
||
904 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TargetServerUri); |
||
905 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetNodeId"); |
||
906 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
907 | proto_item_set_end(ti, tvb, *pOffset); |
||
908 | } |
||
909 | void parseDeleteNodesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
910 | { |
||
911 | proto_item *ti; |
||
912 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesItem, &ti, "%s: DeleteNodesItem", szFieldName); |
||
913 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
914 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteTargetReferences); |
||
915 | proto_item_set_end(ti, tvb, *pOffset); |
||
916 | } |
||
917 | void parseDeleteReferencesItem(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
918 | { |
||
919 | proto_item *ti; |
||
920 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesItem, &ti, "%s: DeleteReferencesItem", szFieldName); |
||
921 | parseNodeId(subtree, tvb, pinfo, pOffset, "SourceNodeId"); |
||
922 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
923 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); |
||
924 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetNodeId"); |
||
925 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteBidirectional); |
||
926 | proto_item_set_end(ti, tvb, *pOffset); |
||
927 | } |
||
928 | void parseViewDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
929 | { |
||
930 | proto_item *ti; |
||
931 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ViewDescription, &ti, "%s: ViewDescription", szFieldName); |
||
932 | parseNodeId(subtree, tvb, pinfo, pOffset, "ViewId"); |
||
933 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_Timestamp); |
||
934 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ViewVersion); |
||
935 | proto_item_set_end(ti, tvb, *pOffset); |
||
936 | } |
||
937 | void parseBrowseDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
938 | { |
||
939 | proto_item *ti; |
||
940 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowseDescription, &ti, "%s: BrowseDescription", szFieldName); |
||
941 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
942 | parseBrowseDirection(subtree, tvb, pinfo, pOffset); |
||
943 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
944 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubtypes); |
||
945 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NodeClassMask); |
||
946 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ResultMask); |
||
947 | proto_item_set_end(ti, tvb, *pOffset); |
||
948 | } |
||
949 | void parseReferenceDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
950 | { |
||
951 | proto_item *ti; |
||
952 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReferenceDescription, &ti, "%s: ReferenceDescription", szFieldName); |
||
953 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
954 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); |
||
955 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
956 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "BrowseName"); |
||
957 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
958 | parseNodeClass(subtree, tvb, pinfo, pOffset); |
||
959 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinition"); |
||
960 | proto_item_set_end(ti, tvb, *pOffset); |
||
961 | } |
||
962 | void parseBrowseResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
963 | { |
||
964 | proto_item *ti; |
||
965 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowseResult, &ti, "%s: BrowseResult", szFieldName); |
||
966 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
967 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); |
||
968 | /* Array length field ignored: NoOfReferences */ |
||
969 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "References", "ReferenceDescription", parseReferenceDescription, ett_opcua_array_ReferenceDescription); |
||
970 | proto_item_set_end(ti, tvb, *pOffset); |
||
971 | } |
||
972 | void parseRelativePathElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
973 | { |
||
974 | proto_item *ti; |
||
975 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RelativePathElement, &ti, "%s: RelativePathElement", szFieldName); |
||
976 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
977 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsInverse); |
||
978 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubtypes); |
||
979 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "TargetName"); |
||
980 | proto_item_set_end(ti, tvb, *pOffset); |
||
981 | } |
||
982 | void parseRelativePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
983 | { |
||
984 | proto_item *ti; |
||
985 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RelativePath, &ti, "%s: RelativePath", szFieldName); |
||
986 | /* Array length field ignored: NoOfElements */ |
||
987 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Elements", "RelativePathElement", parseRelativePathElement, ett_opcua_array_RelativePathElement); |
||
988 | proto_item_set_end(ti, tvb, *pOffset); |
||
989 | } |
||
990 | void parseBrowsePath(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
991 | { |
||
992 | proto_item *ti; |
||
993 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePath, &ti, "%s: BrowsePath", szFieldName); |
||
994 | parseNodeId(subtree, tvb, pinfo, pOffset, "StartingNode"); |
||
995 | parseRelativePath(subtree, tvb, pinfo, pOffset, "RelativePath"); |
||
996 | proto_item_set_end(ti, tvb, *pOffset); |
||
997 | } |
||
998 | void parseBrowsePathTarget(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
999 | { |
||
1000 | proto_item *ti; |
||
1001 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePathTarget, &ti, "%s: BrowsePathTarget", szFieldName); |
||
1002 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TargetId"); |
||
1003 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RemainingPathIndex); |
||
1004 | proto_item_set_end(ti, tvb, *pOffset); |
||
1005 | } |
||
1006 | void parseBrowsePathResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1007 | { |
||
1008 | proto_item *ti; |
||
1009 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BrowsePathResult, &ti, "%s: BrowsePathResult", szFieldName); |
||
1010 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1011 | /* Array length field ignored: NoOfTargets */ |
||
1012 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Targets", "BrowsePathTarget", parseBrowsePathTarget, ett_opcua_array_BrowsePathTarget); |
||
1013 | proto_item_set_end(ti, tvb, *pOffset); |
||
1014 | } |
||
1015 | void parseEndpointConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1016 | { |
||
1017 | proto_item *ti; |
||
1018 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointConfiguration, &ti, "%s: EndpointConfiguration", szFieldName); |
||
1019 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_OperationTimeout); |
||
1020 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseBinaryEncoding); |
||
1021 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxStringLength); |
||
1022 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxByteStringLength); |
||
1023 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxArrayLength); |
||
1024 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxMessageSize); |
||
1025 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxBufferSize); |
||
1026 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ChannelLifetime); |
||
1027 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityTokenLifetime); |
||
1028 | proto_item_set_end(ti, tvb, *pOffset); |
||
1029 | } |
||
1030 | void parseSupportedProfile(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1031 | { |
||
1032 | proto_item *ti; |
||
1033 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SupportedProfile, &ti, "%s: SupportedProfile", szFieldName); |
||
1034 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_OrganizationUri); |
||
1035 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProfileId); |
||
1036 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ComplianceTool); |
||
1037 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ComplianceDate); |
||
1038 | parseComplianceLevel(subtree, tvb, pinfo, pOffset); |
||
1039 | /* Array length field ignored: NoOfUnsupportedUnitIds */ |
||
1040 | parseArraySimple(subtree, tvb, pinfo, pOffset, "UnsupportedUnitIds", "String", hf_opcua_UnsupportedUnitIds, parseString, ett_opcua_array_String); |
||
1041 | proto_item_set_end(ti, tvb, *pOffset); |
||
1042 | } |
||
1043 | void parseSoftwareCertificate(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1044 | { |
||
1045 | proto_item *ti; |
||
1046 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SoftwareCertificate, &ti, "%s: SoftwareCertificate", szFieldName); |
||
1047 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductName); |
||
1048 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); |
||
1049 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_VendorName); |
||
1050 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_VendorProductCertificate); |
||
1051 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SoftwareVersion); |
||
1052 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_BuildNumber); |
||
1053 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_BuildDate); |
||
1054 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IssuedBy); |
||
1055 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_IssueDate); |
||
1056 | /* Array length field ignored: NoOfSupportedProfiles */ |
||
1057 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "SupportedProfiles", "SupportedProfile", parseSupportedProfile, ett_opcua_array_SupportedProfile); |
||
1058 | proto_item_set_end(ti, tvb, *pOffset); |
||
1059 | } |
||
1060 | void parseQueryDataDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1061 | { |
||
1062 | proto_item *ti; |
||
1063 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_QueryDataDescription, &ti, "%s: QueryDataDescription", szFieldName); |
||
1064 | parseRelativePath(subtree, tvb, pinfo, pOffset, "RelativePath"); |
||
1065 | parseAttributeId(subtree, tvb, pinfo, pOffset); |
||
1066 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); |
||
1067 | proto_item_set_end(ti, tvb, *pOffset); |
||
1068 | } |
||
1069 | void parseNodeTypeDescription(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1070 | { |
||
1071 | proto_item *ti; |
||
1072 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeTypeDescription, &ti, "%s: NodeTypeDescription", szFieldName); |
||
1073 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionNode"); |
||
1074 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IncludeSubTypes); |
||
1075 | /* Array length field ignored: NoOfDataToReturn */ |
||
1076 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataToReturn", "QueryDataDescription", parseQueryDataDescription, ett_opcua_array_QueryDataDescription); |
||
1077 | proto_item_set_end(ti, tvb, *pOffset); |
||
1078 | } |
||
1079 | void parseQueryDataSet(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1080 | { |
||
1081 | proto_item *ti; |
||
1082 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_QueryDataSet, &ti, "%s: QueryDataSet", szFieldName); |
||
1083 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1084 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionNode"); |
||
1085 | /* Array length field ignored: NoOfValues */ |
||
1086 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Values", "Variant", parseVariant, ett_opcua_array_Variant); |
||
1087 | proto_item_set_end(ti, tvb, *pOffset); |
||
1088 | } |
||
1089 | void parseNodeReference(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1090 | { |
||
1091 | proto_item *ti; |
||
1092 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NodeReference, &ti, "%s: NodeReference", szFieldName); |
||
1093 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1094 | parseNodeId(subtree, tvb, pinfo, pOffset, "ReferenceTypeId"); |
||
1095 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsForward); |
||
1096 | /* Array length field ignored: NoOfReferencedNodeIds */ |
||
1097 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencedNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); |
||
1098 | proto_item_set_end(ti, tvb, *pOffset); |
||
1099 | } |
||
1100 | void parseContentFilterElement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1101 | { |
||
1102 | proto_item *ti; |
||
1103 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterElement, &ti, "%s: ContentFilterElement", szFieldName); |
||
1104 | parseFilterOperator(subtree, tvb, pinfo, pOffset); |
||
1105 | /* Array length field ignored: NoOfFilterOperands */ |
||
1106 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "FilterOperands", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); |
||
1107 | proto_item_set_end(ti, tvb, *pOffset); |
||
1108 | } |
||
1109 | void parseContentFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1110 | { |
||
1111 | proto_item *ti; |
||
1112 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilter, &ti, "%s: ContentFilter", szFieldName); |
||
1113 | /* Array length field ignored: NoOfElements */ |
||
1114 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Elements", "ContentFilterElement", parseContentFilterElement, ett_opcua_array_ContentFilterElement); |
||
1115 | proto_item_set_end(ti, tvb, *pOffset); |
||
1116 | } |
||
1117 | void parseElementOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1118 | { |
||
1119 | proto_item *ti; |
||
1120 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ElementOperand, &ti, "%s: ElementOperand", szFieldName); |
||
1121 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Index); |
||
1122 | proto_item_set_end(ti, tvb, *pOffset); |
||
1123 | } |
||
1124 | void parseLiteralOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1125 | { |
||
1126 | proto_item *ti; |
||
1127 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_LiteralOperand, &ti, "%s: LiteralOperand", szFieldName); |
||
1128 | parseVariant(subtree, tvb, pinfo, pOffset, "Value"); |
||
1129 | proto_item_set_end(ti, tvb, *pOffset); |
||
1130 | } |
||
1131 | void parseAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1132 | { |
||
1133 | proto_item *ti; |
||
1134 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AttributeOperand, &ti, "%s: AttributeOperand", szFieldName); |
||
1135 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1136 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Alias); |
||
1137 | parseRelativePath(subtree, tvb, pinfo, pOffset, "BrowsePath"); |
||
1138 | parseAttributeId(subtree, tvb, pinfo, pOffset); |
||
1139 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); |
||
1140 | proto_item_set_end(ti, tvb, *pOffset); |
||
1141 | } |
||
1142 | void parseSimpleAttributeOperand(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1143 | { |
||
1144 | proto_item *ti; |
||
1145 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SimpleAttributeOperand, &ti, "%s: SimpleAttributeOperand", szFieldName); |
||
1146 | parseNodeId(subtree, tvb, pinfo, pOffset, "TypeDefinitionId"); |
||
1147 | /* Array length field ignored: NoOfBrowsePath */ |
||
1148 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "BrowsePath", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); |
||
1149 | parseAttributeId(subtree, tvb, pinfo, pOffset); |
||
1150 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); |
||
1151 | proto_item_set_end(ti, tvb, *pOffset); |
||
1152 | } |
||
1153 | void parseContentFilterElementResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1154 | { |
||
1155 | proto_item *ti; |
||
1156 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterElementResult, &ti, "%s: ContentFilterElementResult", szFieldName); |
||
1157 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1158 | /* Array length field ignored: NoOfOperandStatusCodes */ |
||
1159 | parseArraySimple(subtree, tvb, pinfo, pOffset, "OperandStatusCodes", "StatusCode", hf_opcua_OperandStatusCodes, parseStatusCode, ett_opcua_array_StatusCode); |
||
1160 | /* Array length field ignored: NoOfOperandDiagnosticInfos */ |
||
1161 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "OperandDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1162 | proto_item_set_end(ti, tvb, *pOffset); |
||
1163 | } |
||
1164 | void parseContentFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1165 | { |
||
1166 | proto_item *ti; |
||
1167 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ContentFilterResult, &ti, "%s: ContentFilterResult", szFieldName); |
||
1168 | /* Array length field ignored: NoOfElementResults */ |
||
1169 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ElementResults", "ContentFilterElementResult", parseContentFilterElementResult, ett_opcua_array_ContentFilterElementResult); |
||
1170 | /* Array length field ignored: NoOfElementDiagnosticInfos */ |
||
1171 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ElementDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1172 | proto_item_set_end(ti, tvb, *pOffset); |
||
1173 | } |
||
1174 | void parseParsingResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1175 | { |
||
1176 | proto_item *ti; |
||
1177 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ParsingResult, &ti, "%s: ParsingResult", szFieldName); |
||
1178 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1179 | /* Array length field ignored: NoOfDataStatusCodes */ |
||
1180 | parseArraySimple(subtree, tvb, pinfo, pOffset, "DataStatusCodes", "StatusCode", hf_opcua_DataStatusCodes, parseStatusCode, ett_opcua_array_StatusCode); |
||
1181 | /* Array length field ignored: NoOfDataDiagnosticInfos */ |
||
1182 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1183 | proto_item_set_end(ti, tvb, *pOffset); |
||
1184 | } |
||
1185 | void parseReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1186 | { |
||
1187 | proto_item *ti; |
||
1188 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadValueId, &ti, "%s: ReadValueId", szFieldName); |
||
1189 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1190 | parseAttributeId(subtree, tvb, pinfo, pOffset); |
||
1191 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); |
||
1192 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "DataEncoding"); |
||
1193 | proto_item_set_end(ti, tvb, *pOffset); |
||
1194 | } |
||
1195 | void parseHistoryReadValueId(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1196 | { |
||
1197 | proto_item *ti; |
||
1198 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadValueId, &ti, "%s: HistoryReadValueId", szFieldName); |
||
1199 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1200 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); |
||
1201 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "DataEncoding"); |
||
1202 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); |
||
1203 | proto_item_set_end(ti, tvb, *pOffset); |
||
1204 | } |
||
1205 | void parseHistoryReadResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1206 | { |
||
1207 | proto_item *ti; |
||
1208 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadResult, &ti, "%s: HistoryReadResult", szFieldName); |
||
1209 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1210 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint); |
||
1211 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "HistoryData"); |
||
1212 | proto_item_set_end(ti, tvb, *pOffset); |
||
1213 | } |
||
1214 | void parseReadEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1215 | { |
||
1216 | proto_item *ti; |
||
1217 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadEventDetails, &ti, "%s: ReadEventDetails", szFieldName); |
||
1218 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NumValuesPerNode); |
||
1219 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); |
||
1220 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); |
||
1221 | parseEventFilter(subtree, tvb, pinfo, pOffset, "Filter"); |
||
1222 | proto_item_set_end(ti, tvb, *pOffset); |
||
1223 | } |
||
1224 | void parseReadRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1225 | { |
||
1226 | proto_item *ti; |
||
1227 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadRawModifiedDetails, &ti, "%s: ReadRawModifiedDetails", szFieldName); |
||
1228 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsReadModified); |
||
1229 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); |
||
1230 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); |
||
1231 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NumValuesPerNode); |
||
1232 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReturnBounds); |
||
1233 | proto_item_set_end(ti, tvb, *pOffset); |
||
1234 | } |
||
1235 | void parseReadProcessedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1236 | { |
||
1237 | proto_item *ti; |
||
1238 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadProcessedDetails, &ti, "%s: ReadProcessedDetails", szFieldName); |
||
1239 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); |
||
1240 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); |
||
1241 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ProcessingInterval); |
||
1242 | /* Array length field ignored: NoOfAggregateType */ |
||
1243 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "AggregateType", "NodeId", parseNodeId, ett_opcua_array_NodeId); |
||
1244 | parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "AggregateConfiguration"); |
||
1245 | proto_item_set_end(ti, tvb, *pOffset); |
||
1246 | } |
||
1247 | void parseReadAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1248 | { |
||
1249 | proto_item *ti; |
||
1250 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ReadAtTimeDetails, &ti, "%s: ReadAtTimeDetails", szFieldName); |
||
1251 | /* Array length field ignored: NoOfReqTimes */ |
||
1252 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime); |
||
1253 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseSimpleBounds); |
||
1254 | proto_item_set_end(ti, tvb, *pOffset); |
||
1255 | } |
||
1256 | void parseHistoryData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1257 | { |
||
1258 | proto_item *ti; |
||
1259 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryData, &ti, "%s: HistoryData", szFieldName); |
||
1260 | /* Array length field ignored: NoOfDataValues */ |
||
1261 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); |
||
1262 | proto_item_set_end(ti, tvb, *pOffset); |
||
1263 | } |
||
1264 | void parseModificationInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1265 | { |
||
1266 | proto_item *ti; |
||
1267 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ModificationInfo, &ti, "%s: ModificationInfo", szFieldName); |
||
1268 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ModificationTime); |
||
1269 | parseHistoryUpdateType(subtree, tvb, pinfo, pOffset); |
||
1270 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName); |
||
1271 | proto_item_set_end(ti, tvb, *pOffset); |
||
1272 | } |
||
1273 | void parseHistoryModifiedData(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1274 | { |
||
1275 | proto_item *ti; |
||
1276 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryModifiedData, &ti, "%s: HistoryModifiedData", szFieldName); |
||
1277 | /* Array length field ignored: NoOfDataValues */ |
||
1278 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); |
||
1279 | /* Array length field ignored: NoOfModificationInfos */ |
||
1280 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ModificationInfos", "ModificationInfo", parseModificationInfo, ett_opcua_array_ModificationInfo); |
||
1281 | proto_item_set_end(ti, tvb, *pOffset); |
||
1282 | } |
||
1283 | void parseHistoryEvent(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1284 | { |
||
1285 | proto_item *ti; |
||
1286 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryEvent, &ti, "%s: HistoryEvent", szFieldName); |
||
1287 | /* Array length field ignored: NoOfEvents */ |
||
1288 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Events", "HistoryEventFieldList", parseHistoryEventFieldList, ett_opcua_array_HistoryEventFieldList); |
||
1289 | proto_item_set_end(ti, tvb, *pOffset); |
||
1290 | } |
||
1291 | void parseWriteValue(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1292 | { |
||
1293 | proto_item *ti; |
||
1294 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_WriteValue, &ti, "%s: WriteValue", szFieldName); |
||
1295 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1296 | parseAttributeId(subtree, tvb, pinfo, pOffset); |
||
1297 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_IndexRange); |
||
1298 | parseDataValue(subtree, tvb, pinfo, pOffset, "Value"); |
||
1299 | proto_item_set_end(ti, tvb, *pOffset); |
||
1300 | } |
||
1301 | void parseHistoryUpdateDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1302 | { |
||
1303 | proto_item *ti; |
||
1304 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateDetails, &ti, "%s: HistoryUpdateDetails", szFieldName); |
||
1305 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1306 | proto_item_set_end(ti, tvb, *pOffset); |
||
1307 | } |
||
1308 | void parseUpdateDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1309 | { |
||
1310 | proto_item *ti; |
||
1311 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateDataDetails, &ti, "%s: UpdateDataDetails", szFieldName); |
||
1312 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1313 | parsePerformUpdateType(subtree, tvb, pinfo, pOffset); |
||
1314 | /* Array length field ignored: NoOfUpdateValues */ |
||
1315 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); |
||
1316 | proto_item_set_end(ti, tvb, *pOffset); |
||
1317 | } |
||
1318 | void parseUpdateStructureDataDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1319 | { |
||
1320 | proto_item *ti; |
||
1321 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateStructureDataDetails, &ti, "%s: UpdateStructureDataDetails", szFieldName); |
||
1322 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1323 | parsePerformUpdateType(subtree, tvb, pinfo, pOffset); |
||
1324 | /* Array length field ignored: NoOfUpdateValues */ |
||
1325 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "UpdateValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); |
||
1326 | proto_item_set_end(ti, tvb, *pOffset); |
||
1327 | } |
||
1328 | void parseUpdateEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1329 | { |
||
1330 | proto_item *ti; |
||
1331 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_UpdateEventDetails, &ti, "%s: UpdateEventDetails", szFieldName); |
||
1332 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1333 | parsePerformUpdateType(subtree, tvb, pinfo, pOffset); |
||
1334 | parseEventFilter(subtree, tvb, pinfo, pOffset, "Filter"); |
||
1335 | /* Array length field ignored: NoOfEventData */ |
||
1336 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventData", "HistoryEventFieldList", parseHistoryEventFieldList, ett_opcua_array_HistoryEventFieldList); |
||
1337 | proto_item_set_end(ti, tvb, *pOffset); |
||
1338 | } |
||
1339 | void parseDeleteRawModifiedDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1340 | { |
||
1341 | proto_item *ti; |
||
1342 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteRawModifiedDetails, &ti, "%s: DeleteRawModifiedDetails", szFieldName); |
||
1343 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1344 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_IsDeleteModified); |
||
1345 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); |
||
1346 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_EndTime); |
||
1347 | proto_item_set_end(ti, tvb, *pOffset); |
||
1348 | } |
||
1349 | void parseDeleteAtTimeDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1350 | { |
||
1351 | proto_item *ti; |
||
1352 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteAtTimeDetails, &ti, "%s: DeleteAtTimeDetails", szFieldName); |
||
1353 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1354 | /* Array length field ignored: NoOfReqTimes */ |
||
1355 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ReqTimes", "DateTime", hf_opcua_ReqTimes, parseDateTime, ett_opcua_array_DateTime); |
||
1356 | proto_item_set_end(ti, tvb, *pOffset); |
||
1357 | } |
||
1358 | void parseDeleteEventDetails(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1359 | { |
||
1360 | proto_item *ti; |
||
1361 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DeleteEventDetails, &ti, "%s: DeleteEventDetails", szFieldName); |
||
1362 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1363 | /* Array length field ignored: NoOfEventIds */ |
||
1364 | parseArraySimple(subtree, tvb, pinfo, pOffset, "EventIds", "ByteString", hf_opcua_EventIds, parseByteString, ett_opcua_array_ByteString); |
||
1365 | proto_item_set_end(ti, tvb, *pOffset); |
||
1366 | } |
||
1367 | void parseHistoryUpdateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1368 | { |
||
1369 | proto_item *ti; |
||
1370 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateResult, &ti, "%s: HistoryUpdateResult", szFieldName); |
||
1371 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1372 | /* Array length field ignored: NoOfOperationResults */ |
||
1373 | parseArraySimple(subtree, tvb, pinfo, pOffset, "OperationResults", "StatusCode", hf_opcua_OperationResults, parseStatusCode, ett_opcua_array_StatusCode); |
||
1374 | /* Array length field ignored: NoOfDiagnosticInfos */ |
||
1375 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1376 | proto_item_set_end(ti, tvb, *pOffset); |
||
1377 | } |
||
1378 | void parseCallMethodRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1379 | { |
||
1380 | proto_item *ti; |
||
1381 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CallMethodRequest, &ti, "%s: CallMethodRequest", szFieldName); |
||
1382 | parseNodeId(subtree, tvb, pinfo, pOffset, "ObjectId"); |
||
1383 | parseNodeId(subtree, tvb, pinfo, pOffset, "MethodId"); |
||
1384 | /* Array length field ignored: NoOfInputArguments */ |
||
1385 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "InputArguments", "Variant", parseVariant, ett_opcua_array_Variant); |
||
1386 | proto_item_set_end(ti, tvb, *pOffset); |
||
1387 | } |
||
1388 | void parseCallMethodResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1389 | { |
||
1390 | proto_item *ti; |
||
1391 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CallMethodResult, &ti, "%s: CallMethodResult", szFieldName); |
||
1392 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1393 | /* Array length field ignored: NoOfInputArgumentResults */ |
||
1394 | parseArraySimple(subtree, tvb, pinfo, pOffset, "InputArgumentResults", "StatusCode", hf_opcua_InputArgumentResults, parseStatusCode, ett_opcua_array_StatusCode); |
||
1395 | /* Array length field ignored: NoOfInputArgumentDiagnosticInfos */ |
||
1396 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "InputArgumentDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1397 | /* Array length field ignored: NoOfOutputArguments */ |
||
1398 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "OutputArguments", "Variant", parseVariant, ett_opcua_array_Variant); |
||
1399 | proto_item_set_end(ti, tvb, *pOffset); |
||
1400 | } |
||
1401 | void parseDataChangeFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1402 | { |
||
1403 | proto_item *ti; |
||
1404 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataChangeFilter, &ti, "%s: DataChangeFilter", szFieldName); |
||
1405 | parseDataChangeTrigger(subtree, tvb, pinfo, pOffset); |
||
1406 | parseDeadbandType(subtree, tvb, pinfo, pOffset); |
||
1407 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_DeadbandValue); |
||
1408 | proto_item_set_end(ti, tvb, *pOffset); |
||
1409 | } |
||
1410 | void parseEventFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1411 | { |
||
1412 | proto_item *ti; |
||
1413 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFilter, &ti, "%s: EventFilter", szFieldName); |
||
1414 | /* Array length field ignored: NoOfSelectClauses */ |
||
1415 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "SelectClauses", "SimpleAttributeOperand", parseSimpleAttributeOperand, ett_opcua_array_SimpleAttributeOperand); |
||
1416 | parseContentFilter(subtree, tvb, pinfo, pOffset, "WhereClause"); |
||
1417 | proto_item_set_end(ti, tvb, *pOffset); |
||
1418 | } |
||
1419 | void parseAggregateConfiguration(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1420 | { |
||
1421 | proto_item *ti; |
||
1422 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateConfiguration, &ti, "%s: AggregateConfiguration", szFieldName); |
||
1423 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseServerCapabilitiesDefaults); |
||
1424 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_TreatUncertainAsBad); |
||
1425 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_PercentDataBad); |
||
1426 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_PercentDataGood); |
||
1427 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_UseSlopedExtrapolation); |
||
1428 | proto_item_set_end(ti, tvb, *pOffset); |
||
1429 | } |
||
1430 | void parseAggregateFilter(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1431 | { |
||
1432 | proto_item *ti; |
||
1433 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateFilter, &ti, "%s: AggregateFilter", szFieldName); |
||
1434 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); |
||
1435 | parseNodeId(subtree, tvb, pinfo, pOffset, "AggregateType"); |
||
1436 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ProcessingInterval); |
||
1437 | parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "AggregateConfiguration"); |
||
1438 | proto_item_set_end(ti, tvb, *pOffset); |
||
1439 | } |
||
1440 | void parseEventFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1441 | { |
||
1442 | proto_item *ti; |
||
1443 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFilterResult, &ti, "%s: EventFilterResult", szFieldName); |
||
1444 | /* Array length field ignored: NoOfSelectClauseResults */ |
||
1445 | parseArraySimple(subtree, tvb, pinfo, pOffset, "SelectClauseResults", "StatusCode", hf_opcua_SelectClauseResults, parseStatusCode, ett_opcua_array_StatusCode); |
||
1446 | /* Array length field ignored: NoOfSelectClauseDiagnosticInfos */ |
||
1447 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "SelectClauseDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1448 | parseContentFilterResult(subtree, tvb, pinfo, pOffset, "WhereClauseResult"); |
||
1449 | proto_item_set_end(ti, tvb, *pOffset); |
||
1450 | } |
||
1451 | void parseAggregateFilterResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1452 | { |
||
1453 | proto_item *ti; |
||
1454 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AggregateFilterResult, &ti, "%s: AggregateFilterResult", szFieldName); |
||
1455 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedStartTime); |
||
1456 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedProcessingInterval); |
||
1457 | parseAggregateConfiguration(subtree, tvb, pinfo, pOffset, "RevisedAggregateConfiguration"); |
||
1458 | proto_item_set_end(ti, tvb, *pOffset); |
||
1459 | } |
||
1460 | void parseMonitoringParameters(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1461 | { |
||
1462 | proto_item *ti; |
||
1463 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoringParameters, &ti, "%s: MonitoringParameters", szFieldName); |
||
1464 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle); |
||
1465 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_SamplingInterval); |
||
1466 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "Filter"); |
||
1467 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_QueueSize); |
||
1468 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DiscardOldest); |
||
1469 | proto_item_set_end(ti, tvb, *pOffset); |
||
1470 | } |
||
1471 | void parseMonitoredItemCreateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1472 | { |
||
1473 | proto_item *ti; |
||
1474 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemCreateRequest, &ti, "%s: MonitoredItemCreateRequest", szFieldName); |
||
1475 | parseReadValueId(subtree, tvb, pinfo, pOffset, "ItemToMonitor"); |
||
1476 | parseMonitoringMode(subtree, tvb, pinfo, pOffset); |
||
1477 | parseMonitoringParameters(subtree, tvb, pinfo, pOffset, "RequestedParameters"); |
||
1478 | proto_item_set_end(ti, tvb, *pOffset); |
||
1479 | } |
||
1480 | void parseMonitoredItemCreateResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1481 | { |
||
1482 | proto_item *ti; |
||
1483 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemCreateResult, &ti, "%s: MonitoredItemCreateResult", szFieldName); |
||
1484 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1485 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemId); |
||
1486 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSamplingInterval); |
||
1487 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedQueueSize); |
||
1488 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "FilterResult"); |
||
1489 | proto_item_set_end(ti, tvb, *pOffset); |
||
1490 | } |
||
1491 | void parseMonitoredItemModifyRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1492 | { |
||
1493 | proto_item *ti; |
||
1494 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemModifyRequest, &ti, "%s: MonitoredItemModifyRequest", szFieldName); |
||
1495 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemId); |
||
1496 | parseMonitoringParameters(subtree, tvb, pinfo, pOffset, "RequestedParameters"); |
||
1497 | proto_item_set_end(ti, tvb, *pOffset); |
||
1498 | } |
||
1499 | void parseMonitoredItemModifyResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1500 | { |
||
1501 | proto_item *ti; |
||
1502 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemModifyResult, &ti, "%s: MonitoredItemModifyResult", szFieldName); |
||
1503 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1504 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSamplingInterval); |
||
1505 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedQueueSize); |
||
1506 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "FilterResult"); |
||
1507 | proto_item_set_end(ti, tvb, *pOffset); |
||
1508 | } |
||
1509 | void parseNotificationMessage(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1510 | { |
||
1511 | proto_item *ti; |
||
1512 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NotificationMessage, &ti, "%s: NotificationMessage", szFieldName); |
||
1513 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SequenceNumber); |
||
1514 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_PublishTime); |
||
1515 | /* Array length field ignored: NoOfNotificationData */ |
||
1516 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "NotificationData", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); |
||
1517 | proto_item_set_end(ti, tvb, *pOffset); |
||
1518 | } |
||
1519 | void parseDataChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1520 | { |
||
1521 | proto_item *ti; |
||
1522 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DataChangeNotification, &ti, "%s: DataChangeNotification", szFieldName); |
||
1523 | /* Array length field ignored: NoOfMonitoredItems */ |
||
1524 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "MonitoredItems", "MonitoredItemNotification", parseMonitoredItemNotification, ett_opcua_array_MonitoredItemNotification); |
||
1525 | /* Array length field ignored: NoOfDiagnosticInfos */ |
||
1526 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1527 | proto_item_set_end(ti, tvb, *pOffset); |
||
1528 | } |
||
1529 | void parseMonitoredItemNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1530 | { |
||
1531 | proto_item *ti; |
||
1532 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_MonitoredItemNotification, &ti, "%s: MonitoredItemNotification", szFieldName); |
||
1533 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle); |
||
1534 | parseDataValue(subtree, tvb, pinfo, pOffset, "Value"); |
||
1535 | proto_item_set_end(ti, tvb, *pOffset); |
||
1536 | } |
||
1537 | void parseEventNotificationList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1538 | { |
||
1539 | proto_item *ti; |
||
1540 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventNotificationList, &ti, "%s: EventNotificationList", szFieldName); |
||
1541 | /* Array length field ignored: NoOfEvents */ |
||
1542 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Events", "EventFieldList", parseEventFieldList, ett_opcua_array_EventFieldList); |
||
1543 | proto_item_set_end(ti, tvb, *pOffset); |
||
1544 | } |
||
1545 | void parseEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1546 | { |
||
1547 | proto_item *ti; |
||
1548 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EventFieldList, &ti, "%s: EventFieldList", szFieldName); |
||
1549 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientHandle); |
||
1550 | /* Array length field ignored: NoOfEventFields */ |
||
1551 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant); |
||
1552 | proto_item_set_end(ti, tvb, *pOffset); |
||
1553 | } |
||
1554 | void parseHistoryEventFieldList(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1555 | { |
||
1556 | proto_item *ti; |
||
1557 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_HistoryEventFieldList, &ti, "%s: HistoryEventFieldList", szFieldName); |
||
1558 | /* Array length field ignored: NoOfEventFields */ |
||
1559 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "EventFields", "Variant", parseVariant, ett_opcua_array_Variant); |
||
1560 | proto_item_set_end(ti, tvb, *pOffset); |
||
1561 | } |
||
1562 | void parseStatusChangeNotification(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1563 | { |
||
1564 | proto_item *ti; |
||
1565 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_StatusChangeNotification, &ti, "%s: StatusChangeNotification", szFieldName); |
||
1566 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_Status); |
||
1567 | parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo"); |
||
1568 | proto_item_set_end(ti, tvb, *pOffset); |
||
1569 | } |
||
1570 | void parseSubscriptionAcknowledgement(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1571 | { |
||
1572 | proto_item *ti; |
||
1573 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SubscriptionAcknowledgement, &ti, "%s: SubscriptionAcknowledgement", szFieldName); |
||
1574 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); |
||
1575 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SequenceNumber); |
||
1576 | proto_item_set_end(ti, tvb, *pOffset); |
||
1577 | } |
||
1578 | void parseTransferResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1579 | { |
||
1580 | proto_item *ti; |
||
1581 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_TransferResult, &ti, "%s: TransferResult", szFieldName); |
||
1582 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1583 | /* Array length field ignored: NoOfAvailableSequenceNumbers */ |
||
1584 | parseArraySimple(subtree, tvb, pinfo, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32); |
||
1585 | proto_item_set_end(ti, tvb, *pOffset); |
||
1586 | } |
||
1587 | void parseScalarTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1588 | { |
||
1589 | proto_item *ti; |
||
1590 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ScalarTestType, &ti, "%s: ScalarTestType", szFieldName); |
||
1591 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_Boolean); |
||
1592 | parseSByte(subtree, tvb, pinfo, pOffset, hf_opcua_SByte); |
||
1593 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Byte); |
||
1594 | parseInt16(subtree, tvb, pinfo, pOffset, hf_opcua_Int16); |
||
1595 | parseUInt16(subtree, tvb, pinfo, pOffset, hf_opcua_UInt16); |
||
1596 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Int32); |
||
1597 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UInt32); |
||
1598 | parseInt64(subtree, tvb, pinfo, pOffset, hf_opcua_Int64); |
||
1599 | parseUInt64(subtree, tvb, pinfo, pOffset, hf_opcua_UInt64); |
||
1600 | parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Float); |
||
1601 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Double); |
||
1602 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_String); |
||
1603 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_DateTime); |
||
1604 | parseGuid(subtree, tvb, pinfo, pOffset, hf_opcua_Guid); |
||
1605 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ByteString); |
||
1606 | parseXmlElement(subtree, tvb, pinfo, pOffset, hf_opcua_XmlElement); |
||
1607 | parseNodeId(subtree, tvb, pinfo, pOffset, "NodeId"); |
||
1608 | parseExpandedNodeId(subtree, tvb, pinfo, pOffset, "ExpandedNodeId"); |
||
1609 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1610 | parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo"); |
||
1611 | parseQualifiedName(subtree, tvb, pinfo, pOffset, "QualifiedName"); |
||
1612 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "LocalizedText"); |
||
1613 | parseExtensionObject(subtree, tvb, pinfo, pOffset, "ExtensionObject"); |
||
1614 | parseDataValue(subtree, tvb, pinfo, pOffset, "DataValue"); |
||
1615 | parseEnumeratedTestType(subtree, tvb, pinfo, pOffset); |
||
1616 | proto_item_set_end(ti, tvb, *pOffset); |
||
1617 | } |
||
1618 | void parseArrayTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1619 | { |
||
1620 | proto_item *ti; |
||
1621 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ArrayTestType, &ti, "%s: ArrayTestType", szFieldName); |
||
1622 | /* Array length field ignored: NoOfBooleans */ |
||
1623 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Booleans", "Boolean", hf_opcua_Booleans, parseBoolean, ett_opcua_array_Boolean); |
||
1624 | /* Array length field ignored: NoOfSBytes */ |
||
1625 | parseArraySimple(subtree, tvb, pinfo, pOffset, "SBytes", "SByte", hf_opcua_SBytes, parseSByte, ett_opcua_array_SByte); |
||
1626 | /* Array length field ignored: NoOfInt16s */ |
||
1627 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Int16s", "Int16", hf_opcua_Int16s, parseInt16, ett_opcua_array_Int16); |
||
1628 | /* Array length field ignored: NoOfUInt16s */ |
||
1629 | parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt16s", "UInt16", hf_opcua_UInt16s, parseUInt16, ett_opcua_array_UInt16); |
||
1630 | /* Array length field ignored: NoOfInt32s */ |
||
1631 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Int32s", "Int32", hf_opcua_Int32s, parseInt32, ett_opcua_array_Int32); |
||
1632 | /* Array length field ignored: NoOfUInt32s */ |
||
1633 | parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt32s", "UInt32", hf_opcua_UInt32s, parseUInt32, ett_opcua_array_UInt32); |
||
1634 | /* Array length field ignored: NoOfInt64s */ |
||
1635 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Int64s", "Int64", hf_opcua_Int64s, parseInt64, ett_opcua_array_Int64); |
||
1636 | /* Array length field ignored: NoOfUInt64s */ |
||
1637 | parseArraySimple(subtree, tvb, pinfo, pOffset, "UInt64s", "UInt64", hf_opcua_UInt64s, parseUInt64, ett_opcua_array_UInt64); |
||
1638 | /* Array length field ignored: NoOfFloats */ |
||
1639 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Floats", "Float", hf_opcua_Floats, parseFloat, ett_opcua_array_Float); |
||
1640 | /* Array length field ignored: NoOfDoubles */ |
||
1641 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Doubles", "Double", hf_opcua_Doubles, parseDouble, ett_opcua_array_Double); |
||
1642 | /* Array length field ignored: NoOfStrings */ |
||
1643 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Strings", "String", hf_opcua_Strings, parseString, ett_opcua_array_String); |
||
1644 | /* Array length field ignored: NoOfDateTimes */ |
||
1645 | parseArraySimple(subtree, tvb, pinfo, pOffset, "DateTimes", "DateTime", hf_opcua_DateTimes, parseDateTime, ett_opcua_array_DateTime); |
||
1646 | /* Array length field ignored: NoOfGuids */ |
||
1647 | parseArraySimple(subtree, tvb, pinfo, pOffset, "Guids", "Guid", hf_opcua_Guids, parseGuid, ett_opcua_array_Guid); |
||
1648 | /* Array length field ignored: NoOfByteStrings */ |
||
1649 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ByteStrings", "ByteString", hf_opcua_ByteStrings, parseByteString, ett_opcua_array_ByteString); |
||
1650 | /* Array length field ignored: NoOfXmlElements */ |
||
1651 | parseArraySimple(subtree, tvb, pinfo, pOffset, "XmlElements", "XmlElement", hf_opcua_XmlElements, parseXmlElement, ett_opcua_array_XmlElement); |
||
1652 | /* Array length field ignored: NoOfNodeIds */ |
||
1653 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId); |
||
1654 | /* Array length field ignored: NoOfExpandedNodeIds */ |
||
1655 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ExpandedNodeIds", "ExpandedNodeId", parseExpandedNodeId, ett_opcua_array_ExpandedNodeId); |
||
1656 | /* Array length field ignored: NoOfStatusCodes */ |
||
1657 | parseArraySimple(subtree, tvb, pinfo, pOffset, "StatusCodes", "StatusCode", hf_opcua_StatusCodes, parseStatusCode, ett_opcua_array_StatusCode); |
||
1658 | /* Array length field ignored: NoOfDiagnosticInfos */ |
||
1659 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo); |
||
1660 | /* Array length field ignored: NoOfQualifiedNames */ |
||
1661 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "QualifiedNames", "QualifiedName", parseQualifiedName, ett_opcua_array_QualifiedName); |
||
1662 | /* Array length field ignored: NoOfLocalizedTexts */ |
||
1663 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "LocalizedTexts", "LocalizedText", parseLocalizedText, ett_opcua_array_LocalizedText); |
||
1664 | /* Array length field ignored: NoOfExtensionObjects */ |
||
1665 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "ExtensionObjects", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject); |
||
1666 | /* Array length field ignored: NoOfDataValues */ |
||
1667 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "DataValues", "DataValue", parseDataValue, ett_opcua_array_DataValue); |
||
1668 | /* Array length field ignored: NoOfVariants */ |
||
1669 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "Variants", "Variant", parseVariant, ett_opcua_array_Variant); |
||
1670 | /* Array length field ignored: NoOfEnumeratedValues */ |
||
1671 | parseArrayEnum(subtree, tvb, pinfo, pOffset, "EnumeratedValues", "EnumeratedTestType", parseEnumeratedTestType, ett_opcua_array_EnumeratedTestType); |
||
1672 | proto_item_set_end(ti, tvb, *pOffset); |
||
1673 | } |
||
1674 | void parseCompositeTestType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1675 | { |
||
1676 | proto_item *ti; |
||
1677 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_CompositeTestType, &ti, "%s: CompositeTestType", szFieldName); |
||
1678 | parseScalarTestType(subtree, tvb, pinfo, pOffset, "Field1"); |
||
1679 | parseArrayTestType(subtree, tvb, pinfo, pOffset, "Field2"); |
||
1680 | proto_item_set_end(ti, tvb, *pOffset); |
||
1681 | } |
||
1682 | void parseBuildInfo(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1683 | { |
||
1684 | proto_item *ti; |
||
1685 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_BuildInfo, &ti, "%s: BuildInfo", szFieldName); |
||
1686 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductUri); |
||
1687 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ManufacturerName); |
||
1688 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ProductName); |
||
1689 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SoftwareVersion); |
||
1690 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_BuildNumber); |
||
1691 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_BuildDate); |
||
1692 | proto_item_set_end(ti, tvb, *pOffset); |
||
1693 | } |
||
1694 | void parseRedundantServerDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1695 | { |
||
1696 | proto_item *ti; |
||
1697 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_RedundantServerDataType, &ti, "%s: RedundantServerDataType", szFieldName); |
||
1698 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerId); |
||
1699 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_ServiceLevel); |
||
1700 | parseServerState(subtree, tvb, pinfo, pOffset); |
||
1701 | proto_item_set_end(ti, tvb, *pOffset); |
||
1702 | } |
||
1703 | void parseEndpointUrlListDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1704 | { |
||
1705 | proto_item *ti; |
||
1706 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EndpointUrlListDataType, &ti, "%s: EndpointUrlListDataType", szFieldName); |
||
1707 | /* Array length field ignored: NoOfEndpointUrlList */ |
||
1708 | parseArraySimple(subtree, tvb, pinfo, pOffset, "EndpointUrlList", "String", hf_opcua_EndpointUrlList, parseString, ett_opcua_array_String); |
||
1709 | proto_item_set_end(ti, tvb, *pOffset); |
||
1710 | } |
||
1711 | void parseNetworkGroupDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1712 | { |
||
1713 | proto_item *ti; |
||
1714 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_NetworkGroupDataType, &ti, "%s: NetworkGroupDataType", szFieldName); |
||
1715 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); |
||
1716 | /* Array length field ignored: NoOfNetworkPaths */ |
||
1717 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "NetworkPaths", "EndpointUrlListDataType", parseEndpointUrlListDataType, ett_opcua_array_EndpointUrlListDataType); |
||
1718 | proto_item_set_end(ti, tvb, *pOffset); |
||
1719 | } |
||
1720 | void parseSamplingIntervalDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1721 | { |
||
1722 | proto_item *ti; |
||
1723 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SamplingIntervalDiagnosticsDataType, &ti, "%s: SamplingIntervalDiagnosticsDataType", szFieldName); |
||
1724 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_SamplingInterval); |
||
1725 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemCount); |
||
1726 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxMonitoredItemCount); |
||
1727 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisabledMonitoredItemCount); |
||
1728 | proto_item_set_end(ti, tvb, *pOffset); |
||
1729 | } |
||
1730 | void parseServerDiagnosticsSummaryDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1731 | { |
||
1732 | proto_item *ti; |
||
1733 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerDiagnosticsSummaryDataType, &ti, "%s: ServerDiagnosticsSummaryDataType", szFieldName); |
||
1734 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ServerViewCount); |
||
1735 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSessionCount); |
||
1736 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CumulatedSessionCount); |
||
1737 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityRejectedSessionCount); |
||
1738 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RejectedSessionCount); |
||
1739 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SessionTimeoutCount); |
||
1740 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SessionAbortCount); |
||
1741 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSubscriptionCount); |
||
1742 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CumulatedSubscriptionCount); |
||
1743 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingIntervalCount); |
||
1744 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityRejectedRequestsCount); |
||
1745 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RejectedRequestsCount); |
||
1746 | proto_item_set_end(ti, tvb, *pOffset); |
||
1747 | } |
||
1748 | void parseServerStatusDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1749 | { |
||
1750 | proto_item *ti; |
||
1751 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServerStatusDataType, &ti, "%s: ServerStatusDataType", szFieldName); |
||
1752 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_StartTime); |
||
1753 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentTime); |
||
1754 | parseServerState(subtree, tvb, pinfo, pOffset); |
||
1755 | parseBuildInfo(subtree, tvb, pinfo, pOffset, "BuildInfo"); |
||
1756 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SecondsTillShutdown); |
||
1757 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "ShutdownReason"); |
||
1758 | proto_item_set_end(ti, tvb, *pOffset); |
||
1759 | } |
||
1760 | void parseSessionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1761 | { |
||
1762 | proto_item *ti; |
||
1763 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SessionDiagnosticsDataType, &ti, "%s: SessionDiagnosticsDataType", szFieldName); |
||
1764 | parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); |
||
1765 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SessionName); |
||
1766 | parseApplicationDescription(subtree, tvb, pinfo, pOffset, "ClientDescription"); |
||
1767 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri); |
||
1768 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl); |
||
1769 | /* Array length field ignored: NoOfLocaleIds */ |
||
1770 | parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String); |
||
1771 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_ActualSessionTimeout); |
||
1772 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxResponseMessageSize); |
||
1773 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ClientConnectionTime); |
||
1774 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_ClientLastContactTime); |
||
1775 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentSubscriptionsCount); |
||
1776 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentMonitoredItemsCount); |
||
1777 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentPublishRequestsInQueue); |
||
1778 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TotalRequestCount"); |
||
1779 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnauthorizedRequestCount); |
||
1780 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ReadCount"); |
||
1781 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "HistoryReadCount"); |
||
1782 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "WriteCount"); |
||
1783 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "HistoryUpdateCount"); |
||
1784 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CallCount"); |
||
1785 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CreateMonitoredItemsCount"); |
||
1786 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ModifyMonitoredItemsCount"); |
||
1787 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetMonitoringModeCount"); |
||
1788 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetTriggeringCount"); |
||
1789 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteMonitoredItemsCount"); |
||
1790 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "CreateSubscriptionCount"); |
||
1791 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "ModifySubscriptionCount"); |
||
1792 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "SetPublishingModeCount"); |
||
1793 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "PublishCount"); |
||
1794 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "RepublishCount"); |
||
1795 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TransferSubscriptionsCount"); |
||
1796 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteSubscriptionsCount"); |
||
1797 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "AddNodesCount"); |
||
1798 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "AddReferencesCount"); |
||
1799 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteNodesCount"); |
||
1800 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "DeleteReferencesCount"); |
||
1801 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "BrowseCount"); |
||
1802 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "BrowseNextCount"); |
||
1803 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "TranslateBrowsePathsToNodeIdsCount"); |
||
1804 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "QueryFirstCount"); |
||
1805 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "QueryNextCount"); |
||
1806 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "RegisterNodesCount"); |
||
1807 | parseServiceCounterDataType(subtree, tvb, pinfo, pOffset, "UnregisterNodesCount"); |
||
1808 | proto_item_set_end(ti, tvb, *pOffset); |
||
1809 | } |
||
1810 | void parseSessionSecurityDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1811 | { |
||
1812 | proto_item *ti; |
||
1813 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SessionSecurityDiagnosticsDataType, &ti, "%s: SessionSecurityDiagnosticsDataType", szFieldName); |
||
1814 | parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); |
||
1815 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientUserIdOfSession); |
||
1816 | /* Array length field ignored: NoOfClientUserIdHistory */ |
||
1817 | parseArraySimple(subtree, tvb, pinfo, pOffset, "ClientUserIdHistory", "String", hf_opcua_ClientUserIdHistory, parseString, ett_opcua_array_String); |
||
1818 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_AuthenticationMechanism); |
||
1819 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Encoding); |
||
1820 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_TransportProtocol); |
||
1821 | parseMessageSecurityMode(subtree, tvb, pinfo, pOffset); |
||
1822 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SecurityPolicyUri); |
||
1823 | parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientCertificate); |
||
1824 | proto_item_set_end(ti, tvb, *pOffset); |
||
1825 | } |
||
1826 | void parseServiceCounterDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1827 | { |
||
1828 | proto_item *ti; |
||
1829 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ServiceCounterDataType, &ti, "%s: ServiceCounterDataType", szFieldName); |
||
1830 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TotalCount); |
||
1831 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ErrorCount); |
||
1832 | proto_item_set_end(ti, tvb, *pOffset); |
||
1833 | } |
||
1834 | void parseStatusResult(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1835 | { |
||
1836 | proto_item *ti; |
||
1837 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_StatusResult, &ti, "%s: StatusResult", szFieldName); |
||
1838 | parseStatusCode(subtree, tvb, pinfo, pOffset, hf_opcua_StatusCode); |
||
1839 | parseDiagnosticInfo(subtree, tvb, pinfo, pOffset, "DiagnosticInfo"); |
||
1840 | proto_item_set_end(ti, tvb, *pOffset); |
||
1841 | } |
||
1842 | void parseSubscriptionDiagnosticsDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1843 | { |
||
1844 | proto_item *ti; |
||
1845 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SubscriptionDiagnosticsDataType, &ti, "%s: SubscriptionDiagnosticsDataType", szFieldName); |
||
1846 | parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId"); |
||
1847 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId); |
||
1848 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority); |
||
1849 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingInterval); |
||
1850 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxKeepAliveCount); |
||
1851 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxLifetimeCount); |
||
1852 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish); |
||
1853 | parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled); |
||
1854 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ModifyCount); |
||
1855 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EnableCount); |
||
1856 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisableCount); |
||
1857 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishRequestCount); |
||
1858 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishMessageRequestCount); |
||
1859 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RepublishMessageCount); |
||
1860 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferRequestCount); |
||
1861 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferredToAltClientCount); |
||
1862 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TransferredToSameClientCount); |
||
1863 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_PublishRequestCount); |
||
1864 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DataChangeNotificationsCount); |
||
1865 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EventNotificationsCount); |
||
1866 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NotificationsCount); |
||
1867 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_LatePublishRequestCount); |
||
1868 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentKeepAliveCount); |
||
1869 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CurrentLifetimeCount); |
||
1870 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnacknowledgedMessageCount); |
||
1871 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DiscardedMessageCount); |
||
1872 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoredItemCount); |
||
1873 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_DisabledMonitoredItemCount); |
||
1874 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MonitoringQueueOverflowCount); |
||
1875 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_NextSequenceNumber); |
||
1876 | parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_EventQueueOverFlowCount); |
||
1877 | proto_item_set_end(ti, tvb, *pOffset); |
||
1878 | } |
||
1879 | void parseModelChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1880 | { |
||
1881 | proto_item *ti; |
||
1882 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ModelChangeStructureDataType, &ti, "%s: ModelChangeStructureDataType", szFieldName); |
||
1883 | parseNodeId(subtree, tvb, pinfo, pOffset, "Affected"); |
||
1884 | parseNodeId(subtree, tvb, pinfo, pOffset, "AffectedType"); |
||
1885 | parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Verb); |
||
1886 | proto_item_set_end(ti, tvb, *pOffset); |
||
1887 | } |
||
1888 | void parseSemanticChangeStructureDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1889 | { |
||
1890 | proto_item *ti; |
||
1891 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_SemanticChangeStructureDataType, &ti, "%s: SemanticChangeStructureDataType", szFieldName); |
||
1892 | parseNodeId(subtree, tvb, pinfo, pOffset, "Affected"); |
||
1893 | parseNodeId(subtree, tvb, pinfo, pOffset, "AffectedType"); |
||
1894 | proto_item_set_end(ti, tvb, *pOffset); |
||
1895 | } |
||
1896 | void parseRange(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1897 | { |
||
1898 | proto_item *ti; |
||
1899 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Range, &ti, "%s: Range", szFieldName); |
||
1900 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Low); |
||
1901 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_High); |
||
1902 | proto_item_set_end(ti, tvb, *pOffset); |
||
1903 | } |
||
1904 | void parseEUInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1905 | { |
||
1906 | proto_item *ti; |
||
1907 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_EUInformation, &ti, "%s: EUInformation", szFieldName); |
||
1908 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_NamespaceUri); |
||
1909 | parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_UnitId); |
||
1910 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "DisplayName"); |
||
1911 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Description"); |
||
1912 | proto_item_set_end(ti, tvb, *pOffset); |
||
1913 | } |
||
1914 | void parseComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1915 | { |
||
1916 | proto_item *ti; |
||
1917 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ComplexNumberType, &ti, "%s: ComplexNumberType", szFieldName); |
||
1918 | parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Real); |
||
1919 | parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Imaginary); |
||
1920 | proto_item_set_end(ti, tvb, *pOffset); |
||
1921 | } |
||
1922 | void parseDoubleComplexNumberType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1923 | { |
||
1924 | proto_item *ti; |
||
1925 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_DoubleComplexNumberType, &ti, "%s: DoubleComplexNumberType", szFieldName); |
||
1926 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Real); |
||
1927 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_Imaginary); |
||
1928 | proto_item_set_end(ti, tvb, *pOffset); |
||
1929 | } |
||
1930 | void parseAxisInformation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1931 | { |
||
1932 | proto_item *ti; |
||
1933 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_AxisInformation, &ti, "%s: AxisInformation", szFieldName); |
||
1934 | parseEUInformation(subtree, tvb, pinfo, pOffset, "EngineeringUnits"); |
||
1935 | parseRange(subtree, tvb, pinfo, pOffset, "EURange"); |
||
1936 | parseLocalizedText(subtree, tvb, pinfo, pOffset, "Title"); |
||
1937 | parseAxisScaleEnumeration(subtree, tvb, pinfo, pOffset); |
||
1938 | /* Array length field ignored: NoOfAxisSteps */ |
||
1939 | parseArraySimple(subtree, tvb, pinfo, pOffset, "AxisSteps", "Double", hf_opcua_AxisSteps, parseDouble, ett_opcua_array_Double); |
||
1940 | proto_item_set_end(ti, tvb, *pOffset); |
||
1941 | } |
||
1942 | void parseXVType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1943 | { |
||
1944 | proto_item *ti; |
||
1945 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_XVType, &ti, "%s: XVType", szFieldName); |
||
1946 | parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_X); |
||
1947 | parseFloat(subtree, tvb, pinfo, pOffset, hf_opcua_Value); |
||
1948 | proto_item_set_end(ti, tvb, *pOffset); |
||
1949 | } |
||
1950 | void parseProgramDiagnosticDataType(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1951 | { |
||
1952 | proto_item *ti; |
||
1953 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_ProgramDiagnosticDataType, &ti, "%s: ProgramDiagnosticDataType", szFieldName); |
||
1954 | parseNodeId(subtree, tvb, pinfo, pOffset, "CreateSessionId"); |
||
1955 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_CreateClientName); |
||
1956 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_InvocationCreationTime); |
||
1957 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastTransitionTime); |
||
1958 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_LastMethodCall); |
||
1959 | parseNodeId(subtree, tvb, pinfo, pOffset, "LastMethodSessionId"); |
||
1960 | /* Array length field ignored: NoOfLastMethodInputArguments */ |
||
1961 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "LastMethodInputArguments", "Argument", parseArgument, ett_opcua_array_Argument); |
||
1962 | /* Array length field ignored: NoOfLastMethodOutputArguments */ |
||
1963 | parseArrayComplex(subtree, tvb, pinfo, pOffset, "LastMethodOutputArguments", "Argument", parseArgument, ett_opcua_array_Argument); |
||
1964 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastMethodCallTime); |
||
1965 | parseStatusResult(subtree, tvb, pinfo, pOffset, "LastMethodReturnStatus"); |
||
1966 | proto_item_set_end(ti, tvb, *pOffset); |
||
1967 | } |
||
1968 | void parseAnnotation(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint *pOffset, const char *szFieldName) |
||
1969 | { |
||
1970 | proto_item *ti; |
||
1971 | proto_tree *subtree = proto_tree_add_subtree_format(tree, tvb, *pOffset, -1, ett_opcua_Annotation, &ti, "%s: Annotation", szFieldName); |
||
1972 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_Message); |
||
1973 | parseString(subtree, tvb, pinfo, pOffset, hf_opcua_UserName); |
||
1974 | parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_AnnotationTime); |
||
1975 | proto_item_set_end(ti, tvb, *pOffset); |
||
1976 | } |
||
1977 | |||
1978 | /** Setup protocol subtree array */ |
||
1979 | static gint *ett[] = |
||
1980 | { |
||
1981 | &ett_opcua_TrustListDataType, |
||
1982 | &ett_opcua_array_TrustListDataType, |
||
1983 | &ett_opcua_Node, |
||
1984 | &ett_opcua_array_Node, |
||
1985 | &ett_opcua_InstanceNode, |
||
1986 | &ett_opcua_array_InstanceNode, |
||
1987 | &ett_opcua_TypeNode, |
||
1988 | &ett_opcua_array_TypeNode, |
||
1989 | &ett_opcua_ObjectNode, |
||
1990 | &ett_opcua_array_ObjectNode, |
||
1991 | &ett_opcua_ObjectTypeNode, |
||
1992 | &ett_opcua_array_ObjectTypeNode, |
||
1993 | &ett_opcua_VariableNode, |
||
1994 | &ett_opcua_array_VariableNode, |
||
1995 | &ett_opcua_VariableTypeNode, |
||
1996 | &ett_opcua_array_VariableTypeNode, |
||
1997 | &ett_opcua_ReferenceTypeNode, |
||
1998 | &ett_opcua_array_ReferenceTypeNode, |
||
1999 | &ett_opcua_MethodNode, |
||
2000 | &ett_opcua_array_MethodNode, |
||
2001 | &ett_opcua_ViewNode, |
||
2002 | &ett_opcua_array_ViewNode, |
||
2003 | &ett_opcua_DataTypeNode, |
||
2004 | &ett_opcua_array_DataTypeNode, |
||
2005 | &ett_opcua_ReferenceNode, |
||
2006 | &ett_opcua_array_ReferenceNode, |
||
2007 | &ett_opcua_Argument, |
||
2008 | &ett_opcua_array_Argument, |
||
2009 | &ett_opcua_EnumValueType, |
||
2010 | &ett_opcua_array_EnumValueType, |
||
2011 | &ett_opcua_OptionSet, |
||
2012 | &ett_opcua_array_OptionSet, |
||
2013 | &ett_opcua_TimeZoneDataType, |
||
2014 | &ett_opcua_array_TimeZoneDataType, |
||
2015 | &ett_opcua_ApplicationDescription, |
||
2016 | &ett_opcua_array_ApplicationDescription, |
||
2017 | &ett_opcua_RequestHeader, |
||
2018 | &ett_opcua_array_RequestHeader, |
||
2019 | &ett_opcua_ResponseHeader, |
||
2020 | &ett_opcua_array_ResponseHeader, |
||
2021 | &ett_opcua_ServerOnNetwork, |
||
2022 | &ett_opcua_array_ServerOnNetwork, |
||
2023 | &ett_opcua_UserTokenPolicy, |
||
2024 | &ett_opcua_array_UserTokenPolicy, |
||
2025 | &ett_opcua_EndpointDescription, |
||
2026 | &ett_opcua_array_EndpointDescription, |
||
2027 | &ett_opcua_RegisteredServer, |
||
2028 | &ett_opcua_array_RegisteredServer, |
||
2029 | &ett_opcua_MdnsDiscoveryConfiguration, |
||
2030 | &ett_opcua_array_MdnsDiscoveryConfiguration, |
||
2031 | &ett_opcua_ChannelSecurityToken, |
||
2032 | &ett_opcua_array_ChannelSecurityToken, |
||
2033 | &ett_opcua_SignedSoftwareCertificate, |
||
2034 | &ett_opcua_array_SignedSoftwareCertificate, |
||
2035 | &ett_opcua_SignatureData, |
||
2036 | &ett_opcua_array_SignatureData, |
||
2037 | &ett_opcua_UserIdentityToken, |
||
2038 | &ett_opcua_array_UserIdentityToken, |
||
2039 | &ett_opcua_AnonymousIdentityToken, |
||
2040 | &ett_opcua_array_AnonymousIdentityToken, |
||
2041 | &ett_opcua_UserNameIdentityToken, |
||
2042 | &ett_opcua_array_UserNameIdentityToken, |
||
2043 | &ett_opcua_X509IdentityToken, |
||
2044 | &ett_opcua_array_X509IdentityToken, |
||
2045 | &ett_opcua_KerberosIdentityToken, |
||
2046 | &ett_opcua_array_KerberosIdentityToken, |
||
2047 | &ett_opcua_IssuedIdentityToken, |
||
2048 | &ett_opcua_array_IssuedIdentityToken, |
||
2049 | &ett_opcua_NodeAttributes, |
||
2050 | &ett_opcua_array_NodeAttributes, |
||
2051 | &ett_opcua_ObjectAttributes, |
||
2052 | &ett_opcua_array_ObjectAttributes, |
||
2053 | &ett_opcua_VariableAttributes, |
||
2054 | &ett_opcua_array_VariableAttributes, |
||
2055 | &ett_opcua_MethodAttributes, |
||
2056 | &ett_opcua_array_MethodAttributes, |
||
2057 | &ett_opcua_ObjectTypeAttributes, |
||
2058 | &ett_opcua_array_ObjectTypeAttributes, |
||
2059 | &ett_opcua_VariableTypeAttributes, |
||
2060 | &ett_opcua_array_VariableTypeAttributes, |
||
2061 | &ett_opcua_ReferenceTypeAttributes, |
||
2062 | &ett_opcua_array_ReferenceTypeAttributes, |
||
2063 | &ett_opcua_DataTypeAttributes, |
||
2064 | &ett_opcua_array_DataTypeAttributes, |
||
2065 | &ett_opcua_ViewAttributes, |
||
2066 | &ett_opcua_array_ViewAttributes, |
||
2067 | &ett_opcua_AddNodesItem, |
||
2068 | &ett_opcua_array_AddNodesItem, |
||
2069 | &ett_opcua_AddNodesResult, |
||
2070 | &ett_opcua_array_AddNodesResult, |
||
2071 | &ett_opcua_AddReferencesItem, |
||
2072 | &ett_opcua_array_AddReferencesItem, |
||
2073 | &ett_opcua_DeleteNodesItem, |
||
2074 | &ett_opcua_array_DeleteNodesItem, |
||
2075 | &ett_opcua_DeleteReferencesItem, |
||
2076 | &ett_opcua_array_DeleteReferencesItem, |
||
2077 | &ett_opcua_ViewDescription, |
||
2078 | &ett_opcua_array_ViewDescription, |
||
2079 | &ett_opcua_BrowseDescription, |
||
2080 | &ett_opcua_array_BrowseDescription, |
||
2081 | &ett_opcua_ReferenceDescription, |
||
2082 | &ett_opcua_array_ReferenceDescription, |
||
2083 | &ett_opcua_BrowseResult, |
||
2084 | &ett_opcua_array_BrowseResult, |
||
2085 | &ett_opcua_RelativePathElement, |
||
2086 | &ett_opcua_array_RelativePathElement, |
||
2087 | &ett_opcua_RelativePath, |
||
2088 | &ett_opcua_array_RelativePath, |
||
2089 | &ett_opcua_BrowsePath, |
||
2090 | &ett_opcua_array_BrowsePath, |
||
2091 | &ett_opcua_BrowsePathTarget, |
||
2092 | &ett_opcua_array_BrowsePathTarget, |
||
2093 | &ett_opcua_BrowsePathResult, |
||
2094 | &ett_opcua_array_BrowsePathResult, |
||
2095 | &ett_opcua_EndpointConfiguration, |
||
2096 | &ett_opcua_array_EndpointConfiguration, |
||
2097 | &ett_opcua_SupportedProfile, |
||
2098 | &ett_opcua_array_SupportedProfile, |
||
2099 | &ett_opcua_SoftwareCertificate, |
||
2100 | &ett_opcua_array_SoftwareCertificate, |
||
2101 | &ett_opcua_QueryDataDescription, |
||
2102 | &ett_opcua_array_QueryDataDescription, |
||
2103 | &ett_opcua_NodeTypeDescription, |
||
2104 | &ett_opcua_array_NodeTypeDescription, |
||
2105 | &ett_opcua_QueryDataSet, |
||
2106 | &ett_opcua_array_QueryDataSet, |
||
2107 | &ett_opcua_NodeReference, |
||
2108 | &ett_opcua_array_NodeReference, |
||
2109 | &ett_opcua_ContentFilterElement, |
||
2110 | &ett_opcua_array_ContentFilterElement, |
||
2111 | &ett_opcua_ContentFilter, |
||
2112 | &ett_opcua_array_ContentFilter, |
||
2113 | &ett_opcua_ElementOperand, |
||
2114 | &ett_opcua_array_ElementOperand, |
||
2115 | &ett_opcua_LiteralOperand, |
||
2116 | &ett_opcua_array_LiteralOperand, |
||
2117 | &ett_opcua_AttributeOperand, |
||
2118 | &ett_opcua_array_AttributeOperand, |
||
2119 | &ett_opcua_SimpleAttributeOperand, |
||
2120 | &ett_opcua_array_SimpleAttributeOperand, |
||
2121 | &ett_opcua_ContentFilterElementResult, |
||
2122 | &ett_opcua_array_ContentFilterElementResult, |
||
2123 | &ett_opcua_ContentFilterResult, |
||
2124 | &ett_opcua_array_ContentFilterResult, |
||
2125 | &ett_opcua_ParsingResult, |
||
2126 | &ett_opcua_array_ParsingResult, |
||
2127 | &ett_opcua_ReadValueId, |
||
2128 | &ett_opcua_array_ReadValueId, |
||
2129 | &ett_opcua_HistoryReadValueId, |
||
2130 | &ett_opcua_array_HistoryReadValueId, |
||
2131 | &ett_opcua_HistoryReadResult, |
||
2132 | &ett_opcua_array_HistoryReadResult, |
||
2133 | &ett_opcua_ReadEventDetails, |
||
2134 | &ett_opcua_array_ReadEventDetails, |
||
2135 | &ett_opcua_ReadRawModifiedDetails, |
||
2136 | &ett_opcua_array_ReadRawModifiedDetails, |
||
2137 | &ett_opcua_ReadProcessedDetails, |
||
2138 | &ett_opcua_array_ReadProcessedDetails, |
||
2139 | &ett_opcua_ReadAtTimeDetails, |
||
2140 | &ett_opcua_array_ReadAtTimeDetails, |
||
2141 | &ett_opcua_HistoryData, |
||
2142 | &ett_opcua_array_HistoryData, |
||
2143 | &ett_opcua_ModificationInfo, |
||
2144 | &ett_opcua_array_ModificationInfo, |
||
2145 | &ett_opcua_HistoryModifiedData, |
||
2146 | &ett_opcua_array_HistoryModifiedData, |
||
2147 | &ett_opcua_HistoryEvent, |
||
2148 | &ett_opcua_array_HistoryEvent, |
||
2149 | &ett_opcua_WriteValue, |
||
2150 | &ett_opcua_array_WriteValue, |
||
2151 | &ett_opcua_HistoryUpdateDetails, |
||
2152 | &ett_opcua_array_HistoryUpdateDetails, |
||
2153 | &ett_opcua_UpdateDataDetails, |
||
2154 | &ett_opcua_array_UpdateDataDetails, |
||
2155 | &ett_opcua_UpdateStructureDataDetails, |
||
2156 | &ett_opcua_array_UpdateStructureDataDetails, |
||
2157 | &ett_opcua_UpdateEventDetails, |
||
2158 | &ett_opcua_array_UpdateEventDetails, |
||
2159 | &ett_opcua_DeleteRawModifiedDetails, |
||
2160 | &ett_opcua_array_DeleteRawModifiedDetails, |
||
2161 | &ett_opcua_DeleteAtTimeDetails, |
||
2162 | &ett_opcua_array_DeleteAtTimeDetails, |
||
2163 | &ett_opcua_DeleteEventDetails, |
||
2164 | &ett_opcua_array_DeleteEventDetails, |
||
2165 | &ett_opcua_HistoryUpdateResult, |
||
2166 | &ett_opcua_array_HistoryUpdateResult, |
||
2167 | &ett_opcua_CallMethodRequest, |
||
2168 | &ett_opcua_array_CallMethodRequest, |
||
2169 | &ett_opcua_CallMethodResult, |
||
2170 | &ett_opcua_array_CallMethodResult, |
||
2171 | &ett_opcua_DataChangeFilter, |
||
2172 | &ett_opcua_array_DataChangeFilter, |
||
2173 | &ett_opcua_EventFilter, |
||
2174 | &ett_opcua_array_EventFilter, |
||
2175 | &ett_opcua_AggregateConfiguration, |
||
2176 | &ett_opcua_array_AggregateConfiguration, |
||
2177 | &ett_opcua_AggregateFilter, |
||
2178 | &ett_opcua_array_AggregateFilter, |
||
2179 | &ett_opcua_EventFilterResult, |
||
2180 | &ett_opcua_array_EventFilterResult, |
||
2181 | &ett_opcua_AggregateFilterResult, |
||
2182 | &ett_opcua_array_AggregateFilterResult, |
||
2183 | &ett_opcua_MonitoringParameters, |
||
2184 | &ett_opcua_array_MonitoringParameters, |
||
2185 | &ett_opcua_MonitoredItemCreateRequest, |
||
2186 | &ett_opcua_array_MonitoredItemCreateRequest, |
||
2187 | &ett_opcua_MonitoredItemCreateResult, |
||
2188 | &ett_opcua_array_MonitoredItemCreateResult, |
||
2189 | &ett_opcua_MonitoredItemModifyRequest, |
||
2190 | &ett_opcua_array_MonitoredItemModifyRequest, |
||
2191 | &ett_opcua_MonitoredItemModifyResult, |
||
2192 | &ett_opcua_array_MonitoredItemModifyResult, |
||
2193 | &ett_opcua_NotificationMessage, |
||
2194 | &ett_opcua_array_NotificationMessage, |
||
2195 | &ett_opcua_DataChangeNotification, |
||
2196 | &ett_opcua_array_DataChangeNotification, |
||
2197 | &ett_opcua_MonitoredItemNotification, |
||
2198 | &ett_opcua_array_MonitoredItemNotification, |
||
2199 | &ett_opcua_EventNotificationList, |
||
2200 | &ett_opcua_array_EventNotificationList, |
||
2201 | &ett_opcua_EventFieldList, |
||
2202 | &ett_opcua_array_EventFieldList, |
||
2203 | &ett_opcua_HistoryEventFieldList, |
||
2204 | &ett_opcua_array_HistoryEventFieldList, |
||
2205 | &ett_opcua_StatusChangeNotification, |
||
2206 | &ett_opcua_array_StatusChangeNotification, |
||
2207 | &ett_opcua_SubscriptionAcknowledgement, |
||
2208 | &ett_opcua_array_SubscriptionAcknowledgement, |
||
2209 | &ett_opcua_TransferResult, |
||
2210 | &ett_opcua_array_TransferResult, |
||
2211 | &ett_opcua_ScalarTestType, |
||
2212 | &ett_opcua_array_ScalarTestType, |
||
2213 | &ett_opcua_ArrayTestType, |
||
2214 | &ett_opcua_array_ArrayTestType, |
||
2215 | &ett_opcua_CompositeTestType, |
||
2216 | &ett_opcua_array_CompositeTestType, |
||
2217 | &ett_opcua_BuildInfo, |
||
2218 | &ett_opcua_array_BuildInfo, |
||
2219 | &ett_opcua_RedundantServerDataType, |
||
2220 | &ett_opcua_array_RedundantServerDataType, |
||
2221 | &ett_opcua_EndpointUrlListDataType, |
||
2222 | &ett_opcua_array_EndpointUrlListDataType, |
||
2223 | &ett_opcua_NetworkGroupDataType, |
||
2224 | &ett_opcua_array_NetworkGroupDataType, |
||
2225 | &ett_opcua_SamplingIntervalDiagnosticsDataType, |
||
2226 | &ett_opcua_array_SamplingIntervalDiagnosticsDataType, |
||
2227 | &ett_opcua_ServerDiagnosticsSummaryDataType, |
||
2228 | &ett_opcua_array_ServerDiagnosticsSummaryDataType, |
||
2229 | &ett_opcua_ServerStatusDataType, |
||
2230 | &ett_opcua_array_ServerStatusDataType, |
||
2231 | &ett_opcua_SessionDiagnosticsDataType, |
||
2232 | &ett_opcua_array_SessionDiagnosticsDataType, |
||
2233 | &ett_opcua_SessionSecurityDiagnosticsDataType, |
||
2234 | &ett_opcua_array_SessionSecurityDiagnosticsDataType, |
||
2235 | &ett_opcua_ServiceCounterDataType, |
||
2236 | &ett_opcua_array_ServiceCounterDataType, |
||
2237 | &ett_opcua_StatusResult, |
||
2238 | &ett_opcua_array_StatusResult, |
||
2239 | &ett_opcua_SubscriptionDiagnosticsDataType, |
||
2240 | &ett_opcua_array_SubscriptionDiagnosticsDataType, |
||
2241 | &ett_opcua_ModelChangeStructureDataType, |
||
2242 | &ett_opcua_array_ModelChangeStructureDataType, |
||
2243 | &ett_opcua_SemanticChangeStructureDataType, |
||
2244 | &ett_opcua_array_SemanticChangeStructureDataType, |
||
2245 | &ett_opcua_Range, |
||
2246 | &ett_opcua_array_Range, |
||
2247 | &ett_opcua_EUInformation, |
||
2248 | &ett_opcua_array_EUInformation, |
||
2249 | &ett_opcua_ComplexNumberType, |
||
2250 | &ett_opcua_array_ComplexNumberType, |
||
2251 | &ett_opcua_DoubleComplexNumberType, |
||
2252 | &ett_opcua_array_DoubleComplexNumberType, |
||
2253 | &ett_opcua_AxisInformation, |
||
2254 | &ett_opcua_array_AxisInformation, |
||
2255 | &ett_opcua_XVType, |
||
2256 | &ett_opcua_array_XVType, |
||
2257 | &ett_opcua_ProgramDiagnosticDataType, |
||
2258 | &ett_opcua_array_ProgramDiagnosticDataType, |
||
2259 | &ett_opcua_Annotation, |
||
2260 | &ett_opcua_array_Annotation, |
||
2261 | }; |
||
2262 | |||
2263 | void registerComplexTypes(void) |
||
2264 | { |
||
2265 | proto_register_subtree_array(ett, array_length(ett)); |
||
2266 | } |
||
2267 |