regen pidl all: rm epan/dissectors/pidl/*-stamp; pushd epan/dissectors/pidl/ && make...
[wireshark-sm.git] / plugins / epan / opcua / opcua_serviceparser.c
blob408cb3edb0432f2075c6f3b3c79cdcbe083860a1
1 /******************************************************************************
2 ** Copyright (C) 2006-2015 ascolab GmbH. All Rights Reserved.
3 ** Web: http://www.ascolab.com
4 **
5 ** SPDX-License-Identifier: GPL-2.0-or-later
6 **
7 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
8 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
9 **
10 ** Project: OpcUa Wireshark Plugin
12 ** Description: OpcUa Complex Type Parser
14 ** This file was autogenerated on 13.10.2015.
15 ** DON'T MODIFY THIS FILE!
17 ******************************************************************************/
19 #include "config.h"
21 #include <epan/packet.h>
22 #include "opcua_complextypeparser.h"
23 #include "opcua_enumparser.h"
24 #include "opcua_simpletypes.h"
25 #include "opcua_hfindeces.h"
26 #include "opcua_serviceparser.h"
28 int ett_opcua_ServiceFault;
29 int ett_opcua_array_ServiceFault;
30 int ett_opcua_FindServersRequest;
31 int ett_opcua_array_FindServersRequest;
32 int ett_opcua_FindServersResponse;
33 int ett_opcua_array_FindServersResponse;
34 int ett_opcua_FindServersOnNetworkRequest;
35 int ett_opcua_array_FindServersOnNetworkRequest;
36 int ett_opcua_FindServersOnNetworkResponse;
37 int ett_opcua_array_FindServersOnNetworkResponse;
38 int ett_opcua_GetEndpointsRequest;
39 int ett_opcua_array_GetEndpointsRequest;
40 int ett_opcua_GetEndpointsResponse;
41 int ett_opcua_array_GetEndpointsResponse;
42 int ett_opcua_RegisterServerRequest;
43 int ett_opcua_array_RegisterServerRequest;
44 int ett_opcua_RegisterServerResponse;
45 int ett_opcua_array_RegisterServerResponse;
46 int ett_opcua_RegisterServer2Request;
47 int ett_opcua_array_RegisterServer2Request;
48 int ett_opcua_RegisterServer2Response;
49 int ett_opcua_array_RegisterServer2Response;
50 int ett_opcua_OpenSecureChannelRequest;
51 int ett_opcua_array_OpenSecureChannelRequest;
52 int ett_opcua_OpenSecureChannelResponse;
53 int ett_opcua_array_OpenSecureChannelResponse;
54 int ett_opcua_CloseSecureChannelRequest;
55 int ett_opcua_array_CloseSecureChannelRequest;
56 int ett_opcua_CloseSecureChannelResponse;
57 int ett_opcua_array_CloseSecureChannelResponse;
58 int ett_opcua_CreateSessionRequest;
59 int ett_opcua_array_CreateSessionRequest;
60 int ett_opcua_CreateSessionResponse;
61 int ett_opcua_array_CreateSessionResponse;
62 int ett_opcua_ActivateSessionRequest;
63 int ett_opcua_array_ActivateSessionRequest;
64 int ett_opcua_ActivateSessionResponse;
65 int ett_opcua_array_ActivateSessionResponse;
66 int ett_opcua_CloseSessionRequest;
67 int ett_opcua_array_CloseSessionRequest;
68 int ett_opcua_CloseSessionResponse;
69 int ett_opcua_array_CloseSessionResponse;
70 int ett_opcua_CancelRequest;
71 int ett_opcua_array_CancelRequest;
72 int ett_opcua_CancelResponse;
73 int ett_opcua_array_CancelResponse;
74 int ett_opcua_AddNodesRequest;
75 int ett_opcua_array_AddNodesRequest;
76 int ett_opcua_AddNodesResponse;
77 int ett_opcua_array_AddNodesResponse;
78 int ett_opcua_AddReferencesRequest;
79 int ett_opcua_array_AddReferencesRequest;
80 int ett_opcua_AddReferencesResponse;
81 int ett_opcua_array_AddReferencesResponse;
82 int ett_opcua_DeleteNodesRequest;
83 int ett_opcua_array_DeleteNodesRequest;
84 int ett_opcua_DeleteNodesResponse;
85 int ett_opcua_array_DeleteNodesResponse;
86 int ett_opcua_DeleteReferencesRequest;
87 int ett_opcua_array_DeleteReferencesRequest;
88 int ett_opcua_DeleteReferencesResponse;
89 int ett_opcua_array_DeleteReferencesResponse;
90 int ett_opcua_BrowseRequest;
91 int ett_opcua_array_BrowseRequest;
92 int ett_opcua_BrowseResponse;
93 int ett_opcua_array_BrowseResponse;
94 int ett_opcua_BrowseNextRequest;
95 int ett_opcua_array_BrowseNextRequest;
96 int ett_opcua_BrowseNextResponse;
97 int ett_opcua_array_BrowseNextResponse;
98 int ett_opcua_TranslateBrowsePathsToNodeIdsRequest;
99 int ett_opcua_array_TranslateBrowsePathsToNodeIdsRequest;
100 int ett_opcua_TranslateBrowsePathsToNodeIdsResponse;
101 int ett_opcua_array_TranslateBrowsePathsToNodeIdsResponse;
102 int ett_opcua_RegisterNodesRequest;
103 int ett_opcua_array_RegisterNodesRequest;
104 int ett_opcua_RegisterNodesResponse;
105 int ett_opcua_array_RegisterNodesResponse;
106 int ett_opcua_UnregisterNodesRequest;
107 int ett_opcua_array_UnregisterNodesRequest;
108 int ett_opcua_UnregisterNodesResponse;
109 int ett_opcua_array_UnregisterNodesResponse;
110 int ett_opcua_QueryFirstRequest;
111 int ett_opcua_array_QueryFirstRequest;
112 int ett_opcua_QueryFirstResponse;
113 int ett_opcua_array_QueryFirstResponse;
114 int ett_opcua_QueryNextRequest;
115 int ett_opcua_array_QueryNextRequest;
116 int ett_opcua_QueryNextResponse;
117 int ett_opcua_array_QueryNextResponse;
118 int ett_opcua_ReadRequest;
119 int ett_opcua_array_ReadRequest;
120 int ett_opcua_ReadResponse;
121 int ett_opcua_array_ReadResponse;
122 int ett_opcua_HistoryReadRequest;
123 int ett_opcua_array_HistoryReadRequest;
124 int ett_opcua_HistoryReadResponse;
125 int ett_opcua_array_HistoryReadResponse;
126 int ett_opcua_WriteRequest;
127 int ett_opcua_array_WriteRequest;
128 int ett_opcua_WriteResponse;
129 int ett_opcua_array_WriteResponse;
130 int ett_opcua_HistoryUpdateRequest;
131 int ett_opcua_array_HistoryUpdateRequest;
132 int ett_opcua_HistoryUpdateResponse;
133 int ett_opcua_array_HistoryUpdateResponse;
134 int ett_opcua_CallRequest;
135 int ett_opcua_array_CallRequest;
136 int ett_opcua_CallResponse;
137 int ett_opcua_array_CallResponse;
138 int ett_opcua_CreateMonitoredItemsRequest;
139 int ett_opcua_array_CreateMonitoredItemsRequest;
140 int ett_opcua_CreateMonitoredItemsResponse;
141 int ett_opcua_array_CreateMonitoredItemsResponse;
142 int ett_opcua_ModifyMonitoredItemsRequest;
143 int ett_opcua_array_ModifyMonitoredItemsRequest;
144 int ett_opcua_ModifyMonitoredItemsResponse;
145 int ett_opcua_array_ModifyMonitoredItemsResponse;
146 int ett_opcua_SetMonitoringModeRequest;
147 int ett_opcua_array_SetMonitoringModeRequest;
148 int ett_opcua_SetMonitoringModeResponse;
149 int ett_opcua_array_SetMonitoringModeResponse;
150 int ett_opcua_SetTriggeringRequest;
151 int ett_opcua_array_SetTriggeringRequest;
152 int ett_opcua_SetTriggeringResponse;
153 int ett_opcua_array_SetTriggeringResponse;
154 int ett_opcua_DeleteMonitoredItemsRequest;
155 int ett_opcua_array_DeleteMonitoredItemsRequest;
156 int ett_opcua_DeleteMonitoredItemsResponse;
157 int ett_opcua_array_DeleteMonitoredItemsResponse;
158 int ett_opcua_CreateSubscriptionRequest;
159 int ett_opcua_array_CreateSubscriptionRequest;
160 int ett_opcua_CreateSubscriptionResponse;
161 int ett_opcua_array_CreateSubscriptionResponse;
162 int ett_opcua_ModifySubscriptionRequest;
163 int ett_opcua_array_ModifySubscriptionRequest;
164 int ett_opcua_ModifySubscriptionResponse;
165 int ett_opcua_array_ModifySubscriptionResponse;
166 int ett_opcua_SetPublishingModeRequest;
167 int ett_opcua_array_SetPublishingModeRequest;
168 int ett_opcua_SetPublishingModeResponse;
169 int ett_opcua_array_SetPublishingModeResponse;
170 int ett_opcua_PublishRequest;
171 int ett_opcua_array_PublishRequest;
172 int ett_opcua_PublishResponse;
173 int ett_opcua_array_PublishResponse;
174 int ett_opcua_RepublishRequest;
175 int ett_opcua_array_RepublishRequest;
176 int ett_opcua_RepublishResponse;
177 int ett_opcua_array_RepublishResponse;
178 int ett_opcua_TransferSubscriptionsRequest;
179 int ett_opcua_array_TransferSubscriptionsRequest;
180 int ett_opcua_TransferSubscriptionsResponse;
181 int ett_opcua_array_TransferSubscriptionsResponse;
182 int ett_opcua_DeleteSubscriptionsRequest;
183 int ett_opcua_array_DeleteSubscriptionsRequest;
184 int ett_opcua_DeleteSubscriptionsResponse;
185 int ett_opcua_array_DeleteSubscriptionsResponse;
186 int ett_opcua_TestStackRequest;
187 int ett_opcua_array_TestStackRequest;
188 int ett_opcua_TestStackResponse;
189 int ett_opcua_array_TestStackResponse;
190 int ett_opcua_TestStackExRequest;
191 int ett_opcua_array_TestStackExRequest;
192 int ett_opcua_TestStackExResponse;
193 int ett_opcua_array_TestStackExResponse;
195 void parseServiceFault(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
197 proto_item *ti;
198 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ServiceFault, &ti, "ServiceFault");
200 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
201 proto_item_set_end(ti, tvb, *pOffset);
203 void parseFindServersRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
205 proto_item *ti;
206 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_FindServersRequest, &ti, "FindServersRequest");
208 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
209 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl);
210 /* Array length field ignored: NoOfLocaleIds */
211 parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String);
212 /* Array length field ignored: NoOfServerUris */
213 parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerUris", "String", hf_opcua_ServerUris, parseString, ett_opcua_array_String);
214 proto_item_set_end(ti, tvb, *pOffset);
216 void parseFindServersResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
218 proto_item *ti;
219 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_FindServersResponse, &ti, "FindServersResponse");
221 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
222 /* Array length field ignored: NoOfServers */
223 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Servers", "ApplicationDescription", parseApplicationDescription, ett_opcua_array_ApplicationDescription);
224 proto_item_set_end(ti, tvb, *pOffset);
226 void parseFindServersOnNetworkRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
228 proto_item *ti;
229 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_FindServersOnNetworkRequest, &ti, "FindServersOnNetworkRequest");
231 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
232 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_StartingRecordId);
233 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxRecordsToReturn);
234 /* Array length field ignored: NoOfServerCapabilityFilter */
235 parseArraySimple(subtree, tvb, pinfo, pOffset, "ServerCapabilityFilter", "String", hf_opcua_ServerCapabilityFilter, parseString, ett_opcua_array_String);
236 proto_item_set_end(ti, tvb, *pOffset);
238 void parseFindServersOnNetworkResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
240 proto_item *ti;
241 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_FindServersOnNetworkResponse, &ti, "FindServersOnNetworkResponse");
243 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
244 parseDateTime(subtree, tvb, pinfo, pOffset, hf_opcua_LastCounterResetTime);
245 /* Array length field ignored: NoOfServers */
246 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Servers", "ServerOnNetwork", parseServerOnNetwork, ett_opcua_array_ServerOnNetwork);
247 proto_item_set_end(ti, tvb, *pOffset);
249 void parseGetEndpointsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
251 proto_item *ti;
252 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_GetEndpointsRequest, &ti, "GetEndpointsRequest");
254 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
255 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl);
256 /* Array length field ignored: NoOfLocaleIds */
257 parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String);
258 /* Array length field ignored: NoOfProfileUris */
259 parseArraySimple(subtree, tvb, pinfo, pOffset, "ProfileUris", "String", hf_opcua_ProfileUris, parseString, ett_opcua_array_String);
260 proto_item_set_end(ti, tvb, *pOffset);
262 void parseGetEndpointsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
264 proto_item *ti;
265 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_GetEndpointsResponse, &ti, "GetEndpointsResponse");
267 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
268 /* Array length field ignored: NoOfEndpoints */
269 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Endpoints", "EndpointDescription", parseEndpointDescription, ett_opcua_array_EndpointDescription);
270 proto_item_set_end(ti, tvb, *pOffset);
272 void parseRegisterServerRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
274 proto_item *ti;
275 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterServerRequest, &ti, "RegisterServerRequest");
277 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
278 parseRegisteredServer(subtree, tvb, pinfo, pOffset, "Server");
279 proto_item_set_end(ti, tvb, *pOffset);
281 void parseRegisterServerResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
283 proto_item *ti;
284 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterServerResponse, &ti, "RegisterServerResponse");
286 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
287 proto_item_set_end(ti, tvb, *pOffset);
289 void parseRegisterServer2Request(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
291 proto_item *ti;
292 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterServer2Request, &ti, "RegisterServer2Request");
294 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
295 parseRegisteredServer(subtree, tvb, pinfo, pOffset, "Server");
296 /* Array length field ignored: NoOfDiscoveryConfiguration */
297 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiscoveryConfiguration", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject);
298 proto_item_set_end(ti, tvb, *pOffset);
300 void parseRegisterServer2Response(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
302 proto_item *ti;
303 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterServer2Response, &ti, "RegisterServer2Response");
305 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
306 /* Array length field ignored: NoOfConfigurationResults */
307 parseArraySimple(subtree, tvb, pinfo, pOffset, "ConfigurationResults", "StatusCode", hf_opcua_ConfigurationResults, parseStatusCode, ett_opcua_array_StatusCode);
308 /* Array length field ignored: NoOfDiagnosticInfos */
309 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
310 proto_item_set_end(ti, tvb, *pOffset);
312 void parseOpenSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
314 proto_item *ti;
315 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_OpenSecureChannelRequest, &ti, "OpenSecureChannelRequest");
317 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
318 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ClientProtocolVersion);
319 parseSecurityTokenRequestType(subtree, tvb, pinfo, pOffset);
320 parseMessageSecurityMode(subtree, tvb, pinfo, pOffset);
321 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientNonce);
322 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedLifetime);
323 proto_item_set_end(ti, tvb, *pOffset);
325 void parseOpenSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
327 proto_item *ti;
328 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_OpenSecureChannelResponse, &ti, "OpenSecureChannelResponse");
330 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
331 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_ServerProtocolVersion);
332 parseChannelSecurityToken(subtree, tvb, pinfo, pOffset, "SecurityToken");
333 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerNonce);
334 proto_item_set_end(ti, tvb, *pOffset);
336 void parseCloseSecureChannelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
338 proto_item *ti;
339 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSecureChannelRequest, &ti, "CloseSecureChannelRequest");
341 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
342 proto_item_set_end(ti, tvb, *pOffset);
344 void parseCloseSecureChannelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
346 proto_item *ti;
347 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSecureChannelResponse, &ti, "CloseSecureChannelResponse");
349 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
350 proto_item_set_end(ti, tvb, *pOffset);
352 void parseCreateSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
354 proto_item *ti;
355 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSessionRequest, &ti, "CreateSessionRequest");
357 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
358 parseApplicationDescription(subtree, tvb, pinfo, pOffset, "ClientDescription");
359 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerUri);
360 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_EndpointUrl);
361 parseString(subtree, tvb, pinfo, pOffset, hf_opcua_SessionName);
362 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ClientNonce);
363 parseCertificate(subtree, tvb, pinfo, pOffset, hf_opcua_ClientCertificate);
364 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedSessionTimeout);
365 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxResponseMessageSize);
366 proto_item_set_end(ti, tvb, *pOffset);
368 void parseCreateSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
370 proto_item *ti;
371 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSessionResponse, &ti, "CreateSessionResponse");
373 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
374 parseNodeId(subtree, tvb, pinfo, pOffset, "SessionId");
375 parseNodeId(subtree, tvb, pinfo, pOffset, "AuthenticationToken");
376 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedSessionTimeout);
377 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerNonce);
378 parseCertificate(subtree, tvb, pinfo, pOffset, hf_opcua_ServerCertificate);
379 /* Array length field ignored: NoOfServerEndpoints */
380 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerEndpoints", "EndpointDescription", parseEndpointDescription, ett_opcua_array_EndpointDescription);
381 /* Array length field ignored: NoOfServerSoftwareCertificates */
382 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ServerSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate, ett_opcua_array_SignedSoftwareCertificate);
383 parseSignatureData(subtree, tvb, pinfo, pOffset, "ServerSignature");
384 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxRequestMessageSize);
385 proto_item_set_end(ti, tvb, *pOffset);
387 void parseActivateSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
389 proto_item *ti;
390 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ActivateSessionRequest, &ti, "ActivateSessionRequest");
392 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
393 parseSignatureData(subtree, tvb, pinfo, pOffset, "ClientSignature");
394 /* Array length field ignored: NoOfClientSoftwareCertificates */
395 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ClientSoftwareCertificates", "SignedSoftwareCertificate", parseSignedSoftwareCertificate, ett_opcua_array_SignedSoftwareCertificate);
396 /* Array length field ignored: NoOfLocaleIds */
397 parseArraySimple(subtree, tvb, pinfo, pOffset, "LocaleIds", "String", hf_opcua_LocaleIds, parseString, ett_opcua_array_String);
398 parseExtensionObject(subtree, tvb, pinfo, pOffset, "UserIdentityToken");
399 parseSignatureData(subtree, tvb, pinfo, pOffset, "UserTokenSignature");
400 proto_item_set_end(ti, tvb, *pOffset);
402 void parseActivateSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
404 proto_item *ti;
405 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ActivateSessionResponse, &ti, "ActivateSessionResponse");
407 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
408 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ServerNonce);
409 /* Array length field ignored: NoOfResults */
410 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
411 /* Array length field ignored: NoOfDiagnosticInfos */
412 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
413 proto_item_set_end(ti, tvb, *pOffset);
415 void parseCloseSessionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
417 proto_item *ti;
418 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSessionRequest, &ti, "CloseSessionRequest");
420 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
421 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_DeleteSubscriptions);
422 proto_item_set_end(ti, tvb, *pOffset);
424 void parseCloseSessionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
426 proto_item *ti;
427 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CloseSessionResponse, &ti, "CloseSessionResponse");
429 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
430 proto_item_set_end(ti, tvb, *pOffset);
432 void parseCancelRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
434 proto_item *ti;
435 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CancelRequest, &ti, "CancelRequest");
437 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
438 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestHandle);
439 proto_item_set_end(ti, tvb, *pOffset);
441 void parseCancelResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
443 proto_item *ti;
444 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CancelResponse, &ti, "CancelResponse");
446 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
447 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_CancelCount);
448 proto_item_set_end(ti, tvb, *pOffset);
450 void parseAddNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
452 proto_item *ti;
453 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddNodesRequest, &ti, "AddNodesRequest");
455 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
456 /* Array length field ignored: NoOfNodesToAdd */
457 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToAdd", "AddNodesItem", parseAddNodesItem, ett_opcua_array_AddNodesItem);
458 proto_item_set_end(ti, tvb, *pOffset);
460 void parseAddNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
462 proto_item *ti;
463 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddNodesResponse, &ti, "AddNodesResponse");
465 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
466 /* Array length field ignored: NoOfResults */
467 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "AddNodesResult", parseAddNodesResult, ett_opcua_array_AddNodesResult);
468 /* Array length field ignored: NoOfDiagnosticInfos */
469 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
470 proto_item_set_end(ti, tvb, *pOffset);
472 void parseAddReferencesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
474 proto_item *ti;
475 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesRequest, &ti, "AddReferencesRequest");
477 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
478 /* Array length field ignored: NoOfReferencesToAdd */
479 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencesToAdd", "AddReferencesItem", parseAddReferencesItem, ett_opcua_array_AddReferencesItem);
480 proto_item_set_end(ti, tvb, *pOffset);
482 void parseAddReferencesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
484 proto_item *ti;
485 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_AddReferencesResponse, &ti, "AddReferencesResponse");
487 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
488 /* Array length field ignored: NoOfResults */
489 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
490 /* Array length field ignored: NoOfDiagnosticInfos */
491 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
492 proto_item_set_end(ti, tvb, *pOffset);
494 void parseDeleteNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
496 proto_item *ti;
497 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesRequest, &ti, "DeleteNodesRequest");
499 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
500 /* Array length field ignored: NoOfNodesToDelete */
501 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToDelete", "DeleteNodesItem", parseDeleteNodesItem, ett_opcua_array_DeleteNodesItem);
502 proto_item_set_end(ti, tvb, *pOffset);
504 void parseDeleteNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
506 proto_item *ti;
507 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteNodesResponse, &ti, "DeleteNodesResponse");
509 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
510 /* Array length field ignored: NoOfResults */
511 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
512 /* Array length field ignored: NoOfDiagnosticInfos */
513 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
514 proto_item_set_end(ti, tvb, *pOffset);
516 void parseDeleteReferencesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
518 proto_item *ti;
519 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesRequest, &ti, "DeleteReferencesRequest");
521 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
522 /* Array length field ignored: NoOfReferencesToDelete */
523 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ReferencesToDelete", "DeleteReferencesItem", parseDeleteReferencesItem, ett_opcua_array_DeleteReferencesItem);
524 proto_item_set_end(ti, tvb, *pOffset);
526 void parseDeleteReferencesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
528 proto_item *ti;
529 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteReferencesResponse, &ti, "DeleteReferencesResponse");
531 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
532 /* Array length field ignored: NoOfResults */
533 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
534 /* Array length field ignored: NoOfDiagnosticInfos */
535 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
536 proto_item_set_end(ti, tvb, *pOffset);
538 void parseBrowseRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
540 proto_item *ti;
541 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseRequest, &ti, "BrowseRequest");
543 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
544 parseViewDescription(subtree, tvb, pinfo, pOffset, "View");
545 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedMaxReferencesPerNode);
546 /* Array length field ignored: NoOfNodesToBrowse */
547 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToBrowse", "BrowseDescription", parseBrowseDescription, ett_opcua_array_BrowseDescription);
548 proto_item_set_end(ti, tvb, *pOffset);
550 void parseBrowseResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
552 proto_item *ti;
553 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseResponse, &ti, "BrowseResponse");
555 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
556 /* Array length field ignored: NoOfResults */
557 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "BrowseResult", parseBrowseResult, ett_opcua_array_BrowseResult);
558 /* Array length field ignored: NoOfDiagnosticInfos */
559 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
560 proto_item_set_end(ti, tvb, *pOffset);
562 void parseBrowseNextRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
564 proto_item *ti;
565 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseNextRequest, &ti, "BrowseNextRequest");
567 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
568 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReleaseContinuationPoints);
569 /* Array length field ignored: NoOfContinuationPoints */
570 parseArraySimple(subtree, tvb, pinfo, pOffset, "ContinuationPoints", "ByteString", hf_opcua_ContinuationPoints, parseByteString, ett_opcua_array_ByteString);
571 proto_item_set_end(ti, tvb, *pOffset);
573 void parseBrowseNextResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
575 proto_item *ti;
576 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_BrowseNextResponse, &ti, "BrowseNextResponse");
578 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
579 /* Array length field ignored: NoOfResults */
580 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "BrowseResult", parseBrowseResult, ett_opcua_array_BrowseResult);
581 /* Array length field ignored: NoOfDiagnosticInfos */
582 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
583 proto_item_set_end(ti, tvb, *pOffset);
585 void parseTranslateBrowsePathsToNodeIdsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
587 proto_item *ti;
588 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TranslateBrowsePathsToNodeIdsRequest, &ti, "TranslateBrowsePathsToNodeIdsRequest");
590 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
591 /* Array length field ignored: NoOfBrowsePaths */
592 parseArrayComplex(subtree, tvb, pinfo, pOffset, "BrowsePaths", "BrowsePath", parseBrowsePath, ett_opcua_array_BrowsePath);
593 proto_item_set_end(ti, tvb, *pOffset);
595 void parseTranslateBrowsePathsToNodeIdsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
597 proto_item *ti;
598 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TranslateBrowsePathsToNodeIdsResponse, &ti, "TranslateBrowsePathsToNodeIdsResponse");
600 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
601 /* Array length field ignored: NoOfResults */
602 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "BrowsePathResult", parseBrowsePathResult, ett_opcua_array_BrowsePathResult);
603 /* Array length field ignored: NoOfDiagnosticInfos */
604 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
605 proto_item_set_end(ti, tvb, *pOffset);
607 void parseRegisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
609 proto_item *ti;
610 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterNodesRequest, &ti, "RegisterNodesRequest");
612 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
613 /* Array length field ignored: NoOfNodesToRegister */
614 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToRegister", "NodeId", parseNodeId, ett_opcua_array_NodeId);
615 proto_item_set_end(ti, tvb, *pOffset);
617 void parseRegisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
619 proto_item *ti;
620 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RegisterNodesResponse, &ti, "RegisterNodesResponse");
622 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
623 /* Array length field ignored: NoOfRegisteredNodeIds */
624 parseArrayComplex(subtree, tvb, pinfo, pOffset, "RegisteredNodeIds", "NodeId", parseNodeId, ett_opcua_array_NodeId);
625 proto_item_set_end(ti, tvb, *pOffset);
627 void parseUnregisterNodesRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
629 proto_item *ti;
630 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_UnregisterNodesRequest, &ti, "UnregisterNodesRequest");
632 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
633 /* Array length field ignored: NoOfNodesToUnregister */
634 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToUnregister", "NodeId", parseNodeId, ett_opcua_array_NodeId);
635 proto_item_set_end(ti, tvb, *pOffset);
637 void parseUnregisterNodesResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
639 proto_item *ti;
640 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_UnregisterNodesResponse, &ti, "UnregisterNodesResponse");
642 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
643 proto_item_set_end(ti, tvb, *pOffset);
645 void parseQueryFirstRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
647 proto_item *ti;
648 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryFirstRequest, &ti, "QueryFirstRequest");
650 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
651 parseViewDescription(subtree, tvb, pinfo, pOffset, "View");
652 /* Array length field ignored: NoOfNodeTypes */
653 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodeTypes", "NodeTypeDescription", parseNodeTypeDescription, ett_opcua_array_NodeTypeDescription);
654 parseContentFilter(subtree, tvb, pinfo, pOffset, "Filter");
655 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxDataSetsToReturn);
656 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxReferencesToReturn);
657 proto_item_set_end(ti, tvb, *pOffset);
659 void parseQueryFirstResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
661 proto_item *ti;
662 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryFirstResponse, &ti, "QueryFirstResponse");
664 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
665 /* Array length field ignored: NoOfQueryDataSets */
666 parseArrayComplex(subtree, tvb, pinfo, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet, ett_opcua_array_QueryDataSet);
667 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint);
668 /* Array length field ignored: NoOfParsingResults */
669 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ParsingResults", "ParsingResult", parseParsingResult, ett_opcua_array_ParsingResult);
670 /* Array length field ignored: NoOfDiagnosticInfos */
671 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
672 parseContentFilterResult(subtree, tvb, pinfo, pOffset, "FilterResult");
673 proto_item_set_end(ti, tvb, *pOffset);
675 void parseQueryNextRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
677 proto_item *ti;
678 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryNextRequest, &ti, "QueryNextRequest");
680 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
681 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReleaseContinuationPoint);
682 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_ContinuationPoint);
683 proto_item_set_end(ti, tvb, *pOffset);
685 void parseQueryNextResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
687 proto_item *ti;
688 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_QueryNextResponse, &ti, "QueryNextResponse");
690 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
691 /* Array length field ignored: NoOfQueryDataSets */
692 parseArrayComplex(subtree, tvb, pinfo, pOffset, "QueryDataSets", "QueryDataSet", parseQueryDataSet, ett_opcua_array_QueryDataSet);
693 parseByteString(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedContinuationPoint);
694 proto_item_set_end(ti, tvb, *pOffset);
696 void parseReadRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
698 proto_item *ti;
699 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ReadRequest, &ti, "ReadRequest");
701 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
702 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_MaxAge);
703 parseTimestampsToReturn(subtree, tvb, pinfo, pOffset);
704 /* Array length field ignored: NoOfNodesToRead */
705 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToRead", "ReadValueId", parseReadValueId, ett_opcua_array_ReadValueId);
706 proto_item_set_end(ti, tvb, *pOffset);
708 void parseReadResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
710 proto_item *ti;
711 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ReadResponse, &ti, "ReadResponse");
713 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
714 /* Array length field ignored: NoOfResults */
715 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "DataValue", parseDataValue, ett_opcua_array_DataValue);
716 /* Array length field ignored: NoOfDiagnosticInfos */
717 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
718 proto_item_set_end(ti, tvb, *pOffset);
720 void parseHistoryReadRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
722 proto_item *ti;
723 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadRequest, &ti, "HistoryReadRequest");
725 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
726 parseExtensionObject(subtree, tvb, pinfo, pOffset, "HistoryReadDetails");
727 parseTimestampsToReturn(subtree, tvb, pinfo, pOffset);
728 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_ReleaseContinuationPoints);
729 /* Array length field ignored: NoOfNodesToRead */
730 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToRead", "HistoryReadValueId", parseHistoryReadValueId, ett_opcua_array_HistoryReadValueId);
731 proto_item_set_end(ti, tvb, *pOffset);
733 void parseHistoryReadResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
735 proto_item *ti;
736 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryReadResponse, &ti, "HistoryReadResponse");
738 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
739 /* Array length field ignored: NoOfResults */
740 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "HistoryReadResult", parseHistoryReadResult, ett_opcua_array_HistoryReadResult);
741 /* Array length field ignored: NoOfDiagnosticInfos */
742 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
743 proto_item_set_end(ti, tvb, *pOffset);
745 void parseWriteRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
747 proto_item *ti;
748 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_WriteRequest, &ti, "WriteRequest");
750 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
751 /* Array length field ignored: NoOfNodesToWrite */
752 parseArrayComplex(subtree, tvb, pinfo, pOffset, "NodesToWrite", "WriteValue", parseWriteValue, ett_opcua_array_WriteValue);
753 proto_item_set_end(ti, tvb, *pOffset);
755 void parseWriteResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
757 proto_item *ti;
758 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_WriteResponse, &ti, "WriteResponse");
760 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
761 /* Array length field ignored: NoOfResults */
762 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
763 /* Array length field ignored: NoOfDiagnosticInfos */
764 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
765 proto_item_set_end(ti, tvb, *pOffset);
767 void parseHistoryUpdateRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
769 proto_item *ti;
770 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateRequest, &ti, "HistoryUpdateRequest");
772 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
773 /* Array length field ignored: NoOfHistoryUpdateDetails */
774 parseArrayComplex(subtree, tvb, pinfo, pOffset, "HistoryUpdateDetails", "ExtensionObject", parseExtensionObject, ett_opcua_array_ExtensionObject);
775 proto_item_set_end(ti, tvb, *pOffset);
777 void parseHistoryUpdateResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
779 proto_item *ti;
780 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_HistoryUpdateResponse, &ti, "HistoryUpdateResponse");
782 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
783 /* Array length field ignored: NoOfResults */
784 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "HistoryUpdateResult", parseHistoryUpdateResult, ett_opcua_array_HistoryUpdateResult);
785 /* Array length field ignored: NoOfDiagnosticInfos */
786 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
787 proto_item_set_end(ti, tvb, *pOffset);
789 void parseCallRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
791 proto_item *ti;
792 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CallRequest, &ti, "CallRequest");
794 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
795 /* Array length field ignored: NoOfMethodsToCall */
796 parseArrayComplex(subtree, tvb, pinfo, pOffset, "MethodsToCall", "CallMethodRequest", parseCallMethodRequest, ett_opcua_array_CallMethodRequest);
797 proto_item_set_end(ti, tvb, *pOffset);
799 void parseCallResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
801 proto_item *ti;
802 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CallResponse, &ti, "CallResponse");
804 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
805 /* Array length field ignored: NoOfResults */
806 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "CallMethodResult", parseCallMethodResult, ett_opcua_array_CallMethodResult);
807 /* Array length field ignored: NoOfDiagnosticInfos */
808 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
809 proto_item_set_end(ti, tvb, *pOffset);
811 void parseCreateMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
813 proto_item *ti;
814 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateMonitoredItemsRequest, &ti, "CreateMonitoredItemsRequest");
816 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
817 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
818 parseTimestampsToReturn(subtree, tvb, pinfo, pOffset);
819 /* Array length field ignored: NoOfItemsToCreate */
820 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ItemsToCreate", "MonitoredItemCreateRequest", parseMonitoredItemCreateRequest, ett_opcua_array_MonitoredItemCreateRequest);
821 proto_item_set_end(ti, tvb, *pOffset);
823 void parseCreateMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
825 proto_item *ti;
826 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateMonitoredItemsResponse, &ti, "CreateMonitoredItemsResponse");
828 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
829 /* Array length field ignored: NoOfResults */
830 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "MonitoredItemCreateResult", parseMonitoredItemCreateResult, ett_opcua_array_MonitoredItemCreateResult);
831 /* Array length field ignored: NoOfDiagnosticInfos */
832 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
833 proto_item_set_end(ti, tvb, *pOffset);
835 void parseModifyMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
837 proto_item *ti;
838 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifyMonitoredItemsRequest, &ti, "ModifyMonitoredItemsRequest");
840 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
841 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
842 parseTimestampsToReturn(subtree, tvb, pinfo, pOffset);
843 /* Array length field ignored: NoOfItemsToModify */
844 parseArrayComplex(subtree, tvb, pinfo, pOffset, "ItemsToModify", "MonitoredItemModifyRequest", parseMonitoredItemModifyRequest, ett_opcua_array_MonitoredItemModifyRequest);
845 proto_item_set_end(ti, tvb, *pOffset);
847 void parseModifyMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
849 proto_item *ti;
850 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifyMonitoredItemsResponse, &ti, "ModifyMonitoredItemsResponse");
852 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
853 /* Array length field ignored: NoOfResults */
854 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "MonitoredItemModifyResult", parseMonitoredItemModifyResult, ett_opcua_array_MonitoredItemModifyResult);
855 /* Array length field ignored: NoOfDiagnosticInfos */
856 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
857 proto_item_set_end(ti, tvb, *pOffset);
859 void parseSetMonitoringModeRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
861 proto_item *ti;
862 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetMonitoringModeRequest, &ti, "SetMonitoringModeRequest");
864 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
865 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
866 parseMonitoringMode(subtree, tvb, pinfo, pOffset);
867 /* Array length field ignored: NoOfMonitoredItemIds */
868 parseArraySimple(subtree, tvb, pinfo, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32, ett_opcua_array_UInt32);
869 proto_item_set_end(ti, tvb, *pOffset);
871 void parseSetMonitoringModeResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
873 proto_item *ti;
874 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetMonitoringModeResponse, &ti, "SetMonitoringModeResponse");
876 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
877 /* Array length field ignored: NoOfResults */
878 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
879 /* Array length field ignored: NoOfDiagnosticInfos */
880 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
881 proto_item_set_end(ti, tvb, *pOffset);
883 void parseSetTriggeringRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
885 proto_item *ti;
886 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetTriggeringRequest, &ti, "SetTriggeringRequest");
888 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
889 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
890 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TriggeringItemId);
891 /* Array length field ignored: NoOfLinksToAdd */
892 parseArraySimple(subtree, tvb, pinfo, pOffset, "LinksToAdd", "UInt32", hf_opcua_LinksToAdd, parseUInt32, ett_opcua_array_UInt32);
893 /* Array length field ignored: NoOfLinksToRemove */
894 parseArraySimple(subtree, tvb, pinfo, pOffset, "LinksToRemove", "UInt32", hf_opcua_LinksToRemove, parseUInt32, ett_opcua_array_UInt32);
895 proto_item_set_end(ti, tvb, *pOffset);
897 void parseSetTriggeringResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
899 proto_item *ti;
900 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetTriggeringResponse, &ti, "SetTriggeringResponse");
902 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
903 /* Array length field ignored: NoOfAddResults */
904 parseArraySimple(subtree, tvb, pinfo, pOffset, "AddResults", "StatusCode", hf_opcua_AddResults, parseStatusCode, ett_opcua_array_StatusCode);
905 /* Array length field ignored: NoOfAddDiagnosticInfos */
906 parseArrayComplex(subtree, tvb, pinfo, pOffset, "AddDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
907 /* Array length field ignored: NoOfRemoveResults */
908 parseArraySimple(subtree, tvb, pinfo, pOffset, "RemoveResults", "StatusCode", hf_opcua_RemoveResults, parseStatusCode, ett_opcua_array_StatusCode);
909 /* Array length field ignored: NoOfRemoveDiagnosticInfos */
910 parseArrayComplex(subtree, tvb, pinfo, pOffset, "RemoveDiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
911 proto_item_set_end(ti, tvb, *pOffset);
913 void parseDeleteMonitoredItemsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
915 proto_item *ti;
916 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteMonitoredItemsRequest, &ti, "DeleteMonitoredItemsRequest");
918 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
919 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
920 /* Array length field ignored: NoOfMonitoredItemIds */
921 parseArraySimple(subtree, tvb, pinfo, pOffset, "MonitoredItemIds", "UInt32", hf_opcua_MonitoredItemIds, parseUInt32, ett_opcua_array_UInt32);
922 proto_item_set_end(ti, tvb, *pOffset);
924 void parseDeleteMonitoredItemsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
926 proto_item *ti;
927 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteMonitoredItemsResponse, &ti, "DeleteMonitoredItemsResponse");
929 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
930 /* Array length field ignored: NoOfResults */
931 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
932 /* Array length field ignored: NoOfDiagnosticInfos */
933 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
934 proto_item_set_end(ti, tvb, *pOffset);
936 void parseCreateSubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
938 proto_item *ti;
939 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSubscriptionRequest, &ti, "CreateSubscriptionRequest");
941 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
942 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedPublishingInterval);
943 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedLifetimeCount);
944 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedMaxKeepAliveCount);
945 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish);
946 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled);
947 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority);
948 proto_item_set_end(ti, tvb, *pOffset);
950 void parseCreateSubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
952 proto_item *ti;
953 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_CreateSubscriptionResponse, &ti, "CreateSubscriptionResponse");
955 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
956 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
957 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedPublishingInterval);
958 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetimeCount);
959 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedMaxKeepAliveCount);
960 proto_item_set_end(ti, tvb, *pOffset);
962 void parseModifySubscriptionRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
964 proto_item *ti;
965 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifySubscriptionRequest, &ti, "ModifySubscriptionRequest");
967 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
968 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
969 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedPublishingInterval);
970 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedLifetimeCount);
971 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RequestedMaxKeepAliveCount);
972 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_MaxNotificationsPerPublish);
973 parseByte(subtree, tvb, pinfo, pOffset, hf_opcua_Priority);
974 proto_item_set_end(ti, tvb, *pOffset);
976 void parseModifySubscriptionResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
978 proto_item *ti;
979 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_ModifySubscriptionResponse, &ti, "ModifySubscriptionResponse");
981 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
982 parseDouble(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedPublishingInterval);
983 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedLifetimeCount);
984 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RevisedMaxKeepAliveCount);
985 proto_item_set_end(ti, tvb, *pOffset);
987 void parseSetPublishingModeRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
989 proto_item *ti;
990 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetPublishingModeRequest, &ti, "SetPublishingModeRequest");
992 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
993 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_PublishingEnabled);
994 /* Array length field ignored: NoOfSubscriptionIds */
995 parseArraySimple(subtree, tvb, pinfo, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32);
996 proto_item_set_end(ti, tvb, *pOffset);
998 void parseSetPublishingModeResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1000 proto_item *ti;
1001 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_SetPublishingModeResponse, &ti, "SetPublishingModeResponse");
1003 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1004 /* Array length field ignored: NoOfResults */
1005 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
1006 /* Array length field ignored: NoOfDiagnosticInfos */
1007 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1008 proto_item_set_end(ti, tvb, *pOffset);
1010 void parsePublishRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1012 proto_item *ti;
1013 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_PublishRequest, &ti, "PublishRequest");
1015 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
1016 /* Array length field ignored: NoOfSubscriptionAcknowledgements */
1017 parseArrayComplex(subtree, tvb, pinfo, pOffset, "SubscriptionAcknowledgements", "SubscriptionAcknowledgement", parseSubscriptionAcknowledgement, ett_opcua_array_SubscriptionAcknowledgement);
1018 proto_item_set_end(ti, tvb, *pOffset);
1020 void parsePublishResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1022 proto_item *ti;
1023 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_PublishResponse, &ti, "PublishResponse");
1025 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1026 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
1027 /* Array length field ignored: NoOfAvailableSequenceNumbers */
1028 parseArraySimple(subtree, tvb, pinfo, pOffset, "AvailableSequenceNumbers", "UInt32", hf_opcua_AvailableSequenceNumbers, parseUInt32, ett_opcua_array_UInt32);
1029 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_MoreNotifications);
1030 parseNotificationMessage(subtree, tvb, pinfo, pOffset, "NotificationMessage");
1031 /* Array length field ignored: NoOfResults */
1032 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
1033 /* Array length field ignored: NoOfDiagnosticInfos */
1034 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1035 proto_item_set_end(ti, tvb, *pOffset);
1037 void parseRepublishRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1039 proto_item *ti;
1040 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RepublishRequest, &ti, "RepublishRequest");
1042 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
1043 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_SubscriptionId);
1044 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_RetransmitSequenceNumber);
1045 proto_item_set_end(ti, tvb, *pOffset);
1047 void parseRepublishResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1049 proto_item *ti;
1050 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_RepublishResponse, &ti, "RepublishResponse");
1052 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1053 parseNotificationMessage(subtree, tvb, pinfo, pOffset, "NotificationMessage");
1054 proto_item_set_end(ti, tvb, *pOffset);
1056 void parseTransferSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1058 proto_item *ti;
1059 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TransferSubscriptionsRequest, &ti, "TransferSubscriptionsRequest");
1061 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
1062 /* Array length field ignored: NoOfSubscriptionIds */
1063 parseArraySimple(subtree, tvb, pinfo, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32);
1064 parseBoolean(subtree, tvb, pinfo, pOffset, hf_opcua_SendInitialValues);
1065 proto_item_set_end(ti, tvb, *pOffset);
1067 void parseTransferSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1069 proto_item *ti;
1070 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TransferSubscriptionsResponse, &ti, "TransferSubscriptionsResponse");
1072 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1073 /* Array length field ignored: NoOfResults */
1074 parseArrayComplex(subtree, tvb, pinfo, pOffset, "Results", "TransferResult", parseTransferResult, ett_opcua_array_TransferResult);
1075 /* Array length field ignored: NoOfDiagnosticInfos */
1076 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1077 proto_item_set_end(ti, tvb, *pOffset);
1079 void parseDeleteSubscriptionsRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1081 proto_item *ti;
1082 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteSubscriptionsRequest, &ti, "DeleteSubscriptionsRequest");
1084 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
1085 /* Array length field ignored: NoOfSubscriptionIds */
1086 parseArraySimple(subtree, tvb, pinfo, pOffset, "SubscriptionIds", "UInt32", hf_opcua_SubscriptionIds, parseUInt32, ett_opcua_array_UInt32);
1087 proto_item_set_end(ti, tvb, *pOffset);
1089 void parseDeleteSubscriptionsResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1091 proto_item *ti;
1092 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_DeleteSubscriptionsResponse, &ti, "DeleteSubscriptionsResponse");
1094 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1095 /* Array length field ignored: NoOfResults */
1096 parseArraySimple(subtree, tvb, pinfo, pOffset, "Results", "StatusCode", hf_opcua_Results, parseStatusCode, ett_opcua_array_StatusCode);
1097 /* Array length field ignored: NoOfDiagnosticInfos */
1098 parseArrayComplex(subtree, tvb, pinfo, pOffset, "DiagnosticInfos", "DiagnosticInfo", parseDiagnosticInfo, ett_opcua_array_DiagnosticInfo);
1099 proto_item_set_end(ti, tvb, *pOffset);
1101 void parseTestStackRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1103 proto_item *ti;
1104 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackRequest, &ti, "TestStackRequest");
1106 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
1107 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TestId);
1108 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Iteration);
1109 parseVariant(subtree, tvb, pinfo, pOffset, "Input");
1110 proto_item_set_end(ti, tvb, *pOffset);
1112 void parseTestStackResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1114 proto_item *ti;
1115 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackResponse, &ti, "TestStackResponse");
1117 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1118 parseVariant(subtree, tvb, pinfo, pOffset, "Output");
1119 proto_item_set_end(ti, tvb, *pOffset);
1121 void parseTestStackExRequest(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1123 proto_item *ti;
1124 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackExRequest, &ti, "TestStackExRequest");
1126 parseRequestHeader(subtree, tvb, pinfo, pOffset, "RequestHeader");
1127 parseUInt32(subtree, tvb, pinfo, pOffset, hf_opcua_TestId);
1128 parseInt32(subtree, tvb, pinfo, pOffset, hf_opcua_Iteration);
1129 parseCompositeTestType(subtree, tvb, pinfo, pOffset, "Input");
1130 proto_item_set_end(ti, tvb, *pOffset);
1132 void parseTestStackExResponse(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int *pOffset)
1134 proto_item *ti;
1135 proto_tree *subtree = proto_tree_add_subtree(tree, tvb, *pOffset, -1, ett_opcua_TestStackExResponse, &ti, "TestStackExResponse");
1137 parseResponseHeader(subtree, tvb, pinfo, pOffset, "ResponseHeader");
1138 parseCompositeTestType(subtree, tvb, pinfo, pOffset, "Output");
1139 proto_item_set_end(ti, tvb, *pOffset);
1142 /** Setup protocol subtree array */
1143 static int *ett[] =
1145 &ett_opcua_ServiceFault,
1146 &ett_opcua_array_ServiceFault,
1147 &ett_opcua_FindServersRequest,
1148 &ett_opcua_array_FindServersRequest,
1149 &ett_opcua_FindServersResponse,
1150 &ett_opcua_array_FindServersResponse,
1151 &ett_opcua_FindServersOnNetworkRequest,
1152 &ett_opcua_array_FindServersOnNetworkRequest,
1153 &ett_opcua_FindServersOnNetworkResponse,
1154 &ett_opcua_array_FindServersOnNetworkResponse,
1155 &ett_opcua_GetEndpointsRequest,
1156 &ett_opcua_array_GetEndpointsRequest,
1157 &ett_opcua_GetEndpointsResponse,
1158 &ett_opcua_array_GetEndpointsResponse,
1159 &ett_opcua_RegisterServerRequest,
1160 &ett_opcua_array_RegisterServerRequest,
1161 &ett_opcua_RegisterServerResponse,
1162 &ett_opcua_array_RegisterServerResponse,
1163 &ett_opcua_RegisterServer2Request,
1164 &ett_opcua_array_RegisterServer2Request,
1165 &ett_opcua_RegisterServer2Response,
1166 &ett_opcua_array_RegisterServer2Response,
1167 &ett_opcua_OpenSecureChannelRequest,
1168 &ett_opcua_array_OpenSecureChannelRequest,
1169 &ett_opcua_OpenSecureChannelResponse,
1170 &ett_opcua_array_OpenSecureChannelResponse,
1171 &ett_opcua_CloseSecureChannelRequest,
1172 &ett_opcua_array_CloseSecureChannelRequest,
1173 &ett_opcua_CloseSecureChannelResponse,
1174 &ett_opcua_array_CloseSecureChannelResponse,
1175 &ett_opcua_CreateSessionRequest,
1176 &ett_opcua_array_CreateSessionRequest,
1177 &ett_opcua_CreateSessionResponse,
1178 &ett_opcua_array_CreateSessionResponse,
1179 &ett_opcua_ActivateSessionRequest,
1180 &ett_opcua_array_ActivateSessionRequest,
1181 &ett_opcua_ActivateSessionResponse,
1182 &ett_opcua_array_ActivateSessionResponse,
1183 &ett_opcua_CloseSessionRequest,
1184 &ett_opcua_array_CloseSessionRequest,
1185 &ett_opcua_CloseSessionResponse,
1186 &ett_opcua_array_CloseSessionResponse,
1187 &ett_opcua_CancelRequest,
1188 &ett_opcua_array_CancelRequest,
1189 &ett_opcua_CancelResponse,
1190 &ett_opcua_array_CancelResponse,
1191 &ett_opcua_AddNodesRequest,
1192 &ett_opcua_array_AddNodesRequest,
1193 &ett_opcua_AddNodesResponse,
1194 &ett_opcua_array_AddNodesResponse,
1195 &ett_opcua_AddReferencesRequest,
1196 &ett_opcua_array_AddReferencesRequest,
1197 &ett_opcua_AddReferencesResponse,
1198 &ett_opcua_array_AddReferencesResponse,
1199 &ett_opcua_DeleteNodesRequest,
1200 &ett_opcua_array_DeleteNodesRequest,
1201 &ett_opcua_DeleteNodesResponse,
1202 &ett_opcua_array_DeleteNodesResponse,
1203 &ett_opcua_DeleteReferencesRequest,
1204 &ett_opcua_array_DeleteReferencesRequest,
1205 &ett_opcua_DeleteReferencesResponse,
1206 &ett_opcua_array_DeleteReferencesResponse,
1207 &ett_opcua_BrowseRequest,
1208 &ett_opcua_array_BrowseRequest,
1209 &ett_opcua_BrowseResponse,
1210 &ett_opcua_array_BrowseResponse,
1211 &ett_opcua_BrowseNextRequest,
1212 &ett_opcua_array_BrowseNextRequest,
1213 &ett_opcua_BrowseNextResponse,
1214 &ett_opcua_array_BrowseNextResponse,
1215 &ett_opcua_TranslateBrowsePathsToNodeIdsRequest,
1216 &ett_opcua_array_TranslateBrowsePathsToNodeIdsRequest,
1217 &ett_opcua_TranslateBrowsePathsToNodeIdsResponse,
1218 &ett_opcua_array_TranslateBrowsePathsToNodeIdsResponse,
1219 &ett_opcua_RegisterNodesRequest,
1220 &ett_opcua_array_RegisterNodesRequest,
1221 &ett_opcua_RegisterNodesResponse,
1222 &ett_opcua_array_RegisterNodesResponse,
1223 &ett_opcua_UnregisterNodesRequest,
1224 &ett_opcua_array_UnregisterNodesRequest,
1225 &ett_opcua_UnregisterNodesResponse,
1226 &ett_opcua_array_UnregisterNodesResponse,
1227 &ett_opcua_QueryFirstRequest,
1228 &ett_opcua_array_QueryFirstRequest,
1229 &ett_opcua_QueryFirstResponse,
1230 &ett_opcua_array_QueryFirstResponse,
1231 &ett_opcua_QueryNextRequest,
1232 &ett_opcua_array_QueryNextRequest,
1233 &ett_opcua_QueryNextResponse,
1234 &ett_opcua_array_QueryNextResponse,
1235 &ett_opcua_ReadRequest,
1236 &ett_opcua_array_ReadRequest,
1237 &ett_opcua_ReadResponse,
1238 &ett_opcua_array_ReadResponse,
1239 &ett_opcua_HistoryReadRequest,
1240 &ett_opcua_array_HistoryReadRequest,
1241 &ett_opcua_HistoryReadResponse,
1242 &ett_opcua_array_HistoryReadResponse,
1243 &ett_opcua_WriteRequest,
1244 &ett_opcua_array_WriteRequest,
1245 &ett_opcua_WriteResponse,
1246 &ett_opcua_array_WriteResponse,
1247 &ett_opcua_HistoryUpdateRequest,
1248 &ett_opcua_array_HistoryUpdateRequest,
1249 &ett_opcua_HistoryUpdateResponse,
1250 &ett_opcua_array_HistoryUpdateResponse,
1251 &ett_opcua_CallRequest,
1252 &ett_opcua_array_CallRequest,
1253 &ett_opcua_CallResponse,
1254 &ett_opcua_array_CallResponse,
1255 &ett_opcua_CreateMonitoredItemsRequest,
1256 &ett_opcua_array_CreateMonitoredItemsRequest,
1257 &ett_opcua_CreateMonitoredItemsResponse,
1258 &ett_opcua_array_CreateMonitoredItemsResponse,
1259 &ett_opcua_ModifyMonitoredItemsRequest,
1260 &ett_opcua_array_ModifyMonitoredItemsRequest,
1261 &ett_opcua_ModifyMonitoredItemsResponse,
1262 &ett_opcua_array_ModifyMonitoredItemsResponse,
1263 &ett_opcua_SetMonitoringModeRequest,
1264 &ett_opcua_array_SetMonitoringModeRequest,
1265 &ett_opcua_SetMonitoringModeResponse,
1266 &ett_opcua_array_SetMonitoringModeResponse,
1267 &ett_opcua_SetTriggeringRequest,
1268 &ett_opcua_array_SetTriggeringRequest,
1269 &ett_opcua_SetTriggeringResponse,
1270 &ett_opcua_array_SetTriggeringResponse,
1271 &ett_opcua_DeleteMonitoredItemsRequest,
1272 &ett_opcua_array_DeleteMonitoredItemsRequest,
1273 &ett_opcua_DeleteMonitoredItemsResponse,
1274 &ett_opcua_array_DeleteMonitoredItemsResponse,
1275 &ett_opcua_CreateSubscriptionRequest,
1276 &ett_opcua_array_CreateSubscriptionRequest,
1277 &ett_opcua_CreateSubscriptionResponse,
1278 &ett_opcua_array_CreateSubscriptionResponse,
1279 &ett_opcua_ModifySubscriptionRequest,
1280 &ett_opcua_array_ModifySubscriptionRequest,
1281 &ett_opcua_ModifySubscriptionResponse,
1282 &ett_opcua_array_ModifySubscriptionResponse,
1283 &ett_opcua_SetPublishingModeRequest,
1284 &ett_opcua_array_SetPublishingModeRequest,
1285 &ett_opcua_SetPublishingModeResponse,
1286 &ett_opcua_array_SetPublishingModeResponse,
1287 &ett_opcua_PublishRequest,
1288 &ett_opcua_array_PublishRequest,
1289 &ett_opcua_PublishResponse,
1290 &ett_opcua_array_PublishResponse,
1291 &ett_opcua_RepublishRequest,
1292 &ett_opcua_array_RepublishRequest,
1293 &ett_opcua_RepublishResponse,
1294 &ett_opcua_array_RepublishResponse,
1295 &ett_opcua_TransferSubscriptionsRequest,
1296 &ett_opcua_array_TransferSubscriptionsRequest,
1297 &ett_opcua_TransferSubscriptionsResponse,
1298 &ett_opcua_array_TransferSubscriptionsResponse,
1299 &ett_opcua_DeleteSubscriptionsRequest,
1300 &ett_opcua_array_DeleteSubscriptionsRequest,
1301 &ett_opcua_DeleteSubscriptionsResponse,
1302 &ett_opcua_array_DeleteSubscriptionsResponse,
1303 &ett_opcua_TestStackRequest,
1304 &ett_opcua_array_TestStackRequest,
1305 &ett_opcua_TestStackResponse,
1306 &ett_opcua_array_TestStackResponse,
1307 &ett_opcua_TestStackExRequest,
1308 &ett_opcua_array_TestStackExRequest,
1309 &ett_opcua_TestStackExResponse,
1310 &ett_opcua_array_TestStackExResponse,
1313 void registerServiceTypes(void)
1315 proto_register_subtree_array(ett, array_length(ett));