Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-mms.c
blob80301f289fefac434bf473f5008f80cd9597e2fe
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-mms.c */
4 /* asn2wrs.py -b -q -L -p mms -c ./mms.cnf -s ./packet-mms-template -D . -O ../.. mms.asn */
6 /* packet-mms_asn1.c
8 * Ronnie Sahlberg 2005
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include "config.h"
19 #include <epan/packet.h>
20 #include <epan/prefs.h>
21 #include <epan/asn1.h>
22 #include <epan/expert.h>
23 #include <epan/proto_data.h>
24 #include <epan/conversation.h>
25 #include <wsutil/array.h>
27 #include "packet-ber.h"
28 #include "packet-acse.h"
29 #include "packet-mms.h"
31 #define PNAME "MMS"
32 #define PSNAME "MMS"
33 #define PFNAME "mms"
35 void proto_register_mms(void);
36 void proto_reg_handoff_mms(void);
38 static bool use_iec61850_mapping = true;
40 /* Initialize the protocol and registered fields */
41 static int proto_mms;
43 /* Conversation */
44 static int hf_mms_response_in;
45 static int hf_mms_response_to;
46 static int hf_mms_response_time;
48 /* IEC 61850-8-1 filters */
49 static int hf_mms_iec61850_rptid;
50 static int hf_mms_iec61850_reported_optflds;
51 static int hf_mms_iec61850_seqnum;
52 static int hf_mms_iec61850_timeofentry;
53 static int hf_mms_iec61850_datset;
54 static int hf_mms_iec61850_bufovfl;
55 static int hf_mms_iec61850_confrev;
56 static int hf_mms_iec61850_inclusion_bitstring;
57 static int hf_mms_iec61850_ctlModel;
59 static int hf_mms_iec61850_QualityC0;
60 static int hf_mms_iec61850_Quality20;
61 static int hf_mms_iec61850_Quality10;
62 static int hf_mms_iec61850_Quality8;
63 static int hf_mms_iec61850_Quality4;
64 static int hf_mms_iec61850_Quality2;
65 static int hf_mms_iec61850_Quality1;
66 static int hf_mms_iec61850_Quality0080;
67 static int hf_mms_iec61850_Quality0040;
68 static int hf_mms_iec61850_Quality0020;
69 static int hf_mms_iec61850_Quality0010;
70 static int hf_mms_iec61850_Quality0008;
71 static int hf_mms_iec61850_quality_bitstring;
72 static int hf_mms_iec61850_timequality80;
73 static int hf_mms_iec61850_timequality40;
74 static int hf_mms_iec61850_timequality20;
75 static int hf_mms_iec61850_timequality1F;
76 static int hf_mms_iec61850_check_bitstring;
77 static int hf_mms_iec61850_check_b15;
78 static int hf_mms_iec61850_check_b14;
79 static int hf_mms_iec61850_check_b13_b0;
80 static int hf_mms_iec61850_orcategory;
81 static int hf_mms_iec61850_beh$stval;
82 static int hf_mms_iec61850_mod$stval;
83 static int hf_mms_iec61850_health$stval;
84 static int hf_mms_iec61850_ctlval;
85 static int hf_mms_iec61850_origin;
86 static int hf_mms_iec61850_origin_orcat;
87 static int hf_mms_iec61850_origin_orident;
88 static int hf_mms_iec61850_ctlNum;
89 static int hf_mms_iec61850_T;
90 static int hf_mms_iec61850_test;
92 static int hf_mms_confirmed_RequestPDU; /* Confirmed_RequestPDU */
93 static int hf_mms_confirmed_ResponsePDU; /* Confirmed_ResponsePDU */
94 static int hf_mms_confirmed_ErrorPDU; /* Confirmed_ErrorPDU */
95 static int hf_mms_unconfirmed_PDU; /* Unconfirmed_PDU */
96 static int hf_mms_rejectPDU; /* RejectPDU */
97 static int hf_mms_cancel_RequestPDU; /* Cancel_RequestPDU */
98 static int hf_mms_cancel_ResponsePDU; /* Cancel_ResponsePDU */
99 static int hf_mms_cancel_ErrorPDU; /* Cancel_ErrorPDU */
100 static int hf_mms_initiate_RequestPDU; /* Initiate_RequestPDU */
101 static int hf_mms_initiate_ResponsePDU; /* Initiate_ResponsePDU */
102 static int hf_mms_initiate_ErrorPDU; /* Initiate_ErrorPDU */
103 static int hf_mms_conclude_RequestPDU; /* Conclude_RequestPDU */
104 static int hf_mms_conclude_ResponsePDU; /* Conclude_ResponsePDU */
105 static int hf_mms_conclude_ErrorPDU; /* Conclude_ErrorPDU */
106 static int hf_mms_invokeID; /* Unsigned32 */
107 static int hf_mms_listOfModifier; /* SEQUENCE_OF_Modifier */
108 static int hf_mms_listOfModifier_item; /* Modifier */
109 static int hf_mms_confirmedServiceRequest; /* ConfirmedServiceRequest */
110 static int hf_mms_cs_request_detail; /* CS_Request_Detail */
111 static int hf_mms_unconfirmedService; /* UnconfirmedService */
112 static int hf_mms_confirmedServiceResponse; /* ConfirmedServiceResponse */
113 static int hf_mms_modifierPosition; /* Unsigned32 */
114 static int hf_mms_serviceError; /* ServiceError */
115 static int hf_mms_informationReport; /* InformationReport */
116 static int hf_mms_unsolicitedStatus; /* UnsolicitedStatus */
117 static int hf_mms_eventNotification; /* EventNotification */
118 static int hf_mms_attach_To_Event_Condition; /* AttachToEventCondition */
119 static int hf_mms_attach_To_Semaphore; /* AttachToSemaphore */
120 static int hf_mms_status; /* Status_Request */
121 static int hf_mms_getNameList; /* GetNameList_Request */
122 static int hf_mms_identify; /* Identify_Request */
123 static int hf_mms_rename; /* Rename_Request */
124 static int hf_mms_read; /* Read_Request */
125 static int hf_mms_write; /* Write_Request */
126 static int hf_mms_getVariableAccessAttributes; /* GetVariableAccessAttributes_Request */
127 static int hf_mms_defineNamedVariable; /* DefineNamedVariable_Request */
128 static int hf_mms_defineScatteredAccess; /* DefineScatteredAccess_Request */
129 static int hf_mms_getScatteredAccessAttributes; /* GetScatteredAccessAttributes_Request */
130 static int hf_mms_deleteVariableAccess; /* DeleteVariableAccess_Request */
131 static int hf_mms_defineNamedVariableList; /* DefineNamedVariableList_Request */
132 static int hf_mms_getNamedVariableListAttributes; /* GetNamedVariableListAttributes_Request */
133 static int hf_mms_deleteNamedVariableList; /* DeleteNamedVariableList_Request */
134 static int hf_mms_defineNamedType; /* DefineNamedType_Request */
135 static int hf_mms_getNamedTypeAttributes; /* GetNamedTypeAttributes_Request */
136 static int hf_mms_deleteNamedType; /* DeleteNamedType_Request */
137 static int hf_mms_input; /* Input_Request */
138 static int hf_mms_output; /* Output_Request */
139 static int hf_mms_takeControl; /* TakeControl_Request */
140 static int hf_mms_relinquishControl; /* RelinquishControl_Request */
141 static int hf_mms_defineSemaphore; /* DefineSemaphore_Request */
142 static int hf_mms_deleteSemaphore; /* DeleteSemaphore_Request */
143 static int hf_mms_reportSemaphoreStatus; /* ReportSemaphoreStatus_Request */
144 static int hf_mms_reportPoolSemaphoreStatus; /* ReportPoolSemaphoreStatus_Request */
145 static int hf_mms_reportSemaphoreEntryStatus; /* ReportSemaphoreEntryStatus_Request */
146 static int hf_mms_initiateDownloadSequence; /* InitiateDownloadSequence_Request */
147 static int hf_mms_downloadSegment; /* DownloadSegment_Request */
148 static int hf_mms_terminateDownloadSequence; /* TerminateDownloadSequence_Request */
149 static int hf_mms_initiateUploadSequence; /* InitiateUploadSequence_Request */
150 static int hf_mms_uploadSegment; /* UploadSegment_Request */
151 static int hf_mms_terminateUploadSequence; /* TerminateUploadSequence_Request */
152 static int hf_mms_requestDomainDownload; /* RequestDomainDownload_Request */
153 static int hf_mms_requestDomainUpload; /* RequestDomainUpload_Request */
154 static int hf_mms_loadDomainContent; /* LoadDomainContent_Request */
155 static int hf_mms_storeDomainContent; /* StoreDomainContent_Request */
156 static int hf_mms_deleteDomain; /* DeleteDomain_Request */
157 static int hf_mms_getDomainAttributes; /* GetDomainAttributes_Request */
158 static int hf_mms_createProgramInvocation; /* CreateProgramInvocation_Request */
159 static int hf_mms_deleteProgramInvocation; /* DeleteProgramInvocation_Request */
160 static int hf_mms_start; /* Start_Request */
161 static int hf_mms_stop; /* Stop_Request */
162 static int hf_mms_resume; /* Resume_Request */
163 static int hf_mms_reset; /* Reset_Request */
164 static int hf_mms_kill; /* Kill_Request */
165 static int hf_mms_getProgramInvocationAttributes; /* GetProgramInvocationAttributes_Request */
166 static int hf_mms_obtainFile; /* ObtainFile_Request */
167 static int hf_mms_defineEventCondition; /* DefineEventCondition_Request */
168 static int hf_mms_confirmedServiceRequest_deleteEventCondition; /* DeleteEventCondition_Request */
169 static int hf_mms_getEventConditionAttributes; /* GetEventConditionAttributes_Request */
170 static int hf_mms_reportEventConditionStatus; /* ReportEventConditionStatus_Request */
171 static int hf_mms_alterEventConditionMonitoring; /* AlterEventConditionMonitoring_Request */
172 static int hf_mms_triggerEvent; /* TriggerEvent_Request */
173 static int hf_mms_defineEventAction; /* DefineEventAction_Request */
174 static int hf_mms_confirmedServiceRequest_deleteEventAction; /* DeleteEventAction_Request */
175 static int hf_mms_getEventActionAttributes; /* GetEventActionAttributes_Request */
176 static int hf_mms_reportEventActionStatus; /* ReportEventActionStatus_Request */
177 static int hf_mms_defineEventEnrollment; /* DefineEventEnrollment_Request */
178 static int hf_mms_confirmedServiceRequest_deleteEventEnrollment; /* DeleteEventEnrollment_Request */
179 static int hf_mms_alterEventEnrollment; /* AlterEventEnrollment_Request */
180 static int hf_mms_reportEventEnrollmentStatus; /* ReportEventEnrollmentStatus_Request */
181 static int hf_mms_getEventEnrollmentAttributes; /* GetEventEnrollmentAttributes_Request */
182 static int hf_mms_acknowledgeEventNotification; /* AcknowledgeEventNotification_Request */
183 static int hf_mms_getAlarmSummary; /* GetAlarmSummary_Request */
184 static int hf_mms_getAlarmEnrollmentSummary; /* GetAlarmEnrollmentSummary_Request */
185 static int hf_mms_readJournal; /* ReadJournal_Request */
186 static int hf_mms_writeJournal; /* WriteJournal_Request */
187 static int hf_mms_initializeJournal; /* InitializeJournal_Request */
188 static int hf_mms_reportJournalStatus; /* ReportJournalStatus_Request */
189 static int hf_mms_createJournal; /* CreateJournal_Request */
190 static int hf_mms_deleteJournal; /* DeleteJournal_Request */
191 static int hf_mms_getCapabilityList; /* GetCapabilityList_Request */
192 static int hf_mms_fileOpen; /* FileOpen_Request */
193 static int hf_mms_fileRead; /* FileRead_Request */
194 static int hf_mms_fileClose; /* FileClose_Request */
195 static int hf_mms_fileRename; /* FileRename_Request */
196 static int hf_mms_fileDelete; /* FileDelete_Request */
197 static int hf_mms_fileDirectory; /* FileDirectory_Request */
198 static int hf_mms_foo; /* INTEGER */
199 static int hf_mms_status_01; /* Status_Response */
200 static int hf_mms_getNameList_01; /* GetNameList_Response */
201 static int hf_mms_identify_01; /* Identify_Response */
202 static int hf_mms_rename_01; /* Rename_Response */
203 static int hf_mms_read_01; /* Read_Response */
204 static int hf_mms_write_01; /* Write_Response */
205 static int hf_mms_getVariableAccessAttributes_01; /* GetVariableAccessAttributes_Response */
206 static int hf_mms_defineNamedVariable_01; /* DefineNamedVariable_Response */
207 static int hf_mms_defineScatteredAccess_01; /* DefineScatteredAccess_Response */
208 static int hf_mms_getScatteredAccessAttributes_01; /* GetScatteredAccessAttributes_Response */
209 static int hf_mms_deleteVariableAccess_01; /* DeleteVariableAccess_Response */
210 static int hf_mms_defineNamedVariableList_01; /* DefineNamedVariableList_Response */
211 static int hf_mms_getNamedVariableListAttributes_01; /* GetNamedVariableListAttributes_Response */
212 static int hf_mms_deleteNamedVariableList_01; /* DeleteNamedVariableList_Response */
213 static int hf_mms_defineNamedType_01; /* DefineNamedType_Response */
214 static int hf_mms_getNamedTypeAttributes_01; /* GetNamedTypeAttributes_Response */
215 static int hf_mms_deleteNamedType_01; /* DeleteNamedType_Response */
216 static int hf_mms_input_01; /* Input_Response */
217 static int hf_mms_output_01; /* Output_Response */
218 static int hf_mms_takeControl_01; /* TakeControl_Response */
219 static int hf_mms_relinquishControl_01; /* RelinquishControl_Response */
220 static int hf_mms_defineSemaphore_01; /* DefineSemaphore_Response */
221 static int hf_mms_deleteSemaphore_01; /* DeleteSemaphore_Response */
222 static int hf_mms_reportSemaphoreStatus_01; /* ReportSemaphoreStatus_Response */
223 static int hf_mms_reportPoolSemaphoreStatus_01; /* ReportPoolSemaphoreStatus_Response */
224 static int hf_mms_reportSemaphoreEntryStatus_01; /* ReportSemaphoreEntryStatus_Response */
225 static int hf_mms_initiateDownloadSequence_01; /* InitiateDownloadSequence_Response */
226 static int hf_mms_downloadSegment_01; /* DownloadSegment_Response */
227 static int hf_mms_terminateDownloadSequence_01; /* TerminateDownloadSequence_Response */
228 static int hf_mms_initiateUploadSequence_01; /* InitiateUploadSequence_Response */
229 static int hf_mms_uploadSegment_01; /* UploadSegment_Response */
230 static int hf_mms_terminateUploadSequence_01; /* TerminateUploadSequence_Response */
231 static int hf_mms_requestDomainDownLoad; /* RequestDomainDownload_Response */
232 static int hf_mms_requestDomainUpload_01; /* RequestDomainUpload_Response */
233 static int hf_mms_loadDomainContent_01; /* LoadDomainContent_Response */
234 static int hf_mms_storeDomainContent_01; /* StoreDomainContent_Response */
235 static int hf_mms_deleteDomain_01; /* DeleteDomain_Response */
236 static int hf_mms_getDomainAttributes_01; /* GetDomainAttributes_Response */
237 static int hf_mms_createProgramInvocation_01; /* CreateProgramInvocation_Response */
238 static int hf_mms_deleteProgramInvocation_01; /* DeleteProgramInvocation_Response */
239 static int hf_mms_start_01; /* Start_Response */
240 static int hf_mms_stop_01; /* Stop_Response */
241 static int hf_mms_resume_01; /* Resume_Response */
242 static int hf_mms_reset_01; /* Reset_Response */
243 static int hf_mms_kill_01; /* Kill_Response */
244 static int hf_mms_getProgramInvocationAttributes_01; /* GetProgramInvocationAttributes_Response */
245 static int hf_mms_obtainFile_01; /* ObtainFile_Response */
246 static int hf_mms_fileOpen_01; /* FileOpen_Response */
247 static int hf_mms_defineEventCondition_01; /* DefineEventCondition_Response */
248 static int hf_mms_confirmedServiceResponse_deleteEventCondition; /* DeleteEventCondition_Response */
249 static int hf_mms_getEventConditionAttributes_01; /* GetEventConditionAttributes_Response */
250 static int hf_mms_reportEventConditionStatus_01; /* ReportEventConditionStatus_Response */
251 static int hf_mms_alterEventConditionMonitoring_01; /* AlterEventConditionMonitoring_Response */
252 static int hf_mms_triggerEvent_01; /* TriggerEvent_Response */
253 static int hf_mms_defineEventAction_01; /* DefineEventAction_Response */
254 static int hf_mms_confirmedServiceRequest_deleteEventAction_01; /* DeleteEventAction_Response */
255 static int hf_mms_getEventActionAttributes_01; /* GetEventActionAttributes_Response */
256 static int hf_mms_reportActionStatus; /* ReportEventActionStatus_Response */
257 static int hf_mms_defineEventEnrollment_01; /* DefineEventEnrollment_Response */
258 static int hf_mms_confirmedServiceResponse_deleteEventEnrollment; /* DeleteEventEnrollment_Response */
259 static int hf_mms_alterEventEnrollment_01; /* AlterEventEnrollment_Response */
260 static int hf_mms_reportEventEnrollmentStatus_01; /* ReportEventEnrollmentStatus_Response */
261 static int hf_mms_getEventEnrollmentAttributes_01; /* GetEventEnrollmentAttributes_Response */
262 static int hf_mms_acknowledgeEventNotification_01; /* AcknowledgeEventNotification_Response */
263 static int hf_mms_getAlarmSummary_01; /* GetAlarmSummary_Response */
264 static int hf_mms_getAlarmEnrollmentSummary_01; /* GetAlarmEnrollmentSummary_Response */
265 static int hf_mms_readJournal_01; /* ReadJournal_Response */
266 static int hf_mms_writeJournal_01; /* WriteJournal_Response */
267 static int hf_mms_initializeJournal_01; /* InitializeJournal_Response */
268 static int hf_mms_reportJournalStatus_01; /* ReportJournalStatus_Response */
269 static int hf_mms_createJournal_01; /* CreateJournal_Response */
270 static int hf_mms_deleteJournal_01; /* DeleteJournal_Response */
271 static int hf_mms_getCapabilityList_01; /* GetCapabilityList_Response */
272 static int hf_mms_fileRead_01; /* FileRead_Response */
273 static int hf_mms_fileClose_01; /* FileClose_Response */
274 static int hf_mms_fileRename_01; /* FileRename_Response */
275 static int hf_mms_fileDelete_01; /* FileDelete_Response */
276 static int hf_mms_fileDirectory_01; /* FileDirectory_Response */
277 static int hf_mms_FileName_item; /* GraphicString */
278 static int hf_mms_vmd_specific; /* Identifier */
279 static int hf_mms_domain_specific; /* T_domain_specific */
280 static int hf_mms_domainId; /* Identifier */
281 static int hf_mms_objectName_domain_specific_itemId; /* ObjectName_domain_specific_itemid */
282 static int hf_mms_aa_specific; /* Identifier */
283 static int hf_mms_ap_title; /* T_ap_title */
284 static int hf_mms_ap_invocation_id; /* T_ap_invocation_id */
285 static int hf_mms_ae_qualifier; /* T_ae_qualifier */
286 static int hf_mms_ae_invocation_id; /* T_ae_invocation_id */
287 static int hf_mms_localDetailCalling; /* Integer32 */
288 static int hf_mms_proposedMaxServOutstandingCalling; /* Integer16 */
289 static int hf_mms_proposedMaxServOutstandingCalled; /* Integer16 */
290 static int hf_mms_proposedDataStructureNestingLevel; /* Integer8 */
291 static int hf_mms_mmsInitRequestDetail; /* InitRequestDetail */
292 static int hf_mms_proposedVersionNumber; /* Integer16 */
293 static int hf_mms_proposedParameterCBB; /* ParameterSupportOptions */
294 static int hf_mms_servicesSupportedCalling; /* ServiceSupportOptions */
295 static int hf_mms_localDetailCalled; /* Integer32 */
296 static int hf_mms_negociatedMaxServOutstandingCalling; /* Integer16 */
297 static int hf_mms_negociatedMaxServOutstandingCalled; /* Integer16 */
298 static int hf_mms_negociatedDataStructureNestingLevel; /* Integer8 */
299 static int hf_mms_mmsInitResponseDetail; /* InitResponseDetail */
300 static int hf_mms_negociatedVersionNumber; /* Integer16 */
301 static int hf_mms_negociatedParameterCBB; /* ParameterSupportOptions */
302 static int hf_mms_servicesSupportedCalled; /* ServiceSupportOptions */
303 static int hf_mms_originalInvokeID; /* Unsigned32 */
304 static int hf_mms_errorClass; /* T_errorClass */
305 static int hf_mms_vmd_state; /* T_vmd_state */
306 static int hf_mms_application_reference; /* T_application_reference */
307 static int hf_mms_definition; /* T_definition */
308 static int hf_mms_resource; /* T_resource */
309 static int hf_mms_service; /* T_service */
310 static int hf_mms_service_preempt; /* T_service_preempt */
311 static int hf_mms_time_resolution; /* T_time_resolution */
312 static int hf_mms_access; /* T_access */
313 static int hf_mms_initiate; /* T_initiate */
314 static int hf_mms_conclude; /* T_conclude */
315 static int hf_mms_cancel; /* T_cancel */
316 static int hf_mms_file; /* T_file */
317 static int hf_mms_others; /* INTEGER */
318 static int hf_mms_additionalCode; /* INTEGER */
319 static int hf_mms_additionalDescription; /* VisibleString */
320 static int hf_mms_serviceSpecificInformation; /* T_serviceSpecificInformation */
321 static int hf_mms_obtainFile_02; /* ObtainFile_Error */
322 static int hf_mms_start_02; /* Start_Error */
323 static int hf_mms_stop_02; /* Stop_Error */
324 static int hf_mms_resume_02; /* Resume_Error */
325 static int hf_mms_reset_02; /* Reset_Error */
326 static int hf_mms_deleteVariableAccess_02; /* DeleteVariableAccess_Error */
327 static int hf_mms_deleteNamedVariableList_02; /* DeleteNamedVariableList_Error */
328 static int hf_mms_deleteNamedType_02; /* DeleteNamedType_Error */
329 static int hf_mms_defineEventEnrollment_Error; /* DefineEventEnrollment_Error */
330 static int hf_mms_fileRename_02; /* FileRename_Error */
331 static int hf_mms_additionalService; /* AdditionalService_Error */
332 static int hf_mms_changeAccessControl; /* ChangeAccessControl_Error */
333 static int hf_mms_defineEcl; /* DefineEventConditionList_Error */
334 static int hf_mms_addECLReference; /* AddEventConditionListReference_Error */
335 static int hf_mms_removeECLReference; /* RemoveEventConditionListReference_Error */
336 static int hf_mms_initiateUC; /* InitiateUnitControl_Error */
337 static int hf_mms_startUC; /* StartUnitControl_Error */
338 static int hf_mms_stopUC; /* StopUnitControl_Error */
339 static int hf_mms_deleteUC; /* DeleteUnitControl_Error */
340 static int hf_mms_loadUCFromFile; /* LoadUnitControlFromFile_Error */
341 static int hf_mms_eventCondition; /* ObjectName */
342 static int hf_mms_eventConditionList; /* ObjectName */
343 static int hf_mms_domain; /* Identifier */
344 static int hf_mms_programInvocation; /* Identifier */
345 static int hf_mms_programInvocationName; /* Identifier */
346 static int hf_mms_programInvocationState; /* ProgramInvocationState */
347 static int hf_mms_none; /* NULL */
348 static int hf_mms_rejectReason; /* T_rejectReason */
349 static int hf_mms_confirmed_requestPDU; /* T_confirmed_requestPDU */
350 static int hf_mms_confirmed_responsePDU; /* T_confirmed_responsePDU */
351 static int hf_mms_confirmed_errorPDU; /* T_confirmed_errorPDU */
352 static int hf_mms_unconfirmedPDU; /* T_unconfirmedPDU */
353 static int hf_mms_pdu_error; /* T_pdu_error */
354 static int hf_mms_cancel_requestPDU; /* T_cancel_requestPDU */
355 static int hf_mms_cancel_responsePDU; /* T_cancel_responsePDU */
356 static int hf_mms_cancel_errorPDU; /* T_cancel_errorPDU */
357 static int hf_mms_conclude_requestPDU; /* T_conclude_requestPDU */
358 static int hf_mms_conclude_responsePDU; /* T_conclude_responsePDU */
359 static int hf_mms_conclude_errorPDU; /* T_conclude_errorPDU */
360 static int hf_mms_vmdLogicalStatus; /* T_vmdLogicalStatus */
361 static int hf_mms_vmdPhysicalStatus; /* T_vmdPhysicalStatus */
362 static int hf_mms_localDetail; /* BIT_STRING_SIZE_0_128 */
363 static int hf_mms_vmdSpecific; /* NULL */
364 static int hf_mms_domainSpecific; /* Identifier */
365 static int hf_mms_aaSpecific; /* NULL */
366 static int hf_mms_extendedObjectClass; /* T_extendedObjectClass */
367 static int hf_mms_objectClass; /* ObjectClass */
368 static int hf_mms_objectScope; /* ObjectScope */
369 static int hf_mms_getNameList_Request_continueAfter; /* Identifier */
370 static int hf_mms_listOfIdentifier; /* SEQUENCE_OF_Identifier */
371 static int hf_mms_listOfIdentifier_item; /* Identifier */
372 static int hf_mms_moreFollows; /* BOOLEAN */
373 static int hf_mms_vendorName; /* VisibleString */
374 static int hf_mms_modelName; /* VisibleString */
375 static int hf_mms_revision; /* VisibleString */
376 static int hf_mms_listOfAbstractSyntaxes; /* T_listOfAbstractSyntaxes */
377 static int hf_mms_listOfAbstractSyntaxes_item; /* OBJECT_IDENTIFIER */
378 static int hf_mms_extendedObjectClass_01; /* T_extendedObjectClass_01 */
379 static int hf_mms_objectClass_01; /* T_objectClass */
380 static int hf_mms_currentName; /* ObjectName */
381 static int hf_mms_newIdentifier; /* Identifier */
382 static int hf_mms_getCapabilityList_Request_continueAfter; /* VisibleString */
383 static int hf_mms_listOfCapabilities; /* T_listOfCapabilities */
384 static int hf_mms_listOfCapabilities_item; /* VisibleString */
385 static int hf_mms_domainName; /* Identifier */
386 static int hf_mms_listOfCapabilities_01; /* T_listOfCapabilities_01 */
387 static int hf_mms_sharable; /* BOOLEAN */
388 static int hf_mms_loadData; /* T_loadData */
389 static int hf_mms_non_coded; /* OCTET_STRING */
390 static int hf_mms_coded; /* EXTERNALt */
391 static int hf_mms_discard; /* ServiceError */
392 static int hf_mms_ulsmID; /* Integer32 */
393 static int hf_mms_listOfCapabilities_02; /* T_listOfCapabilities_02 */
394 static int hf_mms_loadData_01; /* T_loadData_01 */
395 static int hf_mms_listOfCapabilities_03; /* T_listOfCapabilities_03 */
396 static int hf_mms_fileName; /* FileName */
397 static int hf_mms_listOfCapabilities_04; /* T_listOfCapabilities_04 */
398 static int hf_mms_thirdParty; /* ApplicationReference */
399 static int hf_mms_filenName; /* FileName */
400 static int hf_mms_listOfCapabilities_05; /* T_listOfCapabilities_05 */
401 static int hf_mms_getDomainAttributes_Response_state; /* DomainState */
402 static int hf_mms_mmsDeletable; /* BOOLEAN */
403 static int hf_mms_listOfProgramInvocations; /* SEQUENCE_OF_Identifier */
404 static int hf_mms_listOfProgramInvocations_item; /* Identifier */
405 static int hf_mms_uploadInProgress; /* Integer8 */
406 static int hf_mms_listOfDomainName; /* SEQUENCE_OF_Identifier */
407 static int hf_mms_listOfDomainName_item; /* Identifier */
408 static int hf_mms_reusable; /* BOOLEAN */
409 static int hf_mms_monitorType; /* BOOLEAN */
410 static int hf_mms_executionArgument; /* T_executionArgument */
411 static int hf_mms_simpleString; /* VisibleString */
412 static int hf_mms_encodedString; /* EXTERNALt */
413 static int hf_mms_executionArgument_01; /* T_executionArgument_01 */
414 static int hf_mms_getProgramInvocationAttributes_Response_state; /* ProgramInvocationState */
415 static int hf_mms_listOfDomainNames; /* SEQUENCE_OF_Identifier */
416 static int hf_mms_listOfDomainNames_item; /* Identifier */
417 static int hf_mms_monitor; /* BOOLEAN */
418 static int hf_mms_startArgument; /* VisibleString */
419 static int hf_mms_executionArgument_02; /* T_executionArgument_02 */
420 static int hf_mms_typeName; /* ObjectName */
421 static int hf_mms_array; /* T_array */
422 static int hf_mms_packed; /* BOOLEAN */
423 static int hf_mms_numberOfElements; /* Unsigned32 */
424 static int hf_mms_elementType; /* TypeSpecification */
425 static int hf_mms_structure; /* T_structure */
426 static int hf_mms_components; /* T_components */
427 static int hf_mms_components_item; /* T_components_item */
428 static int hf_mms_componentName; /* Identifier */
429 static int hf_mms_componentType; /* TypeSpecification */
430 static int hf_mms_boolean; /* NULL */
431 static int hf_mms_typeSpecification_bit_string; /* Integer32 */
432 static int hf_mms_integer; /* Unsigned8 */
433 static int hf_mms_unsigned; /* Unsigned8 */
434 static int hf_mms_typeSpecification_octet_string; /* Integer32 */
435 static int hf_mms_typeSpecification_visible_string; /* Integer32 */
436 static int hf_mms_generalized_time; /* NULL */
437 static int hf_mms_typeSpecification_binary_time; /* BOOLEAN */
438 static int hf_mms_bcd; /* Unsigned8 */
439 static int hf_mms_objId; /* NULL */
440 static int hf_mms_AlternateAccess_item; /* AlternateAccess_item */
441 static int hf_mms_unnamed; /* AlternateAccessSelection */
442 static int hf_mms_named; /* T_named */
443 static int hf_mms_accesst; /* AlternateAccessSelection */
444 static int hf_mms_selectAlternateAccess; /* T_selectAlternateAccess */
445 static int hf_mms_accessSelection; /* T_accessSelection */
446 static int hf_mms_component; /* Identifier */
447 static int hf_mms_index; /* Unsigned32 */
448 static int hf_mms_indexRange; /* T_indexRange */
449 static int hf_mms_lowIndex; /* Unsigned32 */
450 static int hf_mms_allElements; /* NULL */
451 static int hf_mms_alternateAccess; /* AlternateAccess */
452 static int hf_mms_selectAccess; /* T_selectAccess */
453 static int hf_mms_indexRange_01; /* T_indexRange_01 */
454 static int hf_mms_nmberOfElements; /* Unsigned32 */
455 static int hf_mms_specificationWithResult; /* BOOLEAN */
456 static int hf_mms_variableAccessSpecificatn; /* VariableAccessSpecification */
457 static int hf_mms_listOfAccessResult; /* SEQUENCE_OF_AccessResult */
458 static int hf_mms_listOfAccessResult_item; /* AccessResult */
459 static int hf_mms_listOfData; /* T_listOfData */
460 static int hf_mms_listOfData_item; /* Data */
461 static int hf_mms_Write_Response_item; /* Write_Response_item */
462 static int hf_mms_failure; /* DataAccessError */
463 static int hf_mms_success; /* NULL */
464 static int hf_mms_variableAccessSpecification; /* VariableAccessSpecification */
465 static int hf_mms_listOfAccessResult_01; /* T_listOfAccessResult */
466 static int hf_mms_name; /* ObjectName */
467 static int hf_mms_address; /* Address */
468 static int hf_mms_typeSpecification; /* TypeSpecification */
469 static int hf_mms_variableName; /* ObjectName */
470 static int hf_mms_scatteredAccessName; /* ObjectName */
471 static int hf_mms_scatteredAccessDescription; /* ScatteredAccessDescription */
472 static int hf_mms_scopeOfDelete; /* T_scopeOfDelete */
473 static int hf_mms_listOfName; /* SEQUENCE_OF_ObjectName */
474 static int hf_mms_listOfName_item; /* ObjectName */
475 static int hf_mms_numberMatched; /* Unsigned32 */
476 static int hf_mms_numberDeleted; /* Unsigned32 */
477 static int hf_mms_variableListName; /* ObjectName */
478 static int hf_mms_listOfVariable; /* T_listOfVariable */
479 static int hf_mms_listOfVariable_item; /* T_listOfVariable_item */
480 static int hf_mms_variableSpecification; /* VariableSpecification */
481 static int hf_mms_listOfVariable_01; /* T_listOfVariable_01 */
482 static int hf_mms_listOfVariable_item_01; /* T_listOfVariable_item_01 */
483 static int hf_mms_scopeOfDelete_01; /* T_scopeOfDelete_01 */
484 static int hf_mms_listOfVariableListName; /* SEQUENCE_OF_ObjectName */
485 static int hf_mms_listOfVariableListName_item; /* ObjectName */
486 static int hf_mms_scopeOfDelete_02; /* T_scopeOfDelete_02 */
487 static int hf_mms_listOfTypeName; /* SEQUENCE_OF_ObjectName */
488 static int hf_mms_listOfTypeName_item; /* ObjectName */
489 static int hf_mms_success_01; /* Data */
490 static int hf_mms_array_01; /* SEQUENCE_OF_Data */
491 static int hf_mms_array_item; /* Data */
492 static int hf_mms_structure_01; /* T_structure_01 */
493 static int hf_mms_structure_item; /* Data */
494 static int hf_mms_boolean_01; /* T_boolean */
495 static int hf_mms_data_bit_string; /* T_data_bit_string */
496 static int hf_mms_integer_01; /* T_integer */
497 static int hf_mms_unsigned_01; /* T_unsigned */
498 static int hf_mms_floating_point; /* FloatingPoint */
499 static int hf_mms_data_octet_string; /* T_data_octet_string */
500 static int hf_mms_data_visible_string; /* T_data_visible_string */
501 static int hf_mms_data_binary_time; /* T_data_binary_time */
502 static int hf_mms_bcd_01; /* INTEGER */
503 static int hf_mms_booleanArray; /* BIT_STRING */
504 static int hf_mms_objId_01; /* OBJECT_IDENTIFIER */
505 static int hf_mms_mMSString; /* MMSString */
506 static int hf_mms_utc_time; /* UtcTime */
507 static int hf_mms_listOfVariable_02; /* T_listOfVariable_02 */
508 static int hf_mms_listOfVariable_item_02; /* T_listOfVariable_item_02 */
509 static int hf_mms_ScatteredAccessDescription_item; /* ScatteredAccessDescription_item */
510 static int hf_mms_variableDescription; /* T_variableDescription */
511 static int hf_mms_invalidated; /* NULL */
512 static int hf_mms_numericAddress; /* Unsigned32 */
513 static int hf_mms_symbolicAddress; /* VisibleString */
514 static int hf_mms_unconstrainedAddress; /* OCTET_STRING */
515 static int hf_mms_semaphoreName; /* ObjectName */
516 static int hf_mms_namedToken; /* Identifier */
517 static int hf_mms_priority; /* Priority */
518 static int hf_mms_acceptableDelay; /* Unsigned32 */
519 static int hf_mms_controlTimeOut; /* Unsigned32 */
520 static int hf_mms_abortOnTimeOut; /* BOOLEAN */
521 static int hf_mms_relinquishIfConnectionLost; /* BOOLEAN */
522 static int hf_mms_applicationToPreempt; /* ApplicationReference */
523 static int hf_mms_noResult; /* NULL */
524 static int hf_mms_numbersOfTokens; /* Unsigned16 */
525 static int hf_mms_class; /* T_class */
526 static int hf_mms_numberOfTokens; /* Unsigned16 */
527 static int hf_mms_numberOfOwnedTokens; /* Unsigned16 */
528 static int hf_mms_numberOfHungTokens; /* Unsigned16 */
529 static int hf_mms_nameToStartAfter; /* Identifier */
530 static int hf_mms_listOfNamedTokens; /* T_listOfNamedTokens */
531 static int hf_mms_listOfNamedTokens_item; /* T_listOfNamedTokens_item */
532 static int hf_mms_freeNamedToken; /* Identifier */
533 static int hf_mms_ownedNamedToken; /* Identifier */
534 static int hf_mms_hungNamedToken; /* Identifier */
535 static int hf_mms_reportSemaphoreEntryStatus_Request_state; /* T_reportSemaphoreEntryStatus_Request_state */
536 static int hf_mms_entryIdToStartAfter; /* OCTET_STRING */
537 static int hf_mms_listOfSemaphoreEntry; /* SEQUENCE_OF_SemaphoreEntry */
538 static int hf_mms_listOfSemaphoreEntry_item; /* SemaphoreEntry */
539 static int hf_mms_entryId; /* OCTET_STRING */
540 static int hf_mms_entryClass; /* T_entryClass */
541 static int hf_mms_applicationReference; /* ApplicationReference */
542 static int hf_mms_remainingTimeOut; /* Unsigned32 */
543 static int hf_mms_operatorStationName; /* Identifier */
544 static int hf_mms_echo; /* BOOLEAN */
545 static int hf_mms_listOfPromptData; /* T_listOfPromptData */
546 static int hf_mms_listOfPromptData_item; /* VisibleString */
547 static int hf_mms_inputTimeOut; /* Unsigned32 */
548 static int hf_mms_listOfOutputData; /* T_listOfOutputData */
549 static int hf_mms_listOfOutputData_item; /* VisibleString */
550 static int hf_mms_eventConditionName; /* ObjectName */
551 static int hf_mms_class_01; /* EC_Class */
552 static int hf_mms_prio_rity; /* Priority */
553 static int hf_mms_severity; /* Unsigned8 */
554 static int hf_mms_alarmSummaryReports; /* BOOLEAN */
555 static int hf_mms_monitoredVariable; /* VariableSpecification */
556 static int hf_mms_evaluationInterval; /* Unsigned32 */
557 static int hf_mms_specific; /* SEQUENCE_OF_ObjectName */
558 static int hf_mms_specific_item; /* ObjectName */
559 static int hf_mms_aa_specific_01; /* NULL */
560 static int hf_mms_vmd; /* NULL */
561 static int hf_mms_monitoredVariable_01; /* T_monitoredVariable */
562 static int hf_mms_variableReference; /* VariableSpecification */
563 static int hf_mms_undefined; /* NULL */
564 static int hf_mms_currentState; /* EC_State */
565 static int hf_mms_numberOfEventEnrollments; /* Unsigned32 */
566 static int hf_mms_enabled; /* BOOLEAN */
567 static int hf_mms_timeOfLastTransitionToActive; /* EventTime */
568 static int hf_mms_timeOfLastTransitionToIdle; /* EventTime */
569 static int hf_mms_eventActionName; /* ObjectName */
570 static int hf_mms_eventEnrollmentName; /* ObjectName */
571 static int hf_mms_eventConditionTransition; /* Transitions */
572 static int hf_mms_alarmAcknowledgementRule; /* AlarmAckRule */
573 static int hf_mms_clientApplication; /* ApplicationReference */
574 static int hf_mms_ec; /* ObjectName */
575 static int hf_mms_ea; /* ObjectName */
576 static int hf_mms_scopeOfRequest; /* T_scopeOfRequest */
577 static int hf_mms_eventEnrollmentNames; /* SEQUENCE_OF_ObjectName */
578 static int hf_mms_eventEnrollmentNames_item; /* ObjectName */
579 static int hf_mms_getEventEnrollmentAttributes_Request_continueAfter; /* ObjectName */
580 static int hf_mms_eventConditionName_01; /* T_eventConditionName */
581 static int hf_mms_eventActionName_01; /* T_eventActionName */
582 static int hf_mms_eventAction; /* ObjectName */
583 static int hf_mms_enrollmentClass; /* EE_Class */
584 static int hf_mms_duration; /* EE_Duration */
585 static int hf_mms_remainingAcceptableDelay; /* Unsigned32 */
586 static int hf_mms_listOfEventEnrollment; /* SEQUENCE_OF_EventEnrollment */
587 static int hf_mms_listOfEventEnrollment_item; /* EventEnrollment */
588 static int hf_mms_eventConditionTransitions; /* Transitions */
589 static int hf_mms_notificationLost; /* BOOLEAN */
590 static int hf_mms_alarmAcknowledgmentRule; /* AlarmAckRule */
591 static int hf_mms_currentState_01; /* EE_State */
592 static int hf_mms_currentState_02; /* T_currentState */
593 static int hf_mms_alterEventEnrollment_Response_currentState_state; /* EE_State */
594 static int hf_mms_transitionTime; /* EventTime */
595 static int hf_mms_acknowledgedState; /* EC_State */
596 static int hf_mms_timeOfAcknowledgedTransition; /* EventTime */
597 static int hf_mms_enrollmentsOnly; /* BOOLEAN */
598 static int hf_mms_activeAlarmsOnly; /* BOOLEAN */
599 static int hf_mms_acknowledgmentFilter; /* T_acknowledgmentFilter */
600 static int hf_mms_severityFilter; /* T_severityFilter */
601 static int hf_mms_mostSevere; /* Unsigned8 */
602 static int hf_mms_leastSevere; /* Unsigned8 */
603 static int hf_mms_continueAfter; /* ObjectName */
604 static int hf_mms_listOfAlarmSummary; /* SEQUENCE_OF_AlarmSummary */
605 static int hf_mms_listOfAlarmSummary_item; /* AlarmSummary */
606 static int hf_mms_unacknowledgedState; /* T_unacknowledgedState */
607 static int hf_mms_acknowledgmentFilter_01; /* T_acknowledgmentFilter_01 */
608 static int hf_mms_severityFilter_01; /* T_severityFilter_01 */
609 static int hf_mms_getAlarmEnrollmentSummary_Request_continueAfter; /* ObjectName */
610 static int hf_mms_listOfAlarmEnrollmentSummary; /* SEQUENCE_OF_AlarmEnrollmentSummary */
611 static int hf_mms_listOfAlarmEnrollmentSummary_item; /* AlarmEnrollmentSummary */
612 static int hf_mms_enrollementState; /* EE_State */
613 static int hf_mms_timeActiveAcknowledged; /* EventTime */
614 static int hf_mms_timeIdleAcknowledged; /* EventTime */
615 static int hf_mms_eventConditionName_02; /* T_eventConditionName_01 */
616 static int hf_mms_actionResult; /* T_actionResult */
617 static int hf_mms_eventActioName; /* ObjectName */
618 static int hf_mms_eventActionResult; /* T_eventActionResult */
619 static int hf_mms_success_02; /* ConfirmedServiceResponse */
620 static int hf_mms_failure_01; /* ServiceError */
621 static int hf_mms_causingTransitions; /* Transitions */
622 static int hf_mms_timeOfDayT; /* TimeOfDay */
623 static int hf_mms_timeSequenceIdentifier; /* Unsigned32 */
624 static int hf_mms_journalName; /* ObjectName */
625 static int hf_mms_rangeStartSpecification; /* T_rangeStartSpecification */
626 static int hf_mms_startingTime; /* TimeOfDay */
627 static int hf_mms_startingEntry; /* OCTET_STRING */
628 static int hf_mms_rangeStopSpecification; /* T_rangeStopSpecification */
629 static int hf_mms_endingTime; /* TimeOfDay */
630 static int hf_mms_numberOfEntries; /* Integer32 */
631 static int hf_mms_listOfVariables; /* T_listOfVariables */
632 static int hf_mms_listOfVariables_item; /* VisibleString */
633 static int hf_mms_entryToStartAfter; /* T_entryToStartAfter */
634 static int hf_mms_timeSpecification; /* TimeOfDay */
635 static int hf_mms_entrySpecification; /* OCTET_STRING */
636 static int hf_mms_listOfJournalEntry; /* SEQUENCE_OF_JournalEntry */
637 static int hf_mms_listOfJournalEntry_item; /* JournalEntry */
638 static int hf_mms_entryIdentifier; /* OCTET_STRING */
639 static int hf_mms_originatingApplication; /* ApplicationReference */
640 static int hf_mms_entryContent; /* EntryContent */
641 static int hf_mms_listOfJournalEntry_01; /* SEQUENCE_OF_EntryContent */
642 static int hf_mms_listOfJournalEntry_item_01; /* EntryContent */
643 static int hf_mms_limitSpecification; /* T_limitSpecification */
644 static int hf_mms_limitingTime; /* TimeOfDay */
645 static int hf_mms_limitingEntry; /* OCTET_STRING */
646 static int hf_mms_currentEntries; /* Unsigned32 */
647 static int hf_mms_occurenceTime; /* TimeOfDay */
648 static int hf_mms_additionalDetail; /* JOU_Additional_Detail */
649 static int hf_mms_entryForm; /* T_entryForm */
650 static int hf_mms_data; /* T_data */
651 static int hf_mms_event; /* T_event */
652 static int hf_mms_listOfVariables_01; /* T_listOfVariables_01 */
653 static int hf_mms_listOfVariables_item_01; /* T_listOfVariables_item */
654 static int hf_mms_variableTag; /* VisibleString */
655 static int hf_mms_valueSpecification; /* Data */
656 static int hf_mms_annotation; /* VisibleString */
657 static int hf_mms_sourceFileServer; /* ApplicationReference */
658 static int hf_mms_sourceFile; /* FileName */
659 static int hf_mms_destinationFile; /* FileName */
660 static int hf_mms_initialPosition; /* Unsigned32 */
661 static int hf_mms_frsmID; /* Integer32 */
662 static int hf_mms_fileAttributes; /* FileAttributes */
663 static int hf_mms_fileData; /* OCTET_STRING */
664 static int hf_mms_currentFileName; /* FileName */
665 static int hf_mms_newFileName; /* FileName */
666 static int hf_mms_fileSpecification; /* FileName */
667 static int hf_mms_fileDirectory_Request_continueAfter; /* FileName */
668 static int hf_mms_listOfDirectoryEntry; /* SEQUENCE_OF_DirectoryEntry */
669 static int hf_mms_listOfDirectoryEntry_item; /* DirectoryEntry */
670 static int hf_mms_filename; /* FileName */
671 static int hf_mms_sizeOfFile; /* Unsigned32 */
672 static int hf_mms_lastModified; /* GeneralizedTime */
673 /* named bits */
674 static int hf_mms_ReportedOptFlds_reserved;
675 static int hf_mms_ReportedOptFlds_sequence_number;
676 static int hf_mms_ReportedOptFlds_report_time_stamp;
677 static int hf_mms_ReportedOptFlds_reason_for_inclusion;
678 static int hf_mms_ReportedOptFlds_data_set_name;
679 static int hf_mms_ReportedOptFlds_data_reference;
680 static int hf_mms_ReportedOptFlds_buffer_overflow;
681 static int hf_mms_ReportedOptFlds_entryID;
682 static int hf_mms_ReportedOptFlds_conf_revision;
683 static int hf_mms_ReportedOptFlds_segmentation;
684 static int hf_mms_ParameterSupportOptions_str1;
685 static int hf_mms_ParameterSupportOptions_str2;
686 static int hf_mms_ParameterSupportOptions_vnam;
687 static int hf_mms_ParameterSupportOptions_valt;
688 static int hf_mms_ParameterSupportOptions_vadr;
689 static int hf_mms_ParameterSupportOptions_vsca;
690 static int hf_mms_ParameterSupportOptions_tpy;
691 static int hf_mms_ParameterSupportOptions_vlis;
692 static int hf_mms_ParameterSupportOptions_real;
693 static int hf_mms_ParameterSupportOptions_spare_bit9;
694 static int hf_mms_ParameterSupportOptions_cei;
695 static int hf_mms_ServiceSupportOptions_status;
696 static int hf_mms_ServiceSupportOptions_getNameList;
697 static int hf_mms_ServiceSupportOptions_identify;
698 static int hf_mms_ServiceSupportOptions_rename;
699 static int hf_mms_ServiceSupportOptions_read;
700 static int hf_mms_ServiceSupportOptions_write;
701 static int hf_mms_ServiceSupportOptions_getVariableAccessAttributes;
702 static int hf_mms_ServiceSupportOptions_defineNamedVariable;
703 static int hf_mms_ServiceSupportOptions_defineScatteredAccess;
704 static int hf_mms_ServiceSupportOptions_getScatteredAccessAttributes;
705 static int hf_mms_ServiceSupportOptions_deleteVariableAccess;
706 static int hf_mms_ServiceSupportOptions_defineNamedVariableList;
707 static int hf_mms_ServiceSupportOptions_getNamedVariableListAttributes;
708 static int hf_mms_ServiceSupportOptions_deleteNamedVariableList;
709 static int hf_mms_ServiceSupportOptions_defineNamedType;
710 static int hf_mms_ServiceSupportOptions_getNamedTypeAttributes;
711 static int hf_mms_ServiceSupportOptions_deleteNamedType;
712 static int hf_mms_ServiceSupportOptions_input;
713 static int hf_mms_ServiceSupportOptions_output;
714 static int hf_mms_ServiceSupportOptions_takeControl;
715 static int hf_mms_ServiceSupportOptions_relinquishControl;
716 static int hf_mms_ServiceSupportOptions_defineSemaphore;
717 static int hf_mms_ServiceSupportOptions_deleteSemaphore;
718 static int hf_mms_ServiceSupportOptions_reportSemaphoreStatus;
719 static int hf_mms_ServiceSupportOptions_reportPoolSemaphoreStatus;
720 static int hf_mms_ServiceSupportOptions_reportSemaphoreEntryStatus;
721 static int hf_mms_ServiceSupportOptions_initiateDownloadSequence;
722 static int hf_mms_ServiceSupportOptions_downloadSegment;
723 static int hf_mms_ServiceSupportOptions_terminateDownloadSequence;
724 static int hf_mms_ServiceSupportOptions_initiateUploadSequence;
725 static int hf_mms_ServiceSupportOptions_uploadSegment;
726 static int hf_mms_ServiceSupportOptions_terminateUploadSequence;
727 static int hf_mms_ServiceSupportOptions_requestDomainDownload;
728 static int hf_mms_ServiceSupportOptions_requestDomainUpload;
729 static int hf_mms_ServiceSupportOptions_loadDomainContent;
730 static int hf_mms_ServiceSupportOptions_storeDomainContent;
731 static int hf_mms_ServiceSupportOptions_deleteDomain;
732 static int hf_mms_ServiceSupportOptions_getDomainAttributes;
733 static int hf_mms_ServiceSupportOptions_createProgramInvocation;
734 static int hf_mms_ServiceSupportOptions_deleteProgramInvocation;
735 static int hf_mms_ServiceSupportOptions_start;
736 static int hf_mms_ServiceSupportOptions_stop;
737 static int hf_mms_ServiceSupportOptions_resume;
738 static int hf_mms_ServiceSupportOptions_reset;
739 static int hf_mms_ServiceSupportOptions_kill;
740 static int hf_mms_ServiceSupportOptions_getProgramInvocationAttributes;
741 static int hf_mms_ServiceSupportOptions_obtainFile;
742 static int hf_mms_ServiceSupportOptions_defineEventCondition;
743 static int hf_mms_ServiceSupportOptions_deleteEventCondition;
744 static int hf_mms_ServiceSupportOptions_getEventConditionAttributes;
745 static int hf_mms_ServiceSupportOptions_reportEventConditionStatus;
746 static int hf_mms_ServiceSupportOptions_alterEventConditionMonitoring;
747 static int hf_mms_ServiceSupportOptions_triggerEvent;
748 static int hf_mms_ServiceSupportOptions_defineEventAction;
749 static int hf_mms_ServiceSupportOptions_deleteEventAction;
750 static int hf_mms_ServiceSupportOptions_getEventActionAttributes;
751 static int hf_mms_ServiceSupportOptions_reportActionStatus;
752 static int hf_mms_ServiceSupportOptions_defineEventEnrollment;
753 static int hf_mms_ServiceSupportOptions_deleteEventEnrollment;
754 static int hf_mms_ServiceSupportOptions_alterEventEnrollment;
755 static int hf_mms_ServiceSupportOptions_reportEventEnrollmentStatus;
756 static int hf_mms_ServiceSupportOptions_getEventEnrollmentAttributes;
757 static int hf_mms_ServiceSupportOptions_acknowledgeEventNotification;
758 static int hf_mms_ServiceSupportOptions_getAlarmSummary;
759 static int hf_mms_ServiceSupportOptions_getAlarmEnrollmentSummary;
760 static int hf_mms_ServiceSupportOptions_readJournal;
761 static int hf_mms_ServiceSupportOptions_writeJournal;
762 static int hf_mms_ServiceSupportOptions_initializeJournal;
763 static int hf_mms_ServiceSupportOptions_reportJournalStatus;
764 static int hf_mms_ServiceSupportOptions_createJournal;
765 static int hf_mms_ServiceSupportOptions_deleteJournal;
766 static int hf_mms_ServiceSupportOptions_getCapabilityList;
767 static int hf_mms_ServiceSupportOptions_fileOpen;
768 static int hf_mms_ServiceSupportOptions_fileRead;
769 static int hf_mms_ServiceSupportOptions_fileClose;
770 static int hf_mms_ServiceSupportOptions_fileRename;
771 static int hf_mms_ServiceSupportOptions_fileDelete;
772 static int hf_mms_ServiceSupportOptions_fileDirectory;
773 static int hf_mms_ServiceSupportOptions_unsolicitedStatus;
774 static int hf_mms_ServiceSupportOptions_informationReport;
775 static int hf_mms_ServiceSupportOptions_eventNotification;
776 static int hf_mms_ServiceSupportOptions_attachToEventCondition;
777 static int hf_mms_ServiceSupportOptions_attachToSemaphore;
778 static int hf_mms_ServiceSupportOptions_conclude;
779 static int hf_mms_ServiceSupportOptions_cancel;
780 static int hf_mms_Transitions_idle_to_disabled;
781 static int hf_mms_Transitions_active_to_disabled;
782 static int hf_mms_Transitions_disabled_to_idle;
783 static int hf_mms_Transitions_active_to_idle;
784 static int hf_mms_Transitions_disabled_to_active;
785 static int hf_mms_Transitions_idle_to_active;
786 static int hf_mms_Transitions_any_to_deleted;
788 /* Initialize the subtree pointers */
789 static int ett_mms;
790 static int ett_mms_iec61850_quality_bitstring;
791 static int ett_mms_iec61850_check_bitstring;
792 static int ett_mms_ReportedOptFlds;
793 static int ett_mms_MMSpdu;
794 static int ett_mms_Confirmed_RequestPDU;
795 static int ett_mms_SEQUENCE_OF_Modifier;
796 static int ett_mms_Unconfirmed_PDU;
797 static int ett_mms_Confirmed_ResponsePDU;
798 static int ett_mms_Confirmed_ErrorPDU;
799 static int ett_mms_UnconfirmedService;
800 static int ett_mms_Modifier;
801 static int ett_mms_ConfirmedServiceRequest;
802 static int ett_mms_CS_Request_Detail;
803 static int ett_mms_ConfirmedServiceResponse;
804 static int ett_mms_FileName;
805 static int ett_mms_ObjectName;
806 static int ett_mms_T_domain_specific;
807 static int ett_mms_ApplicationReference;
808 static int ett_mms_Initiate_RequestPDU;
809 static int ett_mms_InitRequestDetail;
810 static int ett_mms_Initiate_ResponsePDU;
811 static int ett_mms_InitResponseDetail;
812 static int ett_mms_ParameterSupportOptions;
813 static int ett_mms_ServiceSupportOptions;
814 static int ett_mms_Cancel_ErrorPDU;
815 static int ett_mms_ServiceError;
816 static int ett_mms_T_errorClass;
817 static int ett_mms_T_serviceSpecificInformation;
818 static int ett_mms_AdditionalService_Error;
819 static int ett_mms_RemoveEventConditionListReference_Error;
820 static int ett_mms_InitiateUnitControl_Error;
821 static int ett_mms_StartUnitControl_Error;
822 static int ett_mms_StopUnitControl_Error;
823 static int ett_mms_DeleteUnitControl_Error;
824 static int ett_mms_LoadUnitControlFromFile_Error;
825 static int ett_mms_RejectPDU;
826 static int ett_mms_T_rejectReason;
827 static int ett_mms_Status_Response;
828 static int ett_mms_ObjectScope;
829 static int ett_mms_GetNameList_Request;
830 static int ett_mms_T_extendedObjectClass;
831 static int ett_mms_GetNameList_Response;
832 static int ett_mms_SEQUENCE_OF_Identifier;
833 static int ett_mms_Identify_Response;
834 static int ett_mms_T_listOfAbstractSyntaxes;
835 static int ett_mms_Rename_Request;
836 static int ett_mms_T_extendedObjectClass_01;
837 static int ett_mms_GetCapabilityList_Request;
838 static int ett_mms_GetCapabilityList_Response;
839 static int ett_mms_T_listOfCapabilities;
840 static int ett_mms_InitiateDownloadSequence_Request;
841 static int ett_mms_T_listOfCapabilities_01;
842 static int ett_mms_DownloadSegment_Response;
843 static int ett_mms_T_loadData;
844 static int ett_mms_TerminateDownloadSequence_Request;
845 static int ett_mms_InitiateUploadSequence_Response;
846 static int ett_mms_T_listOfCapabilities_02;
847 static int ett_mms_UploadSegment_Response;
848 static int ett_mms_T_loadData_01;
849 static int ett_mms_RequestDomainDownload_Request;
850 static int ett_mms_T_listOfCapabilities_03;
851 static int ett_mms_RequestDomainUpload_Request;
852 static int ett_mms_LoadDomainContent_Request;
853 static int ett_mms_T_listOfCapabilities_04;
854 static int ett_mms_StoreDomainContent_Request;
855 static int ett_mms_GetDomainAttributes_Response;
856 static int ett_mms_T_listOfCapabilities_05;
857 static int ett_mms_CreateProgramInvocation_Request;
858 static int ett_mms_Start_Request;
859 static int ett_mms_T_executionArgument;
860 static int ett_mms_Stop_Request;
861 static int ett_mms_Resume_Request;
862 static int ett_mms_T_executionArgument_01;
863 static int ett_mms_Reset_Request;
864 static int ett_mms_Kill_Request;
865 static int ett_mms_GetProgramInvocationAttributes_Response;
866 static int ett_mms_T_executionArgument_02;
867 static int ett_mms_TypeSpecification;
868 static int ett_mms_T_array;
869 static int ett_mms_T_structure;
870 static int ett_mms_T_components;
871 static int ett_mms_T_components_item;
872 static int ett_mms_AlternateAccess;
873 static int ett_mms_AlternateAccess_item;
874 static int ett_mms_T_named;
875 static int ett_mms_AlternateAccessSelection;
876 static int ett_mms_T_selectAlternateAccess;
877 static int ett_mms_T_accessSelection;
878 static int ett_mms_T_indexRange;
879 static int ett_mms_T_selectAccess;
880 static int ett_mms_T_indexRange_01;
881 static int ett_mms_Read_Request;
882 static int ett_mms_Read_Response;
883 static int ett_mms_SEQUENCE_OF_AccessResult;
884 static int ett_mms_Write_Request;
885 static int ett_mms_T_listOfData;
886 static int ett_mms_Write_Response;
887 static int ett_mms_Write_Response_item;
888 static int ett_mms_InformationReport;
889 static int ett_mms_T_listOfAccessResult;
890 static int ett_mms_GetVariableAccessAttributes_Request;
891 static int ett_mms_GetVariableAccessAttributes_Response;
892 static int ett_mms_DefineNamedVariable_Request;
893 static int ett_mms_DefineScatteredAccess_Request;
894 static int ett_mms_GetScatteredAccessAttributes_Response;
895 static int ett_mms_DeleteVariableAccess_Request;
896 static int ett_mms_SEQUENCE_OF_ObjectName;
897 static int ett_mms_DeleteVariableAccess_Response;
898 static int ett_mms_DefineNamedVariableList_Request;
899 static int ett_mms_T_listOfVariable;
900 static int ett_mms_T_listOfVariable_item;
901 static int ett_mms_GetNamedVariableListAttributes_Response;
902 static int ett_mms_T_listOfVariable_01;
903 static int ett_mms_T_listOfVariable_item_01;
904 static int ett_mms_DeleteNamedVariableList_Request;
905 static int ett_mms_DeleteNamedVariableList_Response;
906 static int ett_mms_DefineNamedType_Request;
907 static int ett_mms_GetNamedTypeAttributes_Response;
908 static int ett_mms_DeleteNamedType_Request;
909 static int ett_mms_DeleteNamedType_Response;
910 static int ett_mms_AccessResult;
911 static int ett_mms_Data;
912 static int ett_mms_SEQUENCE_OF_Data;
913 static int ett_mms_T_structure_01;
914 static int ett_mms_VariableAccessSpecification;
915 static int ett_mms_T_listOfVariable_02;
916 static int ett_mms_T_listOfVariable_item_02;
917 static int ett_mms_ScatteredAccessDescription;
918 static int ett_mms_ScatteredAccessDescription_item;
919 static int ett_mms_VariableSpecification;
920 static int ett_mms_T_variableDescription;
921 static int ett_mms_Address;
922 static int ett_mms_TakeControl_Request;
923 static int ett_mms_TakeControl_Response;
924 static int ett_mms_RelinquishControl_Request;
925 static int ett_mms_DefineSemaphore_Request;
926 static int ett_mms_ReportSemaphoreStatus_Response;
927 static int ett_mms_ReportPoolSemaphoreStatus_Request;
928 static int ett_mms_ReportPoolSemaphoreStatus_Response;
929 static int ett_mms_T_listOfNamedTokens;
930 static int ett_mms_T_listOfNamedTokens_item;
931 static int ett_mms_ReportSemaphoreEntryStatus_Request;
932 static int ett_mms_ReportSemaphoreEntryStatus_Response;
933 static int ett_mms_SEQUENCE_OF_SemaphoreEntry;
934 static int ett_mms_AttachToSemaphore;
935 static int ett_mms_SemaphoreEntry;
936 static int ett_mms_Input_Request;
937 static int ett_mms_T_listOfPromptData;
938 static int ett_mms_Output_Request;
939 static int ett_mms_T_listOfOutputData;
940 static int ett_mms_DefineEventCondition_Request;
941 static int ett_mms_DeleteEventCondition_Request;
942 static int ett_mms_GetEventConditionAttributes_Response;
943 static int ett_mms_T_monitoredVariable;
944 static int ett_mms_ReportEventConditionStatus_Response;
945 static int ett_mms_AlterEventConditionMonitoring_Request;
946 static int ett_mms_TriggerEvent_Request;
947 static int ett_mms_DefineEventAction_Request;
948 static int ett_mms_DeleteEventAction_Request;
949 static int ett_mms_GetEventActionAttributes_Response;
950 static int ett_mms_DefineEventEnrollment_Request;
951 static int ett_mms_DeleteEventEnrollment_Request;
952 static int ett_mms_GetEventEnrollmentAttributes_Request;
953 static int ett_mms_EventEnrollment;
954 static int ett_mms_T_eventConditionName;
955 static int ett_mms_T_eventActionName;
956 static int ett_mms_GetEventEnrollmentAttributes_Response;
957 static int ett_mms_SEQUENCE_OF_EventEnrollment;
958 static int ett_mms_ReportEventEnrollmentStatus_Response;
959 static int ett_mms_AlterEventEnrollment_Request;
960 static int ett_mms_AlterEventEnrollment_Response;
961 static int ett_mms_T_currentState;
962 static int ett_mms_AcknowledgeEventNotification_Request;
963 static int ett_mms_GetAlarmSummary_Request;
964 static int ett_mms_T_severityFilter;
965 static int ett_mms_GetAlarmSummary_Response;
966 static int ett_mms_SEQUENCE_OF_AlarmSummary;
967 static int ett_mms_AlarmSummary;
968 static int ett_mms_GetAlarmEnrollmentSummary_Request;
969 static int ett_mms_T_severityFilter_01;
970 static int ett_mms_GetAlarmEnrollmentSummary_Response;
971 static int ett_mms_SEQUENCE_OF_AlarmEnrollmentSummary;
972 static int ett_mms_AlarmEnrollmentSummary;
973 static int ett_mms_EventNotification;
974 static int ett_mms_T_eventConditionName_01;
975 static int ett_mms_T_actionResult;
976 static int ett_mms_T_eventActionResult;
977 static int ett_mms_AttachToEventCondition;
978 static int ett_mms_EventTime;
979 static int ett_mms_Transitions;
980 static int ett_mms_ReadJournal_Request;
981 static int ett_mms_T_rangeStartSpecification;
982 static int ett_mms_T_rangeStopSpecification;
983 static int ett_mms_T_listOfVariables;
984 static int ett_mms_T_entryToStartAfter;
985 static int ett_mms_ReadJournal_Response;
986 static int ett_mms_SEQUENCE_OF_JournalEntry;
987 static int ett_mms_JournalEntry;
988 static int ett_mms_WriteJournal_Request;
989 static int ett_mms_SEQUENCE_OF_EntryContent;
990 static int ett_mms_InitializeJournal_Request;
991 static int ett_mms_T_limitSpecification;
992 static int ett_mms_ReportJournalStatus_Response;
993 static int ett_mms_CreateJournal_Request;
994 static int ett_mms_DeleteJournal_Request;
995 static int ett_mms_EntryContent;
996 static int ett_mms_T_entryForm;
997 static int ett_mms_T_data;
998 static int ett_mms_T_event;
999 static int ett_mms_T_listOfVariables_01;
1000 static int ett_mms_T_listOfVariables_item;
1001 static int ett_mms_ObtainFile_Request;
1002 static int ett_mms_FileOpen_Request;
1003 static int ett_mms_FileOpen_Response;
1004 static int ett_mms_FileRead_Response;
1005 static int ett_mms_FileRename_Request;
1006 static int ett_mms_FileDirectory_Request;
1007 static int ett_mms_FileDirectory_Response;
1008 static int ett_mms_SEQUENCE_OF_DirectoryEntry;
1009 static int ett_mms_DirectoryEntry;
1010 static int ett_mms_FileAttributes;
1012 static expert_field ei_mms_mal_timeofday_encoding;
1013 static expert_field ei_mms_mal_utctime_encoding;
1014 static expert_field ei_mms_zero_pdu;
1016 /*****************************************************************************/
1017 /* Packet private data */
1018 /* For this dissector, all access to actx->private_data should be made */
1019 /* through this API, which ensures that they will not overwrite each other!! */
1020 /*****************************************************************************/
1022 #define BUFFER_SIZE_PRE 10
1023 #define BUFFER_SIZE_MORE 1024
1025 typedef enum _iec61850_8_1_vmd_specific {
1026 IEC61850_8_1_NOT_SET = 0,
1027 IEC61850_8_1_RPT
1028 } iec61850_8_1_vmd_specific;
1030 typedef enum _itemid_type {
1031 IEC61850_ITEM_ID_NOT_SET = 0,
1032 IEC61850_ITEM_ID_CTLMODEL,
1033 IEC61850_ITEM_ID_Q,
1034 IEC61850_ITEM_ID_OPER,
1035 IEC61850_ITEM_ID_CHECK,
1036 IEC61850_ITEM_ID_OR_CAT,
1037 IEC61850_ITEM_ID_BEH$STVAL,
1038 IEC61850_ITEM_ID_MOD$STVAL,
1039 IEC61850_ITEM_ID_HEALTH$STVAL,
1040 IEC61850_ITEM_ID_$BR$_OR_$RP$,
1041 IEC61850_ITEM_ID_$SBOW
1042 } itemid_type;
1044 typedef struct _mms_transaction_t {
1045 uint32_t req_frame;
1046 uint32_t rep_frame;
1047 nstime_t req_time;
1048 /* Request info*/
1049 itemid_type itemid; /* Numeric representation of ItemId substring */
1050 int conf_serv_pdu_type_req;
1051 } mms_transaction_t;
1053 typedef struct _mms_conv_info_t {
1054 wmem_map_t* pdus;
1055 } mms_conv_info_t;
1057 typedef struct mms_private_data_t
1059 char preCinfo[BUFFER_SIZE_PRE];
1060 char moreCinfo[BUFFER_SIZE_MORE];
1061 } mms_private_data_t;
1063 #define MMS_CONFIRMED_REQUEST_PDU 0
1064 #define MMS_CONFIRMED_RESPONSE_PDU 1
1065 #define MMS_CONFIRMED_ERROR_PDU 2
1066 #define MMS_UNCONFIRMED_PDU 3
1067 #define MMS_REJECT_PDU 4
1068 #define MMS_CANCEL_REQUEST_PDU 5
1069 #define MMS_CANCEL_RESPONSE_PDU 6
1070 #define MMS_CANCEL_ERROR_PDU 7
1071 #define MMS_INITIATE_REQUEST_PDU 8
1072 #define MMS_INITIATE_RESPONSE_PDU 9
1073 #define MMS_INITIATE_ERROR_PDU 10
1074 #define MMS_CONCLUDE_REQUEST_PDU 11
1075 #define MMS_CONCLUDE_RESPONSE_PDU 12
1076 #define MMS_CONCLUDE_ERROR_PDU 13
1078 #define MMS_CONFIRMEDSERVICE_STATUS 0
1079 #define MMS_CONFIRMEDSERVICE_GETNAMELIST 1
1080 #define MMS_CONFIRMEDSERVICE_IDENTIFY 2
1081 #define MMS_CONFIRMEDSERVICE_RENAME 3
1082 #define MMS_CONFIRMEDSERVICE_READ 4
1083 #define MMS_CONFIRMEDSERVICE_WRITE 5
1084 #define MMS_CONFIRMEDSERVICE_GETVARIABLEACCESSATTRIBUTES 6
1085 #define MMS_CONFIRMEDSERVICE_DEFINENAMEDVARIABLE 7
1086 #define MMS_CONFIRMEDSERVICE_DEFINESCATTEREDACCESS 8
1087 #define MMS_CONFIRMEDSERVICE_GETSCATTEREDACCESSATTRIBUTES 9
1088 #define MMS_CONFIRMEDSERVICE_DELETEVARIABLEACCESS 10
1089 #define MMS_CONFIRMEDSERVICE_DEFINENAMEDVARIABLELIST 11
1090 #define MMS_CONFIRMEDSERVICE_GETNAMEDVARIABLELISTATTRIBUTES 12
1091 #define MMS_CONFIRMEDSERVICE_DELETENAMEDVARIABLELIST 13
1092 #define MMS_CONFIRMEDSERVICE_DEFINENAMEDTYPE 14
1093 #define MMS_CONFIRMEDSERVICE_GETNAMEDTYPEATTRIBUTES 15
1094 #define MMS_CONFIRMEDSERVICE_DELETENAMEDTYPE 16
1095 #define MMS_CONFIRMEDSERVICE_INPUT 17
1096 #define MMS_CONFIRMEDSERVICE_OUTPUT 18
1097 #define MMS_CONFIRMEDSERVICE_TAKECONTROL 19
1098 #define MMS_CONFIRMEDSERVICE_RELINQUISHCONTROL 20
1099 #define MMS_CONFIRMEDSERVICE_DEFINESEMAPHORE 21
1100 #define MMS_CONFIRMEDSERVICE_DELETESEMAPHORE 22
1101 #define MMS_CONFIRMEDSERVICE_REPORTSEMAPHORESTATUS 23
1102 #define MMS_CONFIRMEDSERVICE_REPORTPOOLSEMAPHORESTATUS 24
1103 #define MMS_CONFIRMEDSERVICE_REPORTSEMAPHOREENTRYSTATUS 25
1104 #define MMS_CONFIRMEDSERVICE_INITIATEDOWNLOADSEQUENCE 26
1105 #define MMS_CONFIRMEDSERVICE_DOWNLOADSEGMENT 27
1106 #define MMS_CONFIRMEDSERVICE_TERMINATEDOWNLOADSEQUENCE 28
1107 #define MMS_CONFIRMEDSERVICE_INITIATEUPLOADSEQUENCE 29
1108 #define MMS_CONFIRMEDSERVICE_UPLOADSEGMENT 30
1109 #define MMS_CONFIRMEDSERVICE_TERMINATEUPLOADSEQUENCE 31
1110 #define MMS_CONFIRMEDSERVICE_REQUESTDOMAINDOWNLOAD 32
1111 #define MMS_CONFIRMEDSERVICE_REQUESTDOMAINUPLOAD 33
1112 #define MMS_CONFIRMEDSERVICE_LOADDOMAINCONTENT 34
1113 #define MMS_CONFIRMEDSERVICE_STOREDOMAINCONTENT 35
1114 #define MMS_CONFIRMEDSERVICE_DELETEDOMAIN 36
1115 #define MMS_CONFIRMEDSERVICE_GETDOMAINATTRIBUTES 37
1116 #define MMS_CONFIRMEDSERVICE_CREATEPROGRAMINVOCATION 38
1117 #define MMS_CONFIRMEDSERVICE_DELETEPROGRAMINVOCATION 39
1118 #define MMS_CONFIRMEDSERVICE_START 40
1119 #define MMS_CONFIRMEDSERVICE_STOP 41
1120 #define MMS_CONFIRMEDSERVICE_RESUME 42
1121 #define MMS_CONFIRMEDSERVICE_RESET 43
1122 #define MMS_CONFIRMEDSERVICE_KILL 44
1123 #define MMS_CONFIRMEDSERVICE_GETPROGRAMINVOCATIONATTRIBUTES 45
1124 #define MMS_CONFIRMEDSERVICE_OBTAINFILE 46
1125 #define MMS_CONFIRMEDSERVICE_DEFINEEVENTCONDITION 47
1126 #define MMS_CONFIRMEDSERVICE_DELETEEVENTCONDITION 48
1127 #define MMS_CONFIRMEDSERVICE_GETEVENTCONDITIONATTRIBUTES 49
1128 #define MMS_CONFIRMEDSERVICE_REPORTEVENTCONDITIONSTATUS 50
1129 #define MMS_CONFIRMEDSERVICE_ALTEREVENTCONDITIONMONITORING 51
1130 #define MMS_CONFIRMEDSERVICE_TRIGGEREVENT 52
1131 #define MMS_CONFIRMEDSERVICE_DEFINEEVENTACTION 53
1132 #define MMS_CONFIRMEDSERVICE_DELETEEVENTACTION 54
1133 #define MMS_CONFIRMEDSERVICE_GETEVENTACTIONATTRIBUTES 55
1134 #define MMS_CONFIRMEDSERVICE_REPORTEVENTACTIONSTATUS 56
1135 #define MMS_CONFIRMEDSERVICE_DEFINEEVENTENROLLMENT 57
1136 #define MMS_CONFIRMEDSERVICE_DELETEEVENTENROLLMENT 58
1137 #define MMS_CONFIRMEDSERVICE_ALTEREVENTENROLLMENT 59
1138 #define MMS_CONFIRMEDSERVICE_REPORTEVENTENROLLMENTSTATUS 60
1139 #define MMS_CONFIRMEDSERVICE_GETEVENTENROLLMENTATTRIBUTES 61
1140 #define MMS_CONFIRMEDSERVICE_ACKNOWLEDGEEVENTNOTIFICATION 62
1141 #define MMS_CONFIRMEDSERVICE_GETALARMSUMMARY 63
1142 #define MMS_CONFIRMEDSERVICE_GETALARMENROLLMENTSUMMARY 64
1143 #define MMS_CONFIRMEDSERVICE_READJOURNAL 65
1144 #define MMS_CONFIRMEDSERVICE_WRITEJOURNAL 66
1145 #define MMS_CONFIRMEDSERVICE_INITIALIZEJOURNAL 67
1146 #define MMS_CONFIRMEDSERVICE_REPORTJOURNALSTATUS 68
1147 #define MMS_CONFIRMEDSERVICE_CREATEJOURNAL 69
1148 #define MMS_CONFIRMEDSERVICE_DELETEJOURNAL 70
1149 #define MMS_CONFIRMEDSERVICE_GETCAPABILITYLIST 71
1150 #define MMS_CONFIRMEDSERVICE_FILEOPEN 72
1151 #define MMS_FILEREAD 73
1152 #define MMS_FILECLOSE 74
1153 #define MMS_FILERENAME 75
1154 #define MMS_FILEDELETE 76
1155 #define MMS_FILEDIRECTORY 77
1157 #define MMS_OBJECTCLASS_NAMMEDVARIABLE 0
1158 #define MMS_OBJECTCLASS_NAMEDVARIABLELIST 2
1159 #define MMS_OBJECTCLASS_DOMAIN 9
1161 #define MMS_OBJECTSCOPE_VMDSPECIFIC 0
1162 #define MMS_OBJECTSCOPE_DOMAINSPECIFIC 1
1164 #define MMS_IEC_61850_CONF_SERV_PDU_NOT_SET 0
1165 #define MMS_IEC_61850_CONF_SERV_PDU_GET_SERV_DIR 1
1166 #define MMS_IEC_61850_CONF_SERV_PDU_GETLOGICALDEVICEDIRECTORY 2
1167 #define MMS_IEC_61850_CONF_SERV_PDU_GETDATASETDIRECTORY 3
1168 #define MMS_IEC_61850_CONF_SERV_PDU_GETDATADIRECTORY 4
1169 #define MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE 5
1170 #define MMS_IEC_61850_CONF_SERV_PDU_READ 6
1171 #define MMS_IEC_61850_CONF_SERV_PDU_WRITE 7
1173 typedef struct mms_actx_private_data_t
1175 int mms_pdu_type; /* MMSpdu type taken from MMSpdu CHOICE branch_taken */
1176 int invokeid;
1177 iec61850_8_1_vmd_specific vmd_specific; /* Numeric representation of decode vmd_specific strings */
1178 int listOfAccessResult_cnt; /* Position in the list, 1 count */
1179 int data_cnt; /* Number of times data occurred(depth)*/
1180 uint16_t reported_optflds; /* Bitmap over included fields */
1181 proto_item* pdu_item; /* The item to append PDU info to */
1182 int confirmedservice_type; /* Requested service */
1183 int objectclass;
1184 int objectscope;
1185 mms_transaction_t* mms_trans_p; /* Pointer to the transaction record */
1186 char* itemid_str;
1187 int success; /* If variable access succeeded or not */
1188 } mms_actx_private_data_t;
1191 static const value_string mms_iec6150_cntmodel_vals[] = {
1192 {0, "status-only"},
1193 {1, "direct-with-normal-security"},
1194 {2, "sbo-with-normal-security"},
1195 {3, "direct-with-enhanced-security"},
1196 {4, "sbo-with-enhanced-security"},
1197 {0, NULL}
1200 static const value_string mms_iec6150_validity_vals[] = {
1201 {0, "Good"},
1202 {1, "Invalid"},
1203 {2, "Reserved"},
1204 {3, "Questionable"},
1205 {0, NULL}
1208 static const value_string mms_iec6150_source_vals[] = {
1209 {0, "Process"},
1210 {1, "Substituted"},
1211 {0, NULL}
1214 static const value_string mms_iec6150_timeaccuracy_vals[] = {
1215 {0, "0 bits accuracy"},
1216 {1, "1 bits accuracy"},
1217 {2, "2 bits accuracy"},
1218 {3, "3 bits accuracy"},
1219 {4, "4 bits accuracy"},
1220 {5, "5 bits accuracy"},
1221 {6, "6 bits accuracy"},
1222 {7, "7 bits accuracy"},
1223 {8, "8 bits accuracy"},
1224 {9, "9 bits accuracy"},
1225 {10, "10 bits accuracy"},
1226 {11, "11 bits accuracy"},
1227 {12, "12 bits accuracy"},
1228 {13, "13 bits accuracy"},
1229 {14, "14 bits accuracy"},
1230 {15, "15 bits accuracy"},
1231 {16, "16 bits accuracy"},
1232 {17, "17 bits accuracy"},
1233 {18, "18 bits accuracy"},
1234 {19, "19 bits accuracy"},
1235 {20, "20 bits accuracy"},
1236 {21, "21 bits accuracy"},
1237 {22, "22 bits accuracy"},
1238 {23, "23 bits accuracy"},
1239 {24, "24 bits accuracy"},
1240 {25, "25 bits accuracy"},
1241 {26, "26 bits accuracy"},
1242 {27, "27 bits accuracy"},
1243 {28, "28 bits accuracy"},
1244 {29, "29 bits accuracy"},
1245 {30, "Invalid"},
1246 {31, "Unspecified"},
1247 {0, NULL}
1250 static const value_string mms_iec6150_orcategory_vals[] = {
1251 {0, "not-supported"},
1252 {1, "bay-control"},
1253 {2, "station-control"},
1254 {3, "remote-control"},
1255 {4, "automatic-bay"},
1256 {5, "automatic-station"},
1257 {6, "automatic-station"},
1258 {7, "maintenance"},
1259 {8, "process"},
1260 {0, NULL}
1263 static const value_string mms_iec6150_beh_vals[] = {
1264 {0,"Uninitialised"},
1265 {1, "on"},
1266 {2, "blocked"},
1267 {3, "test"},
1268 {4, "test/blocked"},
1269 {5, "off"},
1270 {0, NULL}
1273 static const value_string mms_iec6150_health_vals[] = {
1274 {0,"Uninitialised"},
1275 {1,"Ok"},
1276 {2,"Warning"},
1277 {3,"Alarm"},
1278 {0, NULL}
1281 /* Helper function to get or create the private data struct */
1282 static
1283 mms_private_data_t* mms_get_private_data(asn1_ctx_t* actx)
1285 packet_info* pinfo = actx->pinfo;
1286 mms_private_data_t* private_data = (mms_private_data_t*)p_get_proto_data(pinfo->pool, pinfo, proto_mms, pinfo->curr_layer_num);
1287 if (private_data != NULL) {
1288 return private_data;
1289 } else {
1290 private_data = wmem_new0(pinfo->pool, mms_private_data_t);
1291 p_add_proto_data(pinfo->pool, pinfo, proto_mms, pinfo->curr_layer_num, private_data);
1292 return private_data;
1296 /* Helper function to test presence of private data struct */
1297 static bool
1298 mms_has_private_data(asn1_ctx_t* actx)
1300 packet_info* pinfo = actx->pinfo;
1301 return (p_get_proto_data(pinfo->pool, pinfo, proto_mms, pinfo->curr_layer_num) != NULL);
1304 static void
1305 private_data_add_preCinfo(asn1_ctx_t* actx, uint32_t val)
1307 mms_private_data_t* private_data = (mms_private_data_t*)mms_get_private_data(actx);
1308 snprintf(private_data->preCinfo, BUFFER_SIZE_PRE, "%02d ", val);
1311 static char*
1312 private_data_get_preCinfo(asn1_ctx_t* actx)
1314 mms_private_data_t* private_data = (mms_private_data_t*)mms_get_private_data(actx);
1315 return private_data->preCinfo;
1318 static void
1319 private_data_add_moreCinfo_id(asn1_ctx_t* actx, tvbuff_t* tvb)
1321 mms_private_data_t* private_data = (mms_private_data_t*)mms_get_private_data(actx);
1322 (void)g_strlcat(private_data->moreCinfo, " ", BUFFER_SIZE_MORE);
1323 (void)g_strlcat(private_data->moreCinfo, tvb_get_string_enc(actx->pinfo->pool, tvb,
1324 0, tvb_reported_length(tvb), ENC_ASCII | ENC_NA), BUFFER_SIZE_MORE);
1327 static void
1328 private_data_add_moreCinfo_float(asn1_ctx_t* actx, tvbuff_t* tvb)
1330 mms_private_data_t* private_data = (mms_private_data_t*)mms_get_private_data(actx);
1331 snprintf(private_data->moreCinfo, BUFFER_SIZE_MORE,
1332 " %f", tvb_get_ieee_float(tvb, 1, ENC_BIG_ENDIAN));
1335 static char*
1336 private_data_get_moreCinfo(asn1_ctx_t* actx)
1338 mms_private_data_t* private_data = (mms_private_data_t*)mms_get_private_data(actx);
1339 return private_data->moreCinfo;
1342 /*****************************************************************************/
1345 /*--- Cyclic dependencies ---*/
1347 /* TypeSpecification -> TypeSpecification/array -> TypeSpecification */
1348 /* TypeSpecification -> TypeSpecification/structure -> TypeSpecification/structure/components -> TypeSpecification/structure/components/_item -> TypeSpecification */
1349 static int dissect_mms_TypeSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
1351 /* VariableSpecification -> ScatteredAccessDescription -> ScatteredAccessDescription/_item -> VariableSpecification */
1352 static int dissect_mms_VariableSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
1354 /* AlternateAccess -> AlternateAccess/_item -> AlternateAccessSelection -> AlternateAccessSelection/selectAlternateAccess -> AlternateAccess */
1355 static int dissect_mms_AlternateAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
1357 /* Data -> Data/array -> Data */
1358 /* Data -> Data/structure -> Data */
1359 static int dissect_mms_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
1363 static int * const ReportedOptFlds_bits[] = {
1364 &hf_mms_ReportedOptFlds_reserved,
1365 &hf_mms_ReportedOptFlds_sequence_number,
1366 &hf_mms_ReportedOptFlds_report_time_stamp,
1367 &hf_mms_ReportedOptFlds_reason_for_inclusion,
1368 &hf_mms_ReportedOptFlds_data_set_name,
1369 &hf_mms_ReportedOptFlds_data_reference,
1370 &hf_mms_ReportedOptFlds_buffer_overflow,
1371 &hf_mms_ReportedOptFlds_entryID,
1372 &hf_mms_ReportedOptFlds_conf_revision,
1373 &hf_mms_ReportedOptFlds_segmentation,
1374 NULL
1377 static int
1378 dissect_mms_ReportedOptFlds(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379 tvbuff_t *parameter_tvb = NULL;
1380 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1381 ReportedOptFlds_bits, 10, hf_index, ett_mms_ReportedOptFlds,
1382 &parameter_tvb);
1384 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
1385 if(mms_priv && parameter_tvb){
1386 mms_priv->reported_optflds = tvb_get_ntohs(parameter_tvb,0);
1390 return offset;
1395 static int
1396 dissect_mms_Unsigned32(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1397 uint32_t val;
1398 conversation_t *conversation;
1399 mms_conv_info_t *mms_info;
1400 mms_transaction_t *mms_trans;
1402 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1403 &val);
1405 if (hf_index == hf_mms_invokeID){
1406 mms_actx_private_data_t* mms_priv = (mms_actx_private_data_t*)actx->private_data;
1407 if(mms_priv){
1408 mms_priv->invokeid=val;
1409 private_data_add_preCinfo(actx, val);
1410 conversation = find_or_create_conversation(actx->pinfo);
1412 mms_info = (mms_conv_info_t *)conversation_get_proto_data(conversation, proto_mms);
1413 if (!mms_info) {
1415 * No. Attach that information to the conversation, and add
1416 * it to the list of information structures.
1418 mms_info = wmem_new(wmem_file_scope(), mms_conv_info_t);
1419 mms_info->pdus=wmem_map_new(wmem_file_scope(), g_direct_hash, g_direct_equal);
1421 conversation_add_proto_data(conversation, proto_mms, mms_info);
1423 /* Request or response? */
1424 bool is_request;
1426 switch(mms_priv->mms_pdu_type){
1427 case 0:
1428 /* Confirmed-RequestPDU */
1429 is_request = true;
1430 break;
1431 case 1:
1432 /* confirmed-ResponsePDU */
1433 is_request = false;
1434 break;
1435 case 2:
1436 /* Confirmed-ErrorPDU */
1437 is_request = false;
1438 break;
1439 default:
1440 is_request = false;
1441 break;
1444 if (!PINFO_FD_VISITED(actx->pinfo)) {
1445 if (is_request==true) {
1446 /* This is a request */
1447 mms_trans=wmem_new0(wmem_file_scope(), mms_transaction_t);
1448 mms_trans->req_frame = actx->pinfo->num;
1449 mms_trans->req_time = actx->pinfo->fd->abs_ts;
1450 wmem_map_insert(mms_info->pdus, GUINT_TO_POINTER(mms_priv->invokeid), (void *)mms_trans);
1451 } else {
1452 mms_trans=(mms_transaction_t *)wmem_map_lookup(mms_info->pdus, GUINT_TO_POINTER(mms_priv->invokeid));
1453 if (mms_trans) {
1454 mms_trans->rep_frame = actx->pinfo->num;
1457 } else {
1458 mms_trans=(mms_transaction_t *)wmem_map_lookup(mms_info->pdus, GUINT_TO_POINTER(mms_priv->invokeid));
1460 if (!mms_trans) {
1461 /* create a "fake" mms_trans structure */
1462 mms_trans=wmem_new0(actx->pinfo->pool, mms_transaction_t);
1463 mms_trans->req_frame = 0;
1464 mms_trans->rep_frame = 0;
1465 mms_trans->req_time = actx->pinfo->fd->abs_ts;
1467 mms_priv->mms_trans_p = mms_trans;
1469 /* print state tracking in the tree */
1470 if (is_request) {
1471 /* This is a request */
1472 if (mms_trans->rep_frame) {
1473 proto_item *it;
1475 it = proto_tree_add_uint(actx->subtree.top_tree, hf_mms_response_in, tvb, 0, 0, mms_trans->rep_frame);
1476 proto_item_set_generated(it);
1478 } else {
1479 /* This is a reply */
1480 if (mms_trans->req_frame) {
1481 proto_item *it;
1482 nstime_t ns;
1484 it = proto_tree_add_uint(actx->subtree.top_tree, hf_mms_response_to, tvb, 0, 0, mms_trans->req_frame);
1485 proto_item_set_generated(it);
1487 nstime_delta(&ns, &actx->pinfo->fd->abs_ts, &mms_trans->req_time);
1488 it = proto_tree_add_time(actx->subtree.top_tree, hf_mms_response_time, tvb, 0, 0, &ns);
1489 proto_item_set_generated(it);
1496 return offset;
1501 static int
1502 dissect_mms_Identifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1503 tvbuff_t *parameter_tvb = NULL;
1504 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
1506 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
1507 actx, tree, tvb, offset, hf_index,
1508 &parameter_tvb);
1510 if (parameter_tvb) {
1511 if (hf_index == hf_mms_domainId) {
1512 private_data_add_moreCinfo_id(actx,parameter_tvb);
1514 if ((mms_priv) && ((hf_index == hf_mms_objectName_domain_specific_itemId)||
1515 (hf_index ==hf_mms_listOfIdentifier_item))) {
1516 private_data_add_moreCinfo_id(actx,parameter_tvb);
1517 if((mms_priv->mms_trans_p)&&(parameter_tvb)){
1518 mms_priv->itemid_str = tvb_get_string_enc(actx->pinfo->pool, parameter_tvb, 0, tvb_reported_length(parameter_tvb), ENC_ASCII|ENC_NA);
1519 if(g_str_has_suffix(mms_priv->itemid_str,"$ctlModel")){
1520 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_CTLMODEL;
1521 }else if(g_str_has_suffix(mms_priv->itemid_str,"$q")){
1522 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_Q;
1523 }else if(g_str_has_suffix(mms_priv->itemid_str,"$Oper")){
1524 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_OPER;
1525 }else if((g_str_has_suffix(mms_priv->itemid_str,"$Oper$Check")) || (g_str_has_suffix(mms_priv->itemid_str,"$SBOw$Check"))){
1526 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_CHECK;
1527 }else if(g_str_has_suffix(mms_priv->itemid_str,"$orCat")){
1528 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_OR_CAT;
1529 }else if(g_str_has_suffix(mms_priv->itemid_str,"Beh$stVal")){
1530 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_BEH$STVAL;
1531 }else if(g_str_has_suffix(mms_priv->itemid_str,"Mod$stVal")){
1532 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_MOD$STVAL;
1533 }else if(g_str_has_suffix(mms_priv->itemid_str,"Health$stVal")){
1534 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_HEALTH$STVAL;
1535 }else if((g_strrstr(mms_priv->itemid_str,"$BR$") || g_strrstr(mms_priv->itemid_str,"$RP$"))){ //GetBRCBValues,GetURCBValues,)
1536 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_$BR$_OR_$RP$;
1537 }else if(g_str_has_suffix(mms_priv->itemid_str,"$SBOw")){
1538 mms_priv->mms_trans_p->itemid = IEC61850_ITEM_ID_$SBOW;
1539 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE;
1544 if ((mms_priv) && (hf_index == hf_mms_vmd_specific)){
1545 const char *vmd_specific_str = tvb_get_string_enc(actx->pinfo->pool, parameter_tvb, 0, tvb_reported_length(parameter_tvb), ENC_ASCII|ENC_NA);
1546 if (strcmp(vmd_specific_str, "RPT") == 0) {
1547 mms_priv->vmd_specific = IEC61850_8_1_RPT;
1553 return offset;
1558 static int
1559 dissect_mms_ObjectName_domain_specific_itemid(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1560 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1562 return offset;
1566 static const ber_sequence_t T_domain_specific_sequence[] = {
1567 { &hf_mms_domainId , BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_Identifier },
1568 { &hf_mms_objectName_domain_specific_itemId, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_ObjectName_domain_specific_itemid },
1569 { NULL, 0, 0, 0, NULL }
1572 static int
1573 dissect_mms_T_domain_specific(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1574 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1575 T_domain_specific_sequence, hf_index, ett_mms_T_domain_specific);
1577 return offset;
1581 static const value_string mms_ObjectName_vals[] = {
1582 { 0, "vmd-specific" },
1583 { 1, "domain-specific" },
1584 { 2, "aa-specific" },
1585 { 0, NULL }
1588 static const ber_choice_t ObjectName_choice[] = {
1589 { 0, &hf_mms_vmd_specific , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1590 { 1, &hf_mms_domain_specific , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_domain_specific },
1591 { 2, &hf_mms_aa_specific , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1592 { 0, NULL, 0, 0, 0, NULL }
1595 static int
1596 dissect_mms_ObjectName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1597 offset = dissect_ber_choice(actx, tree, tvb, offset,
1598 ObjectName_choice, hf_index, ett_mms_ObjectName,
1599 NULL);
1601 return offset;
1605 static int * const Transitions_bits[] = {
1606 &hf_mms_Transitions_idle_to_disabled,
1607 &hf_mms_Transitions_active_to_disabled,
1608 &hf_mms_Transitions_disabled_to_idle,
1609 &hf_mms_Transitions_active_to_idle,
1610 &hf_mms_Transitions_disabled_to_active,
1611 &hf_mms_Transitions_idle_to_active,
1612 &hf_mms_Transitions_any_to_deleted,
1613 NULL
1616 static int
1617 dissect_mms_Transitions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1618 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1619 Transitions_bits, 7, hf_index, ett_mms_Transitions,
1620 NULL);
1622 return offset;
1626 static const ber_sequence_t AttachToEventCondition_sequence[] = {
1627 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
1628 { &hf_mms_eventConditionName, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
1629 { &hf_mms_causingTransitions, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Transitions },
1630 { &hf_mms_acceptableDelay , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
1631 { NULL, 0, 0, 0, NULL }
1634 static int
1635 dissect_mms_AttachToEventCondition(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1636 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1637 AttachToEventCondition_sequence, hf_index, ett_mms_AttachToEventCondition);
1639 return offset;
1644 static int
1645 dissect_mms_Unsigned8(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1646 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1647 NULL);
1649 return offset;
1654 static int
1655 dissect_mms_Priority(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1656 offset = dissect_mms_Unsigned8(implicit_tag, tvb, offset, actx, tree, hf_index);
1658 return offset;
1663 static int
1664 dissect_mms_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1665 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1667 return offset;
1671 static const ber_sequence_t AttachToSemaphore_sequence[] = {
1672 { &hf_mms_semaphoreName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
1673 { &hf_mms_namedToken , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1674 { &hf_mms_priority , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
1675 { &hf_mms_acceptableDelay , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
1676 { &hf_mms_controlTimeOut , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
1677 { &hf_mms_abortOnTimeOut , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
1678 { &hf_mms_relinquishIfConnectionLost, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
1679 { NULL, 0, 0, 0, NULL }
1682 static int
1683 dissect_mms_AttachToSemaphore(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1684 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1685 AttachToSemaphore_sequence, hf_index, ett_mms_AttachToSemaphore);
1687 return offset;
1691 static const value_string mms_Modifier_vals[] = {
1692 { 0, "attach-To-Event-Condition" },
1693 { 1, "attach-To-Semaphore" },
1694 { 0, NULL }
1697 static const ber_choice_t Modifier_choice[] = {
1698 { 0, &hf_mms_attach_To_Event_Condition, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_AttachToEventCondition },
1699 { 1, &hf_mms_attach_To_Semaphore, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_AttachToSemaphore },
1700 { 0, NULL, 0, 0, 0, NULL }
1703 static int
1704 dissect_mms_Modifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1705 offset = dissect_ber_choice(actx, tree, tvb, offset,
1706 Modifier_choice, hf_index, ett_mms_Modifier,
1707 NULL);
1709 return offset;
1713 static const ber_sequence_t SEQUENCE_OF_Modifier_sequence_of[1] = {
1714 { &hf_mms_listOfModifier_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_Modifier },
1717 static int
1718 dissect_mms_SEQUENCE_OF_Modifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1719 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1720 SEQUENCE_OF_Modifier_sequence_of, hf_index, ett_mms_SEQUENCE_OF_Modifier);
1722 return offset;
1727 static int
1728 dissect_mms_Status_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1729 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1731 return offset;
1735 static const value_string mms_ObjectClass_vals[] = {
1736 { 0, "nammedVariable" },
1737 { 1, "scatteredAccess" },
1738 { 2, "namedVariableList" },
1739 { 3, "namedType" },
1740 { 4, "semaphore" },
1741 { 5, "eventCondition" },
1742 { 6, "eventAction" },
1743 { 7, "eventEnrollment" },
1744 { 8, "journal" },
1745 { 9, "domain" },
1746 { 10, "programInvocation" },
1747 { 11, "operatorStation" },
1748 { 0, NULL }
1752 static int
1753 dissect_mms_ObjectClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1754 uint32_t val;
1756 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1757 &val);
1759 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
1760 if(mms_priv){
1761 mms_priv->objectclass = val;
1765 return offset;
1769 static const value_string mms_T_extendedObjectClass_vals[] = {
1770 { 0, "objectClass" },
1771 { 0, NULL }
1774 static const ber_choice_t T_extendedObjectClass_choice[] = {
1775 { 0, &hf_mms_objectClass , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_ObjectClass },
1776 { 0, NULL, 0, 0, 0, NULL }
1779 static int
1780 dissect_mms_T_extendedObjectClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1781 offset = dissect_ber_choice(actx, tree, tvb, offset,
1782 T_extendedObjectClass_choice, hf_index, ett_mms_T_extendedObjectClass,
1783 NULL);
1785 return offset;
1790 static int
1791 dissect_mms_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1792 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
1794 return offset;
1798 static const value_string mms_ObjectScope_vals[] = {
1799 { 0, "vmdSpecific" },
1800 { 1, "domainSpecific" },
1801 { 2, "aaSpecific" },
1802 { 0, NULL }
1805 static const ber_choice_t ObjectScope_choice[] = {
1806 { 0, &hf_mms_vmdSpecific , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
1807 { 1, &hf_mms_domainSpecific , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1808 { 2, &hf_mms_aaSpecific , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
1809 { 0, NULL, 0, 0, 0, NULL }
1812 static int
1813 dissect_mms_ObjectScope(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1814 int val;
1816 offset = dissect_ber_choice(actx, tree, tvb, offset,
1817 ObjectScope_choice, hf_index, ett_mms_ObjectScope,
1818 &val);
1820 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
1821 if(mms_priv){
1822 mms_priv->objectscope = val;
1826 return offset;
1830 static const ber_sequence_t GetNameList_Request_sequence[] = {
1831 { &hf_mms_extendedObjectClass, BER_CLASS_CON, 0, 0, dissect_mms_T_extendedObjectClass },
1832 { &hf_mms_objectScope , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectScope },
1833 { &hf_mms_getNameList_Request_continueAfter, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1834 { NULL, 0, 0, 0, NULL }
1837 static int
1838 dissect_mms_GetNameList_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1839 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1840 GetNameList_Request_sequence, hf_index, ett_mms_GetNameList_Request);
1842 return offset;
1847 static int
1848 dissect_mms_Identify_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1849 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
1851 return offset;
1855 static const value_string mms_T_objectClass_vals[] = {
1856 { 0, "namedVariable" },
1857 { 1, "scatteredAccess" },
1858 { 2, "namedVariableList" },
1859 { 3, "namedType" },
1860 { 4, "semaphore" },
1861 { 5, "eventCondition" },
1862 { 6, "eventAction" },
1863 { 7, "eventEnrollment" },
1864 { 8, "journal" },
1865 { 9, "domain" },
1866 { 10, "programInvocation" },
1867 { 11, "operatorStation" },
1868 { 0, NULL }
1872 static int
1873 dissect_mms_T_objectClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1874 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1875 NULL);
1877 return offset;
1881 static const value_string mms_T_extendedObjectClass_01_vals[] = {
1882 { 0, "objectClass" },
1883 { 0, NULL }
1886 static const ber_choice_t T_extendedObjectClass_01_choice[] = {
1887 { 0, &hf_mms_objectClass_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_objectClass },
1888 { 0, NULL, 0, 0, 0, NULL }
1891 static int
1892 dissect_mms_T_extendedObjectClass_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1893 offset = dissect_ber_choice(actx, tree, tvb, offset,
1894 T_extendedObjectClass_01_choice, hf_index, ett_mms_T_extendedObjectClass_01,
1895 NULL);
1897 return offset;
1901 static const ber_sequence_t Rename_Request_sequence[] = {
1902 { &hf_mms_extendedObjectClass_01, BER_CLASS_CON, 0, 0, dissect_mms_T_extendedObjectClass_01 },
1903 { &hf_mms_currentName , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
1904 { &hf_mms_newIdentifier , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1905 { NULL, 0, 0, 0, NULL }
1908 static int
1909 dissect_mms_Rename_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1910 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1911 Rename_Request_sequence, hf_index, ett_mms_Rename_Request);
1913 return offset;
1918 static int
1919 dissect_mms_VisibleString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1920 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
1921 actx, tree, tvb, offset, hf_index,
1922 NULL);
1924 return offset;
1929 static int
1930 dissect_mms_OCTET_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1931 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1932 NULL);
1934 return offset;
1938 static const value_string mms_Address_vals[] = {
1939 { 0, "numericAddress" },
1940 { 1, "symbolicAddress" },
1941 { 2, "unconstrainedAddress" },
1942 { 0, NULL }
1945 static const ber_choice_t Address_choice[] = {
1946 { 0, &hf_mms_numericAddress , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
1947 { 1, &hf_mms_symbolicAddress , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
1948 { 2, &hf_mms_unconstrainedAddress, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
1949 { 0, NULL, 0, 0, 0, NULL }
1952 static int
1953 dissect_mms_Address(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1954 offset = dissect_ber_choice(actx, tree, tvb, offset,
1955 Address_choice, hf_index, ett_mms_Address,
1956 NULL);
1958 return offset;
1962 static const ber_sequence_t T_array_sequence[] = {
1963 { &hf_mms_packed , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
1964 { &hf_mms_numberOfElements, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
1965 { &hf_mms_elementType , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
1966 { NULL, 0, 0, 0, NULL }
1969 static int
1970 dissect_mms_T_array(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1971 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1972 T_array_sequence, hf_index, ett_mms_T_array);
1974 return offset;
1978 static const ber_sequence_t T_components_item_sequence[] = {
1979 { &hf_mms_componentName , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
1980 { &hf_mms_componentType , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
1981 { NULL, 0, 0, 0, NULL }
1984 static int
1985 dissect_mms_T_components_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1986 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1987 T_components_item_sequence, hf_index, ett_mms_T_components_item);
1989 return offset;
1993 static const ber_sequence_t T_components_sequence_of[1] = {
1994 { &hf_mms_components_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_T_components_item },
1997 static int
1998 dissect_mms_T_components(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1999 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2000 T_components_sequence_of, hf_index, ett_mms_T_components);
2002 return offset;
2006 static const ber_sequence_t T_structure_sequence[] = {
2007 { &hf_mms_packed , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
2008 { &hf_mms_components , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_components },
2009 { NULL, 0, 0, 0, NULL }
2012 static int
2013 dissect_mms_T_structure(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2014 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2015 T_structure_sequence, hf_index, ett_mms_T_structure);
2017 return offset;
2022 static int
2023 dissect_mms_Integer32(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2024 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2025 NULL);
2027 return offset;
2031 static const value_string mms_TypeSpecification_vals[] = {
2032 { 0, "typeName" },
2033 { 1, "array" },
2034 { 2, "structure" },
2035 { 3, "boolean" },
2036 { 4, "bit-string" },
2037 { 5, "integer" },
2038 { 6, "unsigned" },
2039 { 9, "octet-string" },
2040 { 10, "visible-string" },
2041 { 11, "generalized-time" },
2042 { 12, "binary-time" },
2043 { 13, "bcd" },
2044 { 15, "objId" },
2045 { 0, NULL }
2048 static const ber_choice_t TypeSpecification_choice[] = {
2049 { 0, &hf_mms_typeName , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
2050 { 1, &hf_mms_array , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_array },
2051 { 2, &hf_mms_structure , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_structure },
2052 { 3, &hf_mms_boolean , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
2053 { 4, &hf_mms_typeSpecification_bit_string, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
2054 { 5, &hf_mms_integer , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
2055 { 6, &hf_mms_unsigned , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
2056 { 9, &hf_mms_typeSpecification_octet_string, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
2057 { 10, &hf_mms_typeSpecification_visible_string, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
2058 { 11, &hf_mms_generalized_time, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
2059 { 12, &hf_mms_typeSpecification_binary_time, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
2060 { 13, &hf_mms_bcd , BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
2061 { 15, &hf_mms_objId , BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
2062 { 0, NULL, 0, 0, 0, NULL }
2065 static int
2066 dissect_mms_TypeSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2067 // TypeSpecification -> TypeSpecification/array -> TypeSpecification
2068 actx->pinfo->dissection_depth += 2;
2069 increment_dissection_depth(actx->pinfo);
2070 offset = dissect_ber_choice(actx, tree, tvb, offset,
2071 TypeSpecification_choice, hf_index, ett_mms_TypeSpecification,
2072 NULL);
2074 actx->pinfo->dissection_depth -= 2;
2075 decrement_dissection_depth(actx->pinfo);
2076 return offset;
2080 static const ber_sequence_t T_variableDescription_sequence[] = {
2081 { &hf_mms_address , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_Address },
2082 { &hf_mms_typeSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
2083 { NULL, 0, 0, 0, NULL }
2086 static int
2087 dissect_mms_T_variableDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2088 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2089 T_variableDescription_sequence, hf_index, ett_mms_T_variableDescription);
2091 return offset;
2095 static const ber_sequence_t T_indexRange_sequence[] = {
2096 { &hf_mms_lowIndex , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
2097 { &hf_mms_numberOfElements, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
2098 { NULL, 0, 0, 0, NULL }
2101 static int
2102 dissect_mms_T_indexRange(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2103 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2104 T_indexRange_sequence, hf_index, ett_mms_T_indexRange);
2106 return offset;
2110 static const value_string mms_T_accessSelection_vals[] = {
2111 { 0, "component" },
2112 { 1, "index" },
2113 { 2, "indexRange" },
2114 { 3, "allElements" },
2115 { 0, NULL }
2118 static const ber_choice_t T_accessSelection_choice[] = {
2119 { 0, &hf_mms_component , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
2120 { 1, &hf_mms_index , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
2121 { 2, &hf_mms_indexRange , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_indexRange },
2122 { 3, &hf_mms_allElements , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
2123 { 0, NULL, 0, 0, 0, NULL }
2126 static int
2127 dissect_mms_T_accessSelection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2128 offset = dissect_ber_choice(actx, tree, tvb, offset,
2129 T_accessSelection_choice, hf_index, ett_mms_T_accessSelection,
2130 NULL);
2132 return offset;
2136 static const ber_sequence_t T_selectAlternateAccess_sequence[] = {
2137 { &hf_mms_accessSelection , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_accessSelection },
2138 { &hf_mms_alternateAccess , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_AlternateAccess },
2139 { NULL, 0, 0, 0, NULL }
2142 static int
2143 dissect_mms_T_selectAlternateAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2144 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2145 T_selectAlternateAccess_sequence, hf_index, ett_mms_T_selectAlternateAccess);
2147 return offset;
2151 static const ber_sequence_t T_indexRange_01_sequence[] = {
2152 { &hf_mms_lowIndex , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
2153 { &hf_mms_nmberOfElements , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
2154 { NULL, 0, 0, 0, NULL }
2157 static int
2158 dissect_mms_T_indexRange_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2159 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2160 T_indexRange_01_sequence, hf_index, ett_mms_T_indexRange_01);
2162 return offset;
2166 static const value_string mms_T_selectAccess_vals[] = {
2167 { 1, "component" },
2168 { 2, "index" },
2169 { 3, "indexRange" },
2170 { 4, "allElements" },
2171 { 0, NULL }
2174 static const ber_choice_t T_selectAccess_choice[] = {
2175 { 1, &hf_mms_component , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
2176 { 2, &hf_mms_index , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
2177 { 3, &hf_mms_indexRange_01 , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_T_indexRange_01 },
2178 { 4, &hf_mms_allElements , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
2179 { 0, NULL, 0, 0, 0, NULL }
2182 static int
2183 dissect_mms_T_selectAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2184 offset = dissect_ber_choice(actx, tree, tvb, offset,
2185 T_selectAccess_choice, hf_index, ett_mms_T_selectAccess,
2186 NULL);
2188 return offset;
2192 static const value_string mms_AlternateAccessSelection_vals[] = {
2193 { 0, "selectAlternateAccess" },
2194 { 1, "selectAccess" },
2195 { 0, NULL }
2198 static const ber_choice_t AlternateAccessSelection_choice[] = {
2199 { 0, &hf_mms_selectAlternateAccess, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_selectAlternateAccess },
2200 { 1, &hf_mms_selectAccess , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_mms_T_selectAccess },
2201 { 0, NULL, 0, 0, 0, NULL }
2204 static int
2205 dissect_mms_AlternateAccessSelection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2206 offset = dissect_ber_choice(actx, tree, tvb, offset,
2207 AlternateAccessSelection_choice, hf_index, ett_mms_AlternateAccessSelection,
2208 NULL);
2210 return offset;
2214 static const ber_sequence_t T_named_sequence[] = {
2215 { &hf_mms_componentName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
2216 { &hf_mms_accesst , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_AlternateAccessSelection },
2217 { NULL, 0, 0, 0, NULL }
2220 static int
2221 dissect_mms_T_named(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2222 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2223 T_named_sequence, hf_index, ett_mms_T_named);
2225 return offset;
2229 static const value_string mms_AlternateAccess_item_vals[] = {
2230 { 0, "unnamed" },
2231 { 1, "named" },
2232 { 0, NULL }
2235 static const ber_choice_t AlternateAccess_item_choice[] = {
2236 { 0, &hf_mms_unnamed , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_mms_AlternateAccessSelection },
2237 { 1, &hf_mms_named , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_T_named },
2238 { 0, NULL, 0, 0, 0, NULL }
2241 static int
2242 dissect_mms_AlternateAccess_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2243 offset = dissect_ber_choice(actx, tree, tvb, offset,
2244 AlternateAccess_item_choice, hf_index, ett_mms_AlternateAccess_item,
2245 NULL);
2247 return offset;
2251 static const ber_sequence_t AlternateAccess_sequence_of[1] = {
2252 { &hf_mms_AlternateAccess_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_AlternateAccess_item },
2255 static int
2256 dissect_mms_AlternateAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2257 // AlternateAccess -> AlternateAccess/_item -> AlternateAccessSelection -> AlternateAccessSelection/selectAlternateAccess -> AlternateAccess
2258 actx->pinfo->dissection_depth += 4;
2259 increment_dissection_depth(actx->pinfo);
2260 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2261 AlternateAccess_sequence_of, hf_index, ett_mms_AlternateAccess);
2263 actx->pinfo->dissection_depth -= 4;
2264 decrement_dissection_depth(actx->pinfo);
2265 return offset;
2269 static const ber_sequence_t ScatteredAccessDescription_item_sequence[] = {
2270 { &hf_mms_componentName , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
2271 { &hf_mms_variableSpecification, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_VariableSpecification },
2272 { &hf_mms_alternateAccess , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlternateAccess },
2273 { NULL, 0, 0, 0, NULL }
2276 static int
2277 dissect_mms_ScatteredAccessDescription_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2278 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2279 ScatteredAccessDescription_item_sequence, hf_index, ett_mms_ScatteredAccessDescription_item);
2281 return offset;
2285 static const ber_sequence_t ScatteredAccessDescription_sequence_of[1] = {
2286 { &hf_mms_ScatteredAccessDescription_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_ScatteredAccessDescription_item },
2289 static int
2290 dissect_mms_ScatteredAccessDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2291 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2292 ScatteredAccessDescription_sequence_of, hf_index, ett_mms_ScatteredAccessDescription);
2294 return offset;
2298 static const value_string mms_VariableSpecification_vals[] = {
2299 { 0, "name" },
2300 { 1, "address" },
2301 { 2, "variableDescription" },
2302 { 3, "scatteredAccessDescription" },
2303 { 4, "invalidated" },
2304 { 0, NULL }
2307 static const ber_choice_t VariableSpecification_choice[] = {
2308 { 0, &hf_mms_name , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
2309 { 1, &hf_mms_address , BER_CLASS_CON, 1, 0, dissect_mms_Address },
2310 { 2, &hf_mms_variableDescription, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_variableDescription },
2311 { 3, &hf_mms_scatteredAccessDescription, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_ScatteredAccessDescription },
2312 { 4, &hf_mms_invalidated , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
2313 { 0, NULL, 0, 0, 0, NULL }
2316 static int
2317 dissect_mms_VariableSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2318 // VariableSpecification -> ScatteredAccessDescription -> ScatteredAccessDescription/_item -> VariableSpecification
2319 actx->pinfo->dissection_depth += 3;
2320 increment_dissection_depth(actx->pinfo);
2321 offset = dissect_ber_choice(actx, tree, tvb, offset,
2322 VariableSpecification_choice, hf_index, ett_mms_VariableSpecification,
2323 NULL);
2325 actx->pinfo->dissection_depth -= 3;
2326 decrement_dissection_depth(actx->pinfo);
2327 return offset;
2331 static const ber_sequence_t T_listOfVariable_item_02_sequence[] = {
2332 { &hf_mms_variableSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableSpecification },
2333 { &hf_mms_alternateAccess , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlternateAccess },
2334 { NULL, 0, 0, 0, NULL }
2337 static int
2338 dissect_mms_T_listOfVariable_item_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2339 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2340 T_listOfVariable_item_02_sequence, hf_index, ett_mms_T_listOfVariable_item_02);
2342 return offset;
2346 static const ber_sequence_t T_listOfVariable_02_sequence_of[1] = {
2347 { &hf_mms_listOfVariable_item_02, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_T_listOfVariable_item_02 },
2350 static int
2351 dissect_mms_T_listOfVariable_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2352 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2353 T_listOfVariable_02_sequence_of, hf_index, ett_mms_T_listOfVariable_02);
2355 return offset;
2359 static const value_string mms_VariableAccessSpecification_vals[] = {
2360 { 0, "listOfVariable" },
2361 { 1, "variableListName" },
2362 { 0, NULL }
2365 static const ber_choice_t VariableAccessSpecification_choice[] = {
2366 { 0, &hf_mms_listOfVariable_02, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfVariable_02 },
2367 { 1, &hf_mms_variableListName, BER_CLASS_CON, 1, 0, dissect_mms_ObjectName },
2368 { 0, NULL, 0, 0, 0, NULL }
2371 static int
2372 dissect_mms_VariableAccessSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2373 offset = dissect_ber_choice(actx, tree, tvb, offset,
2374 VariableAccessSpecification_choice, hf_index, ett_mms_VariableAccessSpecification,
2375 NULL);
2377 return offset;
2381 static const ber_sequence_t Read_Request_sequence[] = {
2382 { &hf_mms_specificationWithResult, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
2383 { &hf_mms_variableAccessSpecificatn, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_VariableAccessSpecification },
2384 { NULL, 0, 0, 0, NULL }
2387 static int
2388 dissect_mms_Read_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2389 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2390 Read_Request_sequence, hf_index, ett_mms_Read_Request);
2392 return offset;
2396 static const ber_sequence_t SEQUENCE_OF_Data_sequence_of[1] = {
2397 { &hf_mms_array_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_Data },
2400 static int
2401 dissect_mms_SEQUENCE_OF_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2402 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2403 SEQUENCE_OF_Data_sequence_of, hf_index, ett_mms_SEQUENCE_OF_Data);
2405 return offset;
2409 static const ber_sequence_t T_structure_01_sequence_of[1] = {
2410 { &hf_mms_structure_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_Data },
2413 static int
2414 dissect_mms_T_structure_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2415 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2416 if((mms_priv)&& (mms_priv->mms_trans_p)){
2417 if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2418 if(mms_priv->data_cnt == 3){
2419 /* IEC 61850-8-1 origin, if we hgave a struct here Tm was not there */
2420 hf_index = hf_mms_iec61850_origin;
2421 mms_priv->data_cnt++;
2422 }else if(mms_priv->data_cnt == 4){
2423 /* IEC 61850-8-1 origin, if we hgave a struct here Tm was not there */
2424 hf_index = hf_mms_iec61850_origin;
2428 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2429 T_structure_01_sequence_of, hf_index, ett_mms_T_structure_01);
2433 return offset;
2438 static int
2439 dissect_mms_T_boolean(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2440 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2441 if((mms_priv) && (mms_priv->mms_trans_p)){
2442 if(mms_priv->vmd_specific == IEC61850_8_1_RPT ){
2443 if(mms_priv->listOfAccessResult_cnt == 6){
2444 /* IEC 61850-8-1 BufOvfl */
2445 hf_index = hf_mms_iec61850_bufovfl;
2447 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2448 if(mms_priv->data_cnt == 2){
2449 /* IEC 61850-8-1 ctlVal */
2450 hf_index = hf_mms_iec61850_ctlval;
2451 }else if(mms_priv->data_cnt == 9){
2452 /* IEC 61850-8-1 Test */
2453 hf_index = hf_mms_iec61850_test;
2457 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2461 return offset;
2466 static int
2467 dissect_mms_T_data_bit_string(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2469 static int* const quality_field_bits_oct1[] = {
2470 &hf_mms_iec61850_QualityC0,
2471 &hf_mms_iec61850_Quality20,
2472 &hf_mms_iec61850_Quality10,
2473 &hf_mms_iec61850_Quality8,
2474 &hf_mms_iec61850_Quality4,
2475 &hf_mms_iec61850_Quality2,
2476 &hf_mms_iec61850_Quality1,
2477 NULL
2480 static int* const quality_field_bits_oct2[] = {
2481 &hf_mms_iec61850_Quality0080,
2482 &hf_mms_iec61850_Quality0040,
2483 &hf_mms_iec61850_Quality0020,
2484 &hf_mms_iec61850_Quality0010,
2485 &hf_mms_iec61850_Quality0008,
2486 NULL
2489 static int * const mms_iec61850_chec_bits[] = {
2490 &hf_mms_iec61850_check_b15,
2491 &hf_mms_iec61850_check_b14,
2492 &hf_mms_iec61850_check_b13_b0,
2493 NULL
2495 tvbuff_t *parameter_tvb = NULL;
2496 proto_tree *sub_tree;
2498 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2499 if((mms_priv)&&(mms_priv->mms_trans_p)){
2500 if(mms_priv->vmd_specific == IEC61850_8_1_RPT ){
2501 if(mms_priv->listOfAccessResult_cnt == 2){
2502 /* IEC 61850-8-1 Reported OptFlds */
2503 return dissect_mms_ReportedOptFlds(implicit_tag, tvb, offset, actx, tree, hf_mms_iec61850_reported_optflds);
2504 }else{
2505 if(mms_priv->listOfAccessResult_cnt == 11){
2506 hf_index = hf_mms_iec61850_inclusion_bitstring;
2509 }else if (mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_Q){
2510 hf_index = hf_mms_iec61850_quality_bitstring;
2511 }else if (mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_CHECK){
2512 hf_index = hf_mms_iec61850_check_bitstring;
2513 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2514 if(mms_priv->data_cnt == 10){
2515 hf_index = hf_mms_iec61850_check_bitstring;
2520 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2521 NULL, 0, hf_index, -1,
2522 &parameter_tvb);
2525 if((mms_priv)&&(parameter_tvb) && (mms_priv->mms_trans_p)){
2526 if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_Q){
2527 sub_tree = proto_item_add_subtree(actx->created_item, ett_mms_iec61850_quality_bitstring);
2528 proto_tree_add_bitmask_list(sub_tree, parameter_tvb, 0, 1, quality_field_bits_oct1, ENC_NA);
2529 proto_tree_add_bitmask_list(sub_tree, parameter_tvb, 1, 1, quality_field_bits_oct2, ENC_NA);
2530 }else if (mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_CHECK){
2531 sub_tree = proto_item_add_subtree(actx->created_item, ett_mms_iec61850_check_bitstring);
2532 proto_tree_add_bitmask_list(sub_tree, parameter_tvb, 0, 1, mms_iec61850_chec_bits, ENC_NA);
2533 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2534 if(mms_priv->data_cnt == 10){
2535 sub_tree = proto_item_add_subtree(actx->created_item, ett_mms_iec61850_check_bitstring);
2536 proto_tree_add_bitmask_list(sub_tree, parameter_tvb, 0, 1, mms_iec61850_chec_bits, ENC_NA);
2542 return offset;
2547 static int
2548 dissect_mms_T_integer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2549 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2550 if((mms_priv) && (mms_priv->mms_trans_p)){
2551 if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_CTLMODEL){
2552 hf_index = hf_mms_iec61850_ctlModel;
2553 }else if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_OR_CAT){
2554 hf_index = hf_mms_iec61850_orcategory;
2555 }else if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_BEH$STVAL){
2556 hf_index = hf_mms_iec61850_beh$stval;
2557 }else if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_MOD$STVAL){
2558 hf_index = hf_mms_iec61850_beh$stval;
2559 }else if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_HEALTH$STVAL){
2560 hf_index = hf_mms_iec61850_health$stval;
2561 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2562 if(mms_priv->data_cnt == 5){
2563 /* IEC 61850-8-1 Origin Catagory */
2564 hf_index = hf_mms_iec61850_origin_orcat;
2569 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2570 NULL);
2574 return offset;
2579 static int
2580 dissect_mms_T_unsigned(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2581 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2582 if((mms_priv) && (mms_priv->mms_trans_p)){
2583 if(mms_priv->vmd_specific == IEC61850_8_1_RPT ){
2584 if(mms_priv->listOfAccessResult_cnt == 3){
2585 /* IEC 61850-8-1 SeqNum */
2586 hf_index = hf_mms_iec61850_seqnum;
2587 }else if(mms_priv->listOfAccessResult_cnt == 8){
2588 /* IEC 61850-8-1 ConfRev */
2589 hf_index = hf_mms_iec61850_confrev;
2592 if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2593 if(mms_priv->data_cnt == 7){
2594 hf_index = hf_mms_iec61850_ctlNum;
2598 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2599 NULL);
2603 return offset;
2608 static int
2609 dissect_mms_FloatingPoint(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2610 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2611 NULL);
2613 private_data_add_moreCinfo_float(actx, tvb);
2616 return offset;
2621 static int
2622 dissect_mms_T_data_octet_string(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2623 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2624 if((mms_priv)&& (mms_priv->mms_trans_p)){
2625 if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2626 if(mms_priv->data_cnt == 6){
2627 hf_index = hf_mms_iec61850_origin_orident;
2631 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2632 NULL);
2636 return offset;
2641 static int
2642 dissect_mms_T_data_visible_string(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2644 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2645 if(mms_priv){
2646 if(mms_priv->vmd_specific == IEC61850_8_1_RPT ){
2647 if(mms_priv->listOfAccessResult_cnt == 1){
2648 /* IEC 61850-8-1 RptID */
2649 hf_index = hf_mms_iec61850_rptid;
2650 }else if(mms_priv->listOfAccessResult_cnt == 5){
2651 /* IEC 61850-8-1 DatSet */
2652 hf_index = hf_mms_iec61850_datset;
2656 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
2657 actx, tree, tvb, offset, hf_index,
2658 NULL);
2662 return offset;
2667 static int
2668 dissect_mms_TimeOfDay(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2670 uint32_t len;
2671 uint32_t milliseconds;
2672 uint16_t days;
2673 char * ptime;
2674 nstime_t ts;
2676 len = tvb_reported_length_remaining(tvb, offset);
2678 if(len == 4)
2680 milliseconds = tvb_get_ntohl(tvb, offset);
2681 ptime = signed_time_msecs_to_str(actx->pinfo->pool, milliseconds);
2683 if(hf_index > 0)
2685 proto_tree_add_string(tree, hf_index, tvb, offset, len, ptime);
2687 return offset;
2690 if(len == 6)
2692 milliseconds = tvb_get_ntohl(tvb, offset);
2693 days = tvb_get_ntohs(tvb, offset+4);
2695 /* 5113 days between 01-01-1970 and 01-01-1984 */
2696 /* 86400 seconds in one day */
2698 ts.secs = (days + 5113) * 86400 + milliseconds / 1000;
2699 ts.nsecs = (milliseconds % 1000) * 1000000U;
2701 ptime = abs_time_to_str(actx->pinfo->pool, &ts, ABSOLUTE_TIME_UTC, true);
2702 if(hf_index > 0)
2704 proto_tree_add_string(tree, hf_index, tvb, offset, len, ptime);
2707 return offset;
2710 proto_tree_add_expert_format(tree, actx->pinfo, &ei_mms_mal_timeofday_encoding,
2711 tvb, offset, len, "BER Error: malformed TimeOfDay encoding, length must be 4 or 6 bytes");
2712 if(hf_index > 0)
2714 proto_tree_add_string(tree, hf_index, tvb, offset, len, "????");
2718 return offset;
2723 static int
2724 dissect_mms_T_data_binary_time(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2725 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2726 if(mms_priv){
2727 if(mms_priv->vmd_specific == IEC61850_8_1_RPT ){
2728 if(mms_priv->listOfAccessResult_cnt == 4){
2729 /* IEC 61850-8-1 TimeOfEntry */
2730 hf_index = hf_mms_iec61850_timeofentry;
2734 offset = dissect_mms_TimeOfDay(implicit_tag, tvb, offset, actx, tree, hf_index);
2738 return offset;
2743 static int
2744 dissect_mms_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2745 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2746 NULL);
2748 return offset;
2753 static int
2754 dissect_mms_BIT_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2755 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2756 NULL, 0, hf_index, -1,
2757 NULL);
2759 return offset;
2764 static int
2765 dissect_mms_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2766 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2768 return offset;
2773 static int
2774 dissect_mms_MMSString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2775 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
2776 actx, tree, tvb, offset, hf_index,
2777 NULL);
2779 return offset;
2784 static int
2785 dissect_mms_UtcTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2787 uint32_t len;
2788 uint32_t seconds;
2789 uint32_t fraction;
2790 uint32_t nanoseconds;
2791 nstime_t ts;
2792 char * ptime;
2794 static int * const TimeQuality_bits[] = {
2795 &hf_mms_iec61850_timequality80,
2796 &hf_mms_iec61850_timequality40,
2797 &hf_mms_iec61850_timequality20,
2798 &hf_mms_iec61850_timequality1F,
2799 NULL
2801 len = tvb_reported_length_remaining(tvb, offset);
2803 if(len != 8)
2805 /* The octet format shall be (using ASN.1 bstring notation):
2806 * ‘ssssssssssssssssssssssssssssssssffffffffffffffffffffffffqqqqqqqq’B
2807 * q stands for TimeQuality, i.e. reserved to represent TimeQuality based upon the referencing standard.
2809 proto_tree_add_expert_format(tree, actx->pinfo, &ei_mms_mal_utctime_encoding,
2810 tvb, offset, len, "BER Error: malformed IEC61850 UTCTime encoding, length must be 8 bytes");
2811 if(hf_index > 0)
2813 proto_tree_add_string(tree, hf_index, tvb, offset, len, "????");
2815 return offset;
2818 seconds = tvb_get_ntohl(tvb, offset);
2819 fraction = tvb_get_ntoh24(tvb, offset+4) * 0x100; /* Only 3 bytes are recommended */
2820 nanoseconds = (uint32_t )( ((uint64_t)fraction * UINT64_C(1000000000)) / UINT64_C(0x100000000) ) ;
2822 ts.secs = seconds;
2823 ts.nsecs = nanoseconds;
2825 ptime = abs_time_to_str(actx->pinfo->pool, &ts, ABSOLUTE_TIME_UTC, true);
2827 if(hf_index > 0)
2829 mms_actx_private_data_t* mms_priv = (mms_actx_private_data_t*)actx->private_data;
2830 if((mms_priv)&& (mms_priv->mms_trans_p)){
2831 if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
2832 if(mms_priv->data_cnt == 8){
2833 hf_index = hf_mms_iec61850_T;
2837 proto_tree_add_string(tree, hf_index, tvb, offset, len, ptime);
2838 proto_tree_add_bitmask_list(tree, tvb, offset+7, 1, TimeQuality_bits, ENC_BIG_ENDIAN);
2844 return offset;
2848 static const value_string mms_Data_vals[] = {
2849 { 1, "array" },
2850 { 2, "structure" },
2851 { 3, "boolean" },
2852 { 4, "bit-string" },
2853 { 5, "integer" },
2854 { 6, "unsigned" },
2855 { 7, "floating-point" },
2856 { 9, "octet-string" },
2857 { 10, "visible-string" },
2858 { 12, "binary-time" },
2859 { 13, "bcd" },
2860 { 14, "booleanArray" },
2861 { 15, "objId" },
2862 { 16, "mMSString" },
2863 { 17, "utc-time" },
2864 { 0, NULL }
2867 static const ber_choice_t Data_choice[] = {
2868 { 1, &hf_mms_array_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Data },
2869 { 2, &hf_mms_structure_01 , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_structure_01 },
2870 { 3, &hf_mms_boolean_01 , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_T_boolean },
2871 { 4, &hf_mms_data_bit_string , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_T_data_bit_string },
2872 { 5, &hf_mms_integer_01 , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_T_integer },
2873 { 6, &hf_mms_unsigned_01 , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_T_unsigned },
2874 { 7, &hf_mms_floating_point , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_FloatingPoint },
2875 { 9, &hf_mms_data_octet_string, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_T_data_octet_string },
2876 { 10, &hf_mms_data_visible_string, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_T_data_visible_string },
2877 { 12, &hf_mms_data_binary_time, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_mms_T_data_binary_time },
2878 { 13, &hf_mms_bcd_01 , BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_mms_INTEGER },
2879 { 14, &hf_mms_booleanArray , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_mms_BIT_STRING },
2880 { 15, &hf_mms_objId_01 , BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_mms_OBJECT_IDENTIFIER },
2881 { 16, &hf_mms_mMSString , BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_mms_MMSString },
2882 { 17, &hf_mms_utc_time , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_mms_UtcTime },
2883 { 0, NULL, 0, 0, 0, NULL }
2886 static int
2887 dissect_mms_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2888 // Data -> Data/array -> Data
2889 actx->pinfo->dissection_depth += 2;
2890 increment_dissection_depth(actx->pinfo);
2891 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2892 if(mms_priv){
2893 mms_priv->data_cnt += 1;
2896 offset = dissect_ber_choice(actx, tree, tvb, offset,
2897 Data_choice, hf_index, ett_mms_Data,
2898 NULL);
2902 actx->pinfo->dissection_depth -= 2;
2903 decrement_dissection_depth(actx->pinfo);
2904 return offset;
2908 static const ber_sequence_t T_listOfData_sequence_of[1] = {
2909 { &hf_mms_listOfData_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_Data },
2912 static int
2913 dissect_mms_T_listOfData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2914 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
2915 if(mms_priv){
2916 mms_priv->data_cnt = 0;
2918 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2919 T_listOfData_sequence_of, hf_index, ett_mms_T_listOfData);
2921 if(mms_priv){
2922 mms_priv->data_cnt = 0;
2926 return offset;
2930 static const ber_sequence_t Write_Request_sequence[] = {
2931 { &hf_mms_variableAccessSpecificatn, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableAccessSpecification },
2932 { &hf_mms_listOfData , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfData },
2933 { NULL, 0, 0, 0, NULL }
2936 static int
2937 dissect_mms_Write_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2938 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2939 Write_Request_sequence, hf_index, ett_mms_Write_Request);
2941 return offset;
2945 static const value_string mms_GetVariableAccessAttributes_Request_vals[] = {
2946 { 0, "name" },
2947 { 1, "address" },
2948 { 0, NULL }
2951 static const ber_choice_t GetVariableAccessAttributes_Request_choice[] = {
2952 { 0, &hf_mms_name , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
2953 { 1, &hf_mms_address , BER_CLASS_CON, 1, 0, dissect_mms_Address },
2954 { 0, NULL, 0, 0, 0, NULL }
2957 static int
2958 dissect_mms_GetVariableAccessAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2959 offset = dissect_ber_choice(actx, tree, tvb, offset,
2960 GetVariableAccessAttributes_Request_choice, hf_index, ett_mms_GetVariableAccessAttributes_Request,
2961 NULL);
2963 return offset;
2967 static const ber_sequence_t DefineNamedVariable_Request_sequence[] = {
2968 { &hf_mms_variableName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
2969 { &hf_mms_address , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_Address },
2970 { &hf_mms_typeSpecification, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
2971 { NULL, 0, 0, 0, NULL }
2974 static int
2975 dissect_mms_DefineNamedVariable_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2976 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2977 DefineNamedVariable_Request_sequence, hf_index, ett_mms_DefineNamedVariable_Request);
2979 return offset;
2983 static const ber_sequence_t DefineScatteredAccess_Request_sequence[] = {
2984 { &hf_mms_scatteredAccessName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
2985 { &hf_mms_scatteredAccessDescription, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ScatteredAccessDescription },
2986 { NULL, 0, 0, 0, NULL }
2989 static int
2990 dissect_mms_DefineScatteredAccess_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2991 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2992 DefineScatteredAccess_Request_sequence, hf_index, ett_mms_DefineScatteredAccess_Request);
2994 return offset;
2999 static int
3000 dissect_mms_GetScatteredAccessAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3001 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3003 return offset;
3007 static const value_string mms_T_scopeOfDelete_vals[] = {
3008 { 0, "specific" },
3009 { 1, "aa-specific" },
3010 { 2, "domain" },
3011 { 3, "vmd" },
3012 { 0, NULL }
3016 static int
3017 dissect_mms_T_scopeOfDelete(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3018 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3019 NULL);
3021 return offset;
3025 static const ber_sequence_t SEQUENCE_OF_ObjectName_sequence_of[1] = {
3026 { &hf_mms_listOfName_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3029 static int
3030 dissect_mms_SEQUENCE_OF_ObjectName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3031 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3032 SEQUENCE_OF_ObjectName_sequence_of, hf_index, ett_mms_SEQUENCE_OF_ObjectName);
3034 return offset;
3038 static const ber_sequence_t DeleteVariableAccess_Request_sequence[] = {
3039 { &hf_mms_scopeOfDelete , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_scopeOfDelete },
3040 { &hf_mms_listOfName , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
3041 { &hf_mms_domainName , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3042 { NULL, 0, 0, 0, NULL }
3045 static int
3046 dissect_mms_DeleteVariableAccess_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3047 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3048 DeleteVariableAccess_Request_sequence, hf_index, ett_mms_DeleteVariableAccess_Request);
3050 return offset;
3054 static const ber_sequence_t T_listOfVariable_item_sequence[] = {
3055 { &hf_mms_variableSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableSpecification },
3056 { &hf_mms_alternateAccess , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlternateAccess },
3057 { NULL, 0, 0, 0, NULL }
3060 static int
3061 dissect_mms_T_listOfVariable_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3062 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3063 T_listOfVariable_item_sequence, hf_index, ett_mms_T_listOfVariable_item);
3065 return offset;
3069 static const ber_sequence_t T_listOfVariable_sequence_of[1] = {
3070 { &hf_mms_listOfVariable_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_T_listOfVariable_item },
3073 static int
3074 dissect_mms_T_listOfVariable(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3075 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3076 T_listOfVariable_sequence_of, hf_index, ett_mms_T_listOfVariable);
3078 return offset;
3082 static const ber_sequence_t DefineNamedVariableList_Request_sequence[] = {
3083 { &hf_mms_variableListName, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3084 { &hf_mms_listOfVariable , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfVariable },
3085 { NULL, 0, 0, 0, NULL }
3088 static int
3089 dissect_mms_DefineNamedVariableList_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3090 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3091 DefineNamedVariableList_Request_sequence, hf_index, ett_mms_DefineNamedVariableList_Request);
3093 return offset;
3098 static int
3099 dissect_mms_GetNamedVariableListAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3100 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3102 return offset;
3106 static const value_string mms_T_scopeOfDelete_01_vals[] = {
3107 { 0, "specific" },
3108 { 1, "aa-specific" },
3109 { 2, "domain" },
3110 { 3, "vmd" },
3111 { 0, NULL }
3115 static int
3116 dissect_mms_T_scopeOfDelete_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3117 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3118 NULL);
3120 return offset;
3124 static const ber_sequence_t DeleteNamedVariableList_Request_sequence[] = {
3125 { &hf_mms_scopeOfDelete_01, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_scopeOfDelete_01 },
3126 { &hf_mms_listOfVariableListName, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
3127 { &hf_mms_domainName , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3128 { NULL, 0, 0, 0, NULL }
3131 static int
3132 dissect_mms_DeleteNamedVariableList_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3133 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3134 DeleteNamedVariableList_Request_sequence, hf_index, ett_mms_DeleteNamedVariableList_Request);
3136 return offset;
3140 static const ber_sequence_t DefineNamedType_Request_sequence[] = {
3141 { &hf_mms_typeName , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3142 { &hf_mms_typeSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
3143 { NULL, 0, 0, 0, NULL }
3146 static int
3147 dissect_mms_DefineNamedType_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3148 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3149 DefineNamedType_Request_sequence, hf_index, ett_mms_DefineNamedType_Request);
3151 return offset;
3156 static int
3157 dissect_mms_GetNamedTypeAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3158 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3160 return offset;
3164 static const value_string mms_T_scopeOfDelete_02_vals[] = {
3165 { 0, "specific" },
3166 { 1, "aa-specific" },
3167 { 2, "domain" },
3168 { 3, "vmd" },
3169 { 0, NULL }
3173 static int
3174 dissect_mms_T_scopeOfDelete_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3175 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3176 NULL);
3178 return offset;
3182 static const ber_sequence_t DeleteNamedType_Request_sequence[] = {
3183 { &hf_mms_scopeOfDelete_02, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_scopeOfDelete_02 },
3184 { &hf_mms_listOfTypeName , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
3185 { &hf_mms_domainName , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3186 { NULL, 0, 0, 0, NULL }
3189 static int
3190 dissect_mms_DeleteNamedType_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3191 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3192 DeleteNamedType_Request_sequence, hf_index, ett_mms_DeleteNamedType_Request);
3194 return offset;
3198 static const ber_sequence_t T_listOfPromptData_sequence_of[1] = {
3199 { &hf_mms_listOfPromptData_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
3202 static int
3203 dissect_mms_T_listOfPromptData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3204 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3205 T_listOfPromptData_sequence_of, hf_index, ett_mms_T_listOfPromptData);
3207 return offset;
3211 static const ber_sequence_t Input_Request_sequence[] = {
3212 { &hf_mms_operatorStationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3213 { &hf_mms_echo , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
3214 { &hf_mms_listOfPromptData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_listOfPromptData },
3215 { &hf_mms_inputTimeOut , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
3216 { NULL, 0, 0, 0, NULL }
3219 static int
3220 dissect_mms_Input_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3221 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3222 Input_Request_sequence, hf_index, ett_mms_Input_Request);
3224 return offset;
3228 static const ber_sequence_t T_listOfOutputData_sequence_of[1] = {
3229 { &hf_mms_listOfOutputData_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
3232 static int
3233 dissect_mms_T_listOfOutputData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3234 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3235 T_listOfOutputData_sequence_of, hf_index, ett_mms_T_listOfOutputData);
3237 return offset;
3241 static const ber_sequence_t Output_Request_sequence[] = {
3242 { &hf_mms_operatorStationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3243 { &hf_mms_listOfOutputData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfOutputData },
3244 { NULL, 0, 0, 0, NULL }
3247 static int
3248 dissect_mms_Output_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3249 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3250 Output_Request_sequence, hf_index, ett_mms_Output_Request);
3252 return offset;
3257 static int
3258 dissect_mms_T_ap_title(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3259 offset=dissect_acse_AP_title(false, tvb, offset, actx, tree, hf_mms_ap_title);
3262 return offset;
3267 static int
3268 dissect_mms_T_ap_invocation_id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3269 offset=dissect_acse_AP_invocation_identifier(false, tvb, offset, actx, tree, hf_mms_ap_invocation_id);
3272 return offset;
3277 static int
3278 dissect_mms_T_ae_qualifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3279 offset=dissect_acse_AE_qualifier(false, tvb, offset, actx, tree, hf_mms_ae_qualifier);
3282 return offset;
3287 static int
3288 dissect_mms_T_ae_invocation_id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3289 offset=dissect_acse_AE_invocation_identifier(false, tvb, offset, actx, tree, hf_mms_ae_invocation_id);
3292 return offset;
3296 static const ber_sequence_t ApplicationReference_sequence[] = {
3297 { &hf_mms_ap_title , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_mms_T_ap_title },
3298 { &hf_mms_ap_invocation_id, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mms_T_ap_invocation_id },
3299 { &hf_mms_ae_qualifier , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_mms_T_ae_qualifier },
3300 { &hf_mms_ae_invocation_id, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_mms_T_ae_invocation_id },
3301 { NULL, 0, 0, 0, NULL }
3304 static int
3305 dissect_mms_ApplicationReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3306 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3307 ApplicationReference_sequence, hf_index, ett_mms_ApplicationReference);
3309 return offset;
3313 static const ber_sequence_t TakeControl_Request_sequence[] = {
3314 { &hf_mms_semaphoreName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3315 { &hf_mms_namedToken , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3316 { &hf_mms_priority , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
3317 { &hf_mms_acceptableDelay , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
3318 { &hf_mms_controlTimeOut , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
3319 { &hf_mms_abortOnTimeOut , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
3320 { &hf_mms_relinquishIfConnectionLost, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
3321 { &hf_mms_applicationToPreempt, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_ApplicationReference },
3322 { NULL, 0, 0, 0, NULL }
3325 static int
3326 dissect_mms_TakeControl_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3327 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3328 TakeControl_Request_sequence, hf_index, ett_mms_TakeControl_Request);
3330 return offset;
3334 static const ber_sequence_t RelinquishControl_Request_sequence[] = {
3335 { &hf_mms_semaphoreName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3336 { &hf_mms_namedToken , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3337 { NULL, 0, 0, 0, NULL }
3340 static int
3341 dissect_mms_RelinquishControl_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3342 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3343 RelinquishControl_Request_sequence, hf_index, ett_mms_RelinquishControl_Request);
3345 return offset;
3350 static int
3351 dissect_mms_Unsigned16(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3352 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3353 NULL);
3355 return offset;
3359 static const ber_sequence_t DefineSemaphore_Request_sequence[] = {
3360 { &hf_mms_semaphoreName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3361 { &hf_mms_numbersOfTokens , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned16 },
3362 { NULL, 0, 0, 0, NULL }
3365 static int
3366 dissect_mms_DefineSemaphore_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3367 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3368 DefineSemaphore_Request_sequence, hf_index, ett_mms_DefineSemaphore_Request);
3370 return offset;
3375 static int
3376 dissect_mms_DeleteSemaphore_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3377 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3379 return offset;
3384 static int
3385 dissect_mms_ReportSemaphoreStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3386 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3388 return offset;
3392 static const ber_sequence_t ReportPoolSemaphoreStatus_Request_sequence[] = {
3393 { &hf_mms_semaphoreName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3394 { &hf_mms_nameToStartAfter, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3395 { NULL, 0, 0, 0, NULL }
3398 static int
3399 dissect_mms_ReportPoolSemaphoreStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3400 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3401 ReportPoolSemaphoreStatus_Request_sequence, hf_index, ett_mms_ReportPoolSemaphoreStatus_Request);
3403 return offset;
3407 static const value_string mms_T_reportSemaphoreEntryStatus_Request_state_vals[] = {
3408 { 0, "queued" },
3409 { 1, "owner" },
3410 { 2, "hung" },
3411 { 0, NULL }
3415 static int
3416 dissect_mms_T_reportSemaphoreEntryStatus_Request_state(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3417 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3418 NULL);
3420 return offset;
3424 static const ber_sequence_t ReportSemaphoreEntryStatus_Request_sequence[] = {
3425 { &hf_mms_semaphoreName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
3426 { &hf_mms_reportSemaphoreEntryStatus_Request_state, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_reportSemaphoreEntryStatus_Request_state },
3427 { &hf_mms_entryIdToStartAfter, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
3428 { NULL, 0, 0, 0, NULL }
3431 static int
3432 dissect_mms_ReportSemaphoreEntryStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3433 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3434 ReportSemaphoreEntryStatus_Request_sequence, hf_index, ett_mms_ReportSemaphoreEntryStatus_Request);
3436 return offset;
3440 static const ber_sequence_t T_listOfCapabilities_01_sequence_of[1] = {
3441 { &hf_mms_listOfCapabilities_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
3444 static int
3445 dissect_mms_T_listOfCapabilities_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3446 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3447 T_listOfCapabilities_01_sequence_of, hf_index, ett_mms_T_listOfCapabilities_01);
3449 return offset;
3453 static const ber_sequence_t InitiateDownloadSequence_Request_sequence[] = {
3454 { &hf_mms_domainName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3455 { &hf_mms_listOfCapabilities_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfCapabilities_01 },
3456 { &hf_mms_sharable , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
3457 { NULL, 0, 0, 0, NULL }
3460 static int
3461 dissect_mms_InitiateDownloadSequence_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3462 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3463 InitiateDownloadSequence_Request_sequence, hf_index, ett_mms_InitiateDownloadSequence_Request);
3465 return offset;
3470 static int
3471 dissect_mms_DownloadSegment_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3472 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
3474 return offset;
3478 static const value_string mms_T_vmd_state_vals[] = {
3479 { 0, "other" },
3480 { 1, "vmd-state-conflict" },
3481 { 2, "vmd-operational-problem" },
3482 { 3, "domain-transfer-problem" },
3483 { 4, "state-machine-id-invalid" },
3484 { 0, NULL }
3488 static int
3489 dissect_mms_T_vmd_state(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3490 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3491 NULL);
3493 return offset;
3497 static const value_string mms_T_application_reference_vals[] = {
3498 { 0, "other" },
3499 { 1, "aplication-unreachable" },
3500 { 2, "connection-lost" },
3501 { 3, "application-reference-invalid" },
3502 { 4, "context-unsupported" },
3503 { 0, NULL }
3507 static int
3508 dissect_mms_T_application_reference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3509 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3510 NULL);
3512 return offset;
3516 static const value_string mms_T_definition_vals[] = {
3517 { 0, "other" },
3518 { 1, "object-undefined" },
3519 { 2, "invalid-address" },
3520 { 3, "type-unsupported" },
3521 { 4, "type-inconsistent" },
3522 { 5, "object-exists" },
3523 { 6, "object-attribute-inconsistent" },
3524 { 0, NULL }
3528 static int
3529 dissect_mms_T_definition(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3530 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3531 NULL);
3533 return offset;
3537 static const value_string mms_T_resource_vals[] = {
3538 { 0, "other" },
3539 { 1, "memory-unavailable" },
3540 { 2, "processor-resource-unavailable" },
3541 { 3, "mass-storage-unavailable" },
3542 { 4, "capability-unavailable" },
3543 { 5, "capability-unknown" },
3544 { 0, NULL }
3548 static int
3549 dissect_mms_T_resource(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3550 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3551 NULL);
3553 return offset;
3557 static const value_string mms_T_service_vals[] = {
3558 { 0, "other" },
3559 { 1, "primitives-out-of-sequence" },
3560 { 2, "object-sate-conflict" },
3561 { 3, "pdu-size" },
3562 { 4, "continuation-invalid" },
3563 { 5, "object-constraint-conflict" },
3564 { 0, NULL }
3568 static int
3569 dissect_mms_T_service(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3570 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3571 NULL);
3573 return offset;
3577 static const value_string mms_T_service_preempt_vals[] = {
3578 { 0, "other" },
3579 { 1, "timeout" },
3580 { 2, "deadlock" },
3581 { 3, "cancel" },
3582 { 0, NULL }
3586 static int
3587 dissect_mms_T_service_preempt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3588 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3589 NULL);
3591 return offset;
3595 static const value_string mms_T_time_resolution_vals[] = {
3596 { 0, "other" },
3597 { 1, "unsupportable-time-resolution" },
3598 { 0, NULL }
3602 static int
3603 dissect_mms_T_time_resolution(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3604 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3605 NULL);
3607 return offset;
3611 static const value_string mms_T_access_vals[] = {
3612 { 0, "other" },
3613 { 1, "object-access-unsupported" },
3614 { 2, "object-non-existent" },
3615 { 3, "object-access-denied" },
3616 { 4, "object-invalidated" },
3617 { 0, NULL }
3621 static int
3622 dissect_mms_T_access(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3623 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3624 NULL);
3626 return offset;
3630 static const value_string mms_T_initiate_vals[] = {
3631 { 0, "other" },
3632 { 1, "version-incompatible" },
3633 { 2, "max-segment-insufficient" },
3634 { 3, "max-services-outstanding-calling-insufficient" },
3635 { 4, "max-services-outstanding-called-insufficient" },
3636 { 5, "service-CBB-insufficient" },
3637 { 6, "parameter-CBB-insufficient" },
3638 { 7, "nesting-level-insufficient" },
3639 { 0, NULL }
3643 static int
3644 dissect_mms_T_initiate(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3645 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3646 NULL);
3648 return offset;
3652 static const value_string mms_T_conclude_vals[] = {
3653 { 0, "other" },
3654 { 1, "further-communication-required" },
3655 { 0, NULL }
3659 static int
3660 dissect_mms_T_conclude(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3661 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3662 NULL);
3664 return offset;
3668 static const value_string mms_T_cancel_vals[] = {
3669 { 0, "other" },
3670 { 1, "invoke-id-unknown" },
3671 { 2, "cancel-not-possible" },
3672 { 0, NULL }
3676 static int
3677 dissect_mms_T_cancel(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3678 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3679 NULL);
3681 return offset;
3685 static const value_string mms_T_file_vals[] = {
3686 { 0, "other" },
3687 { 1, "filename-ambiguous" },
3688 { 2, "file-busy" },
3689 { 3, "filename-syntax-error" },
3690 { 4, "content-type-invalid" },
3691 { 5, "position-invalid" },
3692 { 6, "file-acces-denied" },
3693 { 7, "file-non-existent" },
3694 { 8, "duplicate-filename" },
3695 { 9, "insufficient-space-in-filestore" },
3696 { 0, NULL }
3700 static int
3701 dissect_mms_T_file(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3702 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3703 NULL);
3705 return offset;
3709 static const value_string mms_T_errorClass_vals[] = {
3710 { 0, "vmd-state" },
3711 { 1, "application-reference" },
3712 { 2, "definition" },
3713 { 3, "resource" },
3714 { 4, "service" },
3715 { 5, "service-preempt" },
3716 { 6, "time-resolution" },
3717 { 7, "access" },
3718 { 8, "initiate" },
3719 { 9, "conclude" },
3720 { 10, "cancel" },
3721 { 11, "file" },
3722 { 12, "others" },
3723 { 0, NULL }
3726 static const ber_choice_t T_errorClass_choice[] = {
3727 { 0, &hf_mms_vmd_state , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_vmd_state },
3728 { 1, &hf_mms_application_reference, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_application_reference },
3729 { 2, &hf_mms_definition , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_definition },
3730 { 3, &hf_mms_resource , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_T_resource },
3731 { 4, &hf_mms_service , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_T_service },
3732 { 5, &hf_mms_service_preempt , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_T_service_preempt },
3733 { 6, &hf_mms_time_resolution , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_T_time_resolution },
3734 { 7, &hf_mms_access , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_T_access },
3735 { 8, &hf_mms_initiate , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mms_T_initiate },
3736 { 9, &hf_mms_conclude , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_T_conclude },
3737 { 10, &hf_mms_cancel , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_T_cancel },
3738 { 11, &hf_mms_file , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_T_file },
3739 { 12, &hf_mms_others , BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_mms_INTEGER },
3740 { 0, NULL, 0, 0, 0, NULL }
3743 static int
3744 dissect_mms_T_errorClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3745 offset = dissect_ber_choice(actx, tree, tvb, offset,
3746 T_errorClass_choice, hf_index, ett_mms_T_errorClass,
3747 NULL);
3749 return offset;
3753 static const value_string mms_ObtainFile_Error_vals[] = {
3754 { 0, "source-file" },
3755 { 1, "destination-file" },
3756 { 0, NULL }
3760 static int
3761 dissect_mms_ObtainFile_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3762 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3763 NULL);
3765 return offset;
3769 static const value_string mms_ProgramInvocationState_vals[] = {
3770 { 0, "non-existent" },
3771 { 1, "unrunable" },
3772 { 2, "idle" },
3773 { 3, "running" },
3774 { 4, "stopped" },
3775 { 5, "starting" },
3776 { 6, "stopping" },
3777 { 7, "resuming" },
3778 { 8, "resetting" },
3779 { 0, NULL }
3783 static int
3784 dissect_mms_ProgramInvocationState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3785 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3786 NULL);
3788 return offset;
3793 static int
3794 dissect_mms_Start_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3795 offset = dissect_mms_ProgramInvocationState(implicit_tag, tvb, offset, actx, tree, hf_index);
3797 return offset;
3802 static int
3803 dissect_mms_Stop_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3804 offset = dissect_mms_ProgramInvocationState(implicit_tag, tvb, offset, actx, tree, hf_index);
3806 return offset;
3811 static int
3812 dissect_mms_Resume_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3813 offset = dissect_mms_ProgramInvocationState(implicit_tag, tvb, offset, actx, tree, hf_index);
3815 return offset;
3820 static int
3821 dissect_mms_Reset_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3822 offset = dissect_mms_ProgramInvocationState(implicit_tag, tvb, offset, actx, tree, hf_index);
3824 return offset;
3829 static int
3830 dissect_mms_DeleteVariableAccess_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3831 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
3833 return offset;
3838 static int
3839 dissect_mms_DeleteNamedVariableList_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3840 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
3842 return offset;
3847 static int
3848 dissect_mms_DeleteNamedType_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3849 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
3851 return offset;
3856 static int
3857 dissect_mms_DefineEventEnrollment_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3858 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3860 return offset;
3864 static const value_string mms_FileRename_Error_vals[] = {
3865 { 0, "source-file" },
3866 { 1, "destination-file" },
3867 { 0, NULL }
3871 static int
3872 dissect_mms_FileRename_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3873 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3874 NULL);
3876 return offset;
3881 static int
3882 dissect_mms_DefineEventConditionList_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3883 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3885 return offset;
3890 static int
3891 dissect_mms_AddEventConditionListReference_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3892 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
3894 return offset;
3898 static const value_string mms_RemoveEventConditionListReference_Error_vals[] = {
3899 { 0, "eventCondition" },
3900 { 1, "eventConditionList" },
3901 { 0, NULL }
3904 static const ber_choice_t RemoveEventConditionListReference_Error_choice[] = {
3905 { 0, &hf_mms_eventCondition , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
3906 { 1, &hf_mms_eventConditionList, BER_CLASS_CON, 1, 0, dissect_mms_ObjectName },
3907 { 0, NULL, 0, 0, 0, NULL }
3910 static int
3911 dissect_mms_RemoveEventConditionListReference_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3912 offset = dissect_ber_choice(actx, tree, tvb, offset,
3913 RemoveEventConditionListReference_Error_choice, hf_index, ett_mms_RemoveEventConditionListReference_Error,
3914 NULL);
3916 return offset;
3920 static const value_string mms_InitiateUnitControl_Error_vals[] = {
3921 { 0, "domain" },
3922 { 1, "programInvocation" },
3923 { 0, NULL }
3926 static const ber_choice_t InitiateUnitControl_Error_choice[] = {
3927 { 0, &hf_mms_domain , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3928 { 1, &hf_mms_programInvocation, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3929 { 0, NULL, 0, 0, 0, NULL }
3932 static int
3933 dissect_mms_InitiateUnitControl_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3934 offset = dissect_ber_choice(actx, tree, tvb, offset,
3935 InitiateUnitControl_Error_choice, hf_index, ett_mms_InitiateUnitControl_Error,
3936 NULL);
3938 return offset;
3942 static const ber_sequence_t StartUnitControl_Error_sequence[] = {
3943 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3944 { &hf_mms_programInvocationState, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ProgramInvocationState },
3945 { NULL, 0, 0, 0, NULL }
3948 static int
3949 dissect_mms_StartUnitControl_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3950 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3951 StartUnitControl_Error_sequence, hf_index, ett_mms_StartUnitControl_Error);
3953 return offset;
3957 static const ber_sequence_t StopUnitControl_Error_sequence[] = {
3958 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3959 { &hf_mms_programInvocationState, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ProgramInvocationState },
3960 { NULL, 0, 0, 0, NULL }
3963 static int
3964 dissect_mms_StopUnitControl_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3965 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3966 StopUnitControl_Error_sequence, hf_index, ett_mms_StopUnitControl_Error);
3968 return offset;
3972 static const value_string mms_DeleteUnitControl_Error_vals[] = {
3973 { 0, "domain" },
3974 { 1, "programInvocation" },
3975 { 0, NULL }
3978 static const ber_choice_t DeleteUnitControl_Error_choice[] = {
3979 { 0, &hf_mms_domain , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3980 { 1, &hf_mms_programInvocation, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
3981 { 0, NULL, 0, 0, 0, NULL }
3984 static int
3985 dissect_mms_DeleteUnitControl_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3986 offset = dissect_ber_choice(actx, tree, tvb, offset,
3987 DeleteUnitControl_Error_choice, hf_index, ett_mms_DeleteUnitControl_Error,
3988 NULL);
3990 return offset;
3994 static const value_string mms_LoadUnitControlFromFile_Error_vals[] = {
3995 { 0, "none" },
3996 { 1, "domain" },
3997 { 2, "programInvocation" },
3998 { 0, NULL }
4001 static const ber_choice_t LoadUnitControlFromFile_Error_choice[] = {
4002 { 0, &hf_mms_none , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
4003 { 1, &hf_mms_domain , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4004 { 2, &hf_mms_programInvocation, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4005 { 0, NULL, 0, 0, 0, NULL }
4008 static int
4009 dissect_mms_LoadUnitControlFromFile_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4010 offset = dissect_ber_choice(actx, tree, tvb, offset,
4011 LoadUnitControlFromFile_Error_choice, hf_index, ett_mms_LoadUnitControlFromFile_Error,
4012 NULL);
4014 return offset;
4018 static const value_string mms_AdditionalService_Error_vals[] = {
4019 { 0, "defineEcl" },
4020 { 1, "addECLReference" },
4021 { 2, "removeECLReference" },
4022 { 3, "initiateUC" },
4023 { 4, "startUC" },
4024 { 5, "stopUC" },
4025 { 6, "deleteUC" },
4026 { 7, "loadUCFromFile" },
4027 { 0, NULL }
4030 static const ber_choice_t AdditionalService_Error_choice[] = {
4031 { 0, &hf_mms_defineEcl , BER_CLASS_CON, 0, 0, dissect_mms_DefineEventConditionList_Error },
4032 { 1, &hf_mms_addECLReference , BER_CLASS_CON, 1, 0, dissect_mms_AddEventConditionListReference_Error },
4033 { 2, &hf_mms_removeECLReference, BER_CLASS_CON, 2, 0, dissect_mms_RemoveEventConditionListReference_Error },
4034 { 3, &hf_mms_initiateUC , BER_CLASS_CON, 3, 0, dissect_mms_InitiateUnitControl_Error },
4035 { 4, &hf_mms_startUC , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_StartUnitControl_Error },
4036 { 5, &hf_mms_stopUC , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_StopUnitControl_Error },
4037 { 6, &hf_mms_deleteUC , BER_CLASS_CON, 6, 0, dissect_mms_DeleteUnitControl_Error },
4038 { 7, &hf_mms_loadUCFromFile , BER_CLASS_CON, 7, 0, dissect_mms_LoadUnitControlFromFile_Error },
4039 { 0, NULL, 0, 0, 0, NULL }
4042 static int
4043 dissect_mms_AdditionalService_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4044 offset = dissect_ber_choice(actx, tree, tvb, offset,
4045 AdditionalService_Error_choice, hf_index, ett_mms_AdditionalService_Error,
4046 NULL);
4048 return offset;
4053 static int
4054 dissect_mms_ChangeAccessControl_Error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4055 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
4057 return offset;
4061 static const value_string mms_T_serviceSpecificInformation_vals[] = {
4062 { 0, "obtainFile" },
4063 { 1, "start" },
4064 { 2, "stop" },
4065 { 3, "resume" },
4066 { 4, "reset" },
4067 { 5, "deleteVariableAccess" },
4068 { 6, "deleteNamedVariableList" },
4069 { 7, "deleteNamedType" },
4070 { 8, "defineEventEnrollment-Error" },
4071 { 9, "fileRename" },
4072 { 10, "additionalService" },
4073 { 11, "changeAccessControl" },
4074 { 0, NULL }
4077 static const ber_choice_t T_serviceSpecificInformation_choice[] = {
4078 { 0, &hf_mms_obtainFile_02 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_ObtainFile_Error },
4079 { 1, &hf_mms_start_02 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Start_Error },
4080 { 2, &hf_mms_stop_02 , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Stop_Error },
4081 { 3, &hf_mms_resume_02 , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Resume_Error },
4082 { 4, &hf_mms_reset_02 , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_Reset_Error },
4083 { 5, &hf_mms_deleteVariableAccess_02, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_DeleteVariableAccess_Error },
4084 { 6, &hf_mms_deleteNamedVariableList_02, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_DeleteNamedVariableList_Error },
4085 { 7, &hf_mms_deleteNamedType_02, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_DeleteNamedType_Error },
4086 { 8, &hf_mms_defineEventEnrollment_Error, BER_CLASS_CON, 8, 0, dissect_mms_DefineEventEnrollment_Error },
4087 { 9, &hf_mms_fileRename_02 , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_FileRename_Error },
4088 { 10, &hf_mms_additionalService, BER_CLASS_CON, 10, 0, dissect_mms_AdditionalService_Error },
4089 { 11, &hf_mms_changeAccessControl, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_ChangeAccessControl_Error },
4090 { 0, NULL, 0, 0, 0, NULL }
4093 static int
4094 dissect_mms_T_serviceSpecificInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4095 offset = dissect_ber_choice(actx, tree, tvb, offset,
4096 T_serviceSpecificInformation_choice, hf_index, ett_mms_T_serviceSpecificInformation,
4097 NULL);
4099 return offset;
4103 static const ber_sequence_t ServiceError_sequence[] = {
4104 { &hf_mms_errorClass , BER_CLASS_CON, 0, 0, dissect_mms_T_errorClass },
4105 { &hf_mms_additionalCode , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_INTEGER },
4106 { &hf_mms_additionalDescription, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
4107 { &hf_mms_serviceSpecificInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_mms_T_serviceSpecificInformation },
4108 { NULL, 0, 0, 0, NULL }
4111 static int
4112 dissect_mms_ServiceError(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4113 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4114 ServiceError_sequence, hf_index, ett_mms_ServiceError);
4116 return offset;
4120 static const ber_sequence_t TerminateDownloadSequence_Request_sequence[] = {
4121 { &hf_mms_domainName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4122 { &hf_mms_discard , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_ServiceError },
4123 { NULL, 0, 0, 0, NULL }
4126 static int
4127 dissect_mms_TerminateDownloadSequence_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4128 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4129 TerminateDownloadSequence_Request_sequence, hf_index, ett_mms_TerminateDownloadSequence_Request);
4131 return offset;
4136 static int
4137 dissect_mms_InitiateUploadSequence_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4138 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
4140 return offset;
4145 static int
4146 dissect_mms_UploadSegment_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4147 offset = dissect_mms_Integer32(implicit_tag, tvb, offset, actx, tree, hf_index);
4149 return offset;
4154 static int
4155 dissect_mms_TerminateUploadSequence_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4156 offset = dissect_mms_Integer32(implicit_tag, tvb, offset, actx, tree, hf_index);
4158 return offset;
4162 static const ber_sequence_t T_listOfCapabilities_03_sequence_of[1] = {
4163 { &hf_mms_listOfCapabilities_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
4166 static int
4167 dissect_mms_T_listOfCapabilities_03(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4168 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4169 T_listOfCapabilities_03_sequence_of, hf_index, ett_mms_T_listOfCapabilities_03);
4171 return offset;
4176 static int
4177 dissect_mms_GraphicString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4178 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
4179 actx, tree, tvb, offset, hf_index,
4180 NULL);
4182 return offset;
4186 static const ber_sequence_t FileName_sequence_of[1] = {
4187 { &hf_mms_FileName_item , BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_mms_GraphicString },
4190 static int
4191 dissect_mms_FileName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4192 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4193 FileName_sequence_of, hf_index, ett_mms_FileName);
4195 return offset;
4199 static const ber_sequence_t RequestDomainDownload_Request_sequence[] = {
4200 { &hf_mms_domainName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4201 { &hf_mms_listOfCapabilities_03, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_listOfCapabilities_03 },
4202 { &hf_mms_sharable , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4203 { &hf_mms_fileName , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
4204 { NULL, 0, 0, 0, NULL }
4207 static int
4208 dissect_mms_RequestDomainDownload_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4209 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4210 RequestDomainDownload_Request_sequence, hf_index, ett_mms_RequestDomainDownload_Request);
4212 return offset;
4216 static const ber_sequence_t RequestDomainUpload_Request_sequence[] = {
4217 { &hf_mms_domainName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4218 { &hf_mms_fileName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
4219 { NULL, 0, 0, 0, NULL }
4222 static int
4223 dissect_mms_RequestDomainUpload_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4224 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4225 RequestDomainUpload_Request_sequence, hf_index, ett_mms_RequestDomainUpload_Request);
4227 return offset;
4231 static const ber_sequence_t T_listOfCapabilities_04_sequence_of[1] = {
4232 { &hf_mms_listOfCapabilities_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
4235 static int
4236 dissect_mms_T_listOfCapabilities_04(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4237 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4238 T_listOfCapabilities_04_sequence_of, hf_index, ett_mms_T_listOfCapabilities_04);
4240 return offset;
4244 static const ber_sequence_t LoadDomainContent_Request_sequence[] = {
4245 { &hf_mms_domainName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4246 { &hf_mms_listOfCapabilities_04, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_listOfCapabilities_04 },
4247 { &hf_mms_sharable , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4248 { &hf_mms_fileName , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
4249 { &hf_mms_thirdParty , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_ApplicationReference },
4250 { NULL, 0, 0, 0, NULL }
4253 static int
4254 dissect_mms_LoadDomainContent_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4255 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4256 LoadDomainContent_Request_sequence, hf_index, ett_mms_LoadDomainContent_Request);
4258 return offset;
4262 static const ber_sequence_t StoreDomainContent_Request_sequence[] = {
4263 { &hf_mms_domainName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4264 { &hf_mms_filenName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
4265 { &hf_mms_thirdParty , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_ApplicationReference },
4266 { NULL, 0, 0, 0, NULL }
4269 static int
4270 dissect_mms_StoreDomainContent_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4271 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4272 StoreDomainContent_Request_sequence, hf_index, ett_mms_StoreDomainContent_Request);
4274 return offset;
4279 static int
4280 dissect_mms_DeleteDomain_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4281 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
4283 return offset;
4288 static int
4289 dissect_mms_GetDomainAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4290 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
4292 return offset;
4296 static const ber_sequence_t SEQUENCE_OF_Identifier_sequence_of[1] = {
4297 { &hf_mms_listOfIdentifier_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_Identifier },
4300 static int
4301 dissect_mms_SEQUENCE_OF_Identifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4302 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4303 SEQUENCE_OF_Identifier_sequence_of, hf_index, ett_mms_SEQUENCE_OF_Identifier);
4305 return offset;
4309 static const ber_sequence_t CreateProgramInvocation_Request_sequence[] = {
4310 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4311 { &hf_mms_listOfDomainName, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Identifier },
4312 { &hf_mms_reusable , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4313 { &hf_mms_monitorType , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4314 { NULL, 0, 0, 0, NULL }
4317 static int
4318 dissect_mms_CreateProgramInvocation_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4319 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4320 CreateProgramInvocation_Request_sequence, hf_index, ett_mms_CreateProgramInvocation_Request);
4322 return offset;
4327 static int
4328 dissect_mms_DeleteProgramInvocation_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4329 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
4331 return offset;
4335 static const value_string mms_T_executionArgument_vals[] = {
4336 { 0, "simpleString" },
4337 { 1, "encodedString" },
4338 { 0, NULL }
4341 static const ber_choice_t T_executionArgument_choice[] = {
4342 { 0, &hf_mms_simpleString , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
4343 { 1, &hf_mms_encodedString , BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
4344 { 0, NULL, 0, 0, 0, NULL }
4347 static int
4348 dissect_mms_T_executionArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4349 offset = dissect_ber_choice(actx, tree, tvb, offset,
4350 T_executionArgument_choice, hf_index, ett_mms_T_executionArgument,
4351 NULL);
4353 return offset;
4357 static const ber_sequence_t Start_Request_sequence[] = {
4358 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4359 { &hf_mms_executionArgument, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_executionArgument },
4360 { NULL, 0, 0, 0, NULL }
4363 static int
4364 dissect_mms_Start_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4365 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4366 Start_Request_sequence, hf_index, ett_mms_Start_Request);
4368 return offset;
4372 static const ber_sequence_t Stop_Request_sequence[] = {
4373 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4374 { NULL, 0, 0, 0, NULL }
4377 static int
4378 dissect_mms_Stop_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4379 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4380 Stop_Request_sequence, hf_index, ett_mms_Stop_Request);
4382 return offset;
4386 static const value_string mms_T_executionArgument_01_vals[] = {
4387 { 0, "simpleString" },
4388 { 1, "encodedString" },
4389 { 0, NULL }
4392 static const ber_choice_t T_executionArgument_01_choice[] = {
4393 { 0, &hf_mms_simpleString , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
4394 { 1, &hf_mms_encodedString , BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
4395 { 0, NULL, 0, 0, 0, NULL }
4398 static int
4399 dissect_mms_T_executionArgument_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4400 offset = dissect_ber_choice(actx, tree, tvb, offset,
4401 T_executionArgument_01_choice, hf_index, ett_mms_T_executionArgument_01,
4402 NULL);
4404 return offset;
4408 static const ber_sequence_t Resume_Request_sequence[] = {
4409 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4410 { &hf_mms_executionArgument_01, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_executionArgument_01 },
4411 { NULL, 0, 0, 0, NULL }
4414 static int
4415 dissect_mms_Resume_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4416 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4417 Resume_Request_sequence, hf_index, ett_mms_Resume_Request);
4419 return offset;
4423 static const ber_sequence_t Reset_Request_sequence[] = {
4424 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4425 { NULL, 0, 0, 0, NULL }
4428 static int
4429 dissect_mms_Reset_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4430 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4431 Reset_Request_sequence, hf_index, ett_mms_Reset_Request);
4433 return offset;
4437 static const ber_sequence_t Kill_Request_sequence[] = {
4438 { &hf_mms_programInvocationName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4439 { NULL, 0, 0, 0, NULL }
4442 static int
4443 dissect_mms_Kill_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4444 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4445 Kill_Request_sequence, hf_index, ett_mms_Kill_Request);
4447 return offset;
4452 static int
4453 dissect_mms_GetProgramInvocationAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4454 offset = dissect_mms_Identifier(implicit_tag, tvb, offset, actx, tree, hf_index);
4456 return offset;
4460 static const ber_sequence_t ObtainFile_Request_sequence[] = {
4461 { &hf_mms_sourceFileServer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_ApplicationReference },
4462 { &hf_mms_sourceFile , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
4463 { &hf_mms_destinationFile , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
4464 { NULL, 0, 0, 0, NULL }
4467 static int
4468 dissect_mms_ObtainFile_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4469 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4470 ObtainFile_Request_sequence, hf_index, ett_mms_ObtainFile_Request);
4472 return offset;
4476 static const value_string mms_EC_Class_vals[] = {
4477 { 0, "network-triggered" },
4478 { 1, "monitored" },
4479 { 0, NULL }
4483 static int
4484 dissect_mms_EC_Class(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4485 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4486 NULL);
4488 return offset;
4492 static const ber_sequence_t DefineEventCondition_Request_sequence[] = {
4493 { &hf_mms_eventConditionName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4494 { &hf_mms_class_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_EC_Class },
4495 { &hf_mms_prio_rity , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
4496 { &hf_mms_severity , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
4497 { &hf_mms_alarmSummaryReports, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4498 { &hf_mms_monitoredVariable, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableSpecification },
4499 { &hf_mms_evaluationInterval, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
4500 { NULL, 0, 0, 0, NULL }
4503 static int
4504 dissect_mms_DefineEventCondition_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4505 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4506 DefineEventCondition_Request_sequence, hf_index, ett_mms_DefineEventCondition_Request);
4508 return offset;
4512 static const value_string mms_DeleteEventCondition_Request_vals[] = {
4513 { 0, "specific" },
4514 { 1, "aa-specific" },
4515 { 2, "domain" },
4516 { 3, "vmd" },
4517 { 0, NULL }
4520 static const ber_choice_t DeleteEventCondition_Request_choice[] = {
4521 { 0, &hf_mms_specific , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
4522 { 1, &hf_mms_aa_specific_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
4523 { 2, &hf_mms_domain , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4524 { 3, &hf_mms_vmd , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
4525 { 0, NULL, 0, 0, 0, NULL }
4528 static int
4529 dissect_mms_DeleteEventCondition_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4530 offset = dissect_ber_choice(actx, tree, tvb, offset,
4531 DeleteEventCondition_Request_choice, hf_index, ett_mms_DeleteEventCondition_Request,
4532 NULL);
4534 return offset;
4539 static int
4540 dissect_mms_GetEventConditionAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4541 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
4543 return offset;
4548 static int
4549 dissect_mms_ReportEventConditionStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4550 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
4552 return offset;
4556 static const ber_sequence_t AlterEventConditionMonitoring_Request_sequence[] = {
4557 { &hf_mms_eventConditionName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4558 { &hf_mms_enabled , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4559 { &hf_mms_priority , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
4560 { &hf_mms_alarmSummaryReports, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4561 { &hf_mms_evaluationInterval, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
4562 { NULL, 0, 0, 0, NULL }
4565 static int
4566 dissect_mms_AlterEventConditionMonitoring_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4567 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4568 AlterEventConditionMonitoring_Request_sequence, hf_index, ett_mms_AlterEventConditionMonitoring_Request);
4570 return offset;
4574 static const ber_sequence_t TriggerEvent_Request_sequence[] = {
4575 { &hf_mms_eventConditionName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4576 { &hf_mms_priority , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
4577 { NULL, 0, 0, 0, NULL }
4580 static int
4581 dissect_mms_TriggerEvent_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4582 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4583 TriggerEvent_Request_sequence, hf_index, ett_mms_TriggerEvent_Request);
4585 return offset;
4589 static const ber_sequence_t DefineEventAction_Request_sequence[] = {
4590 { &hf_mms_eventActionName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4591 { &hf_mms_listOfModifier , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Modifier },
4592 { NULL, 0, 0, 0, NULL }
4595 static int
4596 dissect_mms_DefineEventAction_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4597 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4598 DefineEventAction_Request_sequence, hf_index, ett_mms_DefineEventAction_Request);
4600 return offset;
4604 static const value_string mms_DeleteEventAction_Request_vals[] = {
4605 { 0, "specific" },
4606 { 1, "aa-specific" },
4607 { 3, "domain" },
4608 { 4, "vmd" },
4609 { 0, NULL }
4612 static const ber_choice_t DeleteEventAction_Request_choice[] = {
4613 { 0, &hf_mms_specific , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
4614 { 1, &hf_mms_aa_specific_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
4615 { 3, &hf_mms_domain , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
4616 { 4, &hf_mms_vmd , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
4617 { 0, NULL, 0, 0, 0, NULL }
4620 static int
4621 dissect_mms_DeleteEventAction_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4622 offset = dissect_ber_choice(actx, tree, tvb, offset,
4623 DeleteEventAction_Request_choice, hf_index, ett_mms_DeleteEventAction_Request,
4624 NULL);
4626 return offset;
4631 static int
4632 dissect_mms_GetEventActionAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4633 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
4635 return offset;
4640 static int
4641 dissect_mms_ReportEventActionStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4642 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
4644 return offset;
4648 static const value_string mms_AlarmAckRule_vals[] = {
4649 { 0, "none" },
4650 { 1, "simple" },
4651 { 2, "ack-active" },
4652 { 3, "ack-all" },
4653 { 0, NULL }
4657 static int
4658 dissect_mms_AlarmAckRule(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4659 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4660 NULL);
4662 return offset;
4666 static const ber_sequence_t DefineEventEnrollment_Request_sequence[] = {
4667 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4668 { &hf_mms_eventConditionName, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4669 { &hf_mms_eventConditionTransition, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Transitions },
4670 { &hf_mms_alarmAcknowledgementRule, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_AlarmAckRule },
4671 { &hf_mms_eventActionName , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4672 { &hf_mms_clientApplication, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_mms_ApplicationReference },
4673 { NULL, 0, 0, 0, NULL }
4676 static int
4677 dissect_mms_DefineEventEnrollment_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4678 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4679 DefineEventEnrollment_Request_sequence, hf_index, ett_mms_DefineEventEnrollment_Request);
4681 return offset;
4685 static const value_string mms_DeleteEventEnrollment_Request_vals[] = {
4686 { 0, "specific" },
4687 { 1, "ec" },
4688 { 2, "ea" },
4689 { 0, NULL }
4692 static const ber_choice_t DeleteEventEnrollment_Request_choice[] = {
4693 { 0, &hf_mms_specific , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
4694 { 1, &hf_mms_ec , BER_CLASS_CON, 1, 0, dissect_mms_ObjectName },
4695 { 2, &hf_mms_ea , BER_CLASS_CON, 2, 0, dissect_mms_ObjectName },
4696 { 0, NULL, 0, 0, 0, NULL }
4699 static int
4700 dissect_mms_DeleteEventEnrollment_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4701 offset = dissect_ber_choice(actx, tree, tvb, offset,
4702 DeleteEventEnrollment_Request_choice, hf_index, ett_mms_DeleteEventEnrollment_Request,
4703 NULL);
4705 return offset;
4709 static const ber_sequence_t AlterEventEnrollment_Request_sequence[] = {
4710 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4711 { &hf_mms_eventConditionTransitions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Transitions },
4712 { &hf_mms_alarmAcknowledgmentRule, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlarmAckRule },
4713 { NULL, 0, 0, 0, NULL }
4716 static int
4717 dissect_mms_AlterEventEnrollment_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4718 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4719 AlterEventEnrollment_Request_sequence, hf_index, ett_mms_AlterEventEnrollment_Request);
4721 return offset;
4726 static int
4727 dissect_mms_ReportEventEnrollmentStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4728 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
4730 return offset;
4734 static const value_string mms_T_scopeOfRequest_vals[] = {
4735 { 0, "specific" },
4736 { 1, "client" },
4737 { 2, "ec" },
4738 { 3, "ea" },
4739 { 0, NULL }
4743 static int
4744 dissect_mms_T_scopeOfRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4745 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4746 NULL);
4748 return offset;
4752 static const ber_sequence_t GetEventEnrollmentAttributes_Request_sequence[] = {
4753 { &hf_mms_scopeOfRequest , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_scopeOfRequest },
4754 { &hf_mms_eventEnrollmentNames, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_ObjectName },
4755 { &hf_mms_clientApplication, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_mms_ApplicationReference },
4756 { &hf_mms_eventConditionName, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4757 { &hf_mms_eventActionName , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4758 { &hf_mms_getEventEnrollmentAttributes_Request_continueAfter, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4759 { NULL, 0, 0, 0, NULL }
4762 static int
4763 dissect_mms_GetEventEnrollmentAttributes_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4764 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4765 GetEventEnrollmentAttributes_Request_sequence, hf_index, ett_mms_GetEventEnrollmentAttributes_Request);
4767 return offset;
4771 static const value_string mms_EC_State_vals[] = {
4772 { 0, "disabled" },
4773 { 1, "idle" },
4774 { 2, "active" },
4775 { 0, NULL }
4779 static int
4780 dissect_mms_EC_State(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4781 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4782 NULL);
4784 return offset;
4788 static const value_string mms_EventTime_vals[] = {
4789 { 0, "timeOfDayT" },
4790 { 1, "timeSequenceIdentifier" },
4791 { 0, NULL }
4794 static const ber_choice_t EventTime_choice[] = {
4795 { 0, &hf_mms_timeOfDayT , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_TimeOfDay },
4796 { 1, &hf_mms_timeSequenceIdentifier, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
4797 { 0, NULL, 0, 0, 0, NULL }
4800 static int
4801 dissect_mms_EventTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4802 offset = dissect_ber_choice(actx, tree, tvb, offset,
4803 EventTime_choice, hf_index, ett_mms_EventTime,
4804 NULL);
4806 return offset;
4810 static const ber_sequence_t AcknowledgeEventNotification_Request_sequence[] = {
4811 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4812 { &hf_mms_acknowledgedState, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_EC_State },
4813 { &hf_mms_timeOfAcknowledgedTransition, BER_CLASS_CON, 3, BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
4814 { NULL, 0, 0, 0, NULL }
4817 static int
4818 dissect_mms_AcknowledgeEventNotification_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4819 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4820 AcknowledgeEventNotification_Request_sequence, hf_index, ett_mms_AcknowledgeEventNotification_Request);
4822 return offset;
4826 static const value_string mms_T_acknowledgmentFilter_vals[] = {
4827 { 0, "not-acked" },
4828 { 1, "acked" },
4829 { 2, "all" },
4830 { 0, NULL }
4834 static int
4835 dissect_mms_T_acknowledgmentFilter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4836 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4837 NULL);
4839 return offset;
4843 static const ber_sequence_t T_severityFilter_sequence[] = {
4844 { &hf_mms_mostSevere , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
4845 { &hf_mms_leastSevere , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
4846 { NULL, 0, 0, 0, NULL }
4849 static int
4850 dissect_mms_T_severityFilter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4851 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4852 T_severityFilter_sequence, hf_index, ett_mms_T_severityFilter);
4854 return offset;
4858 static const ber_sequence_t GetAlarmSummary_Request_sequence[] = {
4859 { &hf_mms_enrollmentsOnly , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4860 { &hf_mms_activeAlarmsOnly, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4861 { &hf_mms_acknowledgmentFilter, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_acknowledgmentFilter },
4862 { &hf_mms_severityFilter , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_severityFilter },
4863 { &hf_mms_continueAfter , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4864 { NULL, 0, 0, 0, NULL }
4867 static int
4868 dissect_mms_GetAlarmSummary_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4869 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4870 GetAlarmSummary_Request_sequence, hf_index, ett_mms_GetAlarmSummary_Request);
4872 return offset;
4876 static const value_string mms_T_acknowledgmentFilter_01_vals[] = {
4877 { 0, "not-acked" },
4878 { 1, "acked" },
4879 { 2, "all" },
4880 { 0, NULL }
4884 static int
4885 dissect_mms_T_acknowledgmentFilter_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4886 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4887 NULL);
4889 return offset;
4893 static const ber_sequence_t T_severityFilter_01_sequence[] = {
4894 { &hf_mms_mostSevere , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
4895 { &hf_mms_leastSevere , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
4896 { NULL, 0, 0, 0, NULL }
4899 static int
4900 dissect_mms_T_severityFilter_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4901 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4902 T_severityFilter_01_sequence, hf_index, ett_mms_T_severityFilter_01);
4904 return offset;
4908 static const ber_sequence_t GetAlarmEnrollmentSummary_Request_sequence[] = {
4909 { &hf_mms_enrollmentsOnly , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4910 { &hf_mms_activeAlarmsOnly, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
4911 { &hf_mms_acknowledgmentFilter_01, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_acknowledgmentFilter_01 },
4912 { &hf_mms_severityFilter_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_severityFilter_01 },
4913 { &hf_mms_getAlarmEnrollmentSummary_Request_continueAfter, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
4914 { NULL, 0, 0, 0, NULL }
4917 static int
4918 dissect_mms_GetAlarmEnrollmentSummary_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4919 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4920 GetAlarmEnrollmentSummary_Request_sequence, hf_index, ett_mms_GetAlarmEnrollmentSummary_Request);
4922 return offset;
4926 static const value_string mms_T_rangeStartSpecification_vals[] = {
4927 { 0, "startingTime" },
4928 { 1, "startingEntry" },
4929 { 0, NULL }
4932 static const ber_choice_t T_rangeStartSpecification_choice[] = {
4933 { 0, &hf_mms_startingTime , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_TimeOfDay },
4934 { 1, &hf_mms_startingEntry , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
4935 { 0, NULL, 0, 0, 0, NULL }
4938 static int
4939 dissect_mms_T_rangeStartSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4940 offset = dissect_ber_choice(actx, tree, tvb, offset,
4941 T_rangeStartSpecification_choice, hf_index, ett_mms_T_rangeStartSpecification,
4942 NULL);
4944 return offset;
4948 static const value_string mms_T_rangeStopSpecification_vals[] = {
4949 { 0, "endingTime" },
4950 { 1, "numberOfEntries" },
4951 { 0, NULL }
4954 static const ber_choice_t T_rangeStopSpecification_choice[] = {
4955 { 0, &hf_mms_endingTime , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_TimeOfDay },
4956 { 1, &hf_mms_numberOfEntries , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
4957 { 0, NULL, 0, 0, 0, NULL }
4960 static int
4961 dissect_mms_T_rangeStopSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4962 offset = dissect_ber_choice(actx, tree, tvb, offset,
4963 T_rangeStopSpecification_choice, hf_index, ett_mms_T_rangeStopSpecification,
4964 NULL);
4966 return offset;
4970 static const ber_sequence_t T_listOfVariables_sequence_of[1] = {
4971 { &hf_mms_listOfVariables_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
4974 static int
4975 dissect_mms_T_listOfVariables(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4976 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4977 T_listOfVariables_sequence_of, hf_index, ett_mms_T_listOfVariables);
4979 return offset;
4983 static const ber_sequence_t T_entryToStartAfter_sequence[] = {
4984 { &hf_mms_timeSpecification, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_TimeOfDay },
4985 { &hf_mms_entrySpecification, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
4986 { NULL, 0, 0, 0, NULL }
4989 static int
4990 dissect_mms_T_entryToStartAfter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4991 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4992 T_entryToStartAfter_sequence, hf_index, ett_mms_T_entryToStartAfter);
4994 return offset;
4998 static const ber_sequence_t ReadJournal_Request_sequence[] = {
4999 { &hf_mms_journalName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
5000 { &hf_mms_rangeStartSpecification, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mms_T_rangeStartSpecification },
5001 { &hf_mms_rangeStopSpecification, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_mms_T_rangeStopSpecification },
5002 { &hf_mms_listOfVariables , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_listOfVariables },
5003 { &hf_mms_entryToStartAfter, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_T_entryToStartAfter },
5004 { NULL, 0, 0, 0, NULL }
5007 static int
5008 dissect_mms_ReadJournal_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5009 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5010 ReadJournal_Request_sequence, hf_index, ett_mms_ReadJournal_Request);
5012 return offset;
5017 static int
5018 dissect_mms_JOU_Additional_Detail(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5019 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
5021 return offset;
5025 static const ber_sequence_t T_event_sequence[] = {
5026 { &hf_mms_eventConditionName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
5027 { &hf_mms_currentState , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_EC_State },
5028 { NULL, 0, 0, 0, NULL }
5031 static int
5032 dissect_mms_T_event(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5033 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5034 T_event_sequence, hf_index, ett_mms_T_event);
5036 return offset;
5040 static const ber_sequence_t T_listOfVariables_item_sequence[] = {
5041 { &hf_mms_variableTag , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
5042 { &hf_mms_valueSpecification, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_Data },
5043 { NULL, 0, 0, 0, NULL }
5046 static int
5047 dissect_mms_T_listOfVariables_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5048 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5049 T_listOfVariables_item_sequence, hf_index, ett_mms_T_listOfVariables_item);
5051 return offset;
5055 static const ber_sequence_t T_listOfVariables_01_sequence_of[1] = {
5056 { &hf_mms_listOfVariables_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_T_listOfVariables_item },
5059 static int
5060 dissect_mms_T_listOfVariables_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5061 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5062 T_listOfVariables_01_sequence_of, hf_index, ett_mms_T_listOfVariables_01);
5064 return offset;
5068 static const ber_sequence_t T_data_sequence[] = {
5069 { &hf_mms_event , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_event },
5070 { &hf_mms_listOfVariables_01, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_listOfVariables_01 },
5071 { NULL, 0, 0, 0, NULL }
5074 static int
5075 dissect_mms_T_data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5076 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5077 T_data_sequence, hf_index, ett_mms_T_data);
5079 return offset;
5083 static const value_string mms_T_entryForm_vals[] = {
5084 { 2, "data" },
5085 { 3, "annotation" },
5086 { 0, NULL }
5089 static const ber_choice_t T_entryForm_choice[] = {
5090 { 2, &hf_mms_data , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_data },
5091 { 3, &hf_mms_annotation , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
5092 { 0, NULL, 0, 0, 0, NULL }
5095 static int
5096 dissect_mms_T_entryForm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5097 offset = dissect_ber_choice(actx, tree, tvb, offset,
5098 T_entryForm_choice, hf_index, ett_mms_T_entryForm,
5099 NULL);
5101 return offset;
5105 static const ber_sequence_t EntryContent_sequence[] = {
5106 { &hf_mms_occurenceTime , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_TimeOfDay },
5107 { &hf_mms_additionalDetail, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mms_JOU_Additional_Detail },
5108 { &hf_mms_entryForm , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_entryForm },
5109 { NULL, 0, 0, 0, NULL }
5112 static int
5113 dissect_mms_EntryContent(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5114 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5115 EntryContent_sequence, hf_index, ett_mms_EntryContent);
5117 return offset;
5121 static const ber_sequence_t SEQUENCE_OF_EntryContent_sequence_of[1] = {
5122 { &hf_mms_listOfJournalEntry_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_EntryContent },
5125 static int
5126 dissect_mms_SEQUENCE_OF_EntryContent(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5127 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5128 SEQUENCE_OF_EntryContent_sequence_of, hf_index, ett_mms_SEQUENCE_OF_EntryContent);
5130 return offset;
5134 static const ber_sequence_t WriteJournal_Request_sequence[] = {
5135 { &hf_mms_journalName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
5136 { &hf_mms_listOfJournalEntry_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_EntryContent },
5137 { NULL, 0, 0, 0, NULL }
5140 static int
5141 dissect_mms_WriteJournal_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5142 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5143 WriteJournal_Request_sequence, hf_index, ett_mms_WriteJournal_Request);
5145 return offset;
5149 static const ber_sequence_t T_limitSpecification_sequence[] = {
5150 { &hf_mms_limitingTime , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_TimeOfDay },
5151 { &hf_mms_limitingEntry , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
5152 { NULL, 0, 0, 0, NULL }
5155 static int
5156 dissect_mms_T_limitSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5157 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5158 T_limitSpecification_sequence, hf_index, ett_mms_T_limitSpecification);
5160 return offset;
5164 static const ber_sequence_t InitializeJournal_Request_sequence[] = {
5165 { &hf_mms_journalName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
5166 { &hf_mms_limitSpecification, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_limitSpecification },
5167 { NULL, 0, 0, 0, NULL }
5170 static int
5171 dissect_mms_InitializeJournal_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5172 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5173 InitializeJournal_Request_sequence, hf_index, ett_mms_InitializeJournal_Request);
5175 return offset;
5180 static int
5181 dissect_mms_ReportJournalStatus_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5182 offset = dissect_mms_ObjectName(implicit_tag, tvb, offset, actx, tree, hf_index);
5184 return offset;
5188 static const ber_sequence_t CreateJournal_Request_sequence[] = {
5189 { &hf_mms_journalName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
5190 { NULL, 0, 0, 0, NULL }
5193 static int
5194 dissect_mms_CreateJournal_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5195 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5196 CreateJournal_Request_sequence, hf_index, ett_mms_CreateJournal_Request);
5198 return offset;
5202 static const ber_sequence_t DeleteJournal_Request_sequence[] = {
5203 { &hf_mms_journalName , BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
5204 { NULL, 0, 0, 0, NULL }
5207 static int
5208 dissect_mms_DeleteJournal_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5209 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5210 DeleteJournal_Request_sequence, hf_index, ett_mms_DeleteJournal_Request);
5212 return offset;
5216 static const ber_sequence_t GetCapabilityList_Request_sequence[] = {
5217 { &hf_mms_getCapabilityList_Request_continueAfter, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
5218 { NULL, 0, 0, 0, NULL }
5221 static int
5222 dissect_mms_GetCapabilityList_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5223 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5224 GetCapabilityList_Request_sequence, hf_index, ett_mms_GetCapabilityList_Request);
5226 return offset;
5230 static const ber_sequence_t FileOpen_Request_sequence[] = {
5231 { &hf_mms_fileName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
5232 { &hf_mms_initialPosition , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
5233 { NULL, 0, 0, 0, NULL }
5236 static int
5237 dissect_mms_FileOpen_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5238 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5239 FileOpen_Request_sequence, hf_index, ett_mms_FileOpen_Request);
5241 return offset;
5246 static int
5247 dissect_mms_FileRead_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5248 offset = dissect_mms_Integer32(implicit_tag, tvb, offset, actx, tree, hf_index);
5250 return offset;
5255 static int
5256 dissect_mms_FileClose_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5257 offset = dissect_mms_Integer32(implicit_tag, tvb, offset, actx, tree, hf_index);
5259 return offset;
5263 static const ber_sequence_t FileRename_Request_sequence[] = {
5264 { &hf_mms_currentFileName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
5265 { &hf_mms_newFileName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
5266 { NULL, 0, 0, 0, NULL }
5269 static int
5270 dissect_mms_FileRename_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5271 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5272 FileRename_Request_sequence, hf_index, ett_mms_FileRename_Request);
5274 return offset;
5279 static int
5280 dissect_mms_FileDelete_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5281 offset = dissect_mms_FileName(implicit_tag, tvb, offset, actx, tree, hf_index);
5283 return offset;
5287 static const ber_sequence_t FileDirectory_Request_sequence[] = {
5288 { &hf_mms_fileSpecification, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_FileName },
5289 { &hf_mms_fileDirectory_Request_continueAfter, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_FileName },
5290 { NULL, 0, 0, 0, NULL }
5293 static int
5294 dissect_mms_FileDirectory_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5295 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5296 FileDirectory_Request_sequence, hf_index, ett_mms_FileDirectory_Request);
5298 return offset;
5302 static const value_string mms_ConfirmedServiceRequest_vals[] = {
5303 { 0, "status" },
5304 { 1, "getNameList" },
5305 { 2, "identify" },
5306 { 3, "rename" },
5307 { 4, "read" },
5308 { 5, "write" },
5309 { 6, "getVariableAccessAttributes" },
5310 { 7, "defineNamedVariable" },
5311 { 8, "defineScatteredAccess" },
5312 { 9, "getScatteredAccessAttributes" },
5313 { 10, "deleteVariableAccess" },
5314 { 11, "defineNamedVariableList" },
5315 { 12, "getNamedVariableListAttributes" },
5316 { 13, "deleteNamedVariableList" },
5317 { 14, "defineNamedType" },
5318 { 15, "getNamedTypeAttributes" },
5319 { 16, "deleteNamedType" },
5320 { 17, "input" },
5321 { 18, "output" },
5322 { 19, "takeControl" },
5323 { 20, "relinquishControl" },
5324 { 21, "defineSemaphore" },
5325 { 22, "deleteSemaphore" },
5326 { 23, "reportSemaphoreStatus" },
5327 { 24, "reportPoolSemaphoreStatus" },
5328 { 25, "reportSemaphoreEntryStatus" },
5329 { 26, "initiateDownloadSequence" },
5330 { 27, "downloadSegment" },
5331 { 28, "terminateDownloadSequence" },
5332 { 29, "initiateUploadSequence" },
5333 { 30, "uploadSegment" },
5334 { 31, "terminateUploadSequence" },
5335 { 32, "requestDomainDownload" },
5336 { 33, "requestDomainUpload" },
5337 { 34, "loadDomainContent" },
5338 { 35, "storeDomainContent" },
5339 { 36, "deleteDomain" },
5340 { 37, "getDomainAttributes" },
5341 { 38, "createProgramInvocation" },
5342 { 39, "deleteProgramInvocation" },
5343 { 40, "start" },
5344 { 41, "stop" },
5345 { 42, "resume" },
5346 { 43, "reset" },
5347 { 44, "kill" },
5348 { 45, "getProgramInvocationAttributes" },
5349 { 46, "obtainFile" },
5350 { 47, "defineEventCondition" },
5351 { 48, "deleteEventCondition" },
5352 { 49, "getEventConditionAttributes" },
5353 { 50, "reportEventConditionStatus" },
5354 { 51, "alterEventConditionMonitoring" },
5355 { 52, "triggerEvent" },
5356 { 53, "defineEventAction" },
5357 { 54, "deleteEventAction" },
5358 { 55, "getEventActionAttributes" },
5359 { 56, "reportEventActionStatus" },
5360 { 57, "defineEventEnrollment" },
5361 { 58, "deleteEventEnrollment" },
5362 { 59, "alterEventEnrollment" },
5363 { 60, "reportEventEnrollmentStatus" },
5364 { 61, "getEventEnrollmentAttributes" },
5365 { 62, "acknowledgeEventNotification" },
5366 { 63, "getAlarmSummary" },
5367 { 64, "getAlarmEnrollmentSummary" },
5368 { 65, "readJournal" },
5369 { 66, "writeJournal" },
5370 { 67, "initializeJournal" },
5371 { 68, "reportJournalStatus" },
5372 { 69, "createJournal" },
5373 { 70, "deleteJournal" },
5374 { 71, "getCapabilityList" },
5375 { 72, "fileOpen" },
5376 { 73, "fileRead" },
5377 { 74, "fileClose" },
5378 { 75, "fileRename" },
5379 { 76, "fileDelete" },
5380 { 77, "fileDirectory" },
5381 { 0, NULL }
5384 static const ber_choice_t ConfirmedServiceRequest_choice[] = {
5385 { 0, &hf_mms_status , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Status_Request },
5386 { 1, &hf_mms_getNameList , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_GetNameList_Request },
5387 { 2, &hf_mms_identify , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identify_Request },
5388 { 3, &hf_mms_rename , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Rename_Request },
5389 { 4, &hf_mms_read , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_Read_Request },
5390 { 5, &hf_mms_write , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_Write_Request },
5391 { 6, &hf_mms_getVariableAccessAttributes, BER_CLASS_CON, 6, 0, dissect_mms_GetVariableAccessAttributes_Request },
5392 { 7, &hf_mms_defineNamedVariable, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_DefineNamedVariable_Request },
5393 { 8, &hf_mms_defineScatteredAccess, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mms_DefineScatteredAccess_Request },
5394 { 9, &hf_mms_getScatteredAccessAttributes, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_GetScatteredAccessAttributes_Request },
5395 { 10, &hf_mms_deleteVariableAccess, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_DeleteVariableAccess_Request },
5396 { 11, &hf_mms_defineNamedVariableList, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_DefineNamedVariableList_Request },
5397 { 12, &hf_mms_getNamedVariableListAttributes, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_mms_GetNamedVariableListAttributes_Request },
5398 { 13, &hf_mms_deleteNamedVariableList, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_mms_DeleteNamedVariableList_Request },
5399 { 14, &hf_mms_defineNamedType , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_mms_DefineNamedType_Request },
5400 { 15, &hf_mms_getNamedTypeAttributes, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_mms_GetNamedTypeAttributes_Request },
5401 { 16, &hf_mms_deleteNamedType , BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_mms_DeleteNamedType_Request },
5402 { 17, &hf_mms_input , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_mms_Input_Request },
5403 { 18, &hf_mms_output , BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_mms_Output_Request },
5404 { 19, &hf_mms_takeControl , BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_mms_TakeControl_Request },
5405 { 20, &hf_mms_relinquishControl, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_mms_RelinquishControl_Request },
5406 { 21, &hf_mms_defineSemaphore , BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_mms_DefineSemaphore_Request },
5407 { 22, &hf_mms_deleteSemaphore , BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_mms_DeleteSemaphore_Request },
5408 { 23, &hf_mms_reportSemaphoreStatus, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_mms_ReportSemaphoreStatus_Request },
5409 { 24, &hf_mms_reportPoolSemaphoreStatus, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_mms_ReportPoolSemaphoreStatus_Request },
5410 { 25, &hf_mms_reportSemaphoreEntryStatus, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_mms_ReportSemaphoreEntryStatus_Request },
5411 { 26, &hf_mms_initiateDownloadSequence, BER_CLASS_CON, 26, BER_FLAGS_IMPLTAG, dissect_mms_InitiateDownloadSequence_Request },
5412 { 27, &hf_mms_downloadSegment , BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_mms_DownloadSegment_Request },
5413 { 28, &hf_mms_terminateDownloadSequence, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_mms_TerminateDownloadSequence_Request },
5414 { 29, &hf_mms_initiateUploadSequence, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_mms_InitiateUploadSequence_Request },
5415 { 30, &hf_mms_uploadSegment , BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_mms_UploadSegment_Request },
5416 { 31, &hf_mms_terminateUploadSequence, BER_CLASS_CON, 31, BER_FLAGS_IMPLTAG, dissect_mms_TerminateUploadSequence_Request },
5417 { 32, &hf_mms_requestDomainDownload, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_mms_RequestDomainDownload_Request },
5418 { 33, &hf_mms_requestDomainUpload, BER_CLASS_CON, 33, BER_FLAGS_IMPLTAG, dissect_mms_RequestDomainUpload_Request },
5419 { 34, &hf_mms_loadDomainContent, BER_CLASS_CON, 34, BER_FLAGS_IMPLTAG, dissect_mms_LoadDomainContent_Request },
5420 { 35, &hf_mms_storeDomainContent, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_mms_StoreDomainContent_Request },
5421 { 36, &hf_mms_deleteDomain , BER_CLASS_CON, 36, BER_FLAGS_IMPLTAG, dissect_mms_DeleteDomain_Request },
5422 { 37, &hf_mms_getDomainAttributes, BER_CLASS_CON, 37, BER_FLAGS_IMPLTAG, dissect_mms_GetDomainAttributes_Request },
5423 { 38, &hf_mms_createProgramInvocation, BER_CLASS_CON, 38, BER_FLAGS_IMPLTAG, dissect_mms_CreateProgramInvocation_Request },
5424 { 39, &hf_mms_deleteProgramInvocation, BER_CLASS_CON, 39, BER_FLAGS_IMPLTAG, dissect_mms_DeleteProgramInvocation_Request },
5425 { 40, &hf_mms_start , BER_CLASS_CON, 40, BER_FLAGS_IMPLTAG, dissect_mms_Start_Request },
5426 { 41, &hf_mms_stop , BER_CLASS_CON, 41, BER_FLAGS_IMPLTAG, dissect_mms_Stop_Request },
5427 { 42, &hf_mms_resume , BER_CLASS_CON, 42, BER_FLAGS_IMPLTAG, dissect_mms_Resume_Request },
5428 { 43, &hf_mms_reset , BER_CLASS_CON, 43, BER_FLAGS_IMPLTAG, dissect_mms_Reset_Request },
5429 { 44, &hf_mms_kill , BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_mms_Kill_Request },
5430 { 45, &hf_mms_getProgramInvocationAttributes, BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_mms_GetProgramInvocationAttributes_Request },
5431 { 46, &hf_mms_obtainFile , BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_mms_ObtainFile_Request },
5432 { 47, &hf_mms_defineEventCondition, BER_CLASS_CON, 47, BER_FLAGS_IMPLTAG, dissect_mms_DefineEventCondition_Request },
5433 { 48, &hf_mms_confirmedServiceRequest_deleteEventCondition, BER_CLASS_CON, 48, 0, dissect_mms_DeleteEventCondition_Request },
5434 { 49, &hf_mms_getEventConditionAttributes, BER_CLASS_CON, 49, 0, dissect_mms_GetEventConditionAttributes_Request },
5435 { 50, &hf_mms_reportEventConditionStatus, BER_CLASS_CON, 50, 0, dissect_mms_ReportEventConditionStatus_Request },
5436 { 51, &hf_mms_alterEventConditionMonitoring, BER_CLASS_CON, 51, BER_FLAGS_IMPLTAG, dissect_mms_AlterEventConditionMonitoring_Request },
5437 { 52, &hf_mms_triggerEvent , BER_CLASS_CON, 52, BER_FLAGS_IMPLTAG, dissect_mms_TriggerEvent_Request },
5438 { 53, &hf_mms_defineEventAction, BER_CLASS_CON, 53, BER_FLAGS_IMPLTAG, dissect_mms_DefineEventAction_Request },
5439 { 54, &hf_mms_confirmedServiceRequest_deleteEventAction, BER_CLASS_CON, 54, 0, dissect_mms_DeleteEventAction_Request },
5440 { 55, &hf_mms_getEventActionAttributes, BER_CLASS_CON, 55, 0, dissect_mms_GetEventActionAttributes_Request },
5441 { 56, &hf_mms_reportEventActionStatus, BER_CLASS_CON, 56, 0, dissect_mms_ReportEventActionStatus_Request },
5442 { 57, &hf_mms_defineEventEnrollment, BER_CLASS_CON, 57, BER_FLAGS_IMPLTAG, dissect_mms_DefineEventEnrollment_Request },
5443 { 58, &hf_mms_confirmedServiceRequest_deleteEventEnrollment, BER_CLASS_CON, 58, 0, dissect_mms_DeleteEventEnrollment_Request },
5444 { 59, &hf_mms_alterEventEnrollment, BER_CLASS_CON, 59, BER_FLAGS_IMPLTAG, dissect_mms_AlterEventEnrollment_Request },
5445 { 60, &hf_mms_reportEventEnrollmentStatus, BER_CLASS_CON, 60, 0, dissect_mms_ReportEventEnrollmentStatus_Request },
5446 { 61, &hf_mms_getEventEnrollmentAttributes, BER_CLASS_CON, 61, BER_FLAGS_IMPLTAG, dissect_mms_GetEventEnrollmentAttributes_Request },
5447 { 62, &hf_mms_acknowledgeEventNotification, BER_CLASS_CON, 62, BER_FLAGS_IMPLTAG, dissect_mms_AcknowledgeEventNotification_Request },
5448 { 63, &hf_mms_getAlarmSummary , BER_CLASS_CON, 63, BER_FLAGS_IMPLTAG, dissect_mms_GetAlarmSummary_Request },
5449 { 64, &hf_mms_getAlarmEnrollmentSummary, BER_CLASS_CON, 64, BER_FLAGS_IMPLTAG, dissect_mms_GetAlarmEnrollmentSummary_Request },
5450 { 65, &hf_mms_readJournal , BER_CLASS_CON, 65, BER_FLAGS_IMPLTAG, dissect_mms_ReadJournal_Request },
5451 { 66, &hf_mms_writeJournal , BER_CLASS_CON, 66, BER_FLAGS_IMPLTAG, dissect_mms_WriteJournal_Request },
5452 { 67, &hf_mms_initializeJournal, BER_CLASS_CON, 67, BER_FLAGS_IMPLTAG, dissect_mms_InitializeJournal_Request },
5453 { 68, &hf_mms_reportJournalStatus, BER_CLASS_CON, 68, BER_FLAGS_IMPLTAG, dissect_mms_ReportJournalStatus_Request },
5454 { 69, &hf_mms_createJournal , BER_CLASS_CON, 69, BER_FLAGS_IMPLTAG, dissect_mms_CreateJournal_Request },
5455 { 70, &hf_mms_deleteJournal , BER_CLASS_CON, 70, BER_FLAGS_IMPLTAG, dissect_mms_DeleteJournal_Request },
5456 { 71, &hf_mms_getCapabilityList, BER_CLASS_CON, 71, BER_FLAGS_IMPLTAG, dissect_mms_GetCapabilityList_Request },
5457 { 72, &hf_mms_fileOpen , BER_CLASS_CON, 72, BER_FLAGS_IMPLTAG, dissect_mms_FileOpen_Request },
5458 { 73, &hf_mms_fileRead , BER_CLASS_CON, 73, BER_FLAGS_IMPLTAG, dissect_mms_FileRead_Request },
5459 { 74, &hf_mms_fileClose , BER_CLASS_CON, 74, BER_FLAGS_IMPLTAG, dissect_mms_FileClose_Request },
5460 { 75, &hf_mms_fileRename , BER_CLASS_CON, 75, BER_FLAGS_IMPLTAG, dissect_mms_FileRename_Request },
5461 { 76, &hf_mms_fileDelete , BER_CLASS_CON, 76, BER_FLAGS_IMPLTAG, dissect_mms_FileDelete_Request },
5462 { 77, &hf_mms_fileDirectory , BER_CLASS_CON, 77, BER_FLAGS_IMPLTAG, dissect_mms_FileDirectory_Request },
5463 { 0, NULL, 0, 0, 0, NULL }
5466 static int
5467 dissect_mms_ConfirmedServiceRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5468 int8_t ber_class;
5469 bool pc;
5470 int32_t tag;
5472 get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
5473 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
5474 if(mms_priv){
5475 mms_priv->confirmedservice_type = tag;
5478 offset = dissect_ber_choice(actx, tree, tvb, offset,
5479 ConfirmedServiceRequest_choice, hf_index, ett_mms_ConfirmedServiceRequest,
5480 NULL);
5483 if(mms_priv && mms_priv->mms_trans_p){
5484 if(mms_priv->confirmedservice_type == MMS_CONFIRMEDSERVICE_GETNAMELIST){
5485 if(mms_priv->objectclass == MMS_OBJECTCLASS_DOMAIN){
5486 if(mms_priv->objectscope == MMS_OBJECTSCOPE_VMDSPECIFIC){
5487 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_GET_SERV_DIR;
5489 }else if(mms_priv->objectclass == MMS_OBJECTCLASS_NAMMEDVARIABLE){
5490 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_GETLOGICALDEVICEDIRECTORY;
5491 }else if(mms_priv->objectclass == MMS_OBJECTCLASS_NAMEDVARIABLELIST){
5492 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_GETDATASETDIRECTORY;
5494 }else if(mms_priv->confirmedservice_type == MMS_CONFIRMEDSERVICE_GETNAMEDVARIABLELISTATTRIBUTES){
5495 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_GETDATASETDIRECTORY;
5496 }else if(mms_priv->confirmedservice_type == MMS_CONFIRMEDSERVICE_READ){
5497 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_READ;
5498 }else if(mms_priv->confirmedservice_type == MMS_CONFIRMEDSERVICE_WRITE){
5499 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_WRITE;
5500 }else if(mms_priv->confirmedservice_type == MMS_CONFIRMEDSERVICE_GETVARIABLEACCESSATTRIBUTES){
5501 mms_priv->mms_trans_p->conf_serv_pdu_type_req = MMS_IEC_61850_CONF_SERV_PDU_GETDATADIRECTORY;
5507 return offset;
5511 static const value_string mms_CS_Request_Detail_vals[] = {
5512 { 0, "foo" },
5513 { 0, NULL }
5516 static const ber_choice_t CS_Request_Detail_choice[] = {
5517 { 0, &hf_mms_foo , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_mms_INTEGER },
5518 { 0, NULL, 0, 0, 0, NULL }
5521 static int
5522 dissect_mms_CS_Request_Detail(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5523 offset = dissect_ber_choice(actx, tree, tvb, offset,
5524 CS_Request_Detail_choice, hf_index, ett_mms_CS_Request_Detail,
5525 NULL);
5527 return offset;
5531 static const ber_sequence_t Confirmed_RequestPDU_sequence[] = {
5532 { &hf_mms_invokeID , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_mms_Unsigned32 },
5533 { &hf_mms_listOfModifier , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_mms_SEQUENCE_OF_Modifier },
5534 { &hf_mms_confirmedServiceRequest, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_ConfirmedServiceRequest },
5535 { &hf_mms_cs_request_detail, BER_CLASS_CON, 79, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_CS_Request_Detail },
5536 { NULL, 0, 0, 0, NULL }
5539 static int
5540 dissect_mms_Confirmed_RequestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5542 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5543 Confirmed_RequestPDU_sequence, hf_index, ett_mms_Confirmed_RequestPDU);
5545 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
5546 if(tree && mms_priv){
5547 mms_priv->pdu_item = (proto_item*)tree->last_child;
5551 return offset;
5555 static const value_string mms_T_vmdLogicalStatus_vals[] = {
5556 { 0, "state-changes-allowed" },
5557 { 1, "no-state-changes-allowed" },
5558 { 2, "limited-services-allowed" },
5559 { 3, "support-services-allowed" },
5560 { 0, NULL }
5564 static int
5565 dissect_mms_T_vmdLogicalStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5566 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5567 NULL);
5569 return offset;
5573 static const value_string mms_T_vmdPhysicalStatus_vals[] = {
5574 { 0, "operational" },
5575 { 1, "partially-operational" },
5576 { 2, "inoperable" },
5577 { 3, "needs-commissioning" },
5578 { 0, NULL }
5582 static int
5583 dissect_mms_T_vmdPhysicalStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5584 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5585 NULL);
5587 return offset;
5592 static int
5593 dissect_mms_BIT_STRING_SIZE_0_128(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5594 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
5595 NULL, 0, hf_index, -1,
5596 NULL);
5598 return offset;
5602 static const ber_sequence_t Status_Response_sequence[] = {
5603 { &hf_mms_vmdLogicalStatus, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_vmdLogicalStatus },
5604 { &hf_mms_vmdPhysicalStatus, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_vmdPhysicalStatus },
5605 { &hf_mms_localDetail , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BIT_STRING_SIZE_0_128 },
5606 { NULL, 0, 0, 0, NULL }
5609 static int
5610 dissect_mms_Status_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5611 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5612 Status_Response_sequence, hf_index, ett_mms_Status_Response);
5614 return offset;
5618 static const ber_sequence_t GetNameList_Response_sequence[] = {
5619 { &hf_mms_listOfIdentifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Identifier },
5620 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
5621 { NULL, 0, 0, 0, NULL }
5624 static int
5625 dissect_mms_GetNameList_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5626 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5627 GetNameList_Response_sequence, hf_index, ett_mms_GetNameList_Response);
5629 return offset;
5633 static const ber_sequence_t T_listOfAbstractSyntaxes_sequence_of[1] = {
5634 { &hf_mms_listOfAbstractSyntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_mms_OBJECT_IDENTIFIER },
5637 static int
5638 dissect_mms_T_listOfAbstractSyntaxes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5639 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5640 T_listOfAbstractSyntaxes_sequence_of, hf_index, ett_mms_T_listOfAbstractSyntaxes);
5642 return offset;
5646 static const ber_sequence_t Identify_Response_sequence[] = {
5647 { &hf_mms_vendorName , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
5648 { &hf_mms_modelName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
5649 { &hf_mms_revision , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
5650 { &hf_mms_listOfAbstractSyntaxes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_listOfAbstractSyntaxes },
5651 { NULL, 0, 0, 0, NULL }
5654 static int
5655 dissect_mms_Identify_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5656 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5657 Identify_Response_sequence, hf_index, ett_mms_Identify_Response);
5659 return offset;
5664 static int
5665 dissect_mms_Rename_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5666 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
5668 return offset;
5672 static const value_string mms_DataAccessError_vals[] = {
5673 { 0, "object-invalidated" },
5674 { 1, "hardware-fault" },
5675 { 2, "temporarily-unavailable" },
5676 { 3, "object-access-denied" },
5677 { 4, "object-undefined" },
5678 { 5, "invalid-address" },
5679 { 6, "type-unsupported" },
5680 { 7, "type-inconsistent" },
5681 { 8, "object-attribute-inconsistent" },
5682 { 9, "object-access-unsupported" },
5683 { 10, "object-non-existent" },
5684 { 11, "object-value-invalid" },
5685 { 0, NULL }
5689 static int
5690 dissect_mms_DataAccessError(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5691 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5692 NULL);
5694 return offset;
5698 static const value_string mms_AccessResult_vals[] = {
5699 { 0, "failure" },
5700 { 1, "success" },
5701 { 0, NULL }
5704 static const ber_choice_t AccessResult_choice[] = {
5705 { 0, &hf_mms_failure , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_DataAccessError },
5706 { 1, &hf_mms_success_01 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_mms_Data },
5707 { 0, NULL, 0, 0, 0, NULL }
5710 static int
5711 dissect_mms_AccessResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5712 int branch_taken;
5713 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
5714 if(mms_priv){
5715 /* If listOfAccessResult_cnt > 2 we are into the optional data.
5716 * if data is not present increase count.
5718 bool present;
5719 do {
5720 mms_priv->listOfAccessResult_cnt+=1;
5721 present = true;
5722 switch(mms_priv->listOfAccessResult_cnt){
5723 case 1: /*RptID*/
5724 break;
5725 case 2: /* Reported OptFlds */
5726 break;
5727 case 3: /* SeqNum Shall be present if OptFlds.sequence-number is true */
5728 if((mms_priv->reported_optflds & 0x4000) != 0x4000){
5729 present = false;
5731 break;
5732 case 4: /*TimeOfEntry Shall be present if OptFlds.report-time-stamp is true */
5733 if((mms_priv->reported_optflds & 0x2000) != 0x2000){
5734 present = false;
5736 break;
5737 case 5: /*DatSet Shall be present if OptFlds.data-set-name is true */
5738 if((mms_priv->reported_optflds & 0x0800) !=0x0800){
5739 present = false;
5741 break;
5742 case 6: /*BufOvfl Shall be present if OptFlds.buffer-overflow is true */
5743 if((mms_priv->reported_optflds & 0x0200) !=0x0200){
5744 present = false;
5746 break;
5747 case 7: /*EntryID Shall be present if OptFlds.entryID is true */
5748 if((mms_priv->reported_optflds & 0x0100) !=0x0100){
5749 present = false;
5751 break;
5752 case 8: /*ConfRev Shall be present if OptFlds.conf-rev is true */
5753 if((mms_priv->reported_optflds & 0x0080) !=0x0080){
5754 present = false;
5756 break;
5757 case 9: /*SubSeqNum Shall be present if OptFlds.segmentation is true */
5758 if((mms_priv->reported_optflds & 0x0040) !=0x0040){
5759 present = false;
5761 break;
5762 case 10: /*MoreSegmentsFollow Shall be present if OptFlds.segmentation is true */
5763 if((mms_priv->reported_optflds & 0x0040) !=0x0040){
5764 present = false;
5766 break;
5767 case 11: /*Inclusion-bitstring Shall be present */
5768 break;
5769 case 12: /*data-reference(s) Shall be present if OptFlds.data-reference is true */
5770 if((mms_priv->reported_optflds & 0x0400) !=0x0400){
5771 present = false;
5773 break;
5774 case 13: /*value(s) See AccessResult for value(s) */
5775 break;
5776 case 14: /*ReasonCode(s) Shall be present if OptFlds OptFlds.reason-for-inclusion is true */
5777 if((mms_priv->reported_optflds & 0x1000) !=0x1000){
5778 present = false;
5780 break;
5781 default:
5782 break;
5784 } while(!present);
5787 offset = dissect_ber_choice(actx, tree, tvb, offset,
5788 AccessResult_choice, hf_index, ett_mms_AccessResult,
5789 &branch_taken);
5791 if(mms_priv){
5792 mms_priv->success = branch_taken;
5796 return offset;
5800 static const ber_sequence_t SEQUENCE_OF_AccessResult_sequence_of[1] = {
5801 { &hf_mms_listOfAccessResult_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_AccessResult },
5804 static int
5805 dissect_mms_SEQUENCE_OF_AccessResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5806 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5807 SEQUENCE_OF_AccessResult_sequence_of, hf_index, ett_mms_SEQUENCE_OF_AccessResult);
5809 return offset;
5813 static const ber_sequence_t Read_Response_sequence[] = {
5814 { &hf_mms_variableAccessSpecificatn, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableAccessSpecification },
5815 { &hf_mms_listOfAccessResult, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_AccessResult },
5816 { NULL, 0, 0, 0, NULL }
5819 static int
5820 dissect_mms_Read_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5821 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5822 Read_Response_sequence, hf_index, ett_mms_Read_Response);
5824 return offset;
5828 static const value_string mms_Write_Response_item_vals[] = {
5829 { 0, "failure" },
5830 { 1, "success" },
5831 { 0, NULL }
5834 static const ber_choice_t Write_Response_item_choice[] = {
5835 { 0, &hf_mms_failure , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_DataAccessError },
5836 { 1, &hf_mms_success , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
5837 { 0, NULL, 0, 0, 0, NULL }
5840 static int
5841 dissect_mms_Write_Response_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5842 offset = dissect_ber_choice(actx, tree, tvb, offset,
5843 Write_Response_item_choice, hf_index, ett_mms_Write_Response_item,
5844 NULL);
5846 return offset;
5850 static const ber_sequence_t Write_Response_sequence_of[1] = {
5851 { &hf_mms_Write_Response_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_Write_Response_item },
5854 static int
5855 dissect_mms_Write_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5856 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5857 Write_Response_sequence_of, hf_index, ett_mms_Write_Response);
5859 return offset;
5863 static const ber_sequence_t GetVariableAccessAttributes_Response_sequence[] = {
5864 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
5865 { &hf_mms_address , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_Address },
5866 { &hf_mms_typeSpecification, BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
5867 { NULL, 0, 0, 0, NULL }
5870 static int
5871 dissect_mms_GetVariableAccessAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5872 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5873 GetVariableAccessAttributes_Response_sequence, hf_index, ett_mms_GetVariableAccessAttributes_Response);
5875 return offset;
5880 static int
5881 dissect_mms_DefineNamedVariable_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5882 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
5884 return offset;
5889 static int
5890 dissect_mms_DefineScatteredAccess_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5891 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
5893 return offset;
5897 static const ber_sequence_t GetScatteredAccessAttributes_Response_sequence[] = {
5898 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
5899 { &hf_mms_scatteredAccessDescription, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ScatteredAccessDescription },
5900 { NULL, 0, 0, 0, NULL }
5903 static int
5904 dissect_mms_GetScatteredAccessAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5905 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5906 GetScatteredAccessAttributes_Response_sequence, hf_index, ett_mms_GetScatteredAccessAttributes_Response);
5908 return offset;
5912 static const ber_sequence_t DeleteVariableAccess_Response_sequence[] = {
5913 { &hf_mms_numberMatched , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
5914 { &hf_mms_numberDeleted , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
5915 { NULL, 0, 0, 0, NULL }
5918 static int
5919 dissect_mms_DeleteVariableAccess_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5920 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5921 DeleteVariableAccess_Response_sequence, hf_index, ett_mms_DeleteVariableAccess_Response);
5923 return offset;
5928 static int
5929 dissect_mms_DefineNamedVariableList_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5930 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
5932 return offset;
5936 static const ber_sequence_t T_listOfVariable_item_01_sequence[] = {
5937 { &hf_mms_variableSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableSpecification },
5938 { &hf_mms_alternateAccess , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlternateAccess },
5939 { NULL, 0, 0, 0, NULL }
5942 static int
5943 dissect_mms_T_listOfVariable_item_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5944 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5945 T_listOfVariable_item_01_sequence, hf_index, ett_mms_T_listOfVariable_item_01);
5947 return offset;
5951 static const ber_sequence_t T_listOfVariable_01_sequence_of[1] = {
5952 { &hf_mms_listOfVariable_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_T_listOfVariable_item_01 },
5955 static int
5956 dissect_mms_T_listOfVariable_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5957 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5958 T_listOfVariable_01_sequence_of, hf_index, ett_mms_T_listOfVariable_01);
5960 return offset;
5964 static const ber_sequence_t GetNamedVariableListAttributes_Response_sequence[] = {
5965 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
5966 { &hf_mms_listOfVariable_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfVariable_01 },
5967 { NULL, 0, 0, 0, NULL }
5970 static int
5971 dissect_mms_GetNamedVariableListAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5972 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5973 GetNamedVariableListAttributes_Response_sequence, hf_index, ett_mms_GetNamedVariableListAttributes_Response);
5975 return offset;
5979 static const ber_sequence_t DeleteNamedVariableList_Response_sequence[] = {
5980 { &hf_mms_numberMatched , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
5981 { &hf_mms_numberDeleted , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
5982 { NULL, 0, 0, 0, NULL }
5985 static int
5986 dissect_mms_DeleteNamedVariableList_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5987 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5988 DeleteNamedVariableList_Response_sequence, hf_index, ett_mms_DeleteNamedVariableList_Response);
5990 return offset;
5995 static int
5996 dissect_mms_DefineNamedType_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5997 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
5999 return offset;
6003 static const ber_sequence_t GetNamedTypeAttributes_Response_sequence[] = {
6004 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6005 { &hf_mms_typeSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_TypeSpecification },
6006 { NULL, 0, 0, 0, NULL }
6009 static int
6010 dissect_mms_GetNamedTypeAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6011 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6012 GetNamedTypeAttributes_Response_sequence, hf_index, ett_mms_GetNamedTypeAttributes_Response);
6014 return offset;
6018 static const ber_sequence_t DeleteNamedType_Response_sequence[] = {
6019 { &hf_mms_numberMatched , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6020 { &hf_mms_numberDeleted , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6021 { NULL, 0, 0, 0, NULL }
6024 static int
6025 dissect_mms_DeleteNamedType_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6026 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6027 DeleteNamedType_Response_sequence, hf_index, ett_mms_DeleteNamedType_Response);
6029 return offset;
6034 static int
6035 dissect_mms_Input_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6036 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
6037 actx, tree, tvb, offset, hf_index,
6038 NULL);
6040 return offset;
6045 static int
6046 dissect_mms_Output_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6047 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6049 return offset;
6053 static const value_string mms_TakeControl_Response_vals[] = {
6054 { 0, "noResult" },
6055 { 1, "namedToken" },
6056 { 0, NULL }
6059 static const ber_choice_t TakeControl_Response_choice[] = {
6060 { 0, &hf_mms_noResult , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
6061 { 1, &hf_mms_namedToken , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
6062 { 0, NULL, 0, 0, 0, NULL }
6065 static int
6066 dissect_mms_TakeControl_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6067 offset = dissect_ber_choice(actx, tree, tvb, offset,
6068 TakeControl_Response_choice, hf_index, ett_mms_TakeControl_Response,
6069 NULL);
6071 return offset;
6076 static int
6077 dissect_mms_RelinquishControl_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6078 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6080 return offset;
6085 static int
6086 dissect_mms_DefineSemaphore_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6087 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6089 return offset;
6094 static int
6095 dissect_mms_DeleteSemaphore_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6096 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6098 return offset;
6102 static const value_string mms_T_class_vals[] = {
6103 { 0, "token" },
6104 { 1, "pool" },
6105 { 0, NULL }
6109 static int
6110 dissect_mms_T_class(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6111 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6112 NULL);
6114 return offset;
6118 static const ber_sequence_t ReportSemaphoreStatus_Response_sequence[] = {
6119 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6120 { &hf_mms_class , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_class },
6121 { &hf_mms_numberOfTokens , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned16 },
6122 { &hf_mms_numberOfOwnedTokens, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned16 },
6123 { &hf_mms_numberOfHungTokens, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned16 },
6124 { NULL, 0, 0, 0, NULL }
6127 static int
6128 dissect_mms_ReportSemaphoreStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6129 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6130 ReportSemaphoreStatus_Response_sequence, hf_index, ett_mms_ReportSemaphoreStatus_Response);
6132 return offset;
6136 static const value_string mms_T_listOfNamedTokens_item_vals[] = {
6137 { 0, "freeNamedToken" },
6138 { 1, "ownedNamedToken" },
6139 { 2, "hungNamedToken" },
6140 { 0, NULL }
6143 static const ber_choice_t T_listOfNamedTokens_item_choice[] = {
6144 { 0, &hf_mms_freeNamedToken , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
6145 { 1, &hf_mms_ownedNamedToken , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
6146 { 2, &hf_mms_hungNamedToken , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
6147 { 0, NULL, 0, 0, 0, NULL }
6150 static int
6151 dissect_mms_T_listOfNamedTokens_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6152 offset = dissect_ber_choice(actx, tree, tvb, offset,
6153 T_listOfNamedTokens_item_choice, hf_index, ett_mms_T_listOfNamedTokens_item,
6154 NULL);
6156 return offset;
6160 static const ber_sequence_t T_listOfNamedTokens_sequence_of[1] = {
6161 { &hf_mms_listOfNamedTokens_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_listOfNamedTokens_item },
6164 static int
6165 dissect_mms_T_listOfNamedTokens(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6166 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6167 T_listOfNamedTokens_sequence_of, hf_index, ett_mms_T_listOfNamedTokens);
6169 return offset;
6173 static const ber_sequence_t ReportPoolSemaphoreStatus_Response_sequence[] = {
6174 { &hf_mms_listOfNamedTokens, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfNamedTokens },
6175 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6176 { NULL, 0, 0, 0, NULL }
6179 static int
6180 dissect_mms_ReportPoolSemaphoreStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6181 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6182 ReportPoolSemaphoreStatus_Response_sequence, hf_index, ett_mms_ReportPoolSemaphoreStatus_Response);
6184 return offset;
6188 static const value_string mms_T_entryClass_vals[] = {
6189 { 0, "simple" },
6190 { 1, "modifier" },
6191 { 0, NULL }
6195 static int
6196 dissect_mms_T_entryClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6197 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6198 NULL);
6200 return offset;
6204 static const ber_sequence_t SemaphoreEntry_sequence[] = {
6205 { &hf_mms_entryId , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
6206 { &hf_mms_entryClass , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_entryClass },
6207 { &hf_mms_applicationReference, BER_CLASS_CON, 2, 0, dissect_mms_ApplicationReference },
6208 { &hf_mms_namedToken , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Identifier },
6209 { &hf_mms_priority , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
6210 { &hf_mms_remainingTimeOut, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6211 { &hf_mms_abortOnTimeOut , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6212 { &hf_mms_relinquishIfConnectionLost, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6213 { NULL, 0, 0, 0, NULL }
6216 static int
6217 dissect_mms_SemaphoreEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6218 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6219 SemaphoreEntry_sequence, hf_index, ett_mms_SemaphoreEntry);
6221 return offset;
6225 static const ber_sequence_t SEQUENCE_OF_SemaphoreEntry_sequence_of[1] = {
6226 { &hf_mms_listOfSemaphoreEntry_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_SemaphoreEntry },
6229 static int
6230 dissect_mms_SEQUENCE_OF_SemaphoreEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6231 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6232 SEQUENCE_OF_SemaphoreEntry_sequence_of, hf_index, ett_mms_SEQUENCE_OF_SemaphoreEntry);
6234 return offset;
6238 static const ber_sequence_t ReportSemaphoreEntryStatus_Response_sequence[] = {
6239 { &hf_mms_listOfSemaphoreEntry, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_SemaphoreEntry },
6240 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6241 { NULL, 0, 0, 0, NULL }
6244 static int
6245 dissect_mms_ReportSemaphoreEntryStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6246 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6247 ReportSemaphoreEntryStatus_Response_sequence, hf_index, ett_mms_ReportSemaphoreEntryStatus_Response);
6249 return offset;
6254 static int
6255 dissect_mms_InitiateDownloadSequence_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6256 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6258 return offset;
6262 static const value_string mms_T_loadData_vals[] = {
6263 { 0, "non-coded" },
6264 { 1, "coded" },
6265 { 0, NULL }
6268 static const ber_choice_t T_loadData_choice[] = {
6269 { 0, &hf_mms_non_coded , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
6270 { 1, &hf_mms_coded , BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
6271 { 0, NULL, 0, 0, 0, NULL }
6274 static int
6275 dissect_mms_T_loadData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6276 offset = dissect_ber_choice(actx, tree, tvb, offset,
6277 T_loadData_choice, hf_index, ett_mms_T_loadData,
6278 NULL);
6280 return offset;
6284 static const ber_sequence_t DownloadSegment_Response_sequence[] = {
6285 { &hf_mms_loadData , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_loadData },
6286 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6287 { NULL, 0, 0, 0, NULL }
6290 static int
6291 dissect_mms_DownloadSegment_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6292 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6293 DownloadSegment_Response_sequence, hf_index, ett_mms_DownloadSegment_Response);
6295 return offset;
6300 static int
6301 dissect_mms_TerminateDownloadSequence_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6302 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6304 return offset;
6308 static const ber_sequence_t T_listOfCapabilities_02_sequence_of[1] = {
6309 { &hf_mms_listOfCapabilities_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
6312 static int
6313 dissect_mms_T_listOfCapabilities_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6314 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6315 T_listOfCapabilities_02_sequence_of, hf_index, ett_mms_T_listOfCapabilities_02);
6317 return offset;
6321 static const ber_sequence_t InitiateUploadSequence_Response_sequence[] = {
6322 { &hf_mms_ulsmID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
6323 { &hf_mms_listOfCapabilities_02, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfCapabilities_02 },
6324 { NULL, 0, 0, 0, NULL }
6327 static int
6328 dissect_mms_InitiateUploadSequence_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6329 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6330 InitiateUploadSequence_Response_sequence, hf_index, ett_mms_InitiateUploadSequence_Response);
6332 return offset;
6336 static const value_string mms_T_loadData_01_vals[] = {
6337 { 0, "non-coded" },
6338 { 1, "coded" },
6339 { 0, NULL }
6342 static const ber_choice_t T_loadData_01_choice[] = {
6343 { 0, &hf_mms_non_coded , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
6344 { 1, &hf_mms_coded , BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
6345 { 0, NULL, 0, 0, 0, NULL }
6348 static int
6349 dissect_mms_T_loadData_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6350 offset = dissect_ber_choice(actx, tree, tvb, offset,
6351 T_loadData_01_choice, hf_index, ett_mms_T_loadData_01,
6352 NULL);
6354 return offset;
6358 static const ber_sequence_t UploadSegment_Response_sequence[] = {
6359 { &hf_mms_loadData_01 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_loadData_01 },
6360 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6361 { NULL, 0, 0, 0, NULL }
6364 static int
6365 dissect_mms_UploadSegment_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6366 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6367 UploadSegment_Response_sequence, hf_index, ett_mms_UploadSegment_Response);
6369 return offset;
6374 static int
6375 dissect_mms_TerminateUploadSequence_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6376 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6378 return offset;
6383 static int
6384 dissect_mms_RequestDomainDownload_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6385 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6387 return offset;
6392 static int
6393 dissect_mms_RequestDomainUpload_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6394 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6396 return offset;
6401 static int
6402 dissect_mms_LoadDomainContent_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6403 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6405 return offset;
6410 static int
6411 dissect_mms_StoreDomainContent_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6412 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6414 return offset;
6419 static int
6420 dissect_mms_DeleteDomain_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6421 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6423 return offset;
6427 static const ber_sequence_t T_listOfCapabilities_05_sequence_of[1] = {
6428 { &hf_mms_listOfCapabilities_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
6431 static int
6432 dissect_mms_T_listOfCapabilities_05(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6433 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6434 T_listOfCapabilities_05_sequence_of, hf_index, ett_mms_T_listOfCapabilities_05);
6436 return offset;
6440 static const value_string mms_DomainState_vals[] = {
6441 { 0, "non-existent" },
6442 { 1, "loading" },
6443 { 2, "ready" },
6444 { 3, "in-use" },
6445 { 4, "complete" },
6446 { 5, "incomplete" },
6447 { 7, "d1" },
6448 { 8, "d2" },
6449 { 9, "d3" },
6450 { 10, "d4" },
6451 { 11, "d5" },
6452 { 12, "d6" },
6453 { 13, "d7" },
6454 { 14, "d8" },
6455 { 15, "d9" },
6456 { 0, NULL }
6460 static int
6461 dissect_mms_DomainState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6462 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6463 NULL);
6465 return offset;
6470 static int
6471 dissect_mms_Integer8(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6472 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6473 NULL);
6475 return offset;
6479 static const ber_sequence_t GetDomainAttributes_Response_sequence[] = {
6480 { &hf_mms_listOfCapabilities_05, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfCapabilities_05 },
6481 { &hf_mms_getDomainAttributes_Response_state, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_DomainState },
6482 { &hf_mms_mmsDeletable , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6483 { &hf_mms_sharable , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6484 { &hf_mms_listOfProgramInvocations, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Identifier },
6485 { &hf_mms_uploadInProgress, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_Integer8 },
6486 { NULL, 0, 0, 0, NULL }
6489 static int
6490 dissect_mms_GetDomainAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6491 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6492 GetDomainAttributes_Response_sequence, hf_index, ett_mms_GetDomainAttributes_Response);
6494 return offset;
6499 static int
6500 dissect_mms_CreateProgramInvocation_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6501 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6503 return offset;
6508 static int
6509 dissect_mms_DeleteProgramInvocation_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6510 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6512 return offset;
6517 static int
6518 dissect_mms_Start_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6519 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6521 return offset;
6526 static int
6527 dissect_mms_Stop_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6528 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6530 return offset;
6535 static int
6536 dissect_mms_Resume_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6537 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6539 return offset;
6544 static int
6545 dissect_mms_Reset_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6546 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6548 return offset;
6553 static int
6554 dissect_mms_Kill_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6555 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6557 return offset;
6561 static const value_string mms_T_executionArgument_02_vals[] = {
6562 { 0, "simpleString" },
6563 { 1, "encodedString" },
6564 { 0, NULL }
6567 static const ber_choice_t T_executionArgument_02_choice[] = {
6568 { 0, &hf_mms_simpleString , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
6569 { 1, &hf_mms_encodedString , BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
6570 { 0, NULL, 0, 0, 0, NULL }
6573 static int
6574 dissect_mms_T_executionArgument_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6575 offset = dissect_ber_choice(actx, tree, tvb, offset,
6576 T_executionArgument_02_choice, hf_index, ett_mms_T_executionArgument_02,
6577 NULL);
6579 return offset;
6583 static const ber_sequence_t GetProgramInvocationAttributes_Response_sequence[] = {
6584 { &hf_mms_getProgramInvocationAttributes_Response_state, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_ProgramInvocationState },
6585 { &hf_mms_listOfDomainNames, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Identifier },
6586 { &hf_mms_mmsDeletable , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6587 { &hf_mms_reusable , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6588 { &hf_mms_monitor , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6589 { &hf_mms_startArgument , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_VisibleString },
6590 { &hf_mms_executionArgument_02, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_executionArgument_02 },
6591 { NULL, 0, 0, 0, NULL }
6594 static int
6595 dissect_mms_GetProgramInvocationAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6596 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6597 GetProgramInvocationAttributes_Response_sequence, hf_index, ett_mms_GetProgramInvocationAttributes_Response);
6599 return offset;
6604 static int
6605 dissect_mms_ObtainFile_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6606 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6608 return offset;
6613 static int
6614 dissect_mms_GeneralizedTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6615 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
6617 return offset;
6621 static const ber_sequence_t FileAttributes_sequence[] = {
6622 { &hf_mms_sizeOfFile , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6623 { &hf_mms_lastModified , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_GeneralizedTime },
6624 { NULL, 0, 0, 0, NULL }
6627 static int
6628 dissect_mms_FileAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6629 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6630 FileAttributes_sequence, hf_index, ett_mms_FileAttributes);
6632 return offset;
6636 static const ber_sequence_t FileOpen_Response_sequence[] = {
6637 { &hf_mms_frsmID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
6638 { &hf_mms_fileAttributes , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_FileAttributes },
6639 { NULL, 0, 0, 0, NULL }
6642 static int
6643 dissect_mms_FileOpen_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6644 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6645 FileOpen_Response_sequence, hf_index, ett_mms_FileOpen_Response);
6647 return offset;
6652 static int
6653 dissect_mms_DefineEventCondition_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6654 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6656 return offset;
6661 static int
6662 dissect_mms_DeleteEventCondition_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6663 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
6665 return offset;
6669 static const value_string mms_T_monitoredVariable_vals[] = {
6670 { 0, "variableReference" },
6671 { 1, "undefined" },
6672 { 0, NULL }
6675 static const ber_choice_t T_monitoredVariable_choice[] = {
6676 { 0, &hf_mms_variableReference, BER_CLASS_CON, 0, 0, dissect_mms_VariableSpecification },
6677 { 1, &hf_mms_undefined , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
6678 { 0, NULL, 0, 0, 0, NULL }
6681 static int
6682 dissect_mms_T_monitoredVariable(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6683 offset = dissect_ber_choice(actx, tree, tvb, offset,
6684 T_monitoredVariable_choice, hf_index, ett_mms_T_monitoredVariable,
6685 NULL);
6687 return offset;
6691 static const ber_sequence_t GetEventConditionAttributes_Response_sequence[] = {
6692 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6693 { &hf_mms_class_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_EC_Class },
6694 { &hf_mms_prio_rity , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Priority },
6695 { &hf_mms_severity , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
6696 { &hf_mms_alarmSummaryReports, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6697 { &hf_mms_monitoredVariable_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_mms_T_monitoredVariable },
6698 { &hf_mms_evaluationInterval, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6699 { NULL, 0, 0, 0, NULL }
6702 static int
6703 dissect_mms_GetEventConditionAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6704 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6705 GetEventConditionAttributes_Response_sequence, hf_index, ett_mms_GetEventConditionAttributes_Response);
6707 return offset;
6711 static const ber_sequence_t ReportEventConditionStatus_Response_sequence[] = {
6712 { &hf_mms_currentState , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_EC_State },
6713 { &hf_mms_numberOfEventEnrollments, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6714 { &hf_mms_enabled , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6715 { &hf_mms_timeOfLastTransitionToActive, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
6716 { &hf_mms_timeOfLastTransitionToIdle, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
6717 { NULL, 0, 0, 0, NULL }
6720 static int
6721 dissect_mms_ReportEventConditionStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6722 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6723 ReportEventConditionStatus_Response_sequence, hf_index, ett_mms_ReportEventConditionStatus_Response);
6725 return offset;
6730 static int
6731 dissect_mms_AlterEventConditionMonitoring_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6732 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6734 return offset;
6739 static int
6740 dissect_mms_TriggerEvent_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6741 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6743 return offset;
6748 static int
6749 dissect_mms_DefineEventAction_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6750 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6752 return offset;
6757 static int
6758 dissect_mms_DeleteEventAction_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6759 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
6761 return offset;
6765 static const ber_sequence_t GetEventActionAttributes_Response_sequence[] = {
6766 { &hf_mms_mmsDeletable , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6767 { &hf_mms_listOfModifier , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_Modifier },
6768 { NULL, 0, 0, 0, NULL }
6771 static int
6772 dissect_mms_GetEventActionAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6773 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6774 GetEventActionAttributes_Response_sequence, hf_index, ett_mms_GetEventActionAttributes_Response);
6776 return offset;
6781 static int
6782 dissect_mms_ReportEventActionStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6783 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
6785 return offset;
6790 static int
6791 dissect_mms_DefineEventEnrollment_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6792 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
6794 return offset;
6799 static int
6800 dissect_mms_DeleteEventEnrollment_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6801 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
6803 return offset;
6807 static const value_string mms_EE_State_vals[] = {
6808 { 0, "disabled" },
6809 { 1, "idle" },
6810 { 2, "active" },
6811 { 3, "activeNoAckA" },
6812 { 4, "idleNoAckI" },
6813 { 5, "idleNoAckA" },
6814 { 6, "idleAcked" },
6815 { 7, "activeAcked" },
6816 { 0, NULL }
6820 static int
6821 dissect_mms_EE_State(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6822 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6823 NULL);
6825 return offset;
6829 static const value_string mms_T_currentState_vals[] = {
6830 { 0, "state" },
6831 { 1, "undefined" },
6832 { 0, NULL }
6835 static const ber_choice_t T_currentState_choice[] = {
6836 { 0, &hf_mms_alterEventEnrollment_Response_currentState_state, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_EE_State },
6837 { 1, &hf_mms_undefined , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
6838 { 0, NULL, 0, 0, 0, NULL }
6841 static int
6842 dissect_mms_T_currentState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6843 offset = dissect_ber_choice(actx, tree, tvb, offset,
6844 T_currentState_choice, hf_index, ett_mms_T_currentState,
6845 NULL);
6847 return offset;
6851 static const ber_sequence_t AlterEventEnrollment_Response_sequence[] = {
6852 { &hf_mms_currentState_02 , BER_CLASS_CON, 0, 0, dissect_mms_T_currentState },
6853 { &hf_mms_transitionTime , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
6854 { NULL, 0, 0, 0, NULL }
6857 static int
6858 dissect_mms_AlterEventEnrollment_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6859 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6860 AlterEventEnrollment_Response_sequence, hf_index, ett_mms_AlterEventEnrollment_Response);
6862 return offset;
6866 static const value_string mms_EE_Duration_vals[] = {
6867 { 0, "current" },
6868 { 1, "permanent" },
6869 { 0, NULL }
6873 static int
6874 dissect_mms_EE_Duration(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6875 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6876 NULL);
6878 return offset;
6882 static const ber_sequence_t ReportEventEnrollmentStatus_Response_sequence[] = {
6883 { &hf_mms_eventConditionTransitions, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Transitions },
6884 { &hf_mms_notificationLost, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6885 { &hf_mms_duration , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_EE_Duration },
6886 { &hf_mms_alarmAcknowledgmentRule, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlarmAckRule },
6887 { &hf_mms_currentState_01 , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_EE_State },
6888 { NULL, 0, 0, 0, NULL }
6891 static int
6892 dissect_mms_ReportEventEnrollmentStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6893 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6894 ReportEventEnrollmentStatus_Response_sequence, hf_index, ett_mms_ReportEventEnrollmentStatus_Response);
6896 return offset;
6900 static const value_string mms_T_eventConditionName_vals[] = {
6901 { 0, "eventCondition" },
6902 { 1, "undefined" },
6903 { 0, NULL }
6906 static const ber_choice_t T_eventConditionName_choice[] = {
6907 { 0, &hf_mms_eventCondition , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
6908 { 1, &hf_mms_undefined , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
6909 { 0, NULL, 0, 0, 0, NULL }
6912 static int
6913 dissect_mms_T_eventConditionName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6914 offset = dissect_ber_choice(actx, tree, tvb, offset,
6915 T_eventConditionName_choice, hf_index, ett_mms_T_eventConditionName,
6916 NULL);
6918 return offset;
6922 static const value_string mms_T_eventActionName_vals[] = {
6923 { 0, "eventAction" },
6924 { 1, "undefined" },
6925 { 0, NULL }
6928 static const ber_choice_t T_eventActionName_choice[] = {
6929 { 0, &hf_mms_eventAction , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
6930 { 1, &hf_mms_undefined , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
6931 { 0, NULL, 0, 0, 0, NULL }
6934 static int
6935 dissect_mms_T_eventActionName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6936 offset = dissect_ber_choice(actx, tree, tvb, offset,
6937 T_eventActionName_choice, hf_index, ett_mms_T_eventActionName,
6938 NULL);
6940 return offset;
6944 static const value_string mms_EE_Class_vals[] = {
6945 { 0, "modifier" },
6946 { 1, "notification" },
6947 { 0, NULL }
6951 static int
6952 dissect_mms_EE_Class(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6953 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6954 NULL);
6956 return offset;
6960 static const ber_sequence_t EventEnrollment_sequence[] = {
6961 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
6962 { &hf_mms_eventConditionName_01, BER_CLASS_CON, 1, 0, dissect_mms_T_eventConditionName },
6963 { &hf_mms_eventActionName_01, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_mms_T_eventActionName },
6964 { &hf_mms_clientApplication, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_mms_ApplicationReference },
6965 { &hf_mms_mmsDeletable , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6966 { &hf_mms_enrollmentClass , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_EE_Class },
6967 { &hf_mms_duration , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_EE_Duration },
6968 { &hf_mms_invokeID , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6969 { &hf_mms_remainingAcceptableDelay, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
6970 { NULL, 0, 0, 0, NULL }
6973 static int
6974 dissect_mms_EventEnrollment(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6975 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6976 EventEnrollment_sequence, hf_index, ett_mms_EventEnrollment);
6978 return offset;
6982 static const ber_sequence_t SEQUENCE_OF_EventEnrollment_sequence_of[1] = {
6983 { &hf_mms_listOfEventEnrollment_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_EventEnrollment },
6986 static int
6987 dissect_mms_SEQUENCE_OF_EventEnrollment(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6988 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6989 SEQUENCE_OF_EventEnrollment_sequence_of, hf_index, ett_mms_SEQUENCE_OF_EventEnrollment);
6991 return offset;
6995 static const ber_sequence_t GetEventEnrollmentAttributes_Response_sequence[] = {
6996 { &hf_mms_listOfEventEnrollment, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_EventEnrollment },
6997 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
6998 { NULL, 0, 0, 0, NULL }
7001 static int
7002 dissect_mms_GetEventEnrollmentAttributes_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7003 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7004 GetEventEnrollmentAttributes_Response_sequence, hf_index, ett_mms_GetEventEnrollmentAttributes_Response);
7006 return offset;
7011 static int
7012 dissect_mms_AcknowledgeEventNotification_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7013 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7015 return offset;
7019 static const value_string mms_T_unacknowledgedState_vals[] = {
7020 { 0, "none" },
7021 { 1, "active" },
7022 { 2, "idle" },
7023 { 3, "both" },
7024 { 0, NULL }
7028 static int
7029 dissect_mms_T_unacknowledgedState(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7030 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7031 NULL);
7033 return offset;
7037 static const ber_sequence_t AlarmSummary_sequence[] = {
7038 { &hf_mms_eventConditionName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
7039 { &hf_mms_severity , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
7040 { &hf_mms_currentState , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_EC_State },
7041 { &hf_mms_unacknowledgedState, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_T_unacknowledgedState },
7042 { &hf_mms_timeOfLastTransitionToActive, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7043 { &hf_mms_timeOfLastTransitionToIdle, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7044 { NULL, 0, 0, 0, NULL }
7047 static int
7048 dissect_mms_AlarmSummary(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7049 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7050 AlarmSummary_sequence, hf_index, ett_mms_AlarmSummary);
7052 return offset;
7056 static const ber_sequence_t SEQUENCE_OF_AlarmSummary_sequence_of[1] = {
7057 { &hf_mms_listOfAlarmSummary_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_AlarmSummary },
7060 static int
7061 dissect_mms_SEQUENCE_OF_AlarmSummary(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7062 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7063 SEQUENCE_OF_AlarmSummary_sequence_of, hf_index, ett_mms_SEQUENCE_OF_AlarmSummary);
7065 return offset;
7069 static const ber_sequence_t GetAlarmSummary_Response_sequence[] = {
7070 { &hf_mms_listOfAlarmSummary, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_AlarmSummary },
7071 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7072 { NULL, 0, 0, 0, NULL }
7075 static int
7076 dissect_mms_GetAlarmSummary_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7077 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7078 GetAlarmSummary_Response_sequence, hf_index, ett_mms_GetAlarmSummary_Response);
7080 return offset;
7084 static const ber_sequence_t AlarmEnrollmentSummary_sequence[] = {
7085 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
7086 { &hf_mms_clientApplication, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_mms_ApplicationReference },
7087 { &hf_mms_severity , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
7088 { &hf_mms_currentState , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_EC_State },
7089 { &hf_mms_notificationLost, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7090 { &hf_mms_alarmAcknowledgmentRule, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlarmAckRule },
7091 { &hf_mms_enrollementState, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_EE_State },
7092 { &hf_mms_timeOfLastTransitionToActive, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7093 { &hf_mms_timeActiveAcknowledged, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7094 { &hf_mms_timeOfLastTransitionToIdle, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7095 { &hf_mms_timeIdleAcknowledged, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7096 { NULL, 0, 0, 0, NULL }
7099 static int
7100 dissect_mms_AlarmEnrollmentSummary(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7101 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7102 AlarmEnrollmentSummary_sequence, hf_index, ett_mms_AlarmEnrollmentSummary);
7104 return offset;
7108 static const ber_sequence_t SEQUENCE_OF_AlarmEnrollmentSummary_sequence_of[1] = {
7109 { &hf_mms_listOfAlarmEnrollmentSummary_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_AlarmEnrollmentSummary },
7112 static int
7113 dissect_mms_SEQUENCE_OF_AlarmEnrollmentSummary(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7114 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7115 SEQUENCE_OF_AlarmEnrollmentSummary_sequence_of, hf_index, ett_mms_SEQUENCE_OF_AlarmEnrollmentSummary);
7117 return offset;
7121 static const ber_sequence_t GetAlarmEnrollmentSummary_Response_sequence[] = {
7122 { &hf_mms_listOfAlarmEnrollmentSummary, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_AlarmEnrollmentSummary },
7123 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7124 { NULL, 0, 0, 0, NULL }
7127 static int
7128 dissect_mms_GetAlarmEnrollmentSummary_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7129 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7130 GetAlarmEnrollmentSummary_Response_sequence, hf_index, ett_mms_GetAlarmEnrollmentSummary_Response);
7132 return offset;
7136 static const ber_sequence_t JournalEntry_sequence[] = {
7137 { &hf_mms_entryIdentifier , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
7138 { &hf_mms_originatingApplication, BER_CLASS_CON, 1, 0, dissect_mms_ApplicationReference },
7139 { &hf_mms_entryContent , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_EntryContent },
7140 { NULL, 0, 0, 0, NULL }
7143 static int
7144 dissect_mms_JournalEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7145 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7146 JournalEntry_sequence, hf_index, ett_mms_JournalEntry);
7148 return offset;
7152 static const ber_sequence_t SEQUENCE_OF_JournalEntry_sequence_of[1] = {
7153 { &hf_mms_listOfJournalEntry_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_JournalEntry },
7156 static int
7157 dissect_mms_SEQUENCE_OF_JournalEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7158 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7159 SEQUENCE_OF_JournalEntry_sequence_of, hf_index, ett_mms_SEQUENCE_OF_JournalEntry);
7161 return offset;
7165 static const ber_sequence_t ReadJournal_Response_sequence[] = {
7166 { &hf_mms_listOfJournalEntry, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_SEQUENCE_OF_JournalEntry },
7167 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7168 { NULL, 0, 0, 0, NULL }
7171 static int
7172 dissect_mms_ReadJournal_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7173 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7174 ReadJournal_Response_sequence, hf_index, ett_mms_ReadJournal_Response);
7176 return offset;
7181 static int
7182 dissect_mms_WriteJournal_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7183 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7185 return offset;
7190 static int
7191 dissect_mms_InitializeJournal_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7192 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
7194 return offset;
7198 static const ber_sequence_t ReportJournalStatus_Response_sequence[] = {
7199 { &hf_mms_currentEntries , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
7200 { &hf_mms_mmsDeletable , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7201 { NULL, 0, 0, 0, NULL }
7204 static int
7205 dissect_mms_ReportJournalStatus_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7206 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7207 ReportJournalStatus_Response_sequence, hf_index, ett_mms_ReportJournalStatus_Response);
7209 return offset;
7214 static int
7215 dissect_mms_CreateJournal_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7216 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7218 return offset;
7223 static int
7224 dissect_mms_DeleteJournal_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7225 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7227 return offset;
7231 static const ber_sequence_t T_listOfCapabilities_sequence_of[1] = {
7232 { &hf_mms_listOfCapabilities_item, BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_mms_VisibleString },
7235 static int
7236 dissect_mms_T_listOfCapabilities(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7237 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7238 T_listOfCapabilities_sequence_of, hf_index, ett_mms_T_listOfCapabilities);
7240 return offset;
7244 static const ber_sequence_t GetCapabilityList_Response_sequence[] = {
7245 { &hf_mms_listOfCapabilities, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfCapabilities },
7246 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7247 { NULL, 0, 0, 0, NULL }
7250 static int
7251 dissect_mms_GetCapabilityList_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7252 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7253 GetCapabilityList_Response_sequence, hf_index, ett_mms_GetCapabilityList_Response);
7255 return offset;
7259 static const ber_sequence_t FileRead_Response_sequence[] = {
7260 { &hf_mms_fileData , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_OCTET_STRING },
7261 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7262 { NULL, 0, 0, 0, NULL }
7265 static int
7266 dissect_mms_FileRead_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7267 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7268 FileRead_Response_sequence, hf_index, ett_mms_FileRead_Response);
7270 return offset;
7275 static int
7276 dissect_mms_FileClose_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7277 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7279 return offset;
7284 static int
7285 dissect_mms_FileRename_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7286 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7288 return offset;
7293 static int
7294 dissect_mms_FileDelete_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7295 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
7297 return offset;
7301 static const ber_sequence_t DirectoryEntry_sequence[] = {
7302 { &hf_mms_filename , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_FileName },
7303 { &hf_mms_fileAttributes , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_FileAttributes },
7304 { NULL, 0, 0, 0, NULL }
7307 static int
7308 dissect_mms_DirectoryEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7309 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7310 DirectoryEntry_sequence, hf_index, ett_mms_DirectoryEntry);
7312 return offset;
7316 static const ber_sequence_t SEQUENCE_OF_DirectoryEntry_sequence_of[1] = {
7317 { &hf_mms_listOfDirectoryEntry_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mms_DirectoryEntry },
7320 static int
7321 dissect_mms_SEQUENCE_OF_DirectoryEntry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7322 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7323 SEQUENCE_OF_DirectoryEntry_sequence_of, hf_index, ett_mms_SEQUENCE_OF_DirectoryEntry);
7325 return offset;
7329 static const ber_sequence_t FileDirectory_Response_sequence[] = {
7330 { &hf_mms_listOfDirectoryEntry, BER_CLASS_CON, 0, 0, dissect_mms_SEQUENCE_OF_DirectoryEntry },
7331 { &hf_mms_moreFollows , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7332 { NULL, 0, 0, 0, NULL }
7335 static int
7336 dissect_mms_FileDirectory_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7337 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7338 FileDirectory_Response_sequence, hf_index, ett_mms_FileDirectory_Response);
7340 return offset;
7344 static const value_string mms_ConfirmedServiceResponse_vals[] = {
7345 { 0, "status" },
7346 { 1, "getNameList" },
7347 { 2, "identify" },
7348 { 3, "rename" },
7349 { 4, "read" },
7350 { 5, "write" },
7351 { 6, "getVariableAccessAttributes" },
7352 { 7, "defineNamedVariable" },
7353 { 8, "defineScatteredAccess" },
7354 { 9, "getScatteredAccessAttributes" },
7355 { 10, "deleteVariableAccess" },
7356 { 11, "defineNamedVariableList" },
7357 { 12, "getNamedVariableListAttributes" },
7358 { 13, "deleteNamedVariableList" },
7359 { 14, "defineNamedType" },
7360 { 15, "getNamedTypeAttributes" },
7361 { 16, "deleteNamedType" },
7362 { 17, "input" },
7363 { 18, "output" },
7364 { 19, "takeControl" },
7365 { 20, "relinquishControl" },
7366 { 21, "defineSemaphore" },
7367 { 22, "deleteSemaphore" },
7368 { 23, "reportSemaphoreStatus" },
7369 { 24, "reportPoolSemaphoreStatus" },
7370 { 25, "reportSemaphoreEntryStatus" },
7371 { 26, "initiateDownloadSequence" },
7372 { 27, "downloadSegment" },
7373 { 28, "terminateDownloadSequence" },
7374 { 29, "initiateUploadSequence" },
7375 { 30, "uploadSegment" },
7376 { 31, "terminateUploadSequence" },
7377 { 32, "requestDomainDownLoad" },
7378 { 33, "requestDomainUpload" },
7379 { 34, "loadDomainContent" },
7380 { 35, "storeDomainContent" },
7381 { 36, "deleteDomain" },
7382 { 37, "getDomainAttributes" },
7383 { 38, "createProgramInvocation" },
7384 { 39, "deleteProgramInvocation" },
7385 { 40, "start" },
7386 { 41, "stop" },
7387 { 42, "resume" },
7388 { 43, "reset" },
7389 { 44, "kill" },
7390 { 45, "getProgramInvocationAttributes" },
7391 { 46, "obtainFile" },
7392 { 72, "fileOpen" },
7393 { 47, "defineEventCondition" },
7394 { 48, "deleteEventCondition" },
7395 { 49, "getEventConditionAttributes" },
7396 { 50, "reportEventConditionStatus" },
7397 { 51, "alterEventConditionMonitoring" },
7398 { 52, "triggerEvent" },
7399 { 53, "defineEventAction" },
7400 { 54, "deleteEventAction" },
7401 { 55, "getEventActionAttributes" },
7402 { 56, "reportActionStatus" },
7403 { 57, "defineEventEnrollment" },
7404 { 58, "deleteEventEnrollment" },
7405 { 59, "alterEventEnrollment" },
7406 { 60, "reportEventEnrollmentStatus" },
7407 { 61, "getEventEnrollmentAttributes" },
7408 { 62, "acknowledgeEventNotification" },
7409 { 63, "getAlarmSummary" },
7410 { 64, "getAlarmEnrollmentSummary" },
7411 { 65, "readJournal" },
7412 { 66, "writeJournal" },
7413 { 67, "initializeJournal" },
7414 { 68, "reportJournalStatus" },
7415 { 69, "createJournal" },
7416 { 70, "deleteJournal" },
7417 { 71, "getCapabilityList" },
7418 { 73, "fileRead" },
7419 { 74, "fileClose" },
7420 { 75, "fileRename" },
7421 { 76, "fileDelete" },
7422 { 77, "fileDirectory" },
7423 { 0, NULL }
7426 static const ber_choice_t ConfirmedServiceResponse_choice[] = {
7427 { 0, &hf_mms_status_01 , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Status_Response },
7428 { 1, &hf_mms_getNameList_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_GetNameList_Response },
7429 { 2, &hf_mms_identify_01 , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Identify_Response },
7430 { 3, &hf_mms_rename_01 , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Rename_Response },
7431 { 4, &hf_mms_read_01 , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_Read_Response },
7432 { 5, &hf_mms_write_01 , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_Write_Response },
7433 { 6, &hf_mms_getVariableAccessAttributes_01, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_GetVariableAccessAttributes_Response },
7434 { 7, &hf_mms_defineNamedVariable_01, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_DefineNamedVariable_Response },
7435 { 8, &hf_mms_defineScatteredAccess_01, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mms_DefineScatteredAccess_Response },
7436 { 9, &hf_mms_getScatteredAccessAttributes_01, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_GetScatteredAccessAttributes_Response },
7437 { 10, &hf_mms_deleteVariableAccess_01, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_DeleteVariableAccess_Response },
7438 { 11, &hf_mms_defineNamedVariableList_01, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_DefineNamedVariableList_Response },
7439 { 12, &hf_mms_getNamedVariableListAttributes_01, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_mms_GetNamedVariableListAttributes_Response },
7440 { 13, &hf_mms_deleteNamedVariableList_01, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_mms_DeleteNamedVariableList_Response },
7441 { 14, &hf_mms_defineNamedType_01, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_mms_DefineNamedType_Response },
7442 { 15, &hf_mms_getNamedTypeAttributes_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_mms_GetNamedTypeAttributes_Response },
7443 { 16, &hf_mms_deleteNamedType_01, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_mms_DeleteNamedType_Response },
7444 { 17, &hf_mms_input_01 , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_mms_Input_Response },
7445 { 18, &hf_mms_output_01 , BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_mms_Output_Response },
7446 { 19, &hf_mms_takeControl_01 , BER_CLASS_CON, 19, 0, dissect_mms_TakeControl_Response },
7447 { 20, &hf_mms_relinquishControl_01, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_mms_RelinquishControl_Response },
7448 { 21, &hf_mms_defineSemaphore_01, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_mms_DefineSemaphore_Response },
7449 { 22, &hf_mms_deleteSemaphore_01, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_mms_DeleteSemaphore_Response },
7450 { 23, &hf_mms_reportSemaphoreStatus_01, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_mms_ReportSemaphoreStatus_Response },
7451 { 24, &hf_mms_reportPoolSemaphoreStatus_01, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_mms_ReportPoolSemaphoreStatus_Response },
7452 { 25, &hf_mms_reportSemaphoreEntryStatus_01, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_mms_ReportSemaphoreEntryStatus_Response },
7453 { 26, &hf_mms_initiateDownloadSequence_01, BER_CLASS_CON, 26, BER_FLAGS_IMPLTAG, dissect_mms_InitiateDownloadSequence_Response },
7454 { 27, &hf_mms_downloadSegment_01, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_mms_DownloadSegment_Response },
7455 { 28, &hf_mms_terminateDownloadSequence_01, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_mms_TerminateDownloadSequence_Response },
7456 { 29, &hf_mms_initiateUploadSequence_01, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_mms_InitiateUploadSequence_Response },
7457 { 30, &hf_mms_uploadSegment_01, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_mms_UploadSegment_Response },
7458 { 31, &hf_mms_terminateUploadSequence_01, BER_CLASS_CON, 31, BER_FLAGS_IMPLTAG, dissect_mms_TerminateUploadSequence_Response },
7459 { 32, &hf_mms_requestDomainDownLoad, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_mms_RequestDomainDownload_Response },
7460 { 33, &hf_mms_requestDomainUpload_01, BER_CLASS_CON, 33, BER_FLAGS_IMPLTAG, dissect_mms_RequestDomainUpload_Response },
7461 { 34, &hf_mms_loadDomainContent_01, BER_CLASS_CON, 34, BER_FLAGS_IMPLTAG, dissect_mms_LoadDomainContent_Response },
7462 { 35, &hf_mms_storeDomainContent_01, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_mms_StoreDomainContent_Response },
7463 { 36, &hf_mms_deleteDomain_01 , BER_CLASS_CON, 36, BER_FLAGS_IMPLTAG, dissect_mms_DeleteDomain_Response },
7464 { 37, &hf_mms_getDomainAttributes_01, BER_CLASS_CON, 37, BER_FLAGS_IMPLTAG, dissect_mms_GetDomainAttributes_Response },
7465 { 38, &hf_mms_createProgramInvocation_01, BER_CLASS_CON, 38, BER_FLAGS_IMPLTAG, dissect_mms_CreateProgramInvocation_Response },
7466 { 39, &hf_mms_deleteProgramInvocation_01, BER_CLASS_CON, 39, BER_FLAGS_IMPLTAG, dissect_mms_DeleteProgramInvocation_Response },
7467 { 40, &hf_mms_start_01 , BER_CLASS_CON, 40, BER_FLAGS_IMPLTAG, dissect_mms_Start_Response },
7468 { 41, &hf_mms_stop_01 , BER_CLASS_CON, 41, BER_FLAGS_IMPLTAG, dissect_mms_Stop_Response },
7469 { 42, &hf_mms_resume_01 , BER_CLASS_CON, 42, BER_FLAGS_IMPLTAG, dissect_mms_Resume_Response },
7470 { 43, &hf_mms_reset_01 , BER_CLASS_CON, 43, BER_FLAGS_IMPLTAG, dissect_mms_Reset_Response },
7471 { 44, &hf_mms_kill_01 , BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_mms_Kill_Response },
7472 { 45, &hf_mms_getProgramInvocationAttributes_01, BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_mms_GetProgramInvocationAttributes_Response },
7473 { 46, &hf_mms_obtainFile_01 , BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_mms_ObtainFile_Response },
7474 { 72, &hf_mms_fileOpen_01 , BER_CLASS_CON, 72, BER_FLAGS_IMPLTAG, dissect_mms_FileOpen_Response },
7475 { 47, &hf_mms_defineEventCondition_01, BER_CLASS_CON, 47, BER_FLAGS_IMPLTAG, dissect_mms_DefineEventCondition_Response },
7476 { 48, &hf_mms_confirmedServiceResponse_deleteEventCondition, BER_CLASS_CON, 48, BER_FLAGS_IMPLTAG, dissect_mms_DeleteEventCondition_Response },
7477 { 49, &hf_mms_getEventConditionAttributes_01, BER_CLASS_CON, 49, BER_FLAGS_IMPLTAG, dissect_mms_GetEventConditionAttributes_Response },
7478 { 50, &hf_mms_reportEventConditionStatus_01, BER_CLASS_CON, 50, BER_FLAGS_IMPLTAG, dissect_mms_ReportEventConditionStatus_Response },
7479 { 51, &hf_mms_alterEventConditionMonitoring_01, BER_CLASS_CON, 51, BER_FLAGS_IMPLTAG, dissect_mms_AlterEventConditionMonitoring_Response },
7480 { 52, &hf_mms_triggerEvent_01 , BER_CLASS_CON, 52, BER_FLAGS_IMPLTAG, dissect_mms_TriggerEvent_Response },
7481 { 53, &hf_mms_defineEventAction_01, BER_CLASS_CON, 53, BER_FLAGS_IMPLTAG, dissect_mms_DefineEventAction_Response },
7482 { 54, &hf_mms_confirmedServiceRequest_deleteEventAction_01, BER_CLASS_CON, 54, BER_FLAGS_IMPLTAG, dissect_mms_DeleteEventAction_Response },
7483 { 55, &hf_mms_getEventActionAttributes_01, BER_CLASS_CON, 55, BER_FLAGS_IMPLTAG, dissect_mms_GetEventActionAttributes_Response },
7484 { 56, &hf_mms_reportActionStatus, BER_CLASS_CON, 56, BER_FLAGS_IMPLTAG, dissect_mms_ReportEventActionStatus_Response },
7485 { 57, &hf_mms_defineEventEnrollment_01, BER_CLASS_CON, 57, BER_FLAGS_IMPLTAG, dissect_mms_DefineEventEnrollment_Response },
7486 { 58, &hf_mms_confirmedServiceResponse_deleteEventEnrollment, BER_CLASS_CON, 58, BER_FLAGS_IMPLTAG, dissect_mms_DeleteEventEnrollment_Response },
7487 { 59, &hf_mms_alterEventEnrollment_01, BER_CLASS_CON, 59, BER_FLAGS_IMPLTAG, dissect_mms_AlterEventEnrollment_Response },
7488 { 60, &hf_mms_reportEventEnrollmentStatus_01, BER_CLASS_CON, 60, BER_FLAGS_IMPLTAG, dissect_mms_ReportEventEnrollmentStatus_Response },
7489 { 61, &hf_mms_getEventEnrollmentAttributes_01, BER_CLASS_CON, 61, BER_FLAGS_IMPLTAG, dissect_mms_GetEventEnrollmentAttributes_Response },
7490 { 62, &hf_mms_acknowledgeEventNotification_01, BER_CLASS_CON, 62, BER_FLAGS_IMPLTAG, dissect_mms_AcknowledgeEventNotification_Response },
7491 { 63, &hf_mms_getAlarmSummary_01, BER_CLASS_CON, 63, BER_FLAGS_IMPLTAG, dissect_mms_GetAlarmSummary_Response },
7492 { 64, &hf_mms_getAlarmEnrollmentSummary_01, BER_CLASS_CON, 64, BER_FLAGS_IMPLTAG, dissect_mms_GetAlarmEnrollmentSummary_Response },
7493 { 65, &hf_mms_readJournal_01 , BER_CLASS_CON, 65, BER_FLAGS_IMPLTAG, dissect_mms_ReadJournal_Response },
7494 { 66, &hf_mms_writeJournal_01 , BER_CLASS_CON, 66, BER_FLAGS_IMPLTAG, dissect_mms_WriteJournal_Response },
7495 { 67, &hf_mms_initializeJournal_01, BER_CLASS_CON, 67, BER_FLAGS_IMPLTAG, dissect_mms_InitializeJournal_Response },
7496 { 68, &hf_mms_reportJournalStatus_01, BER_CLASS_CON, 68, BER_FLAGS_IMPLTAG, dissect_mms_ReportJournalStatus_Response },
7497 { 69, &hf_mms_createJournal_01, BER_CLASS_CON, 69, BER_FLAGS_IMPLTAG, dissect_mms_CreateJournal_Response },
7498 { 70, &hf_mms_deleteJournal_01, BER_CLASS_CON, 70, BER_FLAGS_IMPLTAG, dissect_mms_DeleteJournal_Response },
7499 { 71, &hf_mms_getCapabilityList_01, BER_CLASS_CON, 71, BER_FLAGS_IMPLTAG, dissect_mms_GetCapabilityList_Response },
7500 { 73, &hf_mms_fileRead_01 , BER_CLASS_CON, 73, BER_FLAGS_IMPLTAG, dissect_mms_FileRead_Response },
7501 { 74, &hf_mms_fileClose_01 , BER_CLASS_CON, 74, BER_FLAGS_IMPLTAG, dissect_mms_FileClose_Response },
7502 { 75, &hf_mms_fileRename_01 , BER_CLASS_CON, 75, BER_FLAGS_IMPLTAG, dissect_mms_FileRename_Response },
7503 { 76, &hf_mms_fileDelete_01 , BER_CLASS_CON, 76, BER_FLAGS_IMPLTAG, dissect_mms_FileDelete_Response },
7504 { 77, &hf_mms_fileDirectory_01, BER_CLASS_CON, 77, BER_FLAGS_IMPLTAG, dissect_mms_FileDirectory_Response },
7505 { 0, NULL, 0, 0, 0, NULL }
7508 static int
7509 dissect_mms_ConfirmedServiceResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7510 int8_t ber_class;
7511 bool pc;
7512 int32_t tag;
7514 get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
7515 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
7516 if(mms_priv){
7517 mms_priv->confirmedservice_type = tag;
7520 offset = dissect_ber_choice(actx, tree, tvb, offset,
7521 ConfirmedServiceResponse_choice, hf_index, ett_mms_ConfirmedServiceResponse,
7522 NULL);
7526 return offset;
7530 static const ber_sequence_t Confirmed_ResponsePDU_sequence[] = {
7531 { &hf_mms_invokeID , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_mms_Unsigned32 },
7532 { &hf_mms_confirmedServiceResponse, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_ConfirmedServiceResponse },
7533 { &hf_mms_cs_request_detail, BER_CLASS_CON, 79, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_CS_Request_Detail },
7534 { NULL, 0, 0, 0, NULL }
7537 static int
7538 dissect_mms_Confirmed_ResponsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7540 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7541 Confirmed_ResponsePDU_sequence, hf_index, ett_mms_Confirmed_ResponsePDU);
7543 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
7544 if(tree && mms_priv){
7545 mms_priv->pdu_item = (proto_item*)tree->last_child;
7549 return offset;
7553 static const ber_sequence_t Confirmed_ErrorPDU_sequence[] = {
7554 { &hf_mms_invokeID , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
7555 { &hf_mms_modifierPosition, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
7556 { &hf_mms_serviceError , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_ServiceError },
7557 { NULL, 0, 0, 0, NULL }
7560 static int
7561 dissect_mms_Confirmed_ErrorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7562 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7563 Confirmed_ErrorPDU_sequence, hf_index, ett_mms_Confirmed_ErrorPDU);
7565 return offset;
7569 static const ber_sequence_t T_listOfAccessResult_sequence_of[1] = {
7570 { &hf_mms_listOfAccessResult_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_AccessResult },
7573 static int
7574 dissect_mms_T_listOfAccessResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7576 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
7577 if(mms_priv){
7578 mms_priv->listOfAccessResult_cnt = 0;
7581 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7582 T_listOfAccessResult_sequence_of, hf_index, ett_mms_T_listOfAccessResult);
7586 return offset;
7590 static const ber_sequence_t InformationReport_sequence[] = {
7591 { &hf_mms_variableAccessSpecification, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_VariableAccessSpecification },
7592 { &hf_mms_listOfAccessResult_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_T_listOfAccessResult },
7593 { NULL, 0, 0, 0, NULL }
7596 static int
7597 dissect_mms_InformationReport(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7598 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7599 InformationReport_sequence, hf_index, ett_mms_InformationReport);
7601 return offset;
7606 static int
7607 dissect_mms_UnsolicitedStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7608 offset = dissect_mms_Status_Response(implicit_tag, tvb, offset, actx, tree, hf_index);
7610 return offset;
7614 static const value_string mms_T_eventConditionName_01_vals[] = {
7615 { 0, "eventCondition" },
7616 { 1, "undefined" },
7617 { 0, NULL }
7620 static const ber_choice_t T_eventConditionName_01_choice[] = {
7621 { 0, &hf_mms_eventCondition , BER_CLASS_CON, 0, 0, dissect_mms_ObjectName },
7622 { 1, &hf_mms_undefined , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_NULL },
7623 { 0, NULL, 0, 0, 0, NULL }
7626 static int
7627 dissect_mms_T_eventConditionName_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7628 offset = dissect_ber_choice(actx, tree, tvb, offset,
7629 T_eventConditionName_01_choice, hf_index, ett_mms_T_eventConditionName_01,
7630 NULL);
7632 return offset;
7636 static const value_string mms_T_eventActionResult_vals[] = {
7637 { 0, "success" },
7638 { 1, "failure" },
7639 { 0, NULL }
7642 static const ber_choice_t T_eventActionResult_choice[] = {
7643 { 0, &hf_mms_success_02 , BER_CLASS_CON, 0, 0, dissect_mms_ConfirmedServiceResponse },
7644 { 1, &hf_mms_failure_01 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ServiceError },
7645 { 0, NULL, 0, 0, 0, NULL }
7648 static int
7649 dissect_mms_T_eventActionResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7650 offset = dissect_ber_choice(actx, tree, tvb, offset,
7651 T_eventActionResult_choice, hf_index, ett_mms_T_eventActionResult,
7652 NULL);
7654 return offset;
7658 static const ber_sequence_t T_actionResult_sequence[] = {
7659 { &hf_mms_eventActioName , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
7660 { &hf_mms_eventActionResult, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_eventActionResult },
7661 { NULL, 0, 0, 0, NULL }
7664 static int
7665 dissect_mms_T_actionResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7666 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7667 T_actionResult_sequence, hf_index, ett_mms_T_actionResult);
7669 return offset;
7673 static const ber_sequence_t EventNotification_sequence[] = {
7674 { &hf_mms_eventEnrollmentName, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_mms_ObjectName },
7675 { &hf_mms_eventConditionName_02, BER_CLASS_CON, 1, 0, dissect_mms_T_eventConditionName_01 },
7676 { &hf_mms_severity , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned8 },
7677 { &hf_mms_currentState , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_EC_State },
7678 { &hf_mms_transitionTime , BER_CLASS_CON, 4, BER_FLAGS_NOTCHKTAG, dissect_mms_EventTime },
7679 { &hf_mms_notificationLost, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_BOOLEAN },
7680 { &hf_mms_alarmAcknowledgmentRule, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_AlarmAckRule },
7681 { &hf_mms_actionResult , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_T_actionResult },
7682 { NULL, 0, 0, 0, NULL }
7685 static int
7686 dissect_mms_EventNotification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7687 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7688 EventNotification_sequence, hf_index, ett_mms_EventNotification);
7690 return offset;
7694 static const value_string mms_UnconfirmedService_vals[] = {
7695 { 0, "informationReport" },
7696 { 1, "unsolicitedStatus" },
7697 { 2, "eventNotification" },
7698 { 0, NULL }
7701 static const ber_choice_t UnconfirmedService_choice[] = {
7702 { 0, &hf_mms_informationReport, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_InformationReport },
7703 { 1, &hf_mms_unsolicitedStatus, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_UnsolicitedStatus },
7704 { 2, &hf_mms_eventNotification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_EventNotification },
7705 { 0, NULL, 0, 0, 0, NULL }
7708 static int
7709 dissect_mms_UnconfirmedService(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7710 offset = dissect_ber_choice(actx, tree, tvb, offset,
7711 UnconfirmedService_choice, hf_index, ett_mms_UnconfirmedService,
7712 NULL);
7714 return offset;
7718 static const ber_sequence_t Unconfirmed_PDU_sequence[] = {
7719 { &hf_mms_unconfirmedService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_UnconfirmedService },
7720 { &hf_mms_cs_request_detail, BER_CLASS_CON, 79, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_mms_CS_Request_Detail },
7721 { NULL, 0, 0, 0, NULL }
7724 static int
7725 dissect_mms_Unconfirmed_PDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7726 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
7727 if (mms_priv && !mms_priv->mms_trans_p) {
7728 /* create a "fake" mms_trans structure */
7729 mms_priv->mms_trans_p=wmem_new0(actx->pinfo->pool, mms_transaction_t);
7730 mms_priv->mms_trans_p->req_time = actx->pinfo->fd->abs_ts;
7734 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7735 Unconfirmed_PDU_sequence, hf_index, ett_mms_Unconfirmed_PDU);
7737 if(tree && mms_priv){
7738 mms_priv->pdu_item = (proto_item*)tree->last_child;
7741 return offset;
7745 static const value_string mms_T_confirmed_requestPDU_vals[] = {
7746 { 0, "other" },
7747 { 1, "unrecognized-service" },
7748 { 2, "unrecognized-modifier" },
7749 { 3, "invalid-invokeID" },
7750 { 4, "invalid-argument" },
7751 { 5, "invalid-modifier" },
7752 { 6, "max-serv-outstanding-exceeded" },
7753 { 8, "max-recursion-exceeded" },
7754 { 9, "value-out-of-range" },
7755 { 0, NULL }
7759 static int
7760 dissect_mms_T_confirmed_requestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7761 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7762 NULL);
7764 return offset;
7768 static const value_string mms_T_confirmed_responsePDU_vals[] = {
7769 { 0, "other" },
7770 { 1, "unrecognized-service" },
7771 { 2, "invalid-invokeID" },
7772 { 3, "invalid-result" },
7773 { 5, "max-recursion-exceeded" },
7774 { 6, "value-out-of-range" },
7775 { 0, NULL }
7779 static int
7780 dissect_mms_T_confirmed_responsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7781 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7782 NULL);
7784 return offset;
7788 static const value_string mms_T_confirmed_errorPDU_vals[] = {
7789 { 0, "other" },
7790 { 1, "unrecognized-service" },
7791 { 2, "invalid-invokeID" },
7792 { 3, "invalid-serviceError" },
7793 { 4, "value-out-of-range" },
7794 { 0, NULL }
7798 static int
7799 dissect_mms_T_confirmed_errorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7800 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7801 NULL);
7803 return offset;
7807 static const value_string mms_T_unconfirmedPDU_vals[] = {
7808 { 0, "other" },
7809 { 1, "unrecognized-service" },
7810 { 2, "invalid-argument" },
7811 { 3, "max-recursion-exceeded" },
7812 { 4, "value-out-of-range" },
7813 { 0, NULL }
7817 static int
7818 dissect_mms_T_unconfirmedPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7819 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7820 NULL);
7822 return offset;
7826 static const value_string mms_T_pdu_error_vals[] = {
7827 { 0, "unknown-pdu-type" },
7828 { 1, "invalid-pdu" },
7829 { 2, "illegal-acse-mapping" },
7830 { 0, NULL }
7834 static int
7835 dissect_mms_T_pdu_error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7836 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7837 NULL);
7839 return offset;
7843 static const value_string mms_T_cancel_requestPDU_vals[] = {
7844 { 0, "other" },
7845 { 1, "invalid-invokeID" },
7846 { 0, NULL }
7850 static int
7851 dissect_mms_T_cancel_requestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7852 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7853 NULL);
7855 return offset;
7859 static const value_string mms_T_cancel_responsePDU_vals[] = {
7860 { 0, "other" },
7861 { 1, "invalid-invokeID" },
7862 { 0, NULL }
7866 static int
7867 dissect_mms_T_cancel_responsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7868 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7869 NULL);
7871 return offset;
7875 static const value_string mms_T_cancel_errorPDU_vals[] = {
7876 { 0, "other" },
7877 { 1, "invalid-invokeID" },
7878 { 2, "invalid-serviceError" },
7879 { 3, "value-out-of-range" },
7880 { 0, NULL }
7884 static int
7885 dissect_mms_T_cancel_errorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7886 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7887 NULL);
7889 return offset;
7893 static const value_string mms_T_conclude_requestPDU_vals[] = {
7894 { 0, "other" },
7895 { 1, "invalid-argument" },
7896 { 0, NULL }
7900 static int
7901 dissect_mms_T_conclude_requestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7902 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7903 NULL);
7905 return offset;
7909 static const value_string mms_T_conclude_responsePDU_vals[] = {
7910 { 0, "other" },
7911 { 1, "invalid-result" },
7912 { 0, NULL }
7916 static int
7917 dissect_mms_T_conclude_responsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7918 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7919 NULL);
7921 return offset;
7925 static const value_string mms_T_conclude_errorPDU_vals[] = {
7926 { 0, "other" },
7927 { 1, "invalid-serviceError" },
7928 { 2, "value-out-of-range" },
7929 { 0, NULL }
7933 static int
7934 dissect_mms_T_conclude_errorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7935 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7936 NULL);
7938 return offset;
7942 static const value_string mms_T_rejectReason_vals[] = {
7943 { 1, "confirmed-requestPDU" },
7944 { 2, "confirmed-responsePDU" },
7945 { 3, "confirmed-errorPDU" },
7946 { 4, "unconfirmedPDU" },
7947 { 5, "pdu-error" },
7948 { 6, "cancel-requestPDU" },
7949 { 7, "cancel-responsePDU" },
7950 { 8, "cancel-errorPDU" },
7951 { 9, "conclude-requestPDU" },
7952 { 10, "conclude-responsePDU" },
7953 { 11, "conclude-errorPDU" },
7954 { 0, NULL }
7957 static const ber_choice_t T_rejectReason_choice[] = {
7958 { 1, &hf_mms_confirmed_requestPDU, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_T_confirmed_requestPDU },
7959 { 2, &hf_mms_confirmed_responsePDU, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_T_confirmed_responsePDU },
7960 { 3, &hf_mms_confirmed_errorPDU, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_T_confirmed_errorPDU },
7961 { 4, &hf_mms_unconfirmedPDU , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_T_unconfirmedPDU },
7962 { 5, &hf_mms_pdu_error , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_T_pdu_error },
7963 { 6, &hf_mms_cancel_requestPDU, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_T_cancel_requestPDU },
7964 { 7, &hf_mms_cancel_responsePDU, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_T_cancel_responsePDU },
7965 { 8, &hf_mms_cancel_errorPDU , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mms_T_cancel_errorPDU },
7966 { 9, &hf_mms_conclude_requestPDU, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_T_conclude_requestPDU },
7967 { 10, &hf_mms_conclude_responsePDU, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_T_conclude_responsePDU },
7968 { 11, &hf_mms_conclude_errorPDU, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_T_conclude_errorPDU },
7969 { 0, NULL, 0, 0, 0, NULL }
7972 static int
7973 dissect_mms_T_rejectReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7974 offset = dissect_ber_choice(actx, tree, tvb, offset,
7975 T_rejectReason_choice, hf_index, ett_mms_T_rejectReason,
7976 NULL);
7978 return offset;
7982 static const ber_sequence_t RejectPDU_sequence[] = {
7983 { &hf_mms_originalInvokeID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
7984 { &hf_mms_rejectReason , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mms_T_rejectReason },
7985 { NULL, 0, 0, 0, NULL }
7988 static int
7989 dissect_mms_RejectPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7990 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7991 RejectPDU_sequence, hf_index, ett_mms_RejectPDU);
7993 return offset;
7998 static int
7999 dissect_mms_Cancel_RequestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8000 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
8002 return offset;
8007 static int
8008 dissect_mms_Cancel_ResponsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8009 offset = dissect_mms_Unsigned32(implicit_tag, tvb, offset, actx, tree, hf_index);
8011 return offset;
8015 static const ber_sequence_t Cancel_ErrorPDU_sequence[] = {
8016 { &hf_mms_originalInvokeID, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Unsigned32 },
8017 { &hf_mms_serviceError , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ServiceError },
8018 { NULL, 0, 0, 0, NULL }
8021 static int
8022 dissect_mms_Cancel_ErrorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8023 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8024 Cancel_ErrorPDU_sequence, hf_index, ett_mms_Cancel_ErrorPDU);
8026 return offset;
8031 static int
8032 dissect_mms_Integer16(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8033 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8034 NULL);
8036 return offset;
8040 static int * const ParameterSupportOptions_bits[] = {
8041 &hf_mms_ParameterSupportOptions_str1,
8042 &hf_mms_ParameterSupportOptions_str2,
8043 &hf_mms_ParameterSupportOptions_vnam,
8044 &hf_mms_ParameterSupportOptions_valt,
8045 &hf_mms_ParameterSupportOptions_vadr,
8046 &hf_mms_ParameterSupportOptions_vsca,
8047 &hf_mms_ParameterSupportOptions_tpy,
8048 &hf_mms_ParameterSupportOptions_vlis,
8049 &hf_mms_ParameterSupportOptions_real,
8050 &hf_mms_ParameterSupportOptions_spare_bit9,
8051 &hf_mms_ParameterSupportOptions_cei,
8052 NULL
8055 static int
8056 dissect_mms_ParameterSupportOptions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8057 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
8058 ParameterSupportOptions_bits, 11, hf_index, ett_mms_ParameterSupportOptions,
8059 NULL);
8061 return offset;
8065 static int * const ServiceSupportOptions_bits[] = {
8066 &hf_mms_ServiceSupportOptions_status,
8067 &hf_mms_ServiceSupportOptions_getNameList,
8068 &hf_mms_ServiceSupportOptions_identify,
8069 &hf_mms_ServiceSupportOptions_rename,
8070 &hf_mms_ServiceSupportOptions_read,
8071 &hf_mms_ServiceSupportOptions_write,
8072 &hf_mms_ServiceSupportOptions_getVariableAccessAttributes,
8073 &hf_mms_ServiceSupportOptions_defineNamedVariable,
8074 &hf_mms_ServiceSupportOptions_defineScatteredAccess,
8075 &hf_mms_ServiceSupportOptions_getScatteredAccessAttributes,
8076 &hf_mms_ServiceSupportOptions_deleteVariableAccess,
8077 &hf_mms_ServiceSupportOptions_defineNamedVariableList,
8078 &hf_mms_ServiceSupportOptions_getNamedVariableListAttributes,
8079 &hf_mms_ServiceSupportOptions_deleteNamedVariableList,
8080 &hf_mms_ServiceSupportOptions_defineNamedType,
8081 &hf_mms_ServiceSupportOptions_getNamedTypeAttributes,
8082 &hf_mms_ServiceSupportOptions_deleteNamedType,
8083 &hf_mms_ServiceSupportOptions_input,
8084 &hf_mms_ServiceSupportOptions_output,
8085 &hf_mms_ServiceSupportOptions_takeControl,
8086 &hf_mms_ServiceSupportOptions_relinquishControl,
8087 &hf_mms_ServiceSupportOptions_defineSemaphore,
8088 &hf_mms_ServiceSupportOptions_deleteSemaphore,
8089 &hf_mms_ServiceSupportOptions_reportSemaphoreStatus,
8090 &hf_mms_ServiceSupportOptions_reportPoolSemaphoreStatus,
8091 &hf_mms_ServiceSupportOptions_reportSemaphoreEntryStatus,
8092 &hf_mms_ServiceSupportOptions_initiateDownloadSequence,
8093 &hf_mms_ServiceSupportOptions_downloadSegment,
8094 &hf_mms_ServiceSupportOptions_terminateDownloadSequence,
8095 &hf_mms_ServiceSupportOptions_initiateUploadSequence,
8096 &hf_mms_ServiceSupportOptions_uploadSegment,
8097 &hf_mms_ServiceSupportOptions_terminateUploadSequence,
8098 &hf_mms_ServiceSupportOptions_requestDomainDownload,
8099 &hf_mms_ServiceSupportOptions_requestDomainUpload,
8100 &hf_mms_ServiceSupportOptions_loadDomainContent,
8101 &hf_mms_ServiceSupportOptions_storeDomainContent,
8102 &hf_mms_ServiceSupportOptions_deleteDomain,
8103 &hf_mms_ServiceSupportOptions_getDomainAttributes,
8104 &hf_mms_ServiceSupportOptions_createProgramInvocation,
8105 &hf_mms_ServiceSupportOptions_deleteProgramInvocation,
8106 &hf_mms_ServiceSupportOptions_start,
8107 &hf_mms_ServiceSupportOptions_stop,
8108 &hf_mms_ServiceSupportOptions_resume,
8109 &hf_mms_ServiceSupportOptions_reset,
8110 &hf_mms_ServiceSupportOptions_kill,
8111 &hf_mms_ServiceSupportOptions_getProgramInvocationAttributes,
8112 &hf_mms_ServiceSupportOptions_obtainFile,
8113 &hf_mms_ServiceSupportOptions_defineEventCondition,
8114 &hf_mms_ServiceSupportOptions_deleteEventCondition,
8115 &hf_mms_ServiceSupportOptions_getEventConditionAttributes,
8116 &hf_mms_ServiceSupportOptions_reportEventConditionStatus,
8117 &hf_mms_ServiceSupportOptions_alterEventConditionMonitoring,
8118 &hf_mms_ServiceSupportOptions_triggerEvent,
8119 &hf_mms_ServiceSupportOptions_defineEventAction,
8120 &hf_mms_ServiceSupportOptions_deleteEventAction,
8121 &hf_mms_ServiceSupportOptions_getEventActionAttributes,
8122 &hf_mms_ServiceSupportOptions_reportActionStatus,
8123 &hf_mms_ServiceSupportOptions_defineEventEnrollment,
8124 &hf_mms_ServiceSupportOptions_deleteEventEnrollment,
8125 &hf_mms_ServiceSupportOptions_alterEventEnrollment,
8126 &hf_mms_ServiceSupportOptions_reportEventEnrollmentStatus,
8127 &hf_mms_ServiceSupportOptions_getEventEnrollmentAttributes,
8128 &hf_mms_ServiceSupportOptions_acknowledgeEventNotification,
8129 &hf_mms_ServiceSupportOptions_getAlarmSummary,
8130 &hf_mms_ServiceSupportOptions_getAlarmEnrollmentSummary,
8131 &hf_mms_ServiceSupportOptions_readJournal,
8132 &hf_mms_ServiceSupportOptions_writeJournal,
8133 &hf_mms_ServiceSupportOptions_initializeJournal,
8134 &hf_mms_ServiceSupportOptions_reportJournalStatus,
8135 &hf_mms_ServiceSupportOptions_createJournal,
8136 &hf_mms_ServiceSupportOptions_deleteJournal,
8137 &hf_mms_ServiceSupportOptions_getCapabilityList,
8138 &hf_mms_ServiceSupportOptions_fileOpen,
8139 &hf_mms_ServiceSupportOptions_fileRead,
8140 &hf_mms_ServiceSupportOptions_fileClose,
8141 &hf_mms_ServiceSupportOptions_fileRename,
8142 &hf_mms_ServiceSupportOptions_fileDelete,
8143 &hf_mms_ServiceSupportOptions_fileDirectory,
8144 &hf_mms_ServiceSupportOptions_unsolicitedStatus,
8145 &hf_mms_ServiceSupportOptions_informationReport,
8146 &hf_mms_ServiceSupportOptions_eventNotification,
8147 &hf_mms_ServiceSupportOptions_attachToEventCondition,
8148 &hf_mms_ServiceSupportOptions_attachToSemaphore,
8149 &hf_mms_ServiceSupportOptions_conclude,
8150 &hf_mms_ServiceSupportOptions_cancel,
8151 NULL
8154 static int
8155 dissect_mms_ServiceSupportOptions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8156 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
8157 ServiceSupportOptions_bits, 85, hf_index, ett_mms_ServiceSupportOptions,
8158 NULL);
8160 return offset;
8164 static const ber_sequence_t InitRequestDetail_sequence[] = {
8165 { &hf_mms_proposedVersionNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Integer16 },
8166 { &hf_mms_proposedParameterCBB, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ParameterSupportOptions },
8167 { &hf_mms_servicesSupportedCalling, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_ServiceSupportOptions },
8168 { NULL, 0, 0, 0, NULL }
8171 static int
8172 dissect_mms_InitRequestDetail(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8173 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8174 InitRequestDetail_sequence, hf_index, ett_mms_InitRequestDetail);
8176 return offset;
8180 static const ber_sequence_t Initiate_RequestPDU_sequence[] = {
8181 { &hf_mms_localDetailCalling, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
8182 { &hf_mms_proposedMaxServOutstandingCalling, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Integer16 },
8183 { &hf_mms_proposedMaxServOutstandingCalled, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Integer16 },
8184 { &hf_mms_proposedDataStructureNestingLevel, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Integer8 },
8185 { &hf_mms_mmsInitRequestDetail, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_InitRequestDetail },
8186 { NULL, 0, 0, 0, NULL }
8189 static int
8190 dissect_mms_Initiate_RequestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8192 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8193 Initiate_RequestPDU_sequence, hf_index, ett_mms_Initiate_RequestPDU);
8195 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
8196 if(tree && mms_priv){
8197 mms_priv->pdu_item = (proto_item*)tree->last_child;
8202 return offset;
8206 static const ber_sequence_t InitResponseDetail_sequence[] = {
8207 { &hf_mms_negociatedVersionNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Integer16 },
8208 { &hf_mms_negociatedParameterCBB, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_ParameterSupportOptions },
8209 { &hf_mms_servicesSupportedCalled, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_ServiceSupportOptions },
8210 { NULL, 0, 0, 0, NULL }
8213 static int
8214 dissect_mms_InitResponseDetail(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8215 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8216 InitResponseDetail_sequence, hf_index, ett_mms_InitResponseDetail);
8218 return offset;
8222 static const ber_sequence_t Initiate_ResponsePDU_sequence[] = {
8223 { &hf_mms_localDetailCalled, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Integer32 },
8224 { &hf_mms_negociatedMaxServOutstandingCalling, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Integer16 },
8225 { &hf_mms_negociatedMaxServOutstandingCalled, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Integer16 },
8226 { &hf_mms_negociatedDataStructureNestingLevel, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mms_Integer8 },
8227 { &hf_mms_mmsInitResponseDetail, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_InitResponseDetail },
8228 { NULL, 0, 0, 0, NULL }
8231 static int
8232 dissect_mms_Initiate_ResponsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8234 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8235 Initiate_ResponsePDU_sequence, hf_index, ett_mms_Initiate_ResponsePDU);
8237 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
8238 if(tree && mms_priv){
8239 mms_priv->pdu_item = (proto_item*)tree->last_child;
8242 return offset;
8247 static int
8248 dissect_mms_Initiate_ErrorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8249 offset = dissect_mms_ServiceError(implicit_tag, tvb, offset, actx, tree, hf_index);
8251 return offset;
8256 static int
8257 dissect_mms_Conclude_RequestPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8258 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
8260 return offset;
8265 static int
8266 dissect_mms_Conclude_ResponsePDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8267 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
8269 return offset;
8274 static int
8275 dissect_mms_Conclude_ErrorPDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8276 offset = dissect_mms_ServiceError(implicit_tag, tvb, offset, actx, tree, hf_index);
8278 return offset;
8282 const value_string mms_MMSpdu_vals[] = {
8283 { 0, "confirmed-RequestPDU" },
8284 { 1, "confirmed-ResponsePDU" },
8285 { 2, "confirmed-ErrorPDU" },
8286 { 3, "unconfirmed-PDU" },
8287 { 4, "rejectPDU" },
8288 { 5, "cancel-RequestPDU" },
8289 { 6, "cancel-ResponsePDU" },
8290 { 7, "cancel-ErrorPDU" },
8291 { 8, "initiate-RequestPDU" },
8292 { 9, "initiate-ResponsePDU" },
8293 { 10, "initiate-ErrorPDU" },
8294 { 11, "conclude-RequestPDU" },
8295 { 12, "conclude-ResponsePDU" },
8296 { 13, "conclude-ErrorPDU" },
8297 { 0, NULL }
8300 static const ber_choice_t MMSpdu_choice[] = {
8301 { 0, &hf_mms_confirmed_RequestPDU, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mms_Confirmed_RequestPDU },
8302 { 1, &hf_mms_confirmed_ResponsePDU, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_mms_Confirmed_ResponsePDU },
8303 { 2, &hf_mms_confirmed_ErrorPDU, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_mms_Confirmed_ErrorPDU },
8304 { 3, &hf_mms_unconfirmed_PDU , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_mms_Unconfirmed_PDU },
8305 { 4, &hf_mms_rejectPDU , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_mms_RejectPDU },
8306 { 5, &hf_mms_cancel_RequestPDU, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_mms_Cancel_RequestPDU },
8307 { 6, &hf_mms_cancel_ResponsePDU, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_mms_Cancel_ResponsePDU },
8308 { 7, &hf_mms_cancel_ErrorPDU , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_mms_Cancel_ErrorPDU },
8309 { 8, &hf_mms_initiate_RequestPDU, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_mms_Initiate_RequestPDU },
8310 { 9, &hf_mms_initiate_ResponsePDU, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_mms_Initiate_ResponsePDU },
8311 { 10, &hf_mms_initiate_ErrorPDU, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_mms_Initiate_ErrorPDU },
8312 { 11, &hf_mms_conclude_RequestPDU, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_mms_Conclude_RequestPDU },
8313 { 12, &hf_mms_conclude_ResponsePDU, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_mms_Conclude_ResponsePDU },
8314 { 13, &hf_mms_conclude_ErrorPDU, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_mms_Conclude_ErrorPDU },
8315 { 0, NULL, 0, 0, 0, NULL }
8319 dissect_mms_MMSpdu(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8320 int branch_taken;
8321 int8_t ber_class;
8322 bool pc;
8323 int32_t tag;
8325 get_ber_identifier(tvb, offset, &ber_class, &pc, &tag);
8326 mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data;
8327 if(mms_priv){
8328 mms_priv->mms_pdu_type = tag;
8332 offset = dissect_ber_choice(actx, tree, tvb, offset,
8333 MMSpdu_choice, hf_index, ett_mms_MMSpdu,
8334 &branch_taken);
8337 if( (branch_taken!=-1) && mms_MMSpdu_vals[branch_taken].strptr ){
8338 if(mms_priv){
8339 switch(mms_priv->mms_pdu_type){
8340 case MMS_UNCONFIRMED_PDU:
8341 if(mms_priv->vmd_specific==IEC61850_8_1_RPT){
8342 col_append_str(actx->pinfo->cinfo, COL_INFO, "Unconfirmed <RPT>");
8343 proto_item_append_text(mms_priv->pdu_item, " [RPT]");
8344 }else if((mms_priv->mms_trans_p)&&(mms_priv->mms_trans_p->itemid==IEC61850_ITEM_ID_OPER)){
8345 col_append_str(actx->pinfo->cinfo, COL_INFO, "Unconfirmed-CommandTermination");
8346 proto_item_append_text(mms_priv->pdu_item, " [Unconfirmed-CommandTermination]");
8348 break;
8349 case MMS_INITIATE_REQUEST_PDU:
8350 col_append_str(actx->pinfo->cinfo, COL_INFO, "Associate Request");
8351 proto_item_append_text(mms_priv->pdu_item, " [Associate Request]");
8352 break;
8353 case MMS_INITIATE_RESPONSE_PDU:
8354 col_append_str(actx->pinfo->cinfo, COL_INFO, "Associate Response");
8355 proto_item_append_text(mms_priv->pdu_item, " [Associate Response]");
8356 break;
8357 case MMS_CONFIRMED_REQUEST_PDU:
8358 if(mms_priv->mms_trans_p){
8359 if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GET_SERV_DIR){
8360 col_append_str(actx->pinfo->cinfo, COL_INFO, "GetServerDirectoryRequest");
8361 proto_item_append_text(mms_priv->pdu_item, " [GetServerDirectoryRequest]");
8362 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GETLOGICALDEVICEDIRECTORY){
8363 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetLogicalDeviceDirectoryRequest %s", mms_priv->itemid_str);
8364 proto_item_append_text(mms_priv->pdu_item, " [GetLogicalDeviceDirectoryRequest ]");
8365 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GETDATASETDIRECTORY){
8366 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetDataSetDirectoryRequest %s", mms_priv->itemid_str);
8367 proto_item_append_text(mms_priv->pdu_item, " [GetDataSetDirectoryRequest]");
8368 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GETDATADIRECTORY){
8369 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetDataDirectoryRequest%s", private_data_get_moreCinfo(actx));
8370 proto_item_append_text(mms_priv->pdu_item, " [GetDataDirectoryRequest]");
8371 } else if (mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_READ){
8372 if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_$BR$_OR_$RP$){
8373 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetRCBValuesRequest %s", private_data_get_moreCinfo(actx));
8374 proto_item_append_text(mms_priv->pdu_item, " [GetRCBValuesRequest]");
8375 }else{
8376 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetDataValueRequest %s", private_data_get_moreCinfo(actx));
8377 proto_item_append_text(mms_priv->pdu_item, " [GetDataValueRequest]");
8379 } else if (mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_WRITE){
8380 if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_$BR$_OR_$RP$){
8381 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "SetRCBValuesRequest %s", private_data_get_moreCinfo(actx));
8382 proto_item_append_text(mms_priv->pdu_item, " [SetRCBValuesRequest]");
8383 }else{
8384 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "SetDataValueRequest %s", private_data_get_moreCinfo(actx));
8385 proto_item_append_text(mms_priv->pdu_item, " [SetDataValueRequest]");
8387 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
8388 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "SelectWithValueRequest %s", private_data_get_moreCinfo(actx));
8389 proto_item_append_text(mms_priv->pdu_item, " [SelectWithValueRequest]");
8391 }else if (mms_has_private_data(actx)){
8392 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s%s%s",
8393 private_data_get_preCinfo(actx), mms_MMSpdu_vals[branch_taken].strptr, private_data_get_moreCinfo(actx));
8395 break;
8396 case MMS_CONFIRMED_RESPONSE_PDU:
8397 if(mms_priv->mms_trans_p){
8398 if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GET_SERV_DIR){
8399 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetServerDirectoryResponse %s", mms_priv->itemid_str);
8400 proto_item_append_text(mms_priv->pdu_item, " [GetServerDirectoryResponse ]");
8401 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GETLOGICALDEVICEDIRECTORY){
8402 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetLogicalDeviceDirectoryResponse%s", private_data_get_moreCinfo(actx));
8403 proto_item_append_text(mms_priv->pdu_item, " [GetLogicalDeviceDirectoryResponse ]");
8404 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GETDATASETDIRECTORY){
8405 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetDataSetDirectoryResponse%s", private_data_get_moreCinfo(actx));
8406 proto_item_append_text(mms_priv->pdu_item, " [GetDataSetDirectoryResponse ]");
8407 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_GETDATADIRECTORY){
8408 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "GetDataDirectoryResponse%s", private_data_get_moreCinfo(actx));
8409 proto_item_append_text(mms_priv->pdu_item, " [GetDataDirectoryResponse ]");
8410 }else if (mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_READ){
8411 if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_$BR$_OR_$RP$){
8412 col_append_str(actx->pinfo->cinfo, COL_INFO, "GetRCBValuesResponse");
8413 proto_item_append_text(mms_priv->pdu_item, " [GetRCBValuesResponse]");
8414 }else{
8415 col_append_str(actx->pinfo->cinfo, COL_INFO, "GetDataValueResponse");
8416 proto_item_append_text(mms_priv->pdu_item, " [GetDataValueResponse ]");
8418 if(mms_priv->success == 1){
8419 col_append_str(actx->pinfo->cinfo, COL_INFO, " success");
8420 }else{
8421 col_append_str(actx->pinfo->cinfo, COL_INFO, " failure");
8423 } else if (mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_WRITE){
8424 if(mms_priv->mms_trans_p->itemid == IEC61850_ITEM_ID_$BR$_OR_$RP$){
8425 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "SetRCBValuesResponse %s", private_data_get_moreCinfo(actx));
8426 proto_item_append_text(mms_priv->pdu_item, " [SetRCBValuesResponse]");
8427 }else{
8428 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "SetDataValueResponse %s", private_data_get_moreCinfo(actx));
8429 proto_item_append_text(mms_priv->pdu_item, " [SetDataValueResponse]");
8431 }else if(mms_priv->mms_trans_p->conf_serv_pdu_type_req == MMS_IEC_61850_CONF_SERV_PDU_SELECTWITHVALUE){
8432 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "SelectWithValueResponse %s", private_data_get_moreCinfo(actx));
8433 proto_item_append_text(mms_priv->pdu_item, " [SelectWithValueResponse]");
8435 }else if(mms_has_private_data(actx)){
8436 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s%s%s",
8437 private_data_get_preCinfo(actx), mms_MMSpdu_vals[branch_taken].strptr, private_data_get_moreCinfo(actx));
8439 break;
8440 default:
8441 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s%s%s",
8442 private_data_get_preCinfo(actx), mms_MMSpdu_vals[branch_taken].strptr, private_data_get_moreCinfo(actx));
8443 break;
8445 }else if (mms_has_private_data(actx)){
8446 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s%s%s",
8447 private_data_get_preCinfo(actx), mms_MMSpdu_vals[branch_taken].strptr, private_data_get_moreCinfo(actx));
8448 }else{
8449 col_append_str(actx->pinfo->cinfo, COL_INFO,
8450 mms_MMSpdu_vals[branch_taken].strptr);
8455 return offset;
8460 * Dissect MMS PDUs inside a PPDU.
8462 static int
8463 dissect_mms(tvbuff_t* tvb, packet_info* pinfo, proto_tree* parent_tree, void* data _U_)
8465 int offset = 0;
8466 int old_offset;
8467 proto_item* item = NULL;
8468 proto_tree* tree = NULL;
8469 asn1_ctx_t asn1_ctx;
8470 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8472 if (parent_tree) {
8473 item = proto_tree_add_item(parent_tree, proto_mms, tvb, 0, -1, ENC_NA);
8474 tree = proto_item_add_subtree(item, ett_mms);
8475 asn1_ctx.subtree.top_tree = parent_tree;
8477 if (use_iec61850_mapping) {
8478 col_set_str(pinfo->cinfo, COL_PROTOCOL, "MMS/IEC61850");
8480 else {
8481 col_set_str(pinfo->cinfo, COL_PROTOCOL, "MMS");
8483 col_clear(pinfo->cinfo, COL_INFO);
8485 while (tvb_reported_length_remaining(tvb, offset) > 0) {
8486 old_offset = offset;
8487 if (use_iec61850_mapping) {
8488 asn1_ctx.private_data = (void*)wmem_new0(pinfo->pool, mms_actx_private_data_t);
8490 offset = dissect_mms_MMSpdu(false, tvb, offset, &asn1_ctx, tree, -1);
8491 if (asn1_ctx.private_data) {
8492 wmem_free(pinfo->pool, asn1_ctx.private_data);
8494 if (offset == old_offset) {
8495 proto_tree_add_expert(tree, pinfo, &ei_mms_zero_pdu, tvb, offset, -1);
8496 break;
8499 return tvb_captured_length(tvb);
8503 /*--- proto_register_mms -------------------------------------------*/
8504 void proto_register_mms(void) {
8506 /* List of fields */
8507 static hf_register_info hf[] =
8509 { &hf_mms_response_in,
8510 { "Response In", "mms.response_in",
8511 FT_FRAMENUM, BASE_NONE, FRAMENUM_TYPE(FT_FRAMENUM_RESPONSE), 0x0,
8512 "The response to this mms request is in this frame", HFILL }
8514 { &hf_mms_response_to,
8515 { "Request In", "mms.response_to",
8516 FT_FRAMENUM, BASE_NONE, FRAMENUM_TYPE(FT_FRAMENUM_REQUEST), 0x0,
8517 "This is a response to the mms request in this frame", HFILL }
8519 { &hf_mms_response_time,
8520 { "Response Time", "mms.response_time",
8521 FT_RELATIVE_TIME, BASE_NONE, NULL, 0x0,
8522 "The time between the Call and the Reply", HFILL }
8524 { &hf_mms_iec61850_rptid,
8525 { "RptID", "mms.iec61850.rptid",
8526 FT_STRING, BASE_NONE, NULL, 0,
8527 NULL, HFILL }},
8528 { &hf_mms_iec61850_reported_optflds,
8529 { "Reported OptFlds", "mms.iec61850.reported_optfld",
8530 FT_BYTES, BASE_NONE, NULL, 0,
8531 NULL, HFILL }},
8532 { &hf_mms_iec61850_seqnum,
8533 { "SeqNum", "mms.iec61850.seqnum",
8534 FT_INT32, BASE_DEC, NULL, 0,
8535 NULL, HFILL }},
8536 { &hf_mms_iec61850_timeofentry,
8537 { "TimeOfEntry", "mms.iec61850.timeofentry",
8538 FT_STRING, BASE_NONE, NULL, 0,
8539 NULL, HFILL }},
8540 { &hf_mms_iec61850_datset,
8541 { "DatSet", "mms.iec61850.datset",
8542 FT_STRING, BASE_NONE, NULL, 0,
8543 NULL, HFILL }},
8544 { &hf_mms_iec61850_bufovfl,
8545 { "BufOvfl", "mms.iec61850.bufovfl",
8546 FT_BOOLEAN, BASE_NONE, NULL, 0,
8547 NULL, HFILL }},
8548 { &hf_mms_iec61850_confrev,
8549 { "ConfRev", "mms.iec61850.confrev",
8550 FT_INT32, BASE_DEC, NULL, 0,
8551 NULL, HFILL }},
8552 { &hf_mms_iec61850_inclusion_bitstring,
8553 { "Inclusion-bitstring", "mms.iec61850.inclusion_bitstring",
8554 FT_BYTES, BASE_NONE, NULL, 0,
8555 NULL, HFILL }},
8556 { &hf_mms_iec61850_ctlModel,
8557 { "ctlModel", "mms.iec61850.ctlmodel",
8558 FT_UINT8, BASE_DEC, VALS(mms_iec6150_cntmodel_vals), 0,
8559 NULL, HFILL }},
8560 { &hf_mms_iec61850_QualityC0,
8561 { "Validity", "mms.iec61850.validity",
8562 FT_UINT8, BASE_HEX, VALS(mms_iec6150_validity_vals), 0xC0,
8563 NULL, HFILL }},
8564 { &hf_mms_iec61850_Quality20,
8565 { "Overflow", "mms.iec61850.overflow",
8566 FT_BOOLEAN, 8, NULL, 0x20,
8567 NULL, HFILL }},
8568 { &hf_mms_iec61850_Quality10,
8569 { "OutofRange", "mms.iec61850.outofrange",
8570 FT_BOOLEAN, 8, NULL, 0x10,
8571 NULL, HFILL }},
8572 { &hf_mms_iec61850_Quality8,
8573 { "BadReference", "mms.iec61850.badreference",
8574 FT_BOOLEAN, 8, NULL, 0x08,
8575 NULL, HFILL }},
8576 { &hf_mms_iec61850_Quality4,
8577 { "Oscillatory", "mms.iec61850.oscillatory",
8578 FT_BOOLEAN, 8, NULL, 0x04,
8579 NULL, HFILL }},
8580 { &hf_mms_iec61850_Quality2,
8581 { "Failure", "mms.iec61850.failure",
8582 FT_BOOLEAN, 8, NULL, 0x02,
8583 NULL, HFILL }},
8584 { &hf_mms_iec61850_Quality1,
8585 { "OldData", "mms.iec61850.oldData",
8586 FT_BOOLEAN, 8, NULL, 0x01,
8587 NULL, HFILL }},
8588 { &hf_mms_iec61850_Quality0080,
8589 { "Inconsistent", "mms.iec61850.inconsistent",
8590 FT_BOOLEAN, 8, NULL, 0x80,
8591 NULL, HFILL }},
8592 { &hf_mms_iec61850_Quality0040,
8593 { "Inaccurate", "mms.iec61850.inaccurate",
8594 FT_BOOLEAN, 8, NULL, 0x40,
8595 NULL, HFILL }},
8596 { &hf_mms_iec61850_Quality0020,
8597 { "Source", "mms.iec61850.source",
8598 FT_UINT8, BASE_HEX, VALS(mms_iec6150_source_vals), 0x20,
8599 NULL, HFILL }},
8600 { &hf_mms_iec61850_Quality0010,
8601 { "Test", "mms.iec61850.test",
8602 FT_BOOLEAN, 8, NULL, 0x10,
8603 NULL, HFILL }},
8604 { &hf_mms_iec61850_Quality0008,
8605 { "OperatorBlocked", "mms.iec61850.operatorblocked",
8606 FT_BOOLEAN, 8, NULL, 0x08,
8607 NULL, HFILL }},
8608 { &hf_mms_iec61850_quality_bitstring,
8609 { "Quality", "mms.iec61850.quality_bitstring",
8610 FT_BYTES, BASE_NONE, NULL, 0,
8611 NULL, HFILL } },
8612 { &hf_mms_iec61850_timequality80,
8613 { "Leap Second Known", "mms.iec61850.leapsecondknown",
8614 FT_BOOLEAN, 8, NULL, 0x80,
8615 NULL, HFILL } },
8616 { &hf_mms_iec61850_timequality40,
8617 { "ClockFailure", "mms.iec61850.clockfailure",
8618 FT_BOOLEAN, 8, NULL, 0x40,
8619 NULL, HFILL } },
8620 { &hf_mms_iec61850_timequality20,
8621 { "Clock not synchronized", "mms.iec61850.clocknotsynchronized",
8622 FT_BOOLEAN, 8, NULL, 0x20,
8623 NULL, HFILL } },
8624 { &hf_mms_iec61850_timequality1F,
8625 { "Time Accuracy", "mms.iec61850.timeaccuracy",
8626 FT_UINT8, BASE_HEX, VALS(mms_iec6150_timeaccuracy_vals), 0x1F,
8627 NULL, HFILL } },
8628 { &hf_mms_iec61850_check_bitstring,
8629 { "Check", "mms.iec61850.check_bitstring",
8630 FT_BYTES, BASE_NONE, NULL, 0,
8631 NULL, HFILL } },
8632 { &hf_mms_iec61850_check_b15,
8633 { "Synchrocheck", "mms.iec61850.synchrocheck",
8634 FT_BOOLEAN, 8, NULL, 0x80,
8635 NULL, HFILL } },
8636 { &hf_mms_iec61850_check_b14,
8637 { "Interlock-check", "mms.iec61850.interlockcheck",
8638 FT_BOOLEAN, 8, NULL, 0x40,
8639 NULL, HFILL } },
8640 { &hf_mms_iec61850_check_b13_b0,
8641 { "Padding", "mms.iec61850.check.padding",
8642 FT_UINT8, BASE_HEX, NULL, 0x3f,
8643 NULL, HFILL } },
8644 { &hf_mms_iec61850_orcategory,
8645 { "orCategory", "mms.iec61850.orcategory",
8646 FT_UINT8, BASE_DEC, VALS(mms_iec6150_orcategory_vals), 0,
8647 NULL, HFILL } },
8648 { &hf_mms_iec61850_beh$stval,
8649 { "beh", "mms.iec61850.beh",
8650 FT_UINT8, BASE_DEC, VALS(mms_iec6150_beh_vals), 0,
8651 NULL, HFILL } },
8652 { &hf_mms_iec61850_mod$stval,
8653 { "mod", "mms.iec61850.mod",
8654 FT_UINT8, BASE_DEC, VALS(mms_iec6150_beh_vals), 0,
8655 NULL, HFILL } },
8656 { &hf_mms_iec61850_health$stval,
8657 { "health", "mms.iec61850.health",
8658 FT_UINT8, BASE_DEC, VALS(mms_iec6150_health_vals), 0,
8659 NULL, HFILL } },
8660 { &hf_mms_iec61850_ctlval,
8661 { "ctlVal", "mms.iec61850.ctlval",
8662 FT_BOOLEAN, BASE_NONE, NULL, 0,
8663 NULL, HFILL } },
8664 { &hf_mms_iec61850_origin,
8665 { "Origin", "mms.iec61850.origin",
8666 FT_UINT32, BASE_DEC, NULL, 0,
8667 NULL, HFILL } },
8668 { &hf_mms_iec61850_origin_orcat,
8669 { "Origin Category", "mms.iec61850.orcat",
8670 FT_UINT8, BASE_DEC, NULL, 0,
8671 NULL, HFILL } },
8672 { &hf_mms_iec61850_origin_orident,
8673 { "Origin Identifier", "mms.iec61850.orident",
8674 FT_BYTES, BASE_NONE, NULL, 0,
8675 NULL, HFILL } },
8676 { &hf_mms_iec61850_ctlNum,
8677 { "ctlNum", "mms.iec61850.ctlnum",
8678 FT_INT8, BASE_DEC, NULL, 0,
8679 NULL, HFILL } },
8680 { &hf_mms_iec61850_T,
8681 { "T(Timestamp)", "mms.iec61850.timestamp",
8682 FT_STRING, BASE_NONE, NULL, 0,
8683 NULL, HFILL } },
8684 { &hf_mms_iec61850_test,
8685 { "Test", "mms.iec61850.test",
8686 FT_BOOLEAN, BASE_NONE, NULL, 0,
8687 NULL, HFILL }},
8688 { &hf_mms_confirmed_RequestPDU,
8689 { "confirmed-RequestPDU", "mms.confirmed_RequestPDU_element",
8690 FT_NONE, BASE_NONE, NULL, 0,
8691 NULL, HFILL }},
8692 { &hf_mms_confirmed_ResponsePDU,
8693 { "confirmed-ResponsePDU", "mms.confirmed_ResponsePDU_element",
8694 FT_NONE, BASE_NONE, NULL, 0,
8695 NULL, HFILL }},
8696 { &hf_mms_confirmed_ErrorPDU,
8697 { "confirmed-ErrorPDU", "mms.confirmed_ErrorPDU_element",
8698 FT_NONE, BASE_NONE, NULL, 0,
8699 NULL, HFILL }},
8700 { &hf_mms_unconfirmed_PDU,
8701 { "unconfirmed-PDU", "mms.unconfirmed_PDU_element",
8702 FT_NONE, BASE_NONE, NULL, 0,
8703 NULL, HFILL }},
8704 { &hf_mms_rejectPDU,
8705 { "rejectPDU", "mms.rejectPDU_element",
8706 FT_NONE, BASE_NONE, NULL, 0,
8707 NULL, HFILL }},
8708 { &hf_mms_cancel_RequestPDU,
8709 { "cancel-RequestPDU", "mms.cancel_RequestPDU",
8710 FT_INT32, BASE_DEC, NULL, 0,
8711 NULL, HFILL }},
8712 { &hf_mms_cancel_ResponsePDU,
8713 { "cancel-ResponsePDU", "mms.cancel_ResponsePDU",
8714 FT_INT32, BASE_DEC, NULL, 0,
8715 NULL, HFILL }},
8716 { &hf_mms_cancel_ErrorPDU,
8717 { "cancel-ErrorPDU", "mms.cancel_ErrorPDU_element",
8718 FT_NONE, BASE_NONE, NULL, 0,
8719 NULL, HFILL }},
8720 { &hf_mms_initiate_RequestPDU,
8721 { "initiate-RequestPDU", "mms.initiate_RequestPDU_element",
8722 FT_NONE, BASE_NONE, NULL, 0,
8723 NULL, HFILL }},
8724 { &hf_mms_initiate_ResponsePDU,
8725 { "initiate-ResponsePDU", "mms.initiate_ResponsePDU_element",
8726 FT_NONE, BASE_NONE, NULL, 0,
8727 NULL, HFILL }},
8728 { &hf_mms_initiate_ErrorPDU,
8729 { "initiate-ErrorPDU", "mms.initiate_ErrorPDU_element",
8730 FT_NONE, BASE_NONE, NULL, 0,
8731 NULL, HFILL }},
8732 { &hf_mms_conclude_RequestPDU,
8733 { "conclude-RequestPDU", "mms.conclude_RequestPDU_element",
8734 FT_NONE, BASE_NONE, NULL, 0,
8735 NULL, HFILL }},
8736 { &hf_mms_conclude_ResponsePDU,
8737 { "conclude-ResponsePDU", "mms.conclude_ResponsePDU_element",
8738 FT_NONE, BASE_NONE, NULL, 0,
8739 NULL, HFILL }},
8740 { &hf_mms_conclude_ErrorPDU,
8741 { "conclude-ErrorPDU", "mms.conclude_ErrorPDU_element",
8742 FT_NONE, BASE_NONE, NULL, 0,
8743 NULL, HFILL }},
8744 { &hf_mms_invokeID,
8745 { "invokeID", "mms.invokeID",
8746 FT_INT32, BASE_DEC, NULL, 0,
8747 "Unsigned32", HFILL }},
8748 { &hf_mms_listOfModifier,
8749 { "listOfModifier", "mms.listOfModifier",
8750 FT_UINT32, BASE_DEC, NULL, 0,
8751 "SEQUENCE_OF_Modifier", HFILL }},
8752 { &hf_mms_listOfModifier_item,
8753 { "Modifier", "mms.Modifier",
8754 FT_UINT32, BASE_DEC, VALS(mms_Modifier_vals), 0,
8755 NULL, HFILL }},
8756 { &hf_mms_confirmedServiceRequest,
8757 { "confirmedServiceRequest", "mms.confirmedServiceRequest",
8758 FT_UINT32, BASE_DEC, VALS(mms_ConfirmedServiceRequest_vals), 0,
8759 NULL, HFILL }},
8760 { &hf_mms_cs_request_detail,
8761 { "cs-request-detail", "mms.cs_request_detail",
8762 FT_UINT32, BASE_DEC, VALS(mms_CS_Request_Detail_vals), 0,
8763 NULL, HFILL }},
8764 { &hf_mms_unconfirmedService,
8765 { "unconfirmedService", "mms.unconfirmedService",
8766 FT_UINT32, BASE_DEC, VALS(mms_UnconfirmedService_vals), 0,
8767 NULL, HFILL }},
8768 { &hf_mms_confirmedServiceResponse,
8769 { "confirmedServiceResponse", "mms.confirmedServiceResponse",
8770 FT_UINT32, BASE_DEC, VALS(mms_ConfirmedServiceResponse_vals), 0,
8771 NULL, HFILL }},
8772 { &hf_mms_modifierPosition,
8773 { "modifierPosition", "mms.modifierPosition",
8774 FT_INT32, BASE_DEC, NULL, 0,
8775 "Unsigned32", HFILL }},
8776 { &hf_mms_serviceError,
8777 { "serviceError", "mms.serviceError_element",
8778 FT_NONE, BASE_NONE, NULL, 0,
8779 NULL, HFILL }},
8780 { &hf_mms_informationReport,
8781 { "informationReport", "mms.informationReport_element",
8782 FT_NONE, BASE_NONE, NULL, 0,
8783 NULL, HFILL }},
8784 { &hf_mms_unsolicitedStatus,
8785 { "unsolicitedStatus", "mms.unsolicitedStatus_element",
8786 FT_NONE, BASE_NONE, NULL, 0,
8787 NULL, HFILL }},
8788 { &hf_mms_eventNotification,
8789 { "eventNotification", "mms.eventNotification_element",
8790 FT_NONE, BASE_NONE, NULL, 0,
8791 NULL, HFILL }},
8792 { &hf_mms_attach_To_Event_Condition,
8793 { "attach-To-Event-Condition", "mms.attach_To_Event_Condition_element",
8794 FT_NONE, BASE_NONE, NULL, 0,
8795 "AttachToEventCondition", HFILL }},
8796 { &hf_mms_attach_To_Semaphore,
8797 { "attach-To-Semaphore", "mms.attach_To_Semaphore_element",
8798 FT_NONE, BASE_NONE, NULL, 0,
8799 "AttachToSemaphore", HFILL }},
8800 { &hf_mms_status,
8801 { "status", "mms.status",
8802 FT_BOOLEAN, BASE_NONE, NULL, 0,
8803 "Status_Request", HFILL }},
8804 { &hf_mms_getNameList,
8805 { "getNameList", "mms.getNameList_element",
8806 FT_NONE, BASE_NONE, NULL, 0,
8807 "GetNameList_Request", HFILL }},
8808 { &hf_mms_identify,
8809 { "identify", "mms.identify_element",
8810 FT_NONE, BASE_NONE, NULL, 0,
8811 "Identify_Request", HFILL }},
8812 { &hf_mms_rename,
8813 { "rename", "mms.rename_element",
8814 FT_NONE, BASE_NONE, NULL, 0,
8815 "Rename_Request", HFILL }},
8816 { &hf_mms_read,
8817 { "read", "mms.read_element",
8818 FT_NONE, BASE_NONE, NULL, 0,
8819 "Read_Request", HFILL }},
8820 { &hf_mms_write,
8821 { "write", "mms.write_element",
8822 FT_NONE, BASE_NONE, NULL, 0,
8823 "Write_Request", HFILL }},
8824 { &hf_mms_getVariableAccessAttributes,
8825 { "getVariableAccessAttributes", "mms.getVariableAccessAttributes",
8826 FT_UINT32, BASE_DEC, VALS(mms_GetVariableAccessAttributes_Request_vals), 0,
8827 "GetVariableAccessAttributes_Request", HFILL }},
8828 { &hf_mms_defineNamedVariable,
8829 { "defineNamedVariable", "mms.defineNamedVariable_element",
8830 FT_NONE, BASE_NONE, NULL, 0,
8831 "DefineNamedVariable_Request", HFILL }},
8832 { &hf_mms_defineScatteredAccess,
8833 { "defineScatteredAccess", "mms.defineScatteredAccess_element",
8834 FT_NONE, BASE_NONE, NULL, 0,
8835 "DefineScatteredAccess_Request", HFILL }},
8836 { &hf_mms_getScatteredAccessAttributes,
8837 { "getScatteredAccessAttributes", "mms.getScatteredAccessAttributes",
8838 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
8839 "GetScatteredAccessAttributes_Request", HFILL }},
8840 { &hf_mms_deleteVariableAccess,
8841 { "deleteVariableAccess", "mms.deleteVariableAccess_element",
8842 FT_NONE, BASE_NONE, NULL, 0,
8843 "DeleteVariableAccess_Request", HFILL }},
8844 { &hf_mms_defineNamedVariableList,
8845 { "defineNamedVariableList", "mms.defineNamedVariableList_element",
8846 FT_NONE, BASE_NONE, NULL, 0,
8847 "DefineNamedVariableList_Request", HFILL }},
8848 { &hf_mms_getNamedVariableListAttributes,
8849 { "getNamedVariableListAttributes", "mms.getNamedVariableListAttributes",
8850 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
8851 "GetNamedVariableListAttributes_Request", HFILL }},
8852 { &hf_mms_deleteNamedVariableList,
8853 { "deleteNamedVariableList", "mms.deleteNamedVariableList_element",
8854 FT_NONE, BASE_NONE, NULL, 0,
8855 "DeleteNamedVariableList_Request", HFILL }},
8856 { &hf_mms_defineNamedType,
8857 { "defineNamedType", "mms.defineNamedType_element",
8858 FT_NONE, BASE_NONE, NULL, 0,
8859 "DefineNamedType_Request", HFILL }},
8860 { &hf_mms_getNamedTypeAttributes,
8861 { "getNamedTypeAttributes", "mms.getNamedTypeAttributes",
8862 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
8863 "GetNamedTypeAttributes_Request", HFILL }},
8864 { &hf_mms_deleteNamedType,
8865 { "deleteNamedType", "mms.deleteNamedType_element",
8866 FT_NONE, BASE_NONE, NULL, 0,
8867 "DeleteNamedType_Request", HFILL }},
8868 { &hf_mms_input,
8869 { "input", "mms.input_element",
8870 FT_NONE, BASE_NONE, NULL, 0,
8871 "Input_Request", HFILL }},
8872 { &hf_mms_output,
8873 { "output", "mms.output_element",
8874 FT_NONE, BASE_NONE, NULL, 0,
8875 "Output_Request", HFILL }},
8876 { &hf_mms_takeControl,
8877 { "takeControl", "mms.takeControl_element",
8878 FT_NONE, BASE_NONE, NULL, 0,
8879 "TakeControl_Request", HFILL }},
8880 { &hf_mms_relinquishControl,
8881 { "relinquishControl", "mms.relinquishControl_element",
8882 FT_NONE, BASE_NONE, NULL, 0,
8883 "RelinquishControl_Request", HFILL }},
8884 { &hf_mms_defineSemaphore,
8885 { "defineSemaphore", "mms.defineSemaphore_element",
8886 FT_NONE, BASE_NONE, NULL, 0,
8887 "DefineSemaphore_Request", HFILL }},
8888 { &hf_mms_deleteSemaphore,
8889 { "deleteSemaphore", "mms.deleteSemaphore",
8890 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
8891 "DeleteSemaphore_Request", HFILL }},
8892 { &hf_mms_reportSemaphoreStatus,
8893 { "reportSemaphoreStatus", "mms.reportSemaphoreStatus",
8894 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
8895 "ReportSemaphoreStatus_Request", HFILL }},
8896 { &hf_mms_reportPoolSemaphoreStatus,
8897 { "reportPoolSemaphoreStatus", "mms.reportPoolSemaphoreStatus_element",
8898 FT_NONE, BASE_NONE, NULL, 0,
8899 "ReportPoolSemaphoreStatus_Request", HFILL }},
8900 { &hf_mms_reportSemaphoreEntryStatus,
8901 { "reportSemaphoreEntryStatus", "mms.reportSemaphoreEntryStatus_element",
8902 FT_NONE, BASE_NONE, NULL, 0,
8903 "ReportSemaphoreEntryStatus_Request", HFILL }},
8904 { &hf_mms_initiateDownloadSequence,
8905 { "initiateDownloadSequence", "mms.initiateDownloadSequence_element",
8906 FT_NONE, BASE_NONE, NULL, 0,
8907 "InitiateDownloadSequence_Request", HFILL }},
8908 { &hf_mms_downloadSegment,
8909 { "downloadSegment", "mms.downloadSegment",
8910 FT_STRING, BASE_NONE, NULL, 0,
8911 "DownloadSegment_Request", HFILL }},
8912 { &hf_mms_terminateDownloadSequence,
8913 { "terminateDownloadSequence", "mms.terminateDownloadSequence_element",
8914 FT_NONE, BASE_NONE, NULL, 0,
8915 "TerminateDownloadSequence_Request", HFILL }},
8916 { &hf_mms_initiateUploadSequence,
8917 { "initiateUploadSequence", "mms.initiateUploadSequence",
8918 FT_STRING, BASE_NONE, NULL, 0,
8919 "InitiateUploadSequence_Request", HFILL }},
8920 { &hf_mms_uploadSegment,
8921 { "uploadSegment", "mms.uploadSegment",
8922 FT_INT32, BASE_DEC, NULL, 0,
8923 "UploadSegment_Request", HFILL }},
8924 { &hf_mms_terminateUploadSequence,
8925 { "terminateUploadSequence", "mms.terminateUploadSequence",
8926 FT_INT32, BASE_DEC, NULL, 0,
8927 "TerminateUploadSequence_Request", HFILL }},
8928 { &hf_mms_requestDomainDownload,
8929 { "requestDomainDownload", "mms.requestDomainDownload_element",
8930 FT_NONE, BASE_NONE, NULL, 0,
8931 "RequestDomainDownload_Request", HFILL }},
8932 { &hf_mms_requestDomainUpload,
8933 { "requestDomainUpload", "mms.requestDomainUpload_element",
8934 FT_NONE, BASE_NONE, NULL, 0,
8935 "RequestDomainUpload_Request", HFILL }},
8936 { &hf_mms_loadDomainContent,
8937 { "loadDomainContent", "mms.loadDomainContent_element",
8938 FT_NONE, BASE_NONE, NULL, 0,
8939 "LoadDomainContent_Request", HFILL }},
8940 { &hf_mms_storeDomainContent,
8941 { "storeDomainContent", "mms.storeDomainContent_element",
8942 FT_NONE, BASE_NONE, NULL, 0,
8943 "StoreDomainContent_Request", HFILL }},
8944 { &hf_mms_deleteDomain,
8945 { "deleteDomain", "mms.deleteDomain",
8946 FT_STRING, BASE_NONE, NULL, 0,
8947 "DeleteDomain_Request", HFILL }},
8948 { &hf_mms_getDomainAttributes,
8949 { "getDomainAttributes", "mms.getDomainAttributes",
8950 FT_STRING, BASE_NONE, NULL, 0,
8951 "GetDomainAttributes_Request", HFILL }},
8952 { &hf_mms_createProgramInvocation,
8953 { "createProgramInvocation", "mms.createProgramInvocation_element",
8954 FT_NONE, BASE_NONE, NULL, 0,
8955 "CreateProgramInvocation_Request", HFILL }},
8956 { &hf_mms_deleteProgramInvocation,
8957 { "deleteProgramInvocation", "mms.deleteProgramInvocation",
8958 FT_STRING, BASE_NONE, NULL, 0,
8959 "DeleteProgramInvocation_Request", HFILL }},
8960 { &hf_mms_start,
8961 { "start", "mms.start_element",
8962 FT_NONE, BASE_NONE, NULL, 0,
8963 "Start_Request", HFILL }},
8964 { &hf_mms_stop,
8965 { "stop", "mms.stop_element",
8966 FT_NONE, BASE_NONE, NULL, 0,
8967 "Stop_Request", HFILL }},
8968 { &hf_mms_resume,
8969 { "resume", "mms.resume_element",
8970 FT_NONE, BASE_NONE, NULL, 0,
8971 "Resume_Request", HFILL }},
8972 { &hf_mms_reset,
8973 { "reset", "mms.reset_element",
8974 FT_NONE, BASE_NONE, NULL, 0,
8975 "Reset_Request", HFILL }},
8976 { &hf_mms_kill,
8977 { "kill", "mms.kill_element",
8978 FT_NONE, BASE_NONE, NULL, 0,
8979 "Kill_Request", HFILL }},
8980 { &hf_mms_getProgramInvocationAttributes,
8981 { "getProgramInvocationAttributes", "mms.getProgramInvocationAttributes",
8982 FT_STRING, BASE_NONE, NULL, 0,
8983 "GetProgramInvocationAttributes_Request", HFILL }},
8984 { &hf_mms_obtainFile,
8985 { "obtainFile", "mms.obtainFile_element",
8986 FT_NONE, BASE_NONE, NULL, 0,
8987 "ObtainFile_Request", HFILL }},
8988 { &hf_mms_defineEventCondition,
8989 { "defineEventCondition", "mms.defineEventCondition_element",
8990 FT_NONE, BASE_NONE, NULL, 0,
8991 "DefineEventCondition_Request", HFILL }},
8992 { &hf_mms_confirmedServiceRequest_deleteEventCondition,
8993 { "deleteEventCondition", "mms.confirmedServiceRequest.deleteEventCondition",
8994 FT_UINT32, BASE_DEC, VALS(mms_DeleteEventCondition_Request_vals), 0,
8995 "DeleteEventCondition_Request", HFILL }},
8996 { &hf_mms_getEventConditionAttributes,
8997 { "getEventConditionAttributes", "mms.getEventConditionAttributes",
8998 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
8999 "GetEventConditionAttributes_Request", HFILL }},
9000 { &hf_mms_reportEventConditionStatus,
9001 { "reportEventConditionStatus", "mms.reportEventConditionStatus",
9002 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9003 "ReportEventConditionStatus_Request", HFILL }},
9004 { &hf_mms_alterEventConditionMonitoring,
9005 { "alterEventConditionMonitoring", "mms.alterEventConditionMonitoring_element",
9006 FT_NONE, BASE_NONE, NULL, 0,
9007 "AlterEventConditionMonitoring_Request", HFILL }},
9008 { &hf_mms_triggerEvent,
9009 { "triggerEvent", "mms.triggerEvent_element",
9010 FT_NONE, BASE_NONE, NULL, 0,
9011 "TriggerEvent_Request", HFILL }},
9012 { &hf_mms_defineEventAction,
9013 { "defineEventAction", "mms.defineEventAction_element",
9014 FT_NONE, BASE_NONE, NULL, 0,
9015 "DefineEventAction_Request", HFILL }},
9016 { &hf_mms_confirmedServiceRequest_deleteEventAction,
9017 { "deleteEventAction", "mms.confirmedServiceRequest.deleteEventAction",
9018 FT_UINT32, BASE_DEC, VALS(mms_DeleteEventAction_Request_vals), 0,
9019 "DeleteEventAction_Request", HFILL }},
9020 { &hf_mms_getEventActionAttributes,
9021 { "getEventActionAttributes", "mms.getEventActionAttributes",
9022 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9023 "GetEventActionAttributes_Request", HFILL }},
9024 { &hf_mms_reportEventActionStatus,
9025 { "reportEventActionStatus", "mms.reportEventActionStatus",
9026 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9027 "ReportEventActionStatus_Request", HFILL }},
9028 { &hf_mms_defineEventEnrollment,
9029 { "defineEventEnrollment", "mms.defineEventEnrollment_element",
9030 FT_NONE, BASE_NONE, NULL, 0,
9031 "DefineEventEnrollment_Request", HFILL }},
9032 { &hf_mms_confirmedServiceRequest_deleteEventEnrollment,
9033 { "deleteEventEnrollment", "mms.confirmedServiceRequest.deleteEventEnrollment",
9034 FT_UINT32, BASE_DEC, VALS(mms_DeleteEventEnrollment_Request_vals), 0,
9035 "DeleteEventEnrollment_Request", HFILL }},
9036 { &hf_mms_alterEventEnrollment,
9037 { "alterEventEnrollment", "mms.alterEventEnrollment_element",
9038 FT_NONE, BASE_NONE, NULL, 0,
9039 "AlterEventEnrollment_Request", HFILL }},
9040 { &hf_mms_reportEventEnrollmentStatus,
9041 { "reportEventEnrollmentStatus", "mms.reportEventEnrollmentStatus",
9042 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9043 "ReportEventEnrollmentStatus_Request", HFILL }},
9044 { &hf_mms_getEventEnrollmentAttributes,
9045 { "getEventEnrollmentAttributes", "mms.getEventEnrollmentAttributes_element",
9046 FT_NONE, BASE_NONE, NULL, 0,
9047 "GetEventEnrollmentAttributes_Request", HFILL }},
9048 { &hf_mms_acknowledgeEventNotification,
9049 { "acknowledgeEventNotification", "mms.acknowledgeEventNotification_element",
9050 FT_NONE, BASE_NONE, NULL, 0,
9051 "AcknowledgeEventNotification_Request", HFILL }},
9052 { &hf_mms_getAlarmSummary,
9053 { "getAlarmSummary", "mms.getAlarmSummary_element",
9054 FT_NONE, BASE_NONE, NULL, 0,
9055 "GetAlarmSummary_Request", HFILL }},
9056 { &hf_mms_getAlarmEnrollmentSummary,
9057 { "getAlarmEnrollmentSummary", "mms.getAlarmEnrollmentSummary_element",
9058 FT_NONE, BASE_NONE, NULL, 0,
9059 "GetAlarmEnrollmentSummary_Request", HFILL }},
9060 { &hf_mms_readJournal,
9061 { "readJournal", "mms.readJournal_element",
9062 FT_NONE, BASE_NONE, NULL, 0,
9063 "ReadJournal_Request", HFILL }},
9064 { &hf_mms_writeJournal,
9065 { "writeJournal", "mms.writeJournal_element",
9066 FT_NONE, BASE_NONE, NULL, 0,
9067 "WriteJournal_Request", HFILL }},
9068 { &hf_mms_initializeJournal,
9069 { "initializeJournal", "mms.initializeJournal_element",
9070 FT_NONE, BASE_NONE, NULL, 0,
9071 "InitializeJournal_Request", HFILL }},
9072 { &hf_mms_reportJournalStatus,
9073 { "reportJournalStatus", "mms.reportJournalStatus",
9074 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9075 "ReportJournalStatus_Request", HFILL }},
9076 { &hf_mms_createJournal,
9077 { "createJournal", "mms.createJournal_element",
9078 FT_NONE, BASE_NONE, NULL, 0,
9079 "CreateJournal_Request", HFILL }},
9080 { &hf_mms_deleteJournal,
9081 { "deleteJournal", "mms.deleteJournal_element",
9082 FT_NONE, BASE_NONE, NULL, 0,
9083 "DeleteJournal_Request", HFILL }},
9084 { &hf_mms_getCapabilityList,
9085 { "getCapabilityList", "mms.getCapabilityList_element",
9086 FT_NONE, BASE_NONE, NULL, 0,
9087 "GetCapabilityList_Request", HFILL }},
9088 { &hf_mms_fileOpen,
9089 { "fileOpen", "mms.fileOpen_element",
9090 FT_NONE, BASE_NONE, NULL, 0,
9091 "FileOpen_Request", HFILL }},
9092 { &hf_mms_fileRead,
9093 { "fileRead", "mms.fileRead",
9094 FT_INT32, BASE_DEC, NULL, 0,
9095 "FileRead_Request", HFILL }},
9096 { &hf_mms_fileClose,
9097 { "fileClose", "mms.fileClose",
9098 FT_INT32, BASE_DEC, NULL, 0,
9099 "FileClose_Request", HFILL }},
9100 { &hf_mms_fileRename,
9101 { "fileRename", "mms.fileRename_element",
9102 FT_NONE, BASE_NONE, NULL, 0,
9103 "FileRename_Request", HFILL }},
9104 { &hf_mms_fileDelete,
9105 { "fileDelete", "mms.fileDelete",
9106 FT_UINT32, BASE_DEC, NULL, 0,
9107 "FileDelete_Request", HFILL }},
9108 { &hf_mms_fileDirectory,
9109 { "fileDirectory", "mms.fileDirectory_element",
9110 FT_NONE, BASE_NONE, NULL, 0,
9111 "FileDirectory_Request", HFILL }},
9112 { &hf_mms_foo,
9113 { "foo", "mms.foo",
9114 FT_INT32, BASE_DEC, NULL, 0,
9115 "INTEGER", HFILL }},
9116 { &hf_mms_status_01,
9117 { "status", "mms.status_element",
9118 FT_NONE, BASE_NONE, NULL, 0,
9119 "Status_Response", HFILL }},
9120 { &hf_mms_getNameList_01,
9121 { "getNameList", "mms.getNameList_element",
9122 FT_NONE, BASE_NONE, NULL, 0,
9123 "GetNameList_Response", HFILL }},
9124 { &hf_mms_identify_01,
9125 { "identify", "mms.identify_element",
9126 FT_NONE, BASE_NONE, NULL, 0,
9127 "Identify_Response", HFILL }},
9128 { &hf_mms_rename_01,
9129 { "rename", "mms.rename_element",
9130 FT_NONE, BASE_NONE, NULL, 0,
9131 "Rename_Response", HFILL }},
9132 { &hf_mms_read_01,
9133 { "read", "mms.read_element",
9134 FT_NONE, BASE_NONE, NULL, 0,
9135 "Read_Response", HFILL }},
9136 { &hf_mms_write_01,
9137 { "write", "mms.write",
9138 FT_UINT32, BASE_DEC, NULL, 0,
9139 "Write_Response", HFILL }},
9140 { &hf_mms_getVariableAccessAttributes_01,
9141 { "getVariableAccessAttributes", "mms.getVariableAccessAttributes_element",
9142 FT_NONE, BASE_NONE, NULL, 0,
9143 "GetVariableAccessAttributes_Response", HFILL }},
9144 { &hf_mms_defineNamedVariable_01,
9145 { "defineNamedVariable", "mms.defineNamedVariable_element",
9146 FT_NONE, BASE_NONE, NULL, 0,
9147 "DefineNamedVariable_Response", HFILL }},
9148 { &hf_mms_defineScatteredAccess_01,
9149 { "defineScatteredAccess", "mms.defineScatteredAccess_element",
9150 FT_NONE, BASE_NONE, NULL, 0,
9151 "DefineScatteredAccess_Response", HFILL }},
9152 { &hf_mms_getScatteredAccessAttributes_01,
9153 { "getScatteredAccessAttributes", "mms.getScatteredAccessAttributes_element",
9154 FT_NONE, BASE_NONE, NULL, 0,
9155 "GetScatteredAccessAttributes_Response", HFILL }},
9156 { &hf_mms_deleteVariableAccess_01,
9157 { "deleteVariableAccess", "mms.deleteVariableAccess_element",
9158 FT_NONE, BASE_NONE, NULL, 0,
9159 "DeleteVariableAccess_Response", HFILL }},
9160 { &hf_mms_defineNamedVariableList_01,
9161 { "defineNamedVariableList", "mms.defineNamedVariableList_element",
9162 FT_NONE, BASE_NONE, NULL, 0,
9163 "DefineNamedVariableList_Response", HFILL }},
9164 { &hf_mms_getNamedVariableListAttributes_01,
9165 { "getNamedVariableListAttributes", "mms.getNamedVariableListAttributes_element",
9166 FT_NONE, BASE_NONE, NULL, 0,
9167 "GetNamedVariableListAttributes_Response", HFILL }},
9168 { &hf_mms_deleteNamedVariableList_01,
9169 { "deleteNamedVariableList", "mms.deleteNamedVariableList_element",
9170 FT_NONE, BASE_NONE, NULL, 0,
9171 "DeleteNamedVariableList_Response", HFILL }},
9172 { &hf_mms_defineNamedType_01,
9173 { "defineNamedType", "mms.defineNamedType_element",
9174 FT_NONE, BASE_NONE, NULL, 0,
9175 "DefineNamedType_Response", HFILL }},
9176 { &hf_mms_getNamedTypeAttributes_01,
9177 { "getNamedTypeAttributes", "mms.getNamedTypeAttributes_element",
9178 FT_NONE, BASE_NONE, NULL, 0,
9179 "GetNamedTypeAttributes_Response", HFILL }},
9180 { &hf_mms_deleteNamedType_01,
9181 { "deleteNamedType", "mms.deleteNamedType_element",
9182 FT_NONE, BASE_NONE, NULL, 0,
9183 "DeleteNamedType_Response", HFILL }},
9184 { &hf_mms_input_01,
9185 { "input", "mms.input",
9186 FT_STRING, BASE_NONE, NULL, 0,
9187 "Input_Response", HFILL }},
9188 { &hf_mms_output_01,
9189 { "output", "mms.output_element",
9190 FT_NONE, BASE_NONE, NULL, 0,
9191 "Output_Response", HFILL }},
9192 { &hf_mms_takeControl_01,
9193 { "takeControl", "mms.takeControl",
9194 FT_UINT32, BASE_DEC, VALS(mms_TakeControl_Response_vals), 0,
9195 "TakeControl_Response", HFILL }},
9196 { &hf_mms_relinquishControl_01,
9197 { "relinquishControl", "mms.relinquishControl_element",
9198 FT_NONE, BASE_NONE, NULL, 0,
9199 "RelinquishControl_Response", HFILL }},
9200 { &hf_mms_defineSemaphore_01,
9201 { "defineSemaphore", "mms.defineSemaphore_element",
9202 FT_NONE, BASE_NONE, NULL, 0,
9203 "DefineSemaphore_Response", HFILL }},
9204 { &hf_mms_deleteSemaphore_01,
9205 { "deleteSemaphore", "mms.deleteSemaphore_element",
9206 FT_NONE, BASE_NONE, NULL, 0,
9207 "DeleteSemaphore_Response", HFILL }},
9208 { &hf_mms_reportSemaphoreStatus_01,
9209 { "reportSemaphoreStatus", "mms.reportSemaphoreStatus_element",
9210 FT_NONE, BASE_NONE, NULL, 0,
9211 "ReportSemaphoreStatus_Response", HFILL }},
9212 { &hf_mms_reportPoolSemaphoreStatus_01,
9213 { "reportPoolSemaphoreStatus", "mms.reportPoolSemaphoreStatus_element",
9214 FT_NONE, BASE_NONE, NULL, 0,
9215 "ReportPoolSemaphoreStatus_Response", HFILL }},
9216 { &hf_mms_reportSemaphoreEntryStatus_01,
9217 { "reportSemaphoreEntryStatus", "mms.reportSemaphoreEntryStatus_element",
9218 FT_NONE, BASE_NONE, NULL, 0,
9219 "ReportSemaphoreEntryStatus_Response", HFILL }},
9220 { &hf_mms_initiateDownloadSequence_01,
9221 { "initiateDownloadSequence", "mms.initiateDownloadSequence_element",
9222 FT_NONE, BASE_NONE, NULL, 0,
9223 "InitiateDownloadSequence_Response", HFILL }},
9224 { &hf_mms_downloadSegment_01,
9225 { "downloadSegment", "mms.downloadSegment_element",
9226 FT_NONE, BASE_NONE, NULL, 0,
9227 "DownloadSegment_Response", HFILL }},
9228 { &hf_mms_terminateDownloadSequence_01,
9229 { "terminateDownloadSequence", "mms.terminateDownloadSequence_element",
9230 FT_NONE, BASE_NONE, NULL, 0,
9231 "TerminateDownloadSequence_Response", HFILL }},
9232 { &hf_mms_initiateUploadSequence_01,
9233 { "initiateUploadSequence", "mms.initiateUploadSequence_element",
9234 FT_NONE, BASE_NONE, NULL, 0,
9235 "InitiateUploadSequence_Response", HFILL }},
9236 { &hf_mms_uploadSegment_01,
9237 { "uploadSegment", "mms.uploadSegment_element",
9238 FT_NONE, BASE_NONE, NULL, 0,
9239 "UploadSegment_Response", HFILL }},
9240 { &hf_mms_terminateUploadSequence_01,
9241 { "terminateUploadSequence", "mms.terminateUploadSequence_element",
9242 FT_NONE, BASE_NONE, NULL, 0,
9243 "TerminateUploadSequence_Response", HFILL }},
9244 { &hf_mms_requestDomainDownLoad,
9245 { "requestDomainDownLoad", "mms.requestDomainDownLoad_element",
9246 FT_NONE, BASE_NONE, NULL, 0,
9247 "RequestDomainDownload_Response", HFILL }},
9248 { &hf_mms_requestDomainUpload_01,
9249 { "requestDomainUpload", "mms.requestDomainUpload_element",
9250 FT_NONE, BASE_NONE, NULL, 0,
9251 "RequestDomainUpload_Response", HFILL }},
9252 { &hf_mms_loadDomainContent_01,
9253 { "loadDomainContent", "mms.loadDomainContent_element",
9254 FT_NONE, BASE_NONE, NULL, 0,
9255 "LoadDomainContent_Response", HFILL }},
9256 { &hf_mms_storeDomainContent_01,
9257 { "storeDomainContent", "mms.storeDomainContent_element",
9258 FT_NONE, BASE_NONE, NULL, 0,
9259 "StoreDomainContent_Response", HFILL }},
9260 { &hf_mms_deleteDomain_01,
9261 { "deleteDomain", "mms.deleteDomain_element",
9262 FT_NONE, BASE_NONE, NULL, 0,
9263 "DeleteDomain_Response", HFILL }},
9264 { &hf_mms_getDomainAttributes_01,
9265 { "getDomainAttributes", "mms.getDomainAttributes_element",
9266 FT_NONE, BASE_NONE, NULL, 0,
9267 "GetDomainAttributes_Response", HFILL }},
9268 { &hf_mms_createProgramInvocation_01,
9269 { "createProgramInvocation", "mms.createProgramInvocation_element",
9270 FT_NONE, BASE_NONE, NULL, 0,
9271 "CreateProgramInvocation_Response", HFILL }},
9272 { &hf_mms_deleteProgramInvocation_01,
9273 { "deleteProgramInvocation", "mms.deleteProgramInvocation_element",
9274 FT_NONE, BASE_NONE, NULL, 0,
9275 "DeleteProgramInvocation_Response", HFILL }},
9276 { &hf_mms_start_01,
9277 { "start", "mms.start_element",
9278 FT_NONE, BASE_NONE, NULL, 0,
9279 "Start_Response", HFILL }},
9280 { &hf_mms_stop_01,
9281 { "stop", "mms.stop_element",
9282 FT_NONE, BASE_NONE, NULL, 0,
9283 "Stop_Response", HFILL }},
9284 { &hf_mms_resume_01,
9285 { "resume", "mms.resume_element",
9286 FT_NONE, BASE_NONE, NULL, 0,
9287 "Resume_Response", HFILL }},
9288 { &hf_mms_reset_01,
9289 { "reset", "mms.reset_element",
9290 FT_NONE, BASE_NONE, NULL, 0,
9291 "Reset_Response", HFILL }},
9292 { &hf_mms_kill_01,
9293 { "kill", "mms.kill_element",
9294 FT_NONE, BASE_NONE, NULL, 0,
9295 "Kill_Response", HFILL }},
9296 { &hf_mms_getProgramInvocationAttributes_01,
9297 { "getProgramInvocationAttributes", "mms.getProgramInvocationAttributes_element",
9298 FT_NONE, BASE_NONE, NULL, 0,
9299 "GetProgramInvocationAttributes_Response", HFILL }},
9300 { &hf_mms_obtainFile_01,
9301 { "obtainFile", "mms.obtainFile_element",
9302 FT_NONE, BASE_NONE, NULL, 0,
9303 "ObtainFile_Response", HFILL }},
9304 { &hf_mms_fileOpen_01,
9305 { "fileOpen", "mms.fileOpen_element",
9306 FT_NONE, BASE_NONE, NULL, 0,
9307 "FileOpen_Response", HFILL }},
9308 { &hf_mms_defineEventCondition_01,
9309 { "defineEventCondition", "mms.defineEventCondition_element",
9310 FT_NONE, BASE_NONE, NULL, 0,
9311 "DefineEventCondition_Response", HFILL }},
9312 { &hf_mms_confirmedServiceResponse_deleteEventCondition,
9313 { "deleteEventCondition", "mms.confirmedServiceResponse.deleteEventCondition",
9314 FT_INT32, BASE_DEC, NULL, 0,
9315 "DeleteEventCondition_Response", HFILL }},
9316 { &hf_mms_getEventConditionAttributes_01,
9317 { "getEventConditionAttributes", "mms.getEventConditionAttributes_element",
9318 FT_NONE, BASE_NONE, NULL, 0,
9319 "GetEventConditionAttributes_Response", HFILL }},
9320 { &hf_mms_reportEventConditionStatus_01,
9321 { "reportEventConditionStatus", "mms.reportEventConditionStatus_element",
9322 FT_NONE, BASE_NONE, NULL, 0,
9323 "ReportEventConditionStatus_Response", HFILL }},
9324 { &hf_mms_alterEventConditionMonitoring_01,
9325 { "alterEventConditionMonitoring", "mms.alterEventConditionMonitoring_element",
9326 FT_NONE, BASE_NONE, NULL, 0,
9327 "AlterEventConditionMonitoring_Response", HFILL }},
9328 { &hf_mms_triggerEvent_01,
9329 { "triggerEvent", "mms.triggerEvent_element",
9330 FT_NONE, BASE_NONE, NULL, 0,
9331 "TriggerEvent_Response", HFILL }},
9332 { &hf_mms_defineEventAction_01,
9333 { "defineEventAction", "mms.defineEventAction_element",
9334 FT_NONE, BASE_NONE, NULL, 0,
9335 "DefineEventAction_Response", HFILL }},
9336 { &hf_mms_confirmedServiceRequest_deleteEventAction_01,
9337 { "deleteEventAction", "mms.confirmedServiceRequest.deleteEventAction",
9338 FT_INT32, BASE_DEC, NULL, 0,
9339 "DeleteEventAction_Response", HFILL }},
9340 { &hf_mms_getEventActionAttributes_01,
9341 { "getEventActionAttributes", "mms.getEventActionAttributes_element",
9342 FT_NONE, BASE_NONE, NULL, 0,
9343 "GetEventActionAttributes_Response", HFILL }},
9344 { &hf_mms_reportActionStatus,
9345 { "reportActionStatus", "mms.reportActionStatus",
9346 FT_INT32, BASE_DEC, NULL, 0,
9347 "ReportEventActionStatus_Response", HFILL }},
9348 { &hf_mms_defineEventEnrollment_01,
9349 { "defineEventEnrollment", "mms.defineEventEnrollment_element",
9350 FT_NONE, BASE_NONE, NULL, 0,
9351 "DefineEventEnrollment_Response", HFILL }},
9352 { &hf_mms_confirmedServiceResponse_deleteEventEnrollment,
9353 { "deleteEventEnrollment", "mms.confirmedServiceResponse.deleteEventEnrollment",
9354 FT_INT32, BASE_DEC, NULL, 0,
9355 "DeleteEventEnrollment_Response", HFILL }},
9356 { &hf_mms_alterEventEnrollment_01,
9357 { "alterEventEnrollment", "mms.alterEventEnrollment_element",
9358 FT_NONE, BASE_NONE, NULL, 0,
9359 "AlterEventEnrollment_Response", HFILL }},
9360 { &hf_mms_reportEventEnrollmentStatus_01,
9361 { "reportEventEnrollmentStatus", "mms.reportEventEnrollmentStatus_element",
9362 FT_NONE, BASE_NONE, NULL, 0,
9363 "ReportEventEnrollmentStatus_Response", HFILL }},
9364 { &hf_mms_getEventEnrollmentAttributes_01,
9365 { "getEventEnrollmentAttributes", "mms.getEventEnrollmentAttributes_element",
9366 FT_NONE, BASE_NONE, NULL, 0,
9367 "GetEventEnrollmentAttributes_Response", HFILL }},
9368 { &hf_mms_acknowledgeEventNotification_01,
9369 { "acknowledgeEventNotification", "mms.acknowledgeEventNotification_element",
9370 FT_NONE, BASE_NONE, NULL, 0,
9371 "AcknowledgeEventNotification_Response", HFILL }},
9372 { &hf_mms_getAlarmSummary_01,
9373 { "getAlarmSummary", "mms.getAlarmSummary_element",
9374 FT_NONE, BASE_NONE, NULL, 0,
9375 "GetAlarmSummary_Response", HFILL }},
9376 { &hf_mms_getAlarmEnrollmentSummary_01,
9377 { "getAlarmEnrollmentSummary", "mms.getAlarmEnrollmentSummary_element",
9378 FT_NONE, BASE_NONE, NULL, 0,
9379 "GetAlarmEnrollmentSummary_Response", HFILL }},
9380 { &hf_mms_readJournal_01,
9381 { "readJournal", "mms.readJournal_element",
9382 FT_NONE, BASE_NONE, NULL, 0,
9383 "ReadJournal_Response", HFILL }},
9384 { &hf_mms_writeJournal_01,
9385 { "writeJournal", "mms.writeJournal_element",
9386 FT_NONE, BASE_NONE, NULL, 0,
9387 "WriteJournal_Response", HFILL }},
9388 { &hf_mms_initializeJournal_01,
9389 { "initializeJournal", "mms.initializeJournal",
9390 FT_INT32, BASE_DEC, NULL, 0,
9391 "InitializeJournal_Response", HFILL }},
9392 { &hf_mms_reportJournalStatus_01,
9393 { "reportJournalStatus", "mms.reportJournalStatus_element",
9394 FT_NONE, BASE_NONE, NULL, 0,
9395 "ReportJournalStatus_Response", HFILL }},
9396 { &hf_mms_createJournal_01,
9397 { "createJournal", "mms.createJournal_element",
9398 FT_NONE, BASE_NONE, NULL, 0,
9399 "CreateJournal_Response", HFILL }},
9400 { &hf_mms_deleteJournal_01,
9401 { "deleteJournal", "mms.deleteJournal_element",
9402 FT_NONE, BASE_NONE, NULL, 0,
9403 "DeleteJournal_Response", HFILL }},
9404 { &hf_mms_getCapabilityList_01,
9405 { "getCapabilityList", "mms.getCapabilityList_element",
9406 FT_NONE, BASE_NONE, NULL, 0,
9407 "GetCapabilityList_Response", HFILL }},
9408 { &hf_mms_fileRead_01,
9409 { "fileRead", "mms.fileRead_element",
9410 FT_NONE, BASE_NONE, NULL, 0,
9411 "FileRead_Response", HFILL }},
9412 { &hf_mms_fileClose_01,
9413 { "fileClose", "mms.fileClose_element",
9414 FT_NONE, BASE_NONE, NULL, 0,
9415 "FileClose_Response", HFILL }},
9416 { &hf_mms_fileRename_01,
9417 { "fileRename", "mms.fileRename_element",
9418 FT_NONE, BASE_NONE, NULL, 0,
9419 "FileRename_Response", HFILL }},
9420 { &hf_mms_fileDelete_01,
9421 { "fileDelete", "mms.fileDelete_element",
9422 FT_NONE, BASE_NONE, NULL, 0,
9423 "FileDelete_Response", HFILL }},
9424 { &hf_mms_fileDirectory_01,
9425 { "fileDirectory", "mms.fileDirectory_element",
9426 FT_NONE, BASE_NONE, NULL, 0,
9427 "FileDirectory_Response", HFILL }},
9428 { &hf_mms_FileName_item,
9429 { "FileName item", "mms.FileName_item",
9430 FT_STRING, BASE_NONE, NULL, 0,
9431 "GraphicString", HFILL }},
9432 { &hf_mms_vmd_specific,
9433 { "vmd-specific", "mms.vmd_specific",
9434 FT_STRING, BASE_NONE, NULL, 0,
9435 "Identifier", HFILL }},
9436 { &hf_mms_domain_specific,
9437 { "domain-specific", "mms.domain_specific_element",
9438 FT_NONE, BASE_NONE, NULL, 0,
9439 NULL, HFILL }},
9440 { &hf_mms_domainId,
9441 { "domainId", "mms.domainId",
9442 FT_STRING, BASE_NONE, NULL, 0,
9443 "Identifier", HFILL }},
9444 { &hf_mms_objectName_domain_specific_itemId,
9445 { "itemId", "mms.objectName_domain_specific_itemId",
9446 FT_STRING, BASE_NONE, NULL, 0,
9447 "ObjectName_domain_specific_itemid", HFILL }},
9448 { &hf_mms_aa_specific,
9449 { "aa-specific", "mms.aa_specific",
9450 FT_STRING, BASE_NONE, NULL, 0,
9451 "Identifier", HFILL }},
9452 { &hf_mms_ap_title,
9453 { "ap-title", "mms.ap_title",
9454 FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
9455 NULL, HFILL }},
9456 { &hf_mms_ap_invocation_id,
9457 { "ap-invocation-id", "mms.ap_invocation_id",
9458 FT_INT32, BASE_DEC, NULL, 0,
9459 NULL, HFILL }},
9460 { &hf_mms_ae_qualifier,
9461 { "ae-qualifier", "mms.ae_qualifier",
9462 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
9463 NULL, HFILL }},
9464 { &hf_mms_ae_invocation_id,
9465 { "ae-invocation-id", "mms.ae_invocation_id",
9466 FT_INT32, BASE_DEC, NULL, 0,
9467 NULL, HFILL }},
9468 { &hf_mms_localDetailCalling,
9469 { "localDetailCalling", "mms.localDetailCalling",
9470 FT_INT32, BASE_DEC, NULL, 0,
9471 "Integer32", HFILL }},
9472 { &hf_mms_proposedMaxServOutstandingCalling,
9473 { "proposedMaxServOutstandingCalling", "mms.proposedMaxServOutstandingCalling",
9474 FT_INT32, BASE_DEC, NULL, 0,
9475 "Integer16", HFILL }},
9476 { &hf_mms_proposedMaxServOutstandingCalled,
9477 { "proposedMaxServOutstandingCalled", "mms.proposedMaxServOutstandingCalled",
9478 FT_INT32, BASE_DEC, NULL, 0,
9479 "Integer16", HFILL }},
9480 { &hf_mms_proposedDataStructureNestingLevel,
9481 { "proposedDataStructureNestingLevel", "mms.proposedDataStructureNestingLevel",
9482 FT_INT32, BASE_DEC, NULL, 0,
9483 "Integer8", HFILL }},
9484 { &hf_mms_mmsInitRequestDetail,
9485 { "mmsInitRequestDetail", "mms.mmsInitRequestDetail_element",
9486 FT_NONE, BASE_NONE, NULL, 0,
9487 "InitRequestDetail", HFILL }},
9488 { &hf_mms_proposedVersionNumber,
9489 { "proposedVersionNumber", "mms.proposedVersionNumber",
9490 FT_INT32, BASE_DEC, NULL, 0,
9491 "Integer16", HFILL }},
9492 { &hf_mms_proposedParameterCBB,
9493 { "proposedParameterCBB", "mms.proposedParameterCBB",
9494 FT_BYTES, BASE_NONE, NULL, 0,
9495 "ParameterSupportOptions", HFILL }},
9496 { &hf_mms_servicesSupportedCalling,
9497 { "servicesSupportedCalling", "mms.servicesSupportedCalling",
9498 FT_BYTES, BASE_NONE, NULL, 0,
9499 "ServiceSupportOptions", HFILL }},
9500 { &hf_mms_localDetailCalled,
9501 { "localDetailCalled", "mms.localDetailCalled",
9502 FT_INT32, BASE_DEC, NULL, 0,
9503 "Integer32", HFILL }},
9504 { &hf_mms_negociatedMaxServOutstandingCalling,
9505 { "negociatedMaxServOutstandingCalling", "mms.negociatedMaxServOutstandingCalling",
9506 FT_INT32, BASE_DEC, NULL, 0,
9507 "Integer16", HFILL }},
9508 { &hf_mms_negociatedMaxServOutstandingCalled,
9509 { "negociatedMaxServOutstandingCalled", "mms.negociatedMaxServOutstandingCalled",
9510 FT_INT32, BASE_DEC, NULL, 0,
9511 "Integer16", HFILL }},
9512 { &hf_mms_negociatedDataStructureNestingLevel,
9513 { "negociatedDataStructureNestingLevel", "mms.negociatedDataStructureNestingLevel",
9514 FT_INT32, BASE_DEC, NULL, 0,
9515 "Integer8", HFILL }},
9516 { &hf_mms_mmsInitResponseDetail,
9517 { "mmsInitResponseDetail", "mms.mmsInitResponseDetail_element",
9518 FT_NONE, BASE_NONE, NULL, 0,
9519 "InitResponseDetail", HFILL }},
9520 { &hf_mms_negociatedVersionNumber,
9521 { "negociatedVersionNumber", "mms.negociatedVersionNumber",
9522 FT_INT32, BASE_DEC, NULL, 0,
9523 "Integer16", HFILL }},
9524 { &hf_mms_negociatedParameterCBB,
9525 { "negociatedParameterCBB", "mms.negociatedParameterCBB",
9526 FT_BYTES, BASE_NONE, NULL, 0,
9527 "ParameterSupportOptions", HFILL }},
9528 { &hf_mms_servicesSupportedCalled,
9529 { "servicesSupportedCalled", "mms.servicesSupportedCalled",
9530 FT_BYTES, BASE_NONE, NULL, 0,
9531 "ServiceSupportOptions", HFILL }},
9532 { &hf_mms_originalInvokeID,
9533 { "originalInvokeID", "mms.originalInvokeID",
9534 FT_INT32, BASE_DEC, NULL, 0,
9535 "Unsigned32", HFILL }},
9536 { &hf_mms_errorClass,
9537 { "errorClass", "mms.errorClass",
9538 FT_UINT32, BASE_DEC, VALS(mms_T_errorClass_vals), 0,
9539 NULL, HFILL }},
9540 { &hf_mms_vmd_state,
9541 { "vmd-state", "mms.vmd_state",
9542 FT_INT32, BASE_DEC, VALS(mms_T_vmd_state_vals), 0,
9543 NULL, HFILL }},
9544 { &hf_mms_application_reference,
9545 { "application-reference", "mms.application_reference",
9546 FT_INT32, BASE_DEC, VALS(mms_T_application_reference_vals), 0,
9547 NULL, HFILL }},
9548 { &hf_mms_definition,
9549 { "definition", "mms.definition",
9550 FT_INT32, BASE_DEC, VALS(mms_T_definition_vals), 0,
9551 NULL, HFILL }},
9552 { &hf_mms_resource,
9553 { "resource", "mms.resource",
9554 FT_INT32, BASE_DEC, VALS(mms_T_resource_vals), 0,
9555 NULL, HFILL }},
9556 { &hf_mms_service,
9557 { "service", "mms.service",
9558 FT_INT32, BASE_DEC, VALS(mms_T_service_vals), 0,
9559 NULL, HFILL }},
9560 { &hf_mms_service_preempt,
9561 { "service-preempt", "mms.service_preempt",
9562 FT_INT32, BASE_DEC, VALS(mms_T_service_preempt_vals), 0,
9563 NULL, HFILL }},
9564 { &hf_mms_time_resolution,
9565 { "time-resolution", "mms.time_resolution",
9566 FT_INT32, BASE_DEC, VALS(mms_T_time_resolution_vals), 0,
9567 NULL, HFILL }},
9568 { &hf_mms_access,
9569 { "access", "mms.access",
9570 FT_INT32, BASE_DEC, VALS(mms_T_access_vals), 0,
9571 NULL, HFILL }},
9572 { &hf_mms_initiate,
9573 { "initiate", "mms.initiate",
9574 FT_INT32, BASE_DEC, VALS(mms_T_initiate_vals), 0,
9575 NULL, HFILL }},
9576 { &hf_mms_conclude,
9577 { "conclude", "mms.conclude",
9578 FT_INT32, BASE_DEC, VALS(mms_T_conclude_vals), 0,
9579 NULL, HFILL }},
9580 { &hf_mms_cancel,
9581 { "cancel", "mms.cancel",
9582 FT_INT32, BASE_DEC, VALS(mms_T_cancel_vals), 0,
9583 NULL, HFILL }},
9584 { &hf_mms_file,
9585 { "file", "mms.file",
9586 FT_INT32, BASE_DEC, VALS(mms_T_file_vals), 0,
9587 NULL, HFILL }},
9588 { &hf_mms_others,
9589 { "others", "mms.others",
9590 FT_INT32, BASE_DEC, NULL, 0,
9591 "INTEGER", HFILL }},
9592 { &hf_mms_additionalCode,
9593 { "additionalCode", "mms.additionalCode",
9594 FT_INT32, BASE_DEC, NULL, 0,
9595 "INTEGER", HFILL }},
9596 { &hf_mms_additionalDescription,
9597 { "additionalDescription", "mms.additionalDescription",
9598 FT_STRING, BASE_NONE, NULL, 0,
9599 "VisibleString", HFILL }},
9600 { &hf_mms_serviceSpecificInformation,
9601 { "serviceSpecificInformation", "mms.serviceSpecificInformation",
9602 FT_UINT32, BASE_DEC, VALS(mms_T_serviceSpecificInformation_vals), 0,
9603 NULL, HFILL }},
9604 { &hf_mms_obtainFile_02,
9605 { "obtainFile", "mms.obtainFile",
9606 FT_INT32, BASE_DEC, VALS(mms_ObtainFile_Error_vals), 0,
9607 "ObtainFile_Error", HFILL }},
9608 { &hf_mms_start_02,
9609 { "start", "mms.start",
9610 FT_INT32, BASE_DEC, VALS(mms_ProgramInvocationState_vals), 0,
9611 "Start_Error", HFILL }},
9612 { &hf_mms_stop_02,
9613 { "stop", "mms.stop",
9614 FT_INT32, BASE_DEC, VALS(mms_ProgramInvocationState_vals), 0,
9615 "Stop_Error", HFILL }},
9616 { &hf_mms_resume_02,
9617 { "resume", "mms.resume",
9618 FT_INT32, BASE_DEC, VALS(mms_ProgramInvocationState_vals), 0,
9619 "Resume_Error", HFILL }},
9620 { &hf_mms_reset_02,
9621 { "reset", "mms.reset",
9622 FT_INT32, BASE_DEC, VALS(mms_ProgramInvocationState_vals), 0,
9623 "Reset_Error", HFILL }},
9624 { &hf_mms_deleteVariableAccess_02,
9625 { "deleteVariableAccess", "mms.deleteVariableAccess",
9626 FT_INT32, BASE_DEC, NULL, 0,
9627 "DeleteVariableAccess_Error", HFILL }},
9628 { &hf_mms_deleteNamedVariableList_02,
9629 { "deleteNamedVariableList", "mms.deleteNamedVariableList",
9630 FT_INT32, BASE_DEC, NULL, 0,
9631 "DeleteNamedVariableList_Error", HFILL }},
9632 { &hf_mms_deleteNamedType_02,
9633 { "deleteNamedType", "mms.deleteNamedType",
9634 FT_INT32, BASE_DEC, NULL, 0,
9635 "DeleteNamedType_Error", HFILL }},
9636 { &hf_mms_defineEventEnrollment_Error,
9637 { "defineEventEnrollment-Error", "mms.defineEventEnrollment_Error",
9638 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9639 NULL, HFILL }},
9640 { &hf_mms_fileRename_02,
9641 { "fileRename", "mms.fileRename",
9642 FT_INT32, BASE_DEC, VALS(mms_FileRename_Error_vals), 0,
9643 "FileRename_Error", HFILL }},
9644 { &hf_mms_additionalService,
9645 { "additionalService", "mms.additionalService",
9646 FT_UINT32, BASE_DEC, VALS(mms_AdditionalService_Error_vals), 0,
9647 "AdditionalService_Error", HFILL }},
9648 { &hf_mms_changeAccessControl,
9649 { "changeAccessControl", "mms.changeAccessControl",
9650 FT_INT32, BASE_DEC, NULL, 0,
9651 "ChangeAccessControl_Error", HFILL }},
9652 { &hf_mms_defineEcl,
9653 { "defineEcl", "mms.defineEcl",
9654 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9655 "DefineEventConditionList_Error", HFILL }},
9656 { &hf_mms_addECLReference,
9657 { "addECLReference", "mms.addECLReference",
9658 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9659 "AddEventConditionListReference_Error", HFILL }},
9660 { &hf_mms_removeECLReference,
9661 { "removeECLReference", "mms.removeECLReference",
9662 FT_UINT32, BASE_DEC, VALS(mms_RemoveEventConditionListReference_Error_vals), 0,
9663 "RemoveEventConditionListReference_Error", HFILL }},
9664 { &hf_mms_initiateUC,
9665 { "initiateUC", "mms.initiateUC",
9666 FT_UINT32, BASE_DEC, VALS(mms_InitiateUnitControl_Error_vals), 0,
9667 "InitiateUnitControl_Error", HFILL }},
9668 { &hf_mms_startUC,
9669 { "startUC", "mms.startUC_element",
9670 FT_NONE, BASE_NONE, NULL, 0,
9671 "StartUnitControl_Error", HFILL }},
9672 { &hf_mms_stopUC,
9673 { "stopUC", "mms.stopUC_element",
9674 FT_NONE, BASE_NONE, NULL, 0,
9675 "StopUnitControl_Error", HFILL }},
9676 { &hf_mms_deleteUC,
9677 { "deleteUC", "mms.deleteUC",
9678 FT_UINT32, BASE_DEC, VALS(mms_DeleteUnitControl_Error_vals), 0,
9679 "DeleteUnitControl_Error", HFILL }},
9680 { &hf_mms_loadUCFromFile,
9681 { "loadUCFromFile", "mms.loadUCFromFile",
9682 FT_UINT32, BASE_DEC, VALS(mms_LoadUnitControlFromFile_Error_vals), 0,
9683 "LoadUnitControlFromFile_Error", HFILL }},
9684 { &hf_mms_eventCondition,
9685 { "eventCondition", "mms.eventCondition",
9686 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9687 "ObjectName", HFILL }},
9688 { &hf_mms_eventConditionList,
9689 { "eventConditionList", "mms.eventConditionList",
9690 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9691 "ObjectName", HFILL }},
9692 { &hf_mms_domain,
9693 { "domain", "mms.domain",
9694 FT_STRING, BASE_NONE, NULL, 0,
9695 "Identifier", HFILL }},
9696 { &hf_mms_programInvocation,
9697 { "programInvocation", "mms.programInvocation",
9698 FT_STRING, BASE_NONE, NULL, 0,
9699 "Identifier", HFILL }},
9700 { &hf_mms_programInvocationName,
9701 { "programInvocationName", "mms.programInvocationName",
9702 FT_STRING, BASE_NONE, NULL, 0,
9703 "Identifier", HFILL }},
9704 { &hf_mms_programInvocationState,
9705 { "programInvocationState", "mms.programInvocationState",
9706 FT_INT32, BASE_DEC, VALS(mms_ProgramInvocationState_vals), 0,
9707 NULL, HFILL }},
9708 { &hf_mms_none,
9709 { "none", "mms.none_element",
9710 FT_NONE, BASE_NONE, NULL, 0,
9711 NULL, HFILL }},
9712 { &hf_mms_rejectReason,
9713 { "rejectReason", "mms.rejectReason",
9714 FT_UINT32, BASE_DEC, VALS(mms_T_rejectReason_vals), 0,
9715 NULL, HFILL }},
9716 { &hf_mms_confirmed_requestPDU,
9717 { "confirmed-requestPDU", "mms.confirmed_requestPDU",
9718 FT_INT32, BASE_DEC, VALS(mms_T_confirmed_requestPDU_vals), 0,
9719 NULL, HFILL }},
9720 { &hf_mms_confirmed_responsePDU,
9721 { "confirmed-responsePDU", "mms.confirmed_responsePDU",
9722 FT_INT32, BASE_DEC, VALS(mms_T_confirmed_responsePDU_vals), 0,
9723 NULL, HFILL }},
9724 { &hf_mms_confirmed_errorPDU,
9725 { "confirmed-errorPDU", "mms.confirmed_errorPDU",
9726 FT_INT32, BASE_DEC, VALS(mms_T_confirmed_errorPDU_vals), 0,
9727 NULL, HFILL }},
9728 { &hf_mms_unconfirmedPDU,
9729 { "unconfirmedPDU", "mms.unconfirmedPDU",
9730 FT_INT32, BASE_DEC, VALS(mms_T_unconfirmedPDU_vals), 0,
9731 NULL, HFILL }},
9732 { &hf_mms_pdu_error,
9733 { "pdu-error", "mms.pdu_error",
9734 FT_INT32, BASE_DEC, VALS(mms_T_pdu_error_vals), 0,
9735 NULL, HFILL }},
9736 { &hf_mms_cancel_requestPDU,
9737 { "cancel-requestPDU", "mms.cancel_requestPDU",
9738 FT_INT32, BASE_DEC, VALS(mms_T_cancel_requestPDU_vals), 0,
9739 NULL, HFILL }},
9740 { &hf_mms_cancel_responsePDU,
9741 { "cancel-responsePDU", "mms.cancel_responsePDU",
9742 FT_INT32, BASE_DEC, VALS(mms_T_cancel_responsePDU_vals), 0,
9743 NULL, HFILL }},
9744 { &hf_mms_cancel_errorPDU,
9745 { "cancel-errorPDU", "mms.cancel_errorPDU",
9746 FT_INT32, BASE_DEC, VALS(mms_T_cancel_errorPDU_vals), 0,
9747 NULL, HFILL }},
9748 { &hf_mms_conclude_requestPDU,
9749 { "conclude-requestPDU", "mms.conclude_requestPDU",
9750 FT_INT32, BASE_DEC, VALS(mms_T_conclude_requestPDU_vals), 0,
9751 NULL, HFILL }},
9752 { &hf_mms_conclude_responsePDU,
9753 { "conclude-responsePDU", "mms.conclude_responsePDU",
9754 FT_INT32, BASE_DEC, VALS(mms_T_conclude_responsePDU_vals), 0,
9755 NULL, HFILL }},
9756 { &hf_mms_conclude_errorPDU,
9757 { "conclude-errorPDU", "mms.conclude_errorPDU",
9758 FT_INT32, BASE_DEC, VALS(mms_T_conclude_errorPDU_vals), 0,
9759 NULL, HFILL }},
9760 { &hf_mms_vmdLogicalStatus,
9761 { "vmdLogicalStatus", "mms.vmdLogicalStatus",
9762 FT_INT32, BASE_DEC, VALS(mms_T_vmdLogicalStatus_vals), 0,
9763 NULL, HFILL }},
9764 { &hf_mms_vmdPhysicalStatus,
9765 { "vmdPhysicalStatus", "mms.vmdPhysicalStatus",
9766 FT_INT32, BASE_DEC, VALS(mms_T_vmdPhysicalStatus_vals), 0,
9767 NULL, HFILL }},
9768 { &hf_mms_localDetail,
9769 { "localDetail", "mms.localDetail",
9770 FT_BYTES, BASE_NONE, NULL, 0,
9771 "BIT_STRING_SIZE_0_128", HFILL }},
9772 { &hf_mms_vmdSpecific,
9773 { "vmdSpecific", "mms.vmdSpecific_element",
9774 FT_NONE, BASE_NONE, NULL, 0,
9775 NULL, HFILL }},
9776 { &hf_mms_domainSpecific,
9777 { "domainSpecific", "mms.domainSpecific",
9778 FT_STRING, BASE_NONE, NULL, 0,
9779 "Identifier", HFILL }},
9780 { &hf_mms_aaSpecific,
9781 { "aaSpecific", "mms.aaSpecific_element",
9782 FT_NONE, BASE_NONE, NULL, 0,
9783 NULL, HFILL }},
9784 { &hf_mms_extendedObjectClass,
9785 { "extendedObjectClass", "mms.extendedObjectClass",
9786 FT_UINT32, BASE_DEC, VALS(mms_T_extendedObjectClass_vals), 0,
9787 NULL, HFILL }},
9788 { &hf_mms_objectClass,
9789 { "objectClass", "mms.objectClass",
9790 FT_INT32, BASE_DEC, VALS(mms_ObjectClass_vals), 0,
9791 NULL, HFILL }},
9792 { &hf_mms_objectScope,
9793 { "objectScope", "mms.objectScope",
9794 FT_UINT32, BASE_DEC, VALS(mms_ObjectScope_vals), 0,
9795 NULL, HFILL }},
9796 { &hf_mms_getNameList_Request_continueAfter,
9797 { "continueAfter", "mms.getNameList-Request_continueAfter",
9798 FT_STRING, BASE_NONE, NULL, 0,
9799 "Identifier", HFILL }},
9800 { &hf_mms_listOfIdentifier,
9801 { "listOfIdentifier", "mms.listOfIdentifier",
9802 FT_UINT32, BASE_DEC, NULL, 0,
9803 "SEQUENCE_OF_Identifier", HFILL }},
9804 { &hf_mms_listOfIdentifier_item,
9805 { "Identifier", "mms.Identifier",
9806 FT_STRING, BASE_NONE, NULL, 0,
9807 NULL, HFILL }},
9808 { &hf_mms_moreFollows,
9809 { "moreFollows", "mms.moreFollows",
9810 FT_BOOLEAN, BASE_NONE, NULL, 0,
9811 "BOOLEAN", HFILL }},
9812 { &hf_mms_vendorName,
9813 { "vendorName", "mms.vendorName",
9814 FT_STRING, BASE_NONE, NULL, 0,
9815 "VisibleString", HFILL }},
9816 { &hf_mms_modelName,
9817 { "modelName", "mms.modelName",
9818 FT_STRING, BASE_NONE, NULL, 0,
9819 "VisibleString", HFILL }},
9820 { &hf_mms_revision,
9821 { "revision", "mms.revision",
9822 FT_STRING, BASE_NONE, NULL, 0,
9823 "VisibleString", HFILL }},
9824 { &hf_mms_listOfAbstractSyntaxes,
9825 { "listOfAbstractSyntaxes", "mms.listOfAbstractSyntaxes",
9826 FT_UINT32, BASE_DEC, NULL, 0,
9827 NULL, HFILL }},
9828 { &hf_mms_listOfAbstractSyntaxes_item,
9829 { "listOfAbstractSyntaxes item", "mms.listOfAbstractSyntaxes_item",
9830 FT_OID, BASE_NONE, NULL, 0,
9831 "OBJECT_IDENTIFIER", HFILL }},
9832 { &hf_mms_extendedObjectClass_01,
9833 { "extendedObjectClass", "mms.extendedObjectClass",
9834 FT_UINT32, BASE_DEC, VALS(mms_T_extendedObjectClass_01_vals), 0,
9835 "T_extendedObjectClass_01", HFILL }},
9836 { &hf_mms_objectClass_01,
9837 { "objectClass", "mms.objectClass",
9838 FT_INT32, BASE_DEC, VALS(mms_T_objectClass_vals), 0,
9839 NULL, HFILL }},
9840 { &hf_mms_currentName,
9841 { "currentName", "mms.currentName",
9842 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
9843 "ObjectName", HFILL }},
9844 { &hf_mms_newIdentifier,
9845 { "newIdentifier", "mms.newIdentifier",
9846 FT_STRING, BASE_NONE, NULL, 0,
9847 "Identifier", HFILL }},
9848 { &hf_mms_getCapabilityList_Request_continueAfter,
9849 { "continueAfter", "mms.getCapabilityList-Request_continueAfter",
9850 FT_STRING, BASE_NONE, NULL, 0,
9851 "VisibleString", HFILL }},
9852 { &hf_mms_listOfCapabilities,
9853 { "listOfCapabilities", "mms.listOfCapabilities",
9854 FT_UINT32, BASE_DEC, NULL, 0,
9855 NULL, HFILL }},
9856 { &hf_mms_listOfCapabilities_item,
9857 { "listOfCapabilities item", "mms.listOfCapabilities_item",
9858 FT_STRING, BASE_NONE, NULL, 0,
9859 "VisibleString", HFILL }},
9860 { &hf_mms_domainName,
9861 { "domainName", "mms.domainName",
9862 FT_STRING, BASE_NONE, NULL, 0,
9863 "Identifier", HFILL }},
9864 { &hf_mms_listOfCapabilities_01,
9865 { "listOfCapabilities", "mms.listOfCapabilities",
9866 FT_UINT32, BASE_DEC, NULL, 0,
9867 "T_listOfCapabilities_01", HFILL }},
9868 { &hf_mms_sharable,
9869 { "sharable", "mms.sharable",
9870 FT_BOOLEAN, BASE_NONE, NULL, 0,
9871 "BOOLEAN", HFILL }},
9872 { &hf_mms_loadData,
9873 { "loadData", "mms.loadData",
9874 FT_UINT32, BASE_DEC, VALS(mms_T_loadData_vals), 0,
9875 NULL, HFILL }},
9876 { &hf_mms_non_coded,
9877 { "non-coded", "mms.non_coded",
9878 FT_BYTES, BASE_NONE, NULL, 0,
9879 "OCTET_STRING", HFILL }},
9880 { &hf_mms_coded,
9881 { "coded", "mms.coded_element",
9882 FT_NONE, BASE_NONE, NULL, 0,
9883 "EXTERNALt", HFILL }},
9884 { &hf_mms_discard,
9885 { "discard", "mms.discard_element",
9886 FT_NONE, BASE_NONE, NULL, 0,
9887 "ServiceError", HFILL }},
9888 { &hf_mms_ulsmID,
9889 { "ulsmID", "mms.ulsmID",
9890 FT_INT32, BASE_DEC, NULL, 0,
9891 "Integer32", HFILL }},
9892 { &hf_mms_listOfCapabilities_02,
9893 { "listOfCapabilities", "mms.listOfCapabilities",
9894 FT_UINT32, BASE_DEC, NULL, 0,
9895 "T_listOfCapabilities_02", HFILL }},
9896 { &hf_mms_loadData_01,
9897 { "loadData", "mms.loadData",
9898 FT_UINT32, BASE_DEC, VALS(mms_T_loadData_01_vals), 0,
9899 "T_loadData_01", HFILL }},
9900 { &hf_mms_listOfCapabilities_03,
9901 { "listOfCapabilities", "mms.listOfCapabilities",
9902 FT_UINT32, BASE_DEC, NULL, 0,
9903 "T_listOfCapabilities_03", HFILL }},
9904 { &hf_mms_fileName,
9905 { "fileName", "mms.fileName",
9906 FT_UINT32, BASE_DEC, NULL, 0,
9907 NULL, HFILL }},
9908 { &hf_mms_listOfCapabilities_04,
9909 { "listOfCapabilities", "mms.listOfCapabilities",
9910 FT_UINT32, BASE_DEC, NULL, 0,
9911 "T_listOfCapabilities_04", HFILL }},
9912 { &hf_mms_thirdParty,
9913 { "thirdParty", "mms.thirdParty_element",
9914 FT_NONE, BASE_NONE, NULL, 0,
9915 "ApplicationReference", HFILL }},
9916 { &hf_mms_filenName,
9917 { "filenName", "mms.filenName",
9918 FT_UINT32, BASE_DEC, NULL, 0,
9919 "FileName", HFILL }},
9920 { &hf_mms_listOfCapabilities_05,
9921 { "listOfCapabilities", "mms.listOfCapabilities",
9922 FT_UINT32, BASE_DEC, NULL, 0,
9923 "T_listOfCapabilities_05", HFILL }},
9924 { &hf_mms_getDomainAttributes_Response_state,
9925 { "state", "mms.getDomainAttributes-Response_state",
9926 FT_INT32, BASE_DEC, VALS(mms_DomainState_vals), 0,
9927 "DomainState", HFILL }},
9928 { &hf_mms_mmsDeletable,
9929 { "mmsDeletable", "mms.mmsDeletable",
9930 FT_BOOLEAN, BASE_NONE, NULL, 0,
9931 "BOOLEAN", HFILL }},
9932 { &hf_mms_listOfProgramInvocations,
9933 { "listOfProgramInvocations", "mms.listOfProgramInvocations",
9934 FT_UINT32, BASE_DEC, NULL, 0,
9935 "SEQUENCE_OF_Identifier", HFILL }},
9936 { &hf_mms_listOfProgramInvocations_item,
9937 { "Identifier", "mms.Identifier",
9938 FT_STRING, BASE_NONE, NULL, 0,
9939 NULL, HFILL }},
9940 { &hf_mms_uploadInProgress,
9941 { "uploadInProgress", "mms.uploadInProgress",
9942 FT_INT32, BASE_DEC, NULL, 0,
9943 "Integer8", HFILL }},
9944 { &hf_mms_listOfDomainName,
9945 { "listOfDomainName", "mms.listOfDomainName",
9946 FT_UINT32, BASE_DEC, NULL, 0,
9947 "SEQUENCE_OF_Identifier", HFILL }},
9948 { &hf_mms_listOfDomainName_item,
9949 { "Identifier", "mms.Identifier",
9950 FT_STRING, BASE_NONE, NULL, 0,
9951 NULL, HFILL }},
9952 { &hf_mms_reusable,
9953 { "reusable", "mms.reusable",
9954 FT_BOOLEAN, BASE_NONE, NULL, 0,
9955 "BOOLEAN", HFILL }},
9956 { &hf_mms_monitorType,
9957 { "monitorType", "mms.monitorType",
9958 FT_BOOLEAN, BASE_NONE, NULL, 0,
9959 "BOOLEAN", HFILL }},
9960 { &hf_mms_executionArgument,
9961 { "executionArgument", "mms.executionArgument",
9962 FT_UINT32, BASE_DEC, VALS(mms_T_executionArgument_vals), 0,
9963 NULL, HFILL }},
9964 { &hf_mms_simpleString,
9965 { "simpleString", "mms.simpleString",
9966 FT_STRING, BASE_NONE, NULL, 0,
9967 "VisibleString", HFILL }},
9968 { &hf_mms_encodedString,
9969 { "encodedString", "mms.encodedString_element",
9970 FT_NONE, BASE_NONE, NULL, 0,
9971 "EXTERNALt", HFILL }},
9972 { &hf_mms_executionArgument_01,
9973 { "executionArgument", "mms.executionArgument",
9974 FT_UINT32, BASE_DEC, VALS(mms_T_executionArgument_01_vals), 0,
9975 "T_executionArgument_01", HFILL }},
9976 { &hf_mms_getProgramInvocationAttributes_Response_state,
9977 { "state", "mms.getProgramInvocationAttributes-Response_state",
9978 FT_INT32, BASE_DEC, VALS(mms_ProgramInvocationState_vals), 0,
9979 "ProgramInvocationState", HFILL }},
9980 { &hf_mms_listOfDomainNames,
9981 { "listOfDomainNames", "mms.listOfDomainNames",
9982 FT_UINT32, BASE_DEC, NULL, 0,
9983 "SEQUENCE_OF_Identifier", HFILL }},
9984 { &hf_mms_listOfDomainNames_item,
9985 { "Identifier", "mms.Identifier",
9986 FT_STRING, BASE_NONE, NULL, 0,
9987 NULL, HFILL }},
9988 { &hf_mms_monitor,
9989 { "monitor", "mms.monitor",
9990 FT_BOOLEAN, BASE_NONE, NULL, 0,
9991 "BOOLEAN", HFILL }},
9992 { &hf_mms_startArgument,
9993 { "startArgument", "mms.startArgument",
9994 FT_STRING, BASE_NONE, NULL, 0,
9995 "VisibleString", HFILL }},
9996 { &hf_mms_executionArgument_02,
9997 { "executionArgument", "mms.executionArgument",
9998 FT_UINT32, BASE_DEC, VALS(mms_T_executionArgument_02_vals), 0,
9999 "T_executionArgument_02", HFILL }},
10000 { &hf_mms_typeName,
10001 { "typeName", "mms.typeName",
10002 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10003 "ObjectName", HFILL }},
10004 { &hf_mms_array,
10005 { "array", "mms.array_element",
10006 FT_NONE, BASE_NONE, NULL, 0,
10007 NULL, HFILL }},
10008 { &hf_mms_packed,
10009 { "packed", "mms.packed",
10010 FT_BOOLEAN, BASE_NONE, NULL, 0,
10011 "BOOLEAN", HFILL }},
10012 { &hf_mms_numberOfElements,
10013 { "numberOfElements", "mms.numberOfElements",
10014 FT_INT32, BASE_DEC, NULL, 0,
10015 "Unsigned32", HFILL }},
10016 { &hf_mms_elementType,
10017 { "elementType", "mms.elementType",
10018 FT_UINT32, BASE_DEC, VALS(mms_TypeSpecification_vals), 0,
10019 "TypeSpecification", HFILL }},
10020 { &hf_mms_structure,
10021 { "structure", "mms.structure_element",
10022 FT_NONE, BASE_NONE, NULL, 0,
10023 NULL, HFILL }},
10024 { &hf_mms_components,
10025 { "components", "mms.components",
10026 FT_UINT32, BASE_DEC, NULL, 0,
10027 NULL, HFILL }},
10028 { &hf_mms_components_item,
10029 { "components item", "mms.components_item_element",
10030 FT_NONE, BASE_NONE, NULL, 0,
10031 NULL, HFILL }},
10032 { &hf_mms_componentName,
10033 { "componentName", "mms.componentName",
10034 FT_STRING, BASE_NONE, NULL, 0,
10035 "Identifier", HFILL }},
10036 { &hf_mms_componentType,
10037 { "componentType", "mms.componentType",
10038 FT_UINT32, BASE_DEC, VALS(mms_TypeSpecification_vals), 0,
10039 "TypeSpecification", HFILL }},
10040 { &hf_mms_boolean,
10041 { "boolean", "mms.boolean_element",
10042 FT_NONE, BASE_NONE, NULL, 0,
10043 NULL, HFILL }},
10044 { &hf_mms_typeSpecification_bit_string,
10045 { "bit-string", "mms.typeSpecification_bit-string",
10046 FT_INT32, BASE_DEC, NULL, 0,
10047 "Integer32", HFILL }},
10048 { &hf_mms_integer,
10049 { "integer", "mms.integer",
10050 FT_INT32, BASE_DEC, NULL, 0,
10051 "Unsigned8", HFILL }},
10052 { &hf_mms_unsigned,
10053 { "unsigned", "mms.unsigned",
10054 FT_INT32, BASE_DEC, NULL, 0,
10055 "Unsigned8", HFILL }},
10056 { &hf_mms_typeSpecification_octet_string,
10057 { "octet-string", "mms.typeSpecification.octet-string",
10058 FT_INT32, BASE_DEC, NULL, 0,
10059 "Integer32", HFILL }},
10060 { &hf_mms_typeSpecification_visible_string,
10061 { "visible-string", "mms.typeSpecification.visible-string",
10062 FT_INT32, BASE_DEC, NULL, 0,
10063 "Integer32", HFILL }},
10064 { &hf_mms_generalized_time,
10065 { "generalized-time", "mms.generalized_time_element",
10066 FT_NONE, BASE_NONE, NULL, 0,
10067 NULL, HFILL }},
10068 { &hf_mms_typeSpecification_binary_time,
10069 { "binary-time", "mms.typeSpecification.binary-time",
10070 FT_BOOLEAN, BASE_NONE, NULL, 0,
10071 "BOOLEAN", HFILL }},
10072 { &hf_mms_bcd,
10073 { "bcd", "mms.bcd",
10074 FT_INT32, BASE_DEC, NULL, 0,
10075 "Unsigned8", HFILL }},
10076 { &hf_mms_objId,
10077 { "objId", "mms.objId_element",
10078 FT_NONE, BASE_NONE, NULL, 0,
10079 NULL, HFILL }},
10080 { &hf_mms_AlternateAccess_item,
10081 { "AlternateAccess item", "mms.AlternateAccess_item",
10082 FT_UINT32, BASE_DEC, VALS(mms_AlternateAccess_item_vals), 0,
10083 NULL, HFILL }},
10084 { &hf_mms_unnamed,
10085 { "unnamed", "mms.unnamed",
10086 FT_UINT32, BASE_DEC, VALS(mms_AlternateAccessSelection_vals), 0,
10087 "AlternateAccessSelection", HFILL }},
10088 { &hf_mms_named,
10089 { "named", "mms.named_element",
10090 FT_NONE, BASE_NONE, NULL, 0,
10091 NULL, HFILL }},
10092 { &hf_mms_accesst,
10093 { "accesst", "mms.accesst",
10094 FT_UINT32, BASE_DEC, VALS(mms_AlternateAccessSelection_vals), 0,
10095 "AlternateAccessSelection", HFILL }},
10096 { &hf_mms_selectAlternateAccess,
10097 { "selectAlternateAccess", "mms.selectAlternateAccess_element",
10098 FT_NONE, BASE_NONE, NULL, 0,
10099 NULL, HFILL }},
10100 { &hf_mms_accessSelection,
10101 { "accessSelection", "mms.accessSelection",
10102 FT_UINT32, BASE_DEC, VALS(mms_T_accessSelection_vals), 0,
10103 NULL, HFILL }},
10104 { &hf_mms_component,
10105 { "component", "mms.component",
10106 FT_STRING, BASE_NONE, NULL, 0,
10107 "Identifier", HFILL }},
10108 { &hf_mms_index,
10109 { "index", "mms.index",
10110 FT_INT32, BASE_DEC, NULL, 0,
10111 "Unsigned32", HFILL }},
10112 { &hf_mms_indexRange,
10113 { "indexRange", "mms.indexRange_element",
10114 FT_NONE, BASE_NONE, NULL, 0,
10115 NULL, HFILL }},
10116 { &hf_mms_lowIndex,
10117 { "lowIndex", "mms.lowIndex",
10118 FT_INT32, BASE_DEC, NULL, 0,
10119 "Unsigned32", HFILL }},
10120 { &hf_mms_allElements,
10121 { "allElements", "mms.allElements_element",
10122 FT_NONE, BASE_NONE, NULL, 0,
10123 NULL, HFILL }},
10124 { &hf_mms_alternateAccess,
10125 { "alternateAccess", "mms.alternateAccess",
10126 FT_UINT32, BASE_DEC, NULL, 0,
10127 NULL, HFILL }},
10128 { &hf_mms_selectAccess,
10129 { "selectAccess", "mms.selectAccess",
10130 FT_UINT32, BASE_DEC, VALS(mms_T_selectAccess_vals), 0,
10131 NULL, HFILL }},
10132 { &hf_mms_indexRange_01,
10133 { "indexRange", "mms.indexRange_element",
10134 FT_NONE, BASE_NONE, NULL, 0,
10135 "T_indexRange_01", HFILL }},
10136 { &hf_mms_nmberOfElements,
10137 { "nmberOfElements", "mms.nmberOfElements",
10138 FT_INT32, BASE_DEC, NULL, 0,
10139 "Unsigned32", HFILL }},
10140 { &hf_mms_specificationWithResult,
10141 { "specificationWithResult", "mms.specificationWithResult",
10142 FT_BOOLEAN, BASE_NONE, NULL, 0,
10143 "BOOLEAN", HFILL }},
10144 { &hf_mms_variableAccessSpecificatn,
10145 { "variableAccessSpecificatn", "mms.variableAccessSpecificatn",
10146 FT_UINT32, BASE_DEC, VALS(mms_VariableAccessSpecification_vals), 0,
10147 "VariableAccessSpecification", HFILL }},
10148 { &hf_mms_listOfAccessResult,
10149 { "listOfAccessResult", "mms.listOfAccessResult",
10150 FT_UINT32, BASE_DEC, NULL, 0,
10151 "SEQUENCE_OF_AccessResult", HFILL }},
10152 { &hf_mms_listOfAccessResult_item,
10153 { "AccessResult", "mms.AccessResult",
10154 FT_UINT32, BASE_DEC, VALS(mms_AccessResult_vals), 0,
10155 NULL, HFILL }},
10156 { &hf_mms_listOfData,
10157 { "listOfData", "mms.listOfData",
10158 FT_UINT32, BASE_DEC, NULL, 0,
10159 NULL, HFILL }},
10160 { &hf_mms_listOfData_item,
10161 { "Data", "mms.Data",
10162 FT_UINT32, BASE_DEC, VALS(mms_Data_vals), 0,
10163 NULL, HFILL }},
10164 { &hf_mms_Write_Response_item,
10165 { "Write-Response item", "mms.Write_Response_item",
10166 FT_UINT32, BASE_DEC, VALS(mms_Write_Response_item_vals), 0,
10167 NULL, HFILL }},
10168 { &hf_mms_failure,
10169 { "failure", "mms.failure",
10170 FT_INT32, BASE_DEC, VALS(mms_DataAccessError_vals), 0,
10171 "DataAccessError", HFILL }},
10172 { &hf_mms_success,
10173 { "success", "mms.success_element",
10174 FT_NONE, BASE_NONE, NULL, 0,
10175 NULL, HFILL }},
10176 { &hf_mms_variableAccessSpecification,
10177 { "variableAccessSpecification", "mms.variableAccessSpecification",
10178 FT_UINT32, BASE_DEC, VALS(mms_VariableAccessSpecification_vals), 0,
10179 NULL, HFILL }},
10180 { &hf_mms_listOfAccessResult_01,
10181 { "listOfAccessResult", "mms.listOfAccessResult",
10182 FT_UINT32, BASE_DEC, NULL, 0,
10183 NULL, HFILL }},
10184 { &hf_mms_name,
10185 { "name", "mms.name",
10186 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10187 "ObjectName", HFILL }},
10188 { &hf_mms_address,
10189 { "address", "mms.address",
10190 FT_UINT32, BASE_DEC, VALS(mms_Address_vals), 0,
10191 NULL, HFILL }},
10192 { &hf_mms_typeSpecification,
10193 { "typeSpecification", "mms.typeSpecification",
10194 FT_UINT32, BASE_DEC, VALS(mms_TypeSpecification_vals), 0,
10195 NULL, HFILL }},
10196 { &hf_mms_variableName,
10197 { "variableName", "mms.variableName",
10198 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10199 "ObjectName", HFILL }},
10200 { &hf_mms_scatteredAccessName,
10201 { "scatteredAccessName", "mms.scatteredAccessName",
10202 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10203 "ObjectName", HFILL }},
10204 { &hf_mms_scatteredAccessDescription,
10205 { "scatteredAccessDescription", "mms.scatteredAccessDescription",
10206 FT_UINT32, BASE_DEC, NULL, 0,
10207 NULL, HFILL }},
10208 { &hf_mms_scopeOfDelete,
10209 { "scopeOfDelete", "mms.scopeOfDelete",
10210 FT_INT32, BASE_DEC, VALS(mms_T_scopeOfDelete_vals), 0,
10211 NULL, HFILL }},
10212 { &hf_mms_listOfName,
10213 { "listOfName", "mms.listOfName",
10214 FT_UINT32, BASE_DEC, NULL, 0,
10215 "SEQUENCE_OF_ObjectName", HFILL }},
10216 { &hf_mms_listOfName_item,
10217 { "ObjectName", "mms.ObjectName",
10218 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10219 NULL, HFILL }},
10220 { &hf_mms_numberMatched,
10221 { "numberMatched", "mms.numberMatched",
10222 FT_INT32, BASE_DEC, NULL, 0,
10223 "Unsigned32", HFILL }},
10224 { &hf_mms_numberDeleted,
10225 { "numberDeleted", "mms.numberDeleted",
10226 FT_INT32, BASE_DEC, NULL, 0,
10227 "Unsigned32", HFILL }},
10228 { &hf_mms_variableListName,
10229 { "variableListName", "mms.variableListName",
10230 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10231 "ObjectName", HFILL }},
10232 { &hf_mms_listOfVariable,
10233 { "listOfVariable", "mms.listOfVariable",
10234 FT_UINT32, BASE_DEC, NULL, 0,
10235 NULL, HFILL }},
10236 { &hf_mms_listOfVariable_item,
10237 { "listOfVariable item", "mms.listOfVariable_item_element",
10238 FT_NONE, BASE_NONE, NULL, 0,
10239 NULL, HFILL }},
10240 { &hf_mms_variableSpecification,
10241 { "variableSpecification", "mms.variableSpecification",
10242 FT_UINT32, BASE_DEC, VALS(mms_VariableSpecification_vals), 0,
10243 NULL, HFILL }},
10244 { &hf_mms_listOfVariable_01,
10245 { "listOfVariable", "mms.listOfVariable",
10246 FT_UINT32, BASE_DEC, NULL, 0,
10247 "T_listOfVariable_01", HFILL }},
10248 { &hf_mms_listOfVariable_item_01,
10249 { "listOfVariable item", "mms.listOfVariable_item_element",
10250 FT_NONE, BASE_NONE, NULL, 0,
10251 "T_listOfVariable_item_01", HFILL }},
10252 { &hf_mms_scopeOfDelete_01,
10253 { "scopeOfDelete", "mms.scopeOfDelete",
10254 FT_INT32, BASE_DEC, VALS(mms_T_scopeOfDelete_01_vals), 0,
10255 "T_scopeOfDelete_01", HFILL }},
10256 { &hf_mms_listOfVariableListName,
10257 { "listOfVariableListName", "mms.listOfVariableListName",
10258 FT_UINT32, BASE_DEC, NULL, 0,
10259 "SEQUENCE_OF_ObjectName", HFILL }},
10260 { &hf_mms_listOfVariableListName_item,
10261 { "ObjectName", "mms.ObjectName",
10262 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10263 NULL, HFILL }},
10264 { &hf_mms_scopeOfDelete_02,
10265 { "scopeOfDelete", "mms.scopeOfDelete",
10266 FT_INT32, BASE_DEC, VALS(mms_T_scopeOfDelete_02_vals), 0,
10267 "T_scopeOfDelete_02", HFILL }},
10268 { &hf_mms_listOfTypeName,
10269 { "listOfTypeName", "mms.listOfTypeName",
10270 FT_UINT32, BASE_DEC, NULL, 0,
10271 "SEQUENCE_OF_ObjectName", HFILL }},
10272 { &hf_mms_listOfTypeName_item,
10273 { "ObjectName", "mms.ObjectName",
10274 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10275 NULL, HFILL }},
10276 { &hf_mms_success_01,
10277 { "success", "mms.success",
10278 FT_UINT32, BASE_DEC, VALS(mms_Data_vals), 0,
10279 "Data", HFILL }},
10280 { &hf_mms_array_01,
10281 { "array", "mms.array",
10282 FT_UINT32, BASE_DEC, NULL, 0,
10283 "SEQUENCE_OF_Data", HFILL }},
10284 { &hf_mms_array_item,
10285 { "Data", "mms.Data",
10286 FT_UINT32, BASE_DEC, VALS(mms_Data_vals), 0,
10287 NULL, HFILL }},
10288 { &hf_mms_structure_01,
10289 { "structure", "mms.structure",
10290 FT_UINT32, BASE_DEC, NULL, 0,
10291 "T_structure_01", HFILL }},
10292 { &hf_mms_structure_item,
10293 { "Data", "mms.Data",
10294 FT_UINT32, BASE_DEC, VALS(mms_Data_vals), 0,
10295 NULL, HFILL }},
10296 { &hf_mms_boolean_01,
10297 { "boolean", "mms.boolean",
10298 FT_BOOLEAN, BASE_NONE, NULL, 0,
10299 NULL, HFILL }},
10300 { &hf_mms_data_bit_string,
10301 { "bit-string", "mms.data_bit-string",
10302 FT_BYTES, BASE_NONE, NULL, 0,
10303 "T_data_bit_string", HFILL }},
10304 { &hf_mms_integer_01,
10305 { "integer", "mms.integer",
10306 FT_INT32, BASE_DEC, NULL, 0,
10307 NULL, HFILL }},
10308 { &hf_mms_unsigned_01,
10309 { "unsigned", "mms.unsigned",
10310 FT_INT32, BASE_DEC, NULL, 0,
10311 NULL, HFILL }},
10312 { &hf_mms_floating_point,
10313 { "floating-point", "mms.floating_point",
10314 FT_BYTES, BASE_NONE, NULL, 0,
10315 "FloatingPoint", HFILL }},
10316 { &hf_mms_data_octet_string,
10317 { "octet-string", "mms.data.octet-string",
10318 FT_BYTES, BASE_NONE, NULL, 0,
10319 "T_data_octet_string", HFILL }},
10320 { &hf_mms_data_visible_string,
10321 { "visible-string", "mms.data.visible-string",
10322 FT_STRING, BASE_NONE, NULL, 0,
10323 "T_data_visible_string", HFILL }},
10324 { &hf_mms_data_binary_time,
10325 { "binary-time", "mms.data.binary-time",
10326 FT_STRING, BASE_NONE, NULL, 0,
10327 "T_data_binary_time", HFILL }},
10328 { &hf_mms_bcd_01,
10329 { "bcd", "mms.bcd",
10330 FT_INT32, BASE_DEC, NULL, 0,
10331 "INTEGER", HFILL }},
10332 { &hf_mms_booleanArray,
10333 { "booleanArray", "mms.booleanArray",
10334 FT_BYTES, BASE_NONE, NULL, 0,
10335 "BIT_STRING", HFILL }},
10336 { &hf_mms_objId_01,
10337 { "objId", "mms.objId",
10338 FT_OID, BASE_NONE, NULL, 0,
10339 "OBJECT_IDENTIFIER", HFILL }},
10340 { &hf_mms_mMSString,
10341 { "mMSString", "mms.mMSString",
10342 FT_STRING, BASE_NONE, NULL, 0,
10343 NULL, HFILL }},
10344 { &hf_mms_utc_time,
10345 { "utc-time", "mms.utc_time",
10346 FT_STRING, BASE_NONE, NULL, 0,
10347 "UtcTime", HFILL }},
10348 { &hf_mms_listOfVariable_02,
10349 { "listOfVariable", "mms.listOfVariable",
10350 FT_UINT32, BASE_DEC, NULL, 0,
10351 "T_listOfVariable_02", HFILL }},
10352 { &hf_mms_listOfVariable_item_02,
10353 { "listOfVariable item", "mms.listOfVariable_item_element",
10354 FT_NONE, BASE_NONE, NULL, 0,
10355 "T_listOfVariable_item_02", HFILL }},
10356 { &hf_mms_ScatteredAccessDescription_item,
10357 { "ScatteredAccessDescription item", "mms.ScatteredAccessDescription_item_element",
10358 FT_NONE, BASE_NONE, NULL, 0,
10359 NULL, HFILL }},
10360 { &hf_mms_variableDescription,
10361 { "variableDescription", "mms.variableDescription_element",
10362 FT_NONE, BASE_NONE, NULL, 0,
10363 NULL, HFILL }},
10364 { &hf_mms_invalidated,
10365 { "invalidated", "mms.invalidated_element",
10366 FT_NONE, BASE_NONE, NULL, 0,
10367 NULL, HFILL }},
10368 { &hf_mms_numericAddress,
10369 { "numericAddress", "mms.numericAddress",
10370 FT_INT32, BASE_DEC, NULL, 0,
10371 "Unsigned32", HFILL }},
10372 { &hf_mms_symbolicAddress,
10373 { "symbolicAddress", "mms.symbolicAddress",
10374 FT_STRING, BASE_NONE, NULL, 0,
10375 "VisibleString", HFILL }},
10376 { &hf_mms_unconstrainedAddress,
10377 { "unconstrainedAddress", "mms.unconstrainedAddress",
10378 FT_BYTES, BASE_NONE, NULL, 0,
10379 "OCTET_STRING", HFILL }},
10380 { &hf_mms_semaphoreName,
10381 { "semaphoreName", "mms.semaphoreName",
10382 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10383 "ObjectName", HFILL }},
10384 { &hf_mms_namedToken,
10385 { "namedToken", "mms.namedToken",
10386 FT_STRING, BASE_NONE, NULL, 0,
10387 "Identifier", HFILL }},
10388 { &hf_mms_priority,
10389 { "priority", "mms.priority",
10390 FT_INT32, BASE_DEC, NULL, 0,
10391 NULL, HFILL }},
10392 { &hf_mms_acceptableDelay,
10393 { "acceptableDelay", "mms.acceptableDelay",
10394 FT_INT32, BASE_DEC, NULL, 0,
10395 "Unsigned32", HFILL }},
10396 { &hf_mms_controlTimeOut,
10397 { "controlTimeOut", "mms.controlTimeOut",
10398 FT_INT32, BASE_DEC, NULL, 0,
10399 "Unsigned32", HFILL }},
10400 { &hf_mms_abortOnTimeOut,
10401 { "abortOnTimeOut", "mms.abortOnTimeOut",
10402 FT_BOOLEAN, BASE_NONE, NULL, 0,
10403 "BOOLEAN", HFILL }},
10404 { &hf_mms_relinquishIfConnectionLost,
10405 { "relinquishIfConnectionLost", "mms.relinquishIfConnectionLost",
10406 FT_BOOLEAN, BASE_NONE, NULL, 0,
10407 "BOOLEAN", HFILL }},
10408 { &hf_mms_applicationToPreempt,
10409 { "applicationToPreempt", "mms.applicationToPreempt_element",
10410 FT_NONE, BASE_NONE, NULL, 0,
10411 "ApplicationReference", HFILL }},
10412 { &hf_mms_noResult,
10413 { "noResult", "mms.noResult_element",
10414 FT_NONE, BASE_NONE, NULL, 0,
10415 NULL, HFILL }},
10416 { &hf_mms_numbersOfTokens,
10417 { "numbersOfTokens", "mms.numbersOfTokens",
10418 FT_INT32, BASE_DEC, NULL, 0,
10419 "Unsigned16", HFILL }},
10420 { &hf_mms_class,
10421 { "class", "mms.class",
10422 FT_INT32, BASE_DEC, VALS(mms_T_class_vals), 0,
10423 NULL, HFILL }},
10424 { &hf_mms_numberOfTokens,
10425 { "numberOfTokens", "mms.numberOfTokens",
10426 FT_INT32, BASE_DEC, NULL, 0,
10427 "Unsigned16", HFILL }},
10428 { &hf_mms_numberOfOwnedTokens,
10429 { "numberOfOwnedTokens", "mms.numberOfOwnedTokens",
10430 FT_INT32, BASE_DEC, NULL, 0,
10431 "Unsigned16", HFILL }},
10432 { &hf_mms_numberOfHungTokens,
10433 { "numberOfHungTokens", "mms.numberOfHungTokens",
10434 FT_INT32, BASE_DEC, NULL, 0,
10435 "Unsigned16", HFILL }},
10436 { &hf_mms_nameToStartAfter,
10437 { "nameToStartAfter", "mms.nameToStartAfter",
10438 FT_STRING, BASE_NONE, NULL, 0,
10439 "Identifier", HFILL }},
10440 { &hf_mms_listOfNamedTokens,
10441 { "listOfNamedTokens", "mms.listOfNamedTokens",
10442 FT_UINT32, BASE_DEC, NULL, 0,
10443 NULL, HFILL }},
10444 { &hf_mms_listOfNamedTokens_item,
10445 { "listOfNamedTokens item", "mms.listOfNamedTokens_item",
10446 FT_UINT32, BASE_DEC, VALS(mms_T_listOfNamedTokens_item_vals), 0,
10447 NULL, HFILL }},
10448 { &hf_mms_freeNamedToken,
10449 { "freeNamedToken", "mms.freeNamedToken",
10450 FT_STRING, BASE_NONE, NULL, 0,
10451 "Identifier", HFILL }},
10452 { &hf_mms_ownedNamedToken,
10453 { "ownedNamedToken", "mms.ownedNamedToken",
10454 FT_STRING, BASE_NONE, NULL, 0,
10455 "Identifier", HFILL }},
10456 { &hf_mms_hungNamedToken,
10457 { "hungNamedToken", "mms.hungNamedToken",
10458 FT_STRING, BASE_NONE, NULL, 0,
10459 "Identifier", HFILL }},
10460 { &hf_mms_reportSemaphoreEntryStatus_Request_state,
10461 { "state", "mms.reportSemaphoreEntryStatus-Request_state",
10462 FT_INT32, BASE_DEC, VALS(mms_T_reportSemaphoreEntryStatus_Request_state_vals), 0,
10463 "T_reportSemaphoreEntryStatus_Request_state", HFILL }},
10464 { &hf_mms_entryIdToStartAfter,
10465 { "entryIdToStartAfter", "mms.entryIdToStartAfter",
10466 FT_BYTES, BASE_NONE, NULL, 0,
10467 "OCTET_STRING", HFILL }},
10468 { &hf_mms_listOfSemaphoreEntry,
10469 { "listOfSemaphoreEntry", "mms.listOfSemaphoreEntry",
10470 FT_UINT32, BASE_DEC, NULL, 0,
10471 "SEQUENCE_OF_SemaphoreEntry", HFILL }},
10472 { &hf_mms_listOfSemaphoreEntry_item,
10473 { "SemaphoreEntry", "mms.SemaphoreEntry_element",
10474 FT_NONE, BASE_NONE, NULL, 0,
10475 NULL, HFILL }},
10476 { &hf_mms_entryId,
10477 { "entryId", "mms.entryId",
10478 FT_BYTES, BASE_NONE, NULL, 0,
10479 "OCTET_STRING", HFILL }},
10480 { &hf_mms_entryClass,
10481 { "entryClass", "mms.entryClass",
10482 FT_INT32, BASE_DEC, VALS(mms_T_entryClass_vals), 0,
10483 NULL, HFILL }},
10484 { &hf_mms_applicationReference,
10485 { "applicationReference", "mms.applicationReference_element",
10486 FT_NONE, BASE_NONE, NULL, 0,
10487 NULL, HFILL }},
10488 { &hf_mms_remainingTimeOut,
10489 { "remainingTimeOut", "mms.remainingTimeOut",
10490 FT_INT32, BASE_DEC, NULL, 0,
10491 "Unsigned32", HFILL }},
10492 { &hf_mms_operatorStationName,
10493 { "operatorStationName", "mms.operatorStationName",
10494 FT_STRING, BASE_NONE, NULL, 0,
10495 "Identifier", HFILL }},
10496 { &hf_mms_echo,
10497 { "echo", "mms.echo",
10498 FT_BOOLEAN, BASE_NONE, NULL, 0,
10499 "BOOLEAN", HFILL }},
10500 { &hf_mms_listOfPromptData,
10501 { "listOfPromptData", "mms.listOfPromptData",
10502 FT_UINT32, BASE_DEC, NULL, 0,
10503 NULL, HFILL }},
10504 { &hf_mms_listOfPromptData_item,
10505 { "listOfPromptData item", "mms.listOfPromptData_item",
10506 FT_STRING, BASE_NONE, NULL, 0,
10507 "VisibleString", HFILL }},
10508 { &hf_mms_inputTimeOut,
10509 { "inputTimeOut", "mms.inputTimeOut",
10510 FT_INT32, BASE_DEC, NULL, 0,
10511 "Unsigned32", HFILL }},
10512 { &hf_mms_listOfOutputData,
10513 { "listOfOutputData", "mms.listOfOutputData",
10514 FT_UINT32, BASE_DEC, NULL, 0,
10515 NULL, HFILL }},
10516 { &hf_mms_listOfOutputData_item,
10517 { "listOfOutputData item", "mms.listOfOutputData_item",
10518 FT_STRING, BASE_NONE, NULL, 0,
10519 "VisibleString", HFILL }},
10520 { &hf_mms_eventConditionName,
10521 { "eventConditionName", "mms.eventConditionName",
10522 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10523 "ObjectName", HFILL }},
10524 { &hf_mms_class_01,
10525 { "class", "mms.class",
10526 FT_INT32, BASE_DEC, VALS(mms_EC_Class_vals), 0,
10527 "EC_Class", HFILL }},
10528 { &hf_mms_prio_rity,
10529 { "prio-rity", "mms.prio_rity",
10530 FT_INT32, BASE_DEC, NULL, 0,
10531 "Priority", HFILL }},
10532 { &hf_mms_severity,
10533 { "severity", "mms.severity",
10534 FT_INT32, BASE_DEC, NULL, 0,
10535 "Unsigned8", HFILL }},
10536 { &hf_mms_alarmSummaryReports,
10537 { "alarmSummaryReports", "mms.alarmSummaryReports",
10538 FT_BOOLEAN, BASE_NONE, NULL, 0,
10539 "BOOLEAN", HFILL }},
10540 { &hf_mms_monitoredVariable,
10541 { "monitoredVariable", "mms.monitoredVariable",
10542 FT_UINT32, BASE_DEC, VALS(mms_VariableSpecification_vals), 0,
10543 "VariableSpecification", HFILL }},
10544 { &hf_mms_evaluationInterval,
10545 { "evaluationInterval", "mms.evaluationInterval",
10546 FT_INT32, BASE_DEC, NULL, 0,
10547 "Unsigned32", HFILL }},
10548 { &hf_mms_specific,
10549 { "specific", "mms.specific",
10550 FT_UINT32, BASE_DEC, NULL, 0,
10551 "SEQUENCE_OF_ObjectName", HFILL }},
10552 { &hf_mms_specific_item,
10553 { "ObjectName", "mms.ObjectName",
10554 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10555 NULL, HFILL }},
10556 { &hf_mms_aa_specific_01,
10557 { "aa-specific", "mms.aa_specific_element",
10558 FT_NONE, BASE_NONE, NULL, 0,
10559 NULL, HFILL }},
10560 { &hf_mms_vmd,
10561 { "vmd", "mms.vmd_element",
10562 FT_NONE, BASE_NONE, NULL, 0,
10563 NULL, HFILL }},
10564 { &hf_mms_monitoredVariable_01,
10565 { "monitoredVariable", "mms.monitoredVariable",
10566 FT_UINT32, BASE_DEC, VALS(mms_T_monitoredVariable_vals), 0,
10567 NULL, HFILL }},
10568 { &hf_mms_variableReference,
10569 { "variableReference", "mms.variableReference",
10570 FT_UINT32, BASE_DEC, VALS(mms_VariableSpecification_vals), 0,
10571 "VariableSpecification", HFILL }},
10572 { &hf_mms_undefined,
10573 { "undefined", "mms.undefined_element",
10574 FT_NONE, BASE_NONE, NULL, 0,
10575 NULL, HFILL }},
10576 { &hf_mms_currentState,
10577 { "currentState", "mms.currentState",
10578 FT_INT32, BASE_DEC, VALS(mms_EC_State_vals), 0,
10579 "EC_State", HFILL }},
10580 { &hf_mms_numberOfEventEnrollments,
10581 { "numberOfEventEnrollments", "mms.numberOfEventEnrollments",
10582 FT_INT32, BASE_DEC, NULL, 0,
10583 "Unsigned32", HFILL }},
10584 { &hf_mms_enabled,
10585 { "enabled", "mms.enabled",
10586 FT_BOOLEAN, BASE_NONE, NULL, 0,
10587 "BOOLEAN", HFILL }},
10588 { &hf_mms_timeOfLastTransitionToActive,
10589 { "timeOfLastTransitionToActive", "mms.timeOfLastTransitionToActive",
10590 FT_UINT32, BASE_DEC, VALS(mms_EventTime_vals), 0,
10591 "EventTime", HFILL }},
10592 { &hf_mms_timeOfLastTransitionToIdle,
10593 { "timeOfLastTransitionToIdle", "mms.timeOfLastTransitionToIdle",
10594 FT_UINT32, BASE_DEC, VALS(mms_EventTime_vals), 0,
10595 "EventTime", HFILL }},
10596 { &hf_mms_eventActionName,
10597 { "eventActionName", "mms.eventActionName",
10598 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10599 "ObjectName", HFILL }},
10600 { &hf_mms_eventEnrollmentName,
10601 { "eventEnrollmentName", "mms.eventEnrollmentName",
10602 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10603 "ObjectName", HFILL }},
10604 { &hf_mms_eventConditionTransition,
10605 { "eventConditionTransition", "mms.eventConditionTransition",
10606 FT_BYTES, BASE_NONE, NULL, 0,
10607 "Transitions", HFILL }},
10608 { &hf_mms_alarmAcknowledgementRule,
10609 { "alarmAcknowledgementRule", "mms.alarmAcknowledgementRule",
10610 FT_INT32, BASE_DEC, VALS(mms_AlarmAckRule_vals), 0,
10611 "AlarmAckRule", HFILL }},
10612 { &hf_mms_clientApplication,
10613 { "clientApplication", "mms.clientApplication_element",
10614 FT_NONE, BASE_NONE, NULL, 0,
10615 "ApplicationReference", HFILL }},
10616 { &hf_mms_ec,
10617 { "ec", "mms.ec",
10618 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10619 "ObjectName", HFILL }},
10620 { &hf_mms_ea,
10621 { "ea", "mms.ea",
10622 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10623 "ObjectName", HFILL }},
10624 { &hf_mms_scopeOfRequest,
10625 { "scopeOfRequest", "mms.scopeOfRequest",
10626 FT_INT32, BASE_DEC, VALS(mms_T_scopeOfRequest_vals), 0,
10627 NULL, HFILL }},
10628 { &hf_mms_eventEnrollmentNames,
10629 { "eventEnrollmentNames", "mms.eventEnrollmentNames",
10630 FT_UINT32, BASE_DEC, NULL, 0,
10631 "SEQUENCE_OF_ObjectName", HFILL }},
10632 { &hf_mms_eventEnrollmentNames_item,
10633 { "ObjectName", "mms.ObjectName",
10634 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10635 NULL, HFILL }},
10636 { &hf_mms_getEventEnrollmentAttributes_Request_continueAfter,
10637 { "continueAfter", "mms.getEventEnrollmentAttributes-Request_continueAfter",
10638 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10639 "ObjectName", HFILL }},
10640 { &hf_mms_eventConditionName_01,
10641 { "eventConditionName", "mms.eventConditionName",
10642 FT_UINT32, BASE_DEC, VALS(mms_T_eventConditionName_vals), 0,
10643 NULL, HFILL }},
10644 { &hf_mms_eventActionName_01,
10645 { "eventActionName", "mms.eventActionName",
10646 FT_UINT32, BASE_DEC, VALS(mms_T_eventActionName_vals), 0,
10647 NULL, HFILL }},
10648 { &hf_mms_eventAction,
10649 { "eventAction", "mms.eventAction",
10650 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10651 "ObjectName", HFILL }},
10652 { &hf_mms_enrollmentClass,
10653 { "enrollmentClass", "mms.enrollmentClass",
10654 FT_INT32, BASE_DEC, VALS(mms_EE_Class_vals), 0,
10655 "EE_Class", HFILL }},
10656 { &hf_mms_duration,
10657 { "duration", "mms.duration",
10658 FT_INT32, BASE_DEC, VALS(mms_EE_Duration_vals), 0,
10659 "EE_Duration", HFILL }},
10660 { &hf_mms_remainingAcceptableDelay,
10661 { "remainingAcceptableDelay", "mms.remainingAcceptableDelay",
10662 FT_INT32, BASE_DEC, NULL, 0,
10663 "Unsigned32", HFILL }},
10664 { &hf_mms_listOfEventEnrollment,
10665 { "listOfEventEnrollment", "mms.listOfEventEnrollment",
10666 FT_UINT32, BASE_DEC, NULL, 0,
10667 "SEQUENCE_OF_EventEnrollment", HFILL }},
10668 { &hf_mms_listOfEventEnrollment_item,
10669 { "EventEnrollment", "mms.EventEnrollment_element",
10670 FT_NONE, BASE_NONE, NULL, 0,
10671 NULL, HFILL }},
10672 { &hf_mms_eventConditionTransitions,
10673 { "eventConditionTransitions", "mms.eventConditionTransitions",
10674 FT_BYTES, BASE_NONE, NULL, 0,
10675 "Transitions", HFILL }},
10676 { &hf_mms_notificationLost,
10677 { "notificationLost", "mms.notificationLost",
10678 FT_BOOLEAN, BASE_NONE, NULL, 0,
10679 "BOOLEAN", HFILL }},
10680 { &hf_mms_alarmAcknowledgmentRule,
10681 { "alarmAcknowledgmentRule", "mms.alarmAcknowledgmentRule",
10682 FT_INT32, BASE_DEC, VALS(mms_AlarmAckRule_vals), 0,
10683 "AlarmAckRule", HFILL }},
10684 { &hf_mms_currentState_01,
10685 { "currentState", "mms.currentState",
10686 FT_INT32, BASE_DEC, VALS(mms_EE_State_vals), 0,
10687 "EE_State", HFILL }},
10688 { &hf_mms_currentState_02,
10689 { "currentState", "mms.currentState",
10690 FT_UINT32, BASE_DEC, VALS(mms_T_currentState_vals), 0,
10691 NULL, HFILL }},
10692 { &hf_mms_alterEventEnrollment_Response_currentState_state,
10693 { "state", "mms.alterEventEnrollment-Response_currentState_state",
10694 FT_INT32, BASE_DEC, VALS(mms_EE_State_vals), 0,
10695 "EE_State", HFILL }},
10696 { &hf_mms_transitionTime,
10697 { "transitionTime", "mms.transitionTime",
10698 FT_UINT32, BASE_DEC, VALS(mms_EventTime_vals), 0,
10699 "EventTime", HFILL }},
10700 { &hf_mms_acknowledgedState,
10701 { "acknowledgedState", "mms.acknowledgedState",
10702 FT_INT32, BASE_DEC, VALS(mms_EC_State_vals), 0,
10703 "EC_State", HFILL }},
10704 { &hf_mms_timeOfAcknowledgedTransition,
10705 { "timeOfAcknowledgedTransition", "mms.timeOfAcknowledgedTransition",
10706 FT_UINT32, BASE_DEC, VALS(mms_EventTime_vals), 0,
10707 "EventTime", HFILL }},
10708 { &hf_mms_enrollmentsOnly,
10709 { "enrollmentsOnly", "mms.enrollmentsOnly",
10710 FT_BOOLEAN, BASE_NONE, NULL, 0,
10711 "BOOLEAN", HFILL }},
10712 { &hf_mms_activeAlarmsOnly,
10713 { "activeAlarmsOnly", "mms.activeAlarmsOnly",
10714 FT_BOOLEAN, BASE_NONE, NULL, 0,
10715 "BOOLEAN", HFILL }},
10716 { &hf_mms_acknowledgmentFilter,
10717 { "acknowledgmentFilter", "mms.acknowledgmentFilter",
10718 FT_INT32, BASE_DEC, VALS(mms_T_acknowledgmentFilter_vals), 0,
10719 NULL, HFILL }},
10720 { &hf_mms_severityFilter,
10721 { "severityFilter", "mms.severityFilter_element",
10722 FT_NONE, BASE_NONE, NULL, 0,
10723 NULL, HFILL }},
10724 { &hf_mms_mostSevere,
10725 { "mostSevere", "mms.mostSevere",
10726 FT_INT32, BASE_DEC, NULL, 0,
10727 "Unsigned8", HFILL }},
10728 { &hf_mms_leastSevere,
10729 { "leastSevere", "mms.leastSevere",
10730 FT_INT32, BASE_DEC, NULL, 0,
10731 "Unsigned8", HFILL }},
10732 { &hf_mms_continueAfter,
10733 { "continueAfter", "mms.continueAfter",
10734 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10735 "ObjectName", HFILL }},
10736 { &hf_mms_listOfAlarmSummary,
10737 { "listOfAlarmSummary", "mms.listOfAlarmSummary",
10738 FT_UINT32, BASE_DEC, NULL, 0,
10739 "SEQUENCE_OF_AlarmSummary", HFILL }},
10740 { &hf_mms_listOfAlarmSummary_item,
10741 { "AlarmSummary", "mms.AlarmSummary_element",
10742 FT_NONE, BASE_NONE, NULL, 0,
10743 NULL, HFILL }},
10744 { &hf_mms_unacknowledgedState,
10745 { "unacknowledgedState", "mms.unacknowledgedState",
10746 FT_INT32, BASE_DEC, VALS(mms_T_unacknowledgedState_vals), 0,
10747 NULL, HFILL }},
10748 { &hf_mms_acknowledgmentFilter_01,
10749 { "acknowledgmentFilter", "mms.acknowledgmentFilter",
10750 FT_INT32, BASE_DEC, VALS(mms_T_acknowledgmentFilter_01_vals), 0,
10751 "T_acknowledgmentFilter_01", HFILL }},
10752 { &hf_mms_severityFilter_01,
10753 { "severityFilter", "mms.severityFilter_element",
10754 FT_NONE, BASE_NONE, NULL, 0,
10755 "T_severityFilter_01", HFILL }},
10756 { &hf_mms_getAlarmEnrollmentSummary_Request_continueAfter,
10757 { "continueAfter", "mms.getAlarmEnrollmentSummary-Request_continueAfter",
10758 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10759 "ObjectName", HFILL }},
10760 { &hf_mms_listOfAlarmEnrollmentSummary,
10761 { "listOfAlarmEnrollmentSummary", "mms.listOfAlarmEnrollmentSummary",
10762 FT_UINT32, BASE_DEC, NULL, 0,
10763 "SEQUENCE_OF_AlarmEnrollmentSummary", HFILL }},
10764 { &hf_mms_listOfAlarmEnrollmentSummary_item,
10765 { "AlarmEnrollmentSummary", "mms.AlarmEnrollmentSummary_element",
10766 FT_NONE, BASE_NONE, NULL, 0,
10767 NULL, HFILL }},
10768 { &hf_mms_enrollementState,
10769 { "enrollementState", "mms.enrollementState",
10770 FT_INT32, BASE_DEC, VALS(mms_EE_State_vals), 0,
10771 "EE_State", HFILL }},
10772 { &hf_mms_timeActiveAcknowledged,
10773 { "timeActiveAcknowledged", "mms.timeActiveAcknowledged",
10774 FT_UINT32, BASE_DEC, VALS(mms_EventTime_vals), 0,
10775 "EventTime", HFILL }},
10776 { &hf_mms_timeIdleAcknowledged,
10777 { "timeIdleAcknowledged", "mms.timeIdleAcknowledged",
10778 FT_UINT32, BASE_DEC, VALS(mms_EventTime_vals), 0,
10779 "EventTime", HFILL }},
10780 { &hf_mms_eventConditionName_02,
10781 { "eventConditionName", "mms.eventConditionName",
10782 FT_UINT32, BASE_DEC, VALS(mms_T_eventConditionName_01_vals), 0,
10783 "T_eventConditionName_01", HFILL }},
10784 { &hf_mms_actionResult,
10785 { "actionResult", "mms.actionResult_element",
10786 FT_NONE, BASE_NONE, NULL, 0,
10787 NULL, HFILL }},
10788 { &hf_mms_eventActioName,
10789 { "eventActioName", "mms.eventActioName",
10790 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10791 "ObjectName", HFILL }},
10792 { &hf_mms_eventActionResult,
10793 { "eventActionResult", "mms.eventActionResult",
10794 FT_UINT32, BASE_DEC, VALS(mms_T_eventActionResult_vals), 0,
10795 NULL, HFILL }},
10796 { &hf_mms_success_02,
10797 { "success", "mms.success",
10798 FT_UINT32, BASE_DEC, VALS(mms_ConfirmedServiceResponse_vals), 0,
10799 "ConfirmedServiceResponse", HFILL }},
10800 { &hf_mms_failure_01,
10801 { "failure", "mms.failure_element",
10802 FT_NONE, BASE_NONE, NULL, 0,
10803 "ServiceError", HFILL }},
10804 { &hf_mms_causingTransitions,
10805 { "causingTransitions", "mms.causingTransitions",
10806 FT_BYTES, BASE_NONE, NULL, 0,
10807 "Transitions", HFILL }},
10808 { &hf_mms_timeOfDayT,
10809 { "timeOfDayT", "mms.timeOfDayT",
10810 FT_STRING, BASE_NONE, NULL, 0,
10811 "TimeOfDay", HFILL }},
10812 { &hf_mms_timeSequenceIdentifier,
10813 { "timeSequenceIdentifier", "mms.timeSequenceIdentifier",
10814 FT_INT32, BASE_DEC, NULL, 0,
10815 "Unsigned32", HFILL }},
10816 { &hf_mms_journalName,
10817 { "journalName", "mms.journalName",
10818 FT_UINT32, BASE_DEC, VALS(mms_ObjectName_vals), 0,
10819 "ObjectName", HFILL }},
10820 { &hf_mms_rangeStartSpecification,
10821 { "rangeStartSpecification", "mms.rangeStartSpecification",
10822 FT_UINT32, BASE_DEC, VALS(mms_T_rangeStartSpecification_vals), 0,
10823 NULL, HFILL }},
10824 { &hf_mms_startingTime,
10825 { "startingTime", "mms.startingTime",
10826 FT_STRING, BASE_NONE, NULL, 0,
10827 "TimeOfDay", HFILL }},
10828 { &hf_mms_startingEntry,
10829 { "startingEntry", "mms.startingEntry",
10830 FT_BYTES, BASE_NONE, NULL, 0,
10831 "OCTET_STRING", HFILL }},
10832 { &hf_mms_rangeStopSpecification,
10833 { "rangeStopSpecification", "mms.rangeStopSpecification",
10834 FT_UINT32, BASE_DEC, VALS(mms_T_rangeStopSpecification_vals), 0,
10835 NULL, HFILL }},
10836 { &hf_mms_endingTime,
10837 { "endingTime", "mms.endingTime",
10838 FT_STRING, BASE_NONE, NULL, 0,
10839 "TimeOfDay", HFILL }},
10840 { &hf_mms_numberOfEntries,
10841 { "numberOfEntries", "mms.numberOfEntries",
10842 FT_INT32, BASE_DEC, NULL, 0,
10843 "Integer32", HFILL }},
10844 { &hf_mms_listOfVariables,
10845 { "listOfVariables", "mms.listOfVariables",
10846 FT_UINT32, BASE_DEC, NULL, 0,
10847 NULL, HFILL }},
10848 { &hf_mms_listOfVariables_item,
10849 { "listOfVariables item", "mms.listOfVariables_item",
10850 FT_STRING, BASE_NONE, NULL, 0,
10851 "VisibleString", HFILL }},
10852 { &hf_mms_entryToStartAfter,
10853 { "entryToStartAfter", "mms.entryToStartAfter_element",
10854 FT_NONE, BASE_NONE, NULL, 0,
10855 NULL, HFILL }},
10856 { &hf_mms_timeSpecification,
10857 { "timeSpecification", "mms.timeSpecification",
10858 FT_STRING, BASE_NONE, NULL, 0,
10859 "TimeOfDay", HFILL }},
10860 { &hf_mms_entrySpecification,
10861 { "entrySpecification", "mms.entrySpecification",
10862 FT_BYTES, BASE_NONE, NULL, 0,
10863 "OCTET_STRING", HFILL }},
10864 { &hf_mms_listOfJournalEntry,
10865 { "listOfJournalEntry", "mms.listOfJournalEntry",
10866 FT_UINT32, BASE_DEC, NULL, 0,
10867 "SEQUENCE_OF_JournalEntry", HFILL }},
10868 { &hf_mms_listOfJournalEntry_item,
10869 { "JournalEntry", "mms.JournalEntry_element",
10870 FT_NONE, BASE_NONE, NULL, 0,
10871 NULL, HFILL }},
10872 { &hf_mms_entryIdentifier,
10873 { "entryIdentifier", "mms.entryIdentifier",
10874 FT_BYTES, BASE_NONE, NULL, 0,
10875 "OCTET_STRING", HFILL }},
10876 { &hf_mms_originatingApplication,
10877 { "originatingApplication", "mms.originatingApplication_element",
10878 FT_NONE, BASE_NONE, NULL, 0,
10879 "ApplicationReference", HFILL }},
10880 { &hf_mms_entryContent,
10881 { "entryContent", "mms.entryContent_element",
10882 FT_NONE, BASE_NONE, NULL, 0,
10883 NULL, HFILL }},
10884 { &hf_mms_listOfJournalEntry_01,
10885 { "listOfJournalEntry", "mms.listOfJournalEntry",
10886 FT_UINT32, BASE_DEC, NULL, 0,
10887 "SEQUENCE_OF_EntryContent", HFILL }},
10888 { &hf_mms_listOfJournalEntry_item_01,
10889 { "EntryContent", "mms.EntryContent_element",
10890 FT_NONE, BASE_NONE, NULL, 0,
10891 NULL, HFILL }},
10892 { &hf_mms_limitSpecification,
10893 { "limitSpecification", "mms.limitSpecification_element",
10894 FT_NONE, BASE_NONE, NULL, 0,
10895 NULL, HFILL }},
10896 { &hf_mms_limitingTime,
10897 { "limitingTime", "mms.limitingTime",
10898 FT_STRING, BASE_NONE, NULL, 0,
10899 "TimeOfDay", HFILL }},
10900 { &hf_mms_limitingEntry,
10901 { "limitingEntry", "mms.limitingEntry",
10902 FT_BYTES, BASE_NONE, NULL, 0,
10903 "OCTET_STRING", HFILL }},
10904 { &hf_mms_currentEntries,
10905 { "currentEntries", "mms.currentEntries",
10906 FT_INT32, BASE_DEC, NULL, 0,
10907 "Unsigned32", HFILL }},
10908 { &hf_mms_occurenceTime,
10909 { "occurenceTime", "mms.occurenceTime",
10910 FT_STRING, BASE_NONE, NULL, 0,
10911 "TimeOfDay", HFILL }},
10912 { &hf_mms_additionalDetail,
10913 { "additionalDetail", "mms.additionalDetail_element",
10914 FT_NONE, BASE_NONE, NULL, 0,
10915 "JOU_Additional_Detail", HFILL }},
10916 { &hf_mms_entryForm,
10917 { "entryForm", "mms.entryForm",
10918 FT_UINT32, BASE_DEC, VALS(mms_T_entryForm_vals), 0,
10919 NULL, HFILL }},
10920 { &hf_mms_data,
10921 { "data", "mms.data_element",
10922 FT_NONE, BASE_NONE, NULL, 0,
10923 NULL, HFILL }},
10924 { &hf_mms_event,
10925 { "event", "mms.event_element",
10926 FT_NONE, BASE_NONE, NULL, 0,
10927 NULL, HFILL }},
10928 { &hf_mms_listOfVariables_01,
10929 { "listOfVariables", "mms.listOfVariables",
10930 FT_UINT32, BASE_DEC, NULL, 0,
10931 "T_listOfVariables_01", HFILL }},
10932 { &hf_mms_listOfVariables_item_01,
10933 { "listOfVariables item", "mms.listOfVariables_item_element",
10934 FT_NONE, BASE_NONE, NULL, 0,
10935 NULL, HFILL }},
10936 { &hf_mms_variableTag,
10937 { "variableTag", "mms.variableTag",
10938 FT_STRING, BASE_NONE, NULL, 0,
10939 "VisibleString", HFILL }},
10940 { &hf_mms_valueSpecification,
10941 { "valueSpecification", "mms.valueSpecification",
10942 FT_UINT32, BASE_DEC, VALS(mms_Data_vals), 0,
10943 "Data", HFILL }},
10944 { &hf_mms_annotation,
10945 { "annotation", "mms.annotation",
10946 FT_STRING, BASE_NONE, NULL, 0,
10947 "VisibleString", HFILL }},
10948 { &hf_mms_sourceFileServer,
10949 { "sourceFileServer", "mms.sourceFileServer_element",
10950 FT_NONE, BASE_NONE, NULL, 0,
10951 "ApplicationReference", HFILL }},
10952 { &hf_mms_sourceFile,
10953 { "sourceFile", "mms.sourceFile",
10954 FT_UINT32, BASE_DEC, NULL, 0,
10955 "FileName", HFILL }},
10956 { &hf_mms_destinationFile,
10957 { "destinationFile", "mms.destinationFile",
10958 FT_UINT32, BASE_DEC, NULL, 0,
10959 "FileName", HFILL }},
10960 { &hf_mms_initialPosition,
10961 { "initialPosition", "mms.initialPosition",
10962 FT_INT32, BASE_DEC, NULL, 0,
10963 "Unsigned32", HFILL }},
10964 { &hf_mms_frsmID,
10965 { "frsmID", "mms.frsmID",
10966 FT_INT32, BASE_DEC, NULL, 0,
10967 "Integer32", HFILL }},
10968 { &hf_mms_fileAttributes,
10969 { "fileAttributes", "mms.fileAttributes_element",
10970 FT_NONE, BASE_NONE, NULL, 0,
10971 NULL, HFILL }},
10972 { &hf_mms_fileData,
10973 { "fileData", "mms.fileData",
10974 FT_BYTES, BASE_NONE, NULL, 0,
10975 "OCTET_STRING", HFILL }},
10976 { &hf_mms_currentFileName,
10977 { "currentFileName", "mms.currentFileName",
10978 FT_UINT32, BASE_DEC, NULL, 0,
10979 "FileName", HFILL }},
10980 { &hf_mms_newFileName,
10981 { "newFileName", "mms.newFileName",
10982 FT_UINT32, BASE_DEC, NULL, 0,
10983 "FileName", HFILL }},
10984 { &hf_mms_fileSpecification,
10985 { "fileSpecification", "mms.fileSpecification",
10986 FT_UINT32, BASE_DEC, NULL, 0,
10987 "FileName", HFILL }},
10988 { &hf_mms_fileDirectory_Request_continueAfter,
10989 { "continueAfter", "mms.fileDirectory-Request_continueAfter",
10990 FT_UINT32, BASE_DEC, NULL, 0,
10991 "FileName", HFILL }},
10992 { &hf_mms_listOfDirectoryEntry,
10993 { "listOfDirectoryEntry", "mms.listOfDirectoryEntry",
10994 FT_UINT32, BASE_DEC, NULL, 0,
10995 "SEQUENCE_OF_DirectoryEntry", HFILL }},
10996 { &hf_mms_listOfDirectoryEntry_item,
10997 { "DirectoryEntry", "mms.DirectoryEntry_element",
10998 FT_NONE, BASE_NONE, NULL, 0,
10999 NULL, HFILL }},
11000 { &hf_mms_filename,
11001 { "filename", "mms.filename",
11002 FT_UINT32, BASE_DEC, NULL, 0,
11003 NULL, HFILL }},
11004 { &hf_mms_sizeOfFile,
11005 { "sizeOfFile", "mms.sizeOfFile",
11006 FT_INT32, BASE_DEC, NULL, 0,
11007 "Unsigned32", HFILL }},
11008 { &hf_mms_lastModified,
11009 { "lastModified", "mms.lastModified",
11010 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
11011 "GeneralizedTime", HFILL }},
11012 { &hf_mms_ReportedOptFlds_reserved,
11013 { "reserved", "mms.ReportedOptFlds.reserved",
11014 FT_BOOLEAN, 8, NULL, 0x80,
11015 NULL, HFILL }},
11016 { &hf_mms_ReportedOptFlds_sequence_number,
11017 { "sequence-number", "mms.ReportedOptFlds.sequence.number",
11018 FT_BOOLEAN, 8, NULL, 0x40,
11019 NULL, HFILL }},
11020 { &hf_mms_ReportedOptFlds_report_time_stamp,
11021 { "report-time-stamp", "mms.ReportedOptFlds.report.time.stamp",
11022 FT_BOOLEAN, 8, NULL, 0x20,
11023 NULL, HFILL }},
11024 { &hf_mms_ReportedOptFlds_reason_for_inclusion,
11025 { "reason-for-inclusion", "mms.ReportedOptFlds.reason.for.inclusion",
11026 FT_BOOLEAN, 8, NULL, 0x10,
11027 NULL, HFILL }},
11028 { &hf_mms_ReportedOptFlds_data_set_name,
11029 { "data-set-name", "mms.ReportedOptFlds.data.set.name",
11030 FT_BOOLEAN, 8, NULL, 0x08,
11031 NULL, HFILL }},
11032 { &hf_mms_ReportedOptFlds_data_reference,
11033 { "data-reference", "mms.ReportedOptFlds.data.reference",
11034 FT_BOOLEAN, 8, NULL, 0x04,
11035 NULL, HFILL }},
11036 { &hf_mms_ReportedOptFlds_buffer_overflow,
11037 { "buffer-overflow", "mms.ReportedOptFlds.buffer.overflow",
11038 FT_BOOLEAN, 8, NULL, 0x02,
11039 NULL, HFILL }},
11040 { &hf_mms_ReportedOptFlds_entryID,
11041 { "entryID", "mms.ReportedOptFlds.entryID",
11042 FT_BOOLEAN, 8, NULL, 0x01,
11043 NULL, HFILL }},
11044 { &hf_mms_ReportedOptFlds_conf_revision,
11045 { "conf-revision", "mms.ReportedOptFlds.conf.revision",
11046 FT_BOOLEAN, 8, NULL, 0x80,
11047 NULL, HFILL }},
11048 { &hf_mms_ReportedOptFlds_segmentation,
11049 { "segmentation", "mms.ReportedOptFlds.segmentation",
11050 FT_BOOLEAN, 8, NULL, 0x40,
11051 NULL, HFILL }},
11052 { &hf_mms_ParameterSupportOptions_str1,
11053 { "str1", "mms.ParameterSupportOptions.str1",
11054 FT_BOOLEAN, 8, NULL, 0x80,
11055 NULL, HFILL }},
11056 { &hf_mms_ParameterSupportOptions_str2,
11057 { "str2", "mms.ParameterSupportOptions.str2",
11058 FT_BOOLEAN, 8, NULL, 0x40,
11059 NULL, HFILL }},
11060 { &hf_mms_ParameterSupportOptions_vnam,
11061 { "vnam", "mms.ParameterSupportOptions.vnam",
11062 FT_BOOLEAN, 8, NULL, 0x20,
11063 NULL, HFILL }},
11064 { &hf_mms_ParameterSupportOptions_valt,
11065 { "valt", "mms.ParameterSupportOptions.valt",
11066 FT_BOOLEAN, 8, NULL, 0x10,
11067 NULL, HFILL }},
11068 { &hf_mms_ParameterSupportOptions_vadr,
11069 { "vadr", "mms.ParameterSupportOptions.vadr",
11070 FT_BOOLEAN, 8, NULL, 0x08,
11071 NULL, HFILL }},
11072 { &hf_mms_ParameterSupportOptions_vsca,
11073 { "vsca", "mms.ParameterSupportOptions.vsca",
11074 FT_BOOLEAN, 8, NULL, 0x04,
11075 NULL, HFILL }},
11076 { &hf_mms_ParameterSupportOptions_tpy,
11077 { "tpy", "mms.ParameterSupportOptions.tpy",
11078 FT_BOOLEAN, 8, NULL, 0x02,
11079 NULL, HFILL }},
11080 { &hf_mms_ParameterSupportOptions_vlis,
11081 { "vlis", "mms.ParameterSupportOptions.vlis",
11082 FT_BOOLEAN, 8, NULL, 0x01,
11083 NULL, HFILL }},
11084 { &hf_mms_ParameterSupportOptions_real,
11085 { "real", "mms.ParameterSupportOptions.real",
11086 FT_BOOLEAN, 8, NULL, 0x80,
11087 NULL, HFILL }},
11088 { &hf_mms_ParameterSupportOptions_spare_bit9,
11089 { "spare_bit9", "mms.ParameterSupportOptions.spare.bit9",
11090 FT_BOOLEAN, 8, NULL, 0x40,
11091 NULL, HFILL }},
11092 { &hf_mms_ParameterSupportOptions_cei,
11093 { "cei", "mms.ParameterSupportOptions.cei",
11094 FT_BOOLEAN, 8, NULL, 0x20,
11095 NULL, HFILL }},
11096 { &hf_mms_ServiceSupportOptions_status,
11097 { "status", "mms.ServiceSupportOptions.status",
11098 FT_BOOLEAN, 8, NULL, 0x80,
11099 NULL, HFILL }},
11100 { &hf_mms_ServiceSupportOptions_getNameList,
11101 { "getNameList", "mms.ServiceSupportOptions.getNameList",
11102 FT_BOOLEAN, 8, NULL, 0x40,
11103 NULL, HFILL }},
11104 { &hf_mms_ServiceSupportOptions_identify,
11105 { "identify", "mms.ServiceSupportOptions.identify",
11106 FT_BOOLEAN, 8, NULL, 0x20,
11107 NULL, HFILL }},
11108 { &hf_mms_ServiceSupportOptions_rename,
11109 { "rename", "mms.ServiceSupportOptions.rename",
11110 FT_BOOLEAN, 8, NULL, 0x10,
11111 NULL, HFILL }},
11112 { &hf_mms_ServiceSupportOptions_read,
11113 { "read", "mms.ServiceSupportOptions.read",
11114 FT_BOOLEAN, 8, NULL, 0x08,
11115 NULL, HFILL }},
11116 { &hf_mms_ServiceSupportOptions_write,
11117 { "write", "mms.ServiceSupportOptions.write",
11118 FT_BOOLEAN, 8, NULL, 0x04,
11119 NULL, HFILL }},
11120 { &hf_mms_ServiceSupportOptions_getVariableAccessAttributes,
11121 { "getVariableAccessAttributes", "mms.ServiceSupportOptions.getVariableAccessAttributes",
11122 FT_BOOLEAN, 8, NULL, 0x02,
11123 NULL, HFILL }},
11124 { &hf_mms_ServiceSupportOptions_defineNamedVariable,
11125 { "defineNamedVariable", "mms.ServiceSupportOptions.defineNamedVariable",
11126 FT_BOOLEAN, 8, NULL, 0x01,
11127 NULL, HFILL }},
11128 { &hf_mms_ServiceSupportOptions_defineScatteredAccess,
11129 { "defineScatteredAccess", "mms.ServiceSupportOptions.defineScatteredAccess",
11130 FT_BOOLEAN, 8, NULL, 0x80,
11131 NULL, HFILL }},
11132 { &hf_mms_ServiceSupportOptions_getScatteredAccessAttributes,
11133 { "getScatteredAccessAttributes", "mms.ServiceSupportOptions.getScatteredAccessAttributes",
11134 FT_BOOLEAN, 8, NULL, 0x40,
11135 NULL, HFILL }},
11136 { &hf_mms_ServiceSupportOptions_deleteVariableAccess,
11137 { "deleteVariableAccess", "mms.ServiceSupportOptions.deleteVariableAccess",
11138 FT_BOOLEAN, 8, NULL, 0x20,
11139 NULL, HFILL }},
11140 { &hf_mms_ServiceSupportOptions_defineNamedVariableList,
11141 { "defineNamedVariableList", "mms.ServiceSupportOptions.defineNamedVariableList",
11142 FT_BOOLEAN, 8, NULL, 0x10,
11143 NULL, HFILL }},
11144 { &hf_mms_ServiceSupportOptions_getNamedVariableListAttributes,
11145 { "getNamedVariableListAttributes", "mms.ServiceSupportOptions.getNamedVariableListAttributes",
11146 FT_BOOLEAN, 8, NULL, 0x08,
11147 NULL, HFILL }},
11148 { &hf_mms_ServiceSupportOptions_deleteNamedVariableList,
11149 { "deleteNamedVariableList", "mms.ServiceSupportOptions.deleteNamedVariableList",
11150 FT_BOOLEAN, 8, NULL, 0x04,
11151 NULL, HFILL }},
11152 { &hf_mms_ServiceSupportOptions_defineNamedType,
11153 { "defineNamedType", "mms.ServiceSupportOptions.defineNamedType",
11154 FT_BOOLEAN, 8, NULL, 0x02,
11155 NULL, HFILL }},
11156 { &hf_mms_ServiceSupportOptions_getNamedTypeAttributes,
11157 { "getNamedTypeAttributes", "mms.ServiceSupportOptions.getNamedTypeAttributes",
11158 FT_BOOLEAN, 8, NULL, 0x01,
11159 NULL, HFILL }},
11160 { &hf_mms_ServiceSupportOptions_deleteNamedType,
11161 { "deleteNamedType", "mms.ServiceSupportOptions.deleteNamedType",
11162 FT_BOOLEAN, 8, NULL, 0x80,
11163 NULL, HFILL }},
11164 { &hf_mms_ServiceSupportOptions_input,
11165 { "input", "mms.ServiceSupportOptions.input",
11166 FT_BOOLEAN, 8, NULL, 0x40,
11167 NULL, HFILL }},
11168 { &hf_mms_ServiceSupportOptions_output,
11169 { "output", "mms.ServiceSupportOptions.output",
11170 FT_BOOLEAN, 8, NULL, 0x20,
11171 NULL, HFILL }},
11172 { &hf_mms_ServiceSupportOptions_takeControl,
11173 { "takeControl", "mms.ServiceSupportOptions.takeControl",
11174 FT_BOOLEAN, 8, NULL, 0x10,
11175 NULL, HFILL }},
11176 { &hf_mms_ServiceSupportOptions_relinquishControl,
11177 { "relinquishControl", "mms.ServiceSupportOptions.relinquishControl",
11178 FT_BOOLEAN, 8, NULL, 0x08,
11179 NULL, HFILL }},
11180 { &hf_mms_ServiceSupportOptions_defineSemaphore,
11181 { "defineSemaphore", "mms.ServiceSupportOptions.defineSemaphore",
11182 FT_BOOLEAN, 8, NULL, 0x04,
11183 NULL, HFILL }},
11184 { &hf_mms_ServiceSupportOptions_deleteSemaphore,
11185 { "deleteSemaphore", "mms.ServiceSupportOptions.deleteSemaphore",
11186 FT_BOOLEAN, 8, NULL, 0x02,
11187 NULL, HFILL }},
11188 { &hf_mms_ServiceSupportOptions_reportSemaphoreStatus,
11189 { "reportSemaphoreStatus", "mms.ServiceSupportOptions.reportSemaphoreStatus",
11190 FT_BOOLEAN, 8, NULL, 0x01,
11191 NULL, HFILL }},
11192 { &hf_mms_ServiceSupportOptions_reportPoolSemaphoreStatus,
11193 { "reportPoolSemaphoreStatus", "mms.ServiceSupportOptions.reportPoolSemaphoreStatus",
11194 FT_BOOLEAN, 8, NULL, 0x80,
11195 NULL, HFILL }},
11196 { &hf_mms_ServiceSupportOptions_reportSemaphoreEntryStatus,
11197 { "reportSemaphoreEntryStatus", "mms.ServiceSupportOptions.reportSemaphoreEntryStatus",
11198 FT_BOOLEAN, 8, NULL, 0x40,
11199 NULL, HFILL }},
11200 { &hf_mms_ServiceSupportOptions_initiateDownloadSequence,
11201 { "initiateDownloadSequence", "mms.ServiceSupportOptions.initiateDownloadSequence",
11202 FT_BOOLEAN, 8, NULL, 0x20,
11203 NULL, HFILL }},
11204 { &hf_mms_ServiceSupportOptions_downloadSegment,
11205 { "downloadSegment", "mms.ServiceSupportOptions.downloadSegment",
11206 FT_BOOLEAN, 8, NULL, 0x10,
11207 NULL, HFILL }},
11208 { &hf_mms_ServiceSupportOptions_terminateDownloadSequence,
11209 { "terminateDownloadSequence", "mms.ServiceSupportOptions.terminateDownloadSequence",
11210 FT_BOOLEAN, 8, NULL, 0x08,
11211 NULL, HFILL }},
11212 { &hf_mms_ServiceSupportOptions_initiateUploadSequence,
11213 { "initiateUploadSequence", "mms.ServiceSupportOptions.initiateUploadSequence",
11214 FT_BOOLEAN, 8, NULL, 0x04,
11215 NULL, HFILL }},
11216 { &hf_mms_ServiceSupportOptions_uploadSegment,
11217 { "uploadSegment", "mms.ServiceSupportOptions.uploadSegment",
11218 FT_BOOLEAN, 8, NULL, 0x02,
11219 NULL, HFILL }},
11220 { &hf_mms_ServiceSupportOptions_terminateUploadSequence,
11221 { "terminateUploadSequence", "mms.ServiceSupportOptions.terminateUploadSequence",
11222 FT_BOOLEAN, 8, NULL, 0x01,
11223 NULL, HFILL }},
11224 { &hf_mms_ServiceSupportOptions_requestDomainDownload,
11225 { "requestDomainDownload", "mms.ServiceSupportOptions.requestDomainDownload",
11226 FT_BOOLEAN, 8, NULL, 0x80,
11227 NULL, HFILL }},
11228 { &hf_mms_ServiceSupportOptions_requestDomainUpload,
11229 { "requestDomainUpload", "mms.ServiceSupportOptions.requestDomainUpload",
11230 FT_BOOLEAN, 8, NULL, 0x40,
11231 NULL, HFILL }},
11232 { &hf_mms_ServiceSupportOptions_loadDomainContent,
11233 { "loadDomainContent", "mms.ServiceSupportOptions.loadDomainContent",
11234 FT_BOOLEAN, 8, NULL, 0x20,
11235 NULL, HFILL }},
11236 { &hf_mms_ServiceSupportOptions_storeDomainContent,
11237 { "storeDomainContent", "mms.ServiceSupportOptions.storeDomainContent",
11238 FT_BOOLEAN, 8, NULL, 0x10,
11239 NULL, HFILL }},
11240 { &hf_mms_ServiceSupportOptions_deleteDomain,
11241 { "deleteDomain", "mms.ServiceSupportOptions.deleteDomain",
11242 FT_BOOLEAN, 8, NULL, 0x08,
11243 NULL, HFILL }},
11244 { &hf_mms_ServiceSupportOptions_getDomainAttributes,
11245 { "getDomainAttributes", "mms.ServiceSupportOptions.getDomainAttributes",
11246 FT_BOOLEAN, 8, NULL, 0x04,
11247 NULL, HFILL }},
11248 { &hf_mms_ServiceSupportOptions_createProgramInvocation,
11249 { "createProgramInvocation", "mms.ServiceSupportOptions.createProgramInvocation",
11250 FT_BOOLEAN, 8, NULL, 0x02,
11251 NULL, HFILL }},
11252 { &hf_mms_ServiceSupportOptions_deleteProgramInvocation,
11253 { "deleteProgramInvocation", "mms.ServiceSupportOptions.deleteProgramInvocation",
11254 FT_BOOLEAN, 8, NULL, 0x01,
11255 NULL, HFILL }},
11256 { &hf_mms_ServiceSupportOptions_start,
11257 { "start", "mms.ServiceSupportOptions.start",
11258 FT_BOOLEAN, 8, NULL, 0x80,
11259 NULL, HFILL }},
11260 { &hf_mms_ServiceSupportOptions_stop,
11261 { "stop", "mms.ServiceSupportOptions.stop",
11262 FT_BOOLEAN, 8, NULL, 0x40,
11263 NULL, HFILL }},
11264 { &hf_mms_ServiceSupportOptions_resume,
11265 { "resume", "mms.ServiceSupportOptions.resume",
11266 FT_BOOLEAN, 8, NULL, 0x20,
11267 NULL, HFILL }},
11268 { &hf_mms_ServiceSupportOptions_reset,
11269 { "reset", "mms.ServiceSupportOptions.reset",
11270 FT_BOOLEAN, 8, NULL, 0x10,
11271 NULL, HFILL }},
11272 { &hf_mms_ServiceSupportOptions_kill,
11273 { "kill", "mms.ServiceSupportOptions.kill",
11274 FT_BOOLEAN, 8, NULL, 0x08,
11275 NULL, HFILL }},
11276 { &hf_mms_ServiceSupportOptions_getProgramInvocationAttributes,
11277 { "getProgramInvocationAttributes", "mms.ServiceSupportOptions.getProgramInvocationAttributes",
11278 FT_BOOLEAN, 8, NULL, 0x04,
11279 NULL, HFILL }},
11280 { &hf_mms_ServiceSupportOptions_obtainFile,
11281 { "obtainFile", "mms.ServiceSupportOptions.obtainFile",
11282 FT_BOOLEAN, 8, NULL, 0x02,
11283 NULL, HFILL }},
11284 { &hf_mms_ServiceSupportOptions_defineEventCondition,
11285 { "defineEventCondition", "mms.ServiceSupportOptions.defineEventCondition",
11286 FT_BOOLEAN, 8, NULL, 0x01,
11287 NULL, HFILL }},
11288 { &hf_mms_ServiceSupportOptions_deleteEventCondition,
11289 { "deleteEventCondition", "mms.ServiceSupportOptions.deleteEventCondition",
11290 FT_BOOLEAN, 8, NULL, 0x80,
11291 NULL, HFILL }},
11292 { &hf_mms_ServiceSupportOptions_getEventConditionAttributes,
11293 { "getEventConditionAttributes", "mms.ServiceSupportOptions.getEventConditionAttributes",
11294 FT_BOOLEAN, 8, NULL, 0x40,
11295 NULL, HFILL }},
11296 { &hf_mms_ServiceSupportOptions_reportEventConditionStatus,
11297 { "reportEventConditionStatus", "mms.ServiceSupportOptions.reportEventConditionStatus",
11298 FT_BOOLEAN, 8, NULL, 0x20,
11299 NULL, HFILL }},
11300 { &hf_mms_ServiceSupportOptions_alterEventConditionMonitoring,
11301 { "alterEventConditionMonitoring", "mms.ServiceSupportOptions.alterEventConditionMonitoring",
11302 FT_BOOLEAN, 8, NULL, 0x10,
11303 NULL, HFILL }},
11304 { &hf_mms_ServiceSupportOptions_triggerEvent,
11305 { "triggerEvent", "mms.ServiceSupportOptions.triggerEvent",
11306 FT_BOOLEAN, 8, NULL, 0x08,
11307 NULL, HFILL }},
11308 { &hf_mms_ServiceSupportOptions_defineEventAction,
11309 { "defineEventAction", "mms.ServiceSupportOptions.defineEventAction",
11310 FT_BOOLEAN, 8, NULL, 0x04,
11311 NULL, HFILL }},
11312 { &hf_mms_ServiceSupportOptions_deleteEventAction,
11313 { "deleteEventAction", "mms.ServiceSupportOptions.deleteEventAction",
11314 FT_BOOLEAN, 8, NULL, 0x02,
11315 NULL, HFILL }},
11316 { &hf_mms_ServiceSupportOptions_getEventActionAttributes,
11317 { "getEventActionAttributes", "mms.ServiceSupportOptions.getEventActionAttributes",
11318 FT_BOOLEAN, 8, NULL, 0x01,
11319 NULL, HFILL }},
11320 { &hf_mms_ServiceSupportOptions_reportActionStatus,
11321 { "reportActionStatus", "mms.ServiceSupportOptions.reportActionStatus",
11322 FT_BOOLEAN, 8, NULL, 0x80,
11323 NULL, HFILL }},
11324 { &hf_mms_ServiceSupportOptions_defineEventEnrollment,
11325 { "defineEventEnrollment", "mms.ServiceSupportOptions.defineEventEnrollment",
11326 FT_BOOLEAN, 8, NULL, 0x40,
11327 NULL, HFILL }},
11328 { &hf_mms_ServiceSupportOptions_deleteEventEnrollment,
11329 { "deleteEventEnrollment", "mms.ServiceSupportOptions.deleteEventEnrollment",
11330 FT_BOOLEAN, 8, NULL, 0x20,
11331 NULL, HFILL }},
11332 { &hf_mms_ServiceSupportOptions_alterEventEnrollment,
11333 { "alterEventEnrollment", "mms.ServiceSupportOptions.alterEventEnrollment",
11334 FT_BOOLEAN, 8, NULL, 0x10,
11335 NULL, HFILL }},
11336 { &hf_mms_ServiceSupportOptions_reportEventEnrollmentStatus,
11337 { "reportEventEnrollmentStatus", "mms.ServiceSupportOptions.reportEventEnrollmentStatus",
11338 FT_BOOLEAN, 8, NULL, 0x08,
11339 NULL, HFILL }},
11340 { &hf_mms_ServiceSupportOptions_getEventEnrollmentAttributes,
11341 { "getEventEnrollmentAttributes", "mms.ServiceSupportOptions.getEventEnrollmentAttributes",
11342 FT_BOOLEAN, 8, NULL, 0x04,
11343 NULL, HFILL }},
11344 { &hf_mms_ServiceSupportOptions_acknowledgeEventNotification,
11345 { "acknowledgeEventNotification", "mms.ServiceSupportOptions.acknowledgeEventNotification",
11346 FT_BOOLEAN, 8, NULL, 0x02,
11347 NULL, HFILL }},
11348 { &hf_mms_ServiceSupportOptions_getAlarmSummary,
11349 { "getAlarmSummary", "mms.ServiceSupportOptions.getAlarmSummary",
11350 FT_BOOLEAN, 8, NULL, 0x01,
11351 NULL, HFILL }},
11352 { &hf_mms_ServiceSupportOptions_getAlarmEnrollmentSummary,
11353 { "getAlarmEnrollmentSummary", "mms.ServiceSupportOptions.getAlarmEnrollmentSummary",
11354 FT_BOOLEAN, 8, NULL, 0x80,
11355 NULL, HFILL }},
11356 { &hf_mms_ServiceSupportOptions_readJournal,
11357 { "readJournal", "mms.ServiceSupportOptions.readJournal",
11358 FT_BOOLEAN, 8, NULL, 0x40,
11359 NULL, HFILL }},
11360 { &hf_mms_ServiceSupportOptions_writeJournal,
11361 { "writeJournal", "mms.ServiceSupportOptions.writeJournal",
11362 FT_BOOLEAN, 8, NULL, 0x20,
11363 NULL, HFILL }},
11364 { &hf_mms_ServiceSupportOptions_initializeJournal,
11365 { "initializeJournal", "mms.ServiceSupportOptions.initializeJournal",
11366 FT_BOOLEAN, 8, NULL, 0x10,
11367 NULL, HFILL }},
11368 { &hf_mms_ServiceSupportOptions_reportJournalStatus,
11369 { "reportJournalStatus", "mms.ServiceSupportOptions.reportJournalStatus",
11370 FT_BOOLEAN, 8, NULL, 0x08,
11371 NULL, HFILL }},
11372 { &hf_mms_ServiceSupportOptions_createJournal,
11373 { "createJournal", "mms.ServiceSupportOptions.createJournal",
11374 FT_BOOLEAN, 8, NULL, 0x04,
11375 NULL, HFILL }},
11376 { &hf_mms_ServiceSupportOptions_deleteJournal,
11377 { "deleteJournal", "mms.ServiceSupportOptions.deleteJournal",
11378 FT_BOOLEAN, 8, NULL, 0x02,
11379 NULL, HFILL }},
11380 { &hf_mms_ServiceSupportOptions_getCapabilityList,
11381 { "getCapabilityList", "mms.ServiceSupportOptions.getCapabilityList",
11382 FT_BOOLEAN, 8, NULL, 0x01,
11383 NULL, HFILL }},
11384 { &hf_mms_ServiceSupportOptions_fileOpen,
11385 { "fileOpen", "mms.ServiceSupportOptions.fileOpen",
11386 FT_BOOLEAN, 8, NULL, 0x80,
11387 NULL, HFILL }},
11388 { &hf_mms_ServiceSupportOptions_fileRead,
11389 { "fileRead", "mms.ServiceSupportOptions.fileRead",
11390 FT_BOOLEAN, 8, NULL, 0x40,
11391 NULL, HFILL }},
11392 { &hf_mms_ServiceSupportOptions_fileClose,
11393 { "fileClose", "mms.ServiceSupportOptions.fileClose",
11394 FT_BOOLEAN, 8, NULL, 0x20,
11395 NULL, HFILL }},
11396 { &hf_mms_ServiceSupportOptions_fileRename,
11397 { "fileRename", "mms.ServiceSupportOptions.fileRename",
11398 FT_BOOLEAN, 8, NULL, 0x10,
11399 NULL, HFILL }},
11400 { &hf_mms_ServiceSupportOptions_fileDelete,
11401 { "fileDelete", "mms.ServiceSupportOptions.fileDelete",
11402 FT_BOOLEAN, 8, NULL, 0x08,
11403 NULL, HFILL }},
11404 { &hf_mms_ServiceSupportOptions_fileDirectory,
11405 { "fileDirectory", "mms.ServiceSupportOptions.fileDirectory",
11406 FT_BOOLEAN, 8, NULL, 0x04,
11407 NULL, HFILL }},
11408 { &hf_mms_ServiceSupportOptions_unsolicitedStatus,
11409 { "unsolicitedStatus", "mms.ServiceSupportOptions.unsolicitedStatus",
11410 FT_BOOLEAN, 8, NULL, 0x02,
11411 NULL, HFILL }},
11412 { &hf_mms_ServiceSupportOptions_informationReport,
11413 { "informationReport", "mms.ServiceSupportOptions.informationReport",
11414 FT_BOOLEAN, 8, NULL, 0x01,
11415 NULL, HFILL }},
11416 { &hf_mms_ServiceSupportOptions_eventNotification,
11417 { "eventNotification", "mms.ServiceSupportOptions.eventNotification",
11418 FT_BOOLEAN, 8, NULL, 0x80,
11419 NULL, HFILL }},
11420 { &hf_mms_ServiceSupportOptions_attachToEventCondition,
11421 { "attachToEventCondition", "mms.ServiceSupportOptions.attachToEventCondition",
11422 FT_BOOLEAN, 8, NULL, 0x40,
11423 NULL, HFILL }},
11424 { &hf_mms_ServiceSupportOptions_attachToSemaphore,
11425 { "attachToSemaphore", "mms.ServiceSupportOptions.attachToSemaphore",
11426 FT_BOOLEAN, 8, NULL, 0x20,
11427 NULL, HFILL }},
11428 { &hf_mms_ServiceSupportOptions_conclude,
11429 { "conclude", "mms.ServiceSupportOptions.conclude",
11430 FT_BOOLEAN, 8, NULL, 0x10,
11431 NULL, HFILL }},
11432 { &hf_mms_ServiceSupportOptions_cancel,
11433 { "cancel", "mms.ServiceSupportOptions.cancel",
11434 FT_BOOLEAN, 8, NULL, 0x08,
11435 NULL, HFILL }},
11436 { &hf_mms_Transitions_idle_to_disabled,
11437 { "idle-to-disabled", "mms.Transitions.idle.to.disabled",
11438 FT_BOOLEAN, 8, NULL, 0x80,
11439 NULL, HFILL }},
11440 { &hf_mms_Transitions_active_to_disabled,
11441 { "active-to-disabled", "mms.Transitions.active.to.disabled",
11442 FT_BOOLEAN, 8, NULL, 0x40,
11443 NULL, HFILL }},
11444 { &hf_mms_Transitions_disabled_to_idle,
11445 { "disabled-to-idle", "mms.Transitions.disabled.to.idle",
11446 FT_BOOLEAN, 8, NULL, 0x20,
11447 NULL, HFILL }},
11448 { &hf_mms_Transitions_active_to_idle,
11449 { "active-to-idle", "mms.Transitions.active.to.idle",
11450 FT_BOOLEAN, 8, NULL, 0x10,
11451 NULL, HFILL }},
11452 { &hf_mms_Transitions_disabled_to_active,
11453 { "disabled-to-active", "mms.Transitions.disabled.to.active",
11454 FT_BOOLEAN, 8, NULL, 0x08,
11455 NULL, HFILL }},
11456 { &hf_mms_Transitions_idle_to_active,
11457 { "idle-to-active", "mms.Transitions.idle.to.active",
11458 FT_BOOLEAN, 8, NULL, 0x04,
11459 NULL, HFILL }},
11460 { &hf_mms_Transitions_any_to_deleted,
11461 { "any-to-deleted", "mms.Transitions.any.to.deleted",
11462 FT_BOOLEAN, 8, NULL, 0x02,
11463 NULL, HFILL }},
11466 /* List of subtrees */
11467 static int* ett[] = {
11468 &ett_mms,
11469 &ett_mms_iec61850_quality_bitstring,
11470 &ett_mms_iec61850_check_bitstring,
11471 &ett_mms_ReportedOptFlds,
11472 &ett_mms_MMSpdu,
11473 &ett_mms_Confirmed_RequestPDU,
11474 &ett_mms_SEQUENCE_OF_Modifier,
11475 &ett_mms_Unconfirmed_PDU,
11476 &ett_mms_Confirmed_ResponsePDU,
11477 &ett_mms_Confirmed_ErrorPDU,
11478 &ett_mms_UnconfirmedService,
11479 &ett_mms_Modifier,
11480 &ett_mms_ConfirmedServiceRequest,
11481 &ett_mms_CS_Request_Detail,
11482 &ett_mms_ConfirmedServiceResponse,
11483 &ett_mms_FileName,
11484 &ett_mms_ObjectName,
11485 &ett_mms_T_domain_specific,
11486 &ett_mms_ApplicationReference,
11487 &ett_mms_Initiate_RequestPDU,
11488 &ett_mms_InitRequestDetail,
11489 &ett_mms_Initiate_ResponsePDU,
11490 &ett_mms_InitResponseDetail,
11491 &ett_mms_ParameterSupportOptions,
11492 &ett_mms_ServiceSupportOptions,
11493 &ett_mms_Cancel_ErrorPDU,
11494 &ett_mms_ServiceError,
11495 &ett_mms_T_errorClass,
11496 &ett_mms_T_serviceSpecificInformation,
11497 &ett_mms_AdditionalService_Error,
11498 &ett_mms_RemoveEventConditionListReference_Error,
11499 &ett_mms_InitiateUnitControl_Error,
11500 &ett_mms_StartUnitControl_Error,
11501 &ett_mms_StopUnitControl_Error,
11502 &ett_mms_DeleteUnitControl_Error,
11503 &ett_mms_LoadUnitControlFromFile_Error,
11504 &ett_mms_RejectPDU,
11505 &ett_mms_T_rejectReason,
11506 &ett_mms_Status_Response,
11507 &ett_mms_ObjectScope,
11508 &ett_mms_GetNameList_Request,
11509 &ett_mms_T_extendedObjectClass,
11510 &ett_mms_GetNameList_Response,
11511 &ett_mms_SEQUENCE_OF_Identifier,
11512 &ett_mms_Identify_Response,
11513 &ett_mms_T_listOfAbstractSyntaxes,
11514 &ett_mms_Rename_Request,
11515 &ett_mms_T_extendedObjectClass_01,
11516 &ett_mms_GetCapabilityList_Request,
11517 &ett_mms_GetCapabilityList_Response,
11518 &ett_mms_T_listOfCapabilities,
11519 &ett_mms_InitiateDownloadSequence_Request,
11520 &ett_mms_T_listOfCapabilities_01,
11521 &ett_mms_DownloadSegment_Response,
11522 &ett_mms_T_loadData,
11523 &ett_mms_TerminateDownloadSequence_Request,
11524 &ett_mms_InitiateUploadSequence_Response,
11525 &ett_mms_T_listOfCapabilities_02,
11526 &ett_mms_UploadSegment_Response,
11527 &ett_mms_T_loadData_01,
11528 &ett_mms_RequestDomainDownload_Request,
11529 &ett_mms_T_listOfCapabilities_03,
11530 &ett_mms_RequestDomainUpload_Request,
11531 &ett_mms_LoadDomainContent_Request,
11532 &ett_mms_T_listOfCapabilities_04,
11533 &ett_mms_StoreDomainContent_Request,
11534 &ett_mms_GetDomainAttributes_Response,
11535 &ett_mms_T_listOfCapabilities_05,
11536 &ett_mms_CreateProgramInvocation_Request,
11537 &ett_mms_Start_Request,
11538 &ett_mms_T_executionArgument,
11539 &ett_mms_Stop_Request,
11540 &ett_mms_Resume_Request,
11541 &ett_mms_T_executionArgument_01,
11542 &ett_mms_Reset_Request,
11543 &ett_mms_Kill_Request,
11544 &ett_mms_GetProgramInvocationAttributes_Response,
11545 &ett_mms_T_executionArgument_02,
11546 &ett_mms_TypeSpecification,
11547 &ett_mms_T_array,
11548 &ett_mms_T_structure,
11549 &ett_mms_T_components,
11550 &ett_mms_T_components_item,
11551 &ett_mms_AlternateAccess,
11552 &ett_mms_AlternateAccess_item,
11553 &ett_mms_T_named,
11554 &ett_mms_AlternateAccessSelection,
11555 &ett_mms_T_selectAlternateAccess,
11556 &ett_mms_T_accessSelection,
11557 &ett_mms_T_indexRange,
11558 &ett_mms_T_selectAccess,
11559 &ett_mms_T_indexRange_01,
11560 &ett_mms_Read_Request,
11561 &ett_mms_Read_Response,
11562 &ett_mms_SEQUENCE_OF_AccessResult,
11563 &ett_mms_Write_Request,
11564 &ett_mms_T_listOfData,
11565 &ett_mms_Write_Response,
11566 &ett_mms_Write_Response_item,
11567 &ett_mms_InformationReport,
11568 &ett_mms_T_listOfAccessResult,
11569 &ett_mms_GetVariableAccessAttributes_Request,
11570 &ett_mms_GetVariableAccessAttributes_Response,
11571 &ett_mms_DefineNamedVariable_Request,
11572 &ett_mms_DefineScatteredAccess_Request,
11573 &ett_mms_GetScatteredAccessAttributes_Response,
11574 &ett_mms_DeleteVariableAccess_Request,
11575 &ett_mms_SEQUENCE_OF_ObjectName,
11576 &ett_mms_DeleteVariableAccess_Response,
11577 &ett_mms_DefineNamedVariableList_Request,
11578 &ett_mms_T_listOfVariable,
11579 &ett_mms_T_listOfVariable_item,
11580 &ett_mms_GetNamedVariableListAttributes_Response,
11581 &ett_mms_T_listOfVariable_01,
11582 &ett_mms_T_listOfVariable_item_01,
11583 &ett_mms_DeleteNamedVariableList_Request,
11584 &ett_mms_DeleteNamedVariableList_Response,
11585 &ett_mms_DefineNamedType_Request,
11586 &ett_mms_GetNamedTypeAttributes_Response,
11587 &ett_mms_DeleteNamedType_Request,
11588 &ett_mms_DeleteNamedType_Response,
11589 &ett_mms_AccessResult,
11590 &ett_mms_Data,
11591 &ett_mms_SEQUENCE_OF_Data,
11592 &ett_mms_T_structure_01,
11593 &ett_mms_VariableAccessSpecification,
11594 &ett_mms_T_listOfVariable_02,
11595 &ett_mms_T_listOfVariable_item_02,
11596 &ett_mms_ScatteredAccessDescription,
11597 &ett_mms_ScatteredAccessDescription_item,
11598 &ett_mms_VariableSpecification,
11599 &ett_mms_T_variableDescription,
11600 &ett_mms_Address,
11601 &ett_mms_TakeControl_Request,
11602 &ett_mms_TakeControl_Response,
11603 &ett_mms_RelinquishControl_Request,
11604 &ett_mms_DefineSemaphore_Request,
11605 &ett_mms_ReportSemaphoreStatus_Response,
11606 &ett_mms_ReportPoolSemaphoreStatus_Request,
11607 &ett_mms_ReportPoolSemaphoreStatus_Response,
11608 &ett_mms_T_listOfNamedTokens,
11609 &ett_mms_T_listOfNamedTokens_item,
11610 &ett_mms_ReportSemaphoreEntryStatus_Request,
11611 &ett_mms_ReportSemaphoreEntryStatus_Response,
11612 &ett_mms_SEQUENCE_OF_SemaphoreEntry,
11613 &ett_mms_AttachToSemaphore,
11614 &ett_mms_SemaphoreEntry,
11615 &ett_mms_Input_Request,
11616 &ett_mms_T_listOfPromptData,
11617 &ett_mms_Output_Request,
11618 &ett_mms_T_listOfOutputData,
11619 &ett_mms_DefineEventCondition_Request,
11620 &ett_mms_DeleteEventCondition_Request,
11621 &ett_mms_GetEventConditionAttributes_Response,
11622 &ett_mms_T_monitoredVariable,
11623 &ett_mms_ReportEventConditionStatus_Response,
11624 &ett_mms_AlterEventConditionMonitoring_Request,
11625 &ett_mms_TriggerEvent_Request,
11626 &ett_mms_DefineEventAction_Request,
11627 &ett_mms_DeleteEventAction_Request,
11628 &ett_mms_GetEventActionAttributes_Response,
11629 &ett_mms_DefineEventEnrollment_Request,
11630 &ett_mms_DeleteEventEnrollment_Request,
11631 &ett_mms_GetEventEnrollmentAttributes_Request,
11632 &ett_mms_EventEnrollment,
11633 &ett_mms_T_eventConditionName,
11634 &ett_mms_T_eventActionName,
11635 &ett_mms_GetEventEnrollmentAttributes_Response,
11636 &ett_mms_SEQUENCE_OF_EventEnrollment,
11637 &ett_mms_ReportEventEnrollmentStatus_Response,
11638 &ett_mms_AlterEventEnrollment_Request,
11639 &ett_mms_AlterEventEnrollment_Response,
11640 &ett_mms_T_currentState,
11641 &ett_mms_AcknowledgeEventNotification_Request,
11642 &ett_mms_GetAlarmSummary_Request,
11643 &ett_mms_T_severityFilter,
11644 &ett_mms_GetAlarmSummary_Response,
11645 &ett_mms_SEQUENCE_OF_AlarmSummary,
11646 &ett_mms_AlarmSummary,
11647 &ett_mms_GetAlarmEnrollmentSummary_Request,
11648 &ett_mms_T_severityFilter_01,
11649 &ett_mms_GetAlarmEnrollmentSummary_Response,
11650 &ett_mms_SEQUENCE_OF_AlarmEnrollmentSummary,
11651 &ett_mms_AlarmEnrollmentSummary,
11652 &ett_mms_EventNotification,
11653 &ett_mms_T_eventConditionName_01,
11654 &ett_mms_T_actionResult,
11655 &ett_mms_T_eventActionResult,
11656 &ett_mms_AttachToEventCondition,
11657 &ett_mms_EventTime,
11658 &ett_mms_Transitions,
11659 &ett_mms_ReadJournal_Request,
11660 &ett_mms_T_rangeStartSpecification,
11661 &ett_mms_T_rangeStopSpecification,
11662 &ett_mms_T_listOfVariables,
11663 &ett_mms_T_entryToStartAfter,
11664 &ett_mms_ReadJournal_Response,
11665 &ett_mms_SEQUENCE_OF_JournalEntry,
11666 &ett_mms_JournalEntry,
11667 &ett_mms_WriteJournal_Request,
11668 &ett_mms_SEQUENCE_OF_EntryContent,
11669 &ett_mms_InitializeJournal_Request,
11670 &ett_mms_T_limitSpecification,
11671 &ett_mms_ReportJournalStatus_Response,
11672 &ett_mms_CreateJournal_Request,
11673 &ett_mms_DeleteJournal_Request,
11674 &ett_mms_EntryContent,
11675 &ett_mms_T_entryForm,
11676 &ett_mms_T_data,
11677 &ett_mms_T_event,
11678 &ett_mms_T_listOfVariables_01,
11679 &ett_mms_T_listOfVariables_item,
11680 &ett_mms_ObtainFile_Request,
11681 &ett_mms_FileOpen_Request,
11682 &ett_mms_FileOpen_Response,
11683 &ett_mms_FileRead_Response,
11684 &ett_mms_FileRename_Request,
11685 &ett_mms_FileDirectory_Request,
11686 &ett_mms_FileDirectory_Response,
11687 &ett_mms_SEQUENCE_OF_DirectoryEntry,
11688 &ett_mms_DirectoryEntry,
11689 &ett_mms_FileAttributes,
11692 static ei_register_info ei[] = {
11693 { &ei_mms_mal_timeofday_encoding, { "mms.malformed.timeofday_encoding", PI_MALFORMED, PI_WARN, "BER Error: malformed TimeOfDay encoding", EXPFILL }},
11694 { &ei_mms_mal_utctime_encoding, { "mms.malformed.utctime", PI_MALFORMED, PI_WARN, "BER Error: malformed IEC61850 UTCTime encoding", EXPFILL }},
11695 { &ei_mms_zero_pdu, { "mms.zero_pdu", PI_PROTOCOL, PI_ERROR, "Internal error, zero-byte MMS PDU", EXPFILL }},
11698 expert_module_t* expert_mms;
11700 /* Register protocol */
11701 proto_mms = proto_register_protocol(PNAME, PSNAME, PFNAME);
11702 register_dissector("mms", dissect_mms, proto_mms);
11703 /* Register fields and subtrees */
11704 proto_register_field_array(proto_mms, hf, array_length(hf));
11705 proto_register_subtree_array(ett, array_length(ett));
11706 expert_mms = expert_register_protocol(proto_mms);
11707 expert_register_field_array(expert_mms, ei, array_length(ei));
11709 /* Setting to enable/disable the IEC-61850 mapping on MMS */
11710 module_t* mms_module = prefs_register_protocol(proto_mms, NULL);
11712 prefs_register_bool_preference(mms_module, "use_iec61850_mapping",
11713 "Dissect MMS as IEC-61850",
11714 "Enables or disables dissection as IEC-61850 on top of MMS",
11715 &use_iec61850_mapping);
11719 static bool
11720 dissect_mms_heur(tvbuff_t* tvb, packet_info* pinfo, proto_tree* parent_tree, void* data)
11722 /* must check that this really is an mms packet */
11723 int offset = 0;
11724 uint32_t length = 0;
11725 uint32_t oct;
11726 int idx = 0;
11728 int8_t tmp_class;
11729 bool tmp_pc;
11730 int32_t tmp_tag;
11732 /* first, check do we have at least 2 bytes (pdu) */
11733 if (!tvb_bytes_exist(tvb, 0, 2))
11734 return false; /* no */
11736 /* can we recognize MMS PDU ? Return false if not */
11737 /* get MMS PDU type */
11738 offset = get_ber_identifier(tvb, offset, &tmp_class, &tmp_pc, &tmp_tag);
11740 /* check MMS type */
11742 /* Class should be constructed */
11743 if (tmp_class != BER_CLASS_CON)
11744 return false;
11746 /* see if the tag is a valid MMS PDU */
11747 try_val_to_str_idx(tmp_tag, mms_MMSpdu_vals, &idx);
11748 if (idx == -1) {
11749 return false; /* no, it isn't an MMS PDU */
11752 /* check MMS length */
11753 oct = tvb_get_uint8(tvb, offset) & 0x7F;
11754 if (oct == 0)
11755 /* MMS requires length after tag so not MMS if indefinite length*/
11756 return false;
11758 offset = get_ber_length(tvb, offset, &length, NULL);
11759 /* do we have enough bytes? */
11760 if (!tvb_bytes_exist(tvb, offset, length))
11761 return false;
11763 dissect_mms(tvb, pinfo, parent_tree, data);
11764 return true;
11767 /*--- proto_reg_handoff_mms --- */
11768 void proto_reg_handoff_mms(void) {
11769 register_ber_oid_dissector("1.0.9506.2.3", dissect_mms, proto_mms, "MMS");
11770 register_ber_oid_dissector("1.0.9506.2.1", dissect_mms, proto_mms, "mms-abstract-syntax-version1(1)");
11771 heur_dissector_add("cotp", dissect_mms_heur, "MMS over COTP", "mms_cotp", proto_mms, HEURISTIC_ENABLE);
11772 heur_dissector_add("cotp_is", dissect_mms_heur, "MMS over COTP (inactive subset)", "mms_cotp_is", proto_mms, HEURISTIC_ENABLE);