- dissect_ber_object_identifier() returns value as tvb
[obnox/wireshark/wip.git] / epan / dissectors / packet-cmip.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
3 /* .\packet-cmip.c                                                            */
4 /* ../../tools/asn2eth.py -X -b -e -p cmip -c cmip.cnf -s packet-cmip-template CMIP.asn */
5
6 /* Input file: packet-cmip-template.c */
7
8 /* packet-cmip.c
9  * Routines for X.711 CMIP packet dissection
10  *   Ronnie Sahlberg 2004
11  *
12  * $Id$
13  *
14  * Ethereal - Network traffic analyzer
15  * By Gerald Combs <gerald@ethereal.com>
16  * Copyright 1998 Gerald Combs
17  *
18  * This program is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU General Public License
20  * as published by the Free Software Foundation; either version 2
21  * of the License, or (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
31  */
32
33 #ifdef HAVE_CONFIG_H
34 # include "config.h"
35 #endif
36
37 #include <glib.h>
38 #include <epan/packet.h>
39 #include <epan/conversation.h>
40
41 #include <stdio.h>
42 #include <string.h>
43
44 #include "packet-ber.h"
45 #include "packet-acse.h"
46 #include "packet-x509if.h"
47 #include "packet-cmip.h"
48
49 #define PNAME  "X711 CMIP"
50 #define PSNAME "CMIP"
51 #define PFNAME "cmip"
52
53 /* XXX some stuff we need until we can get rid of it */
54 #include "packet-ses.h"
55 #include "packet-pres.h"
56
57 /* Initialize the protocol and registered fields */
58 int proto_cmip = -1;
59 static int hf_cmip_actionType_OID = -1;
60 static int hf_cmip_eventType_OID = -1;
61 static int hf_cmip_attributeId_OID = -1;
62 static int hf_cmip_errorId_OID = -1;
63 static int hf_DiscriminatorConstruct = -1;
64 static int hf_Destination = -1;
65 static int hf_NameBinding = -1;
66 static int hf_ObjectClass = -1;
67 static int hf_OperationalState = -1;
68
69 /*--- Included file: packet-cmip-hf.c ---*/
70
71 static int hf_cmip_modifyOperator = -1;           /* ModifyOperator */
72 static int hf_cmip_attributeId = -1;              /* T_attributeId */
73 static int hf_cmip_attributeValue = -1;           /* T_attributeValue */
74 static int hf_cmip_managedObjectClass = -1;       /* ObjectClass */
75 static int hf_cmip_managedObjectInstance = -1;    /* ObjectInstance */
76 static int hf_cmip_currentTime = -1;              /* GeneralizedTime */
77 static int hf_cmip_getInfoList = -1;              /* SET_OF_GetInfoStatus */
78 static int hf_cmip_getInfoList_item = -1;         /* GetInfoStatus */
79 static int hf_cmip_attributeIdError = -1;         /* AttributeIdError */
80 static int hf_cmip_attribute = -1;                /* Attribute */
81 static int hf_cmip_errorStatus = -1;              /* T_errorStatus */
82 static int hf_cmip_attributeId1 = -1;             /* AttributeId */
83 static int hf_cmip_setInfoList = -1;              /* SET_OF_SetInfoStatus */
84 static int hf_cmip_setInfoList_item = -1;         /* SetInfoStatus */
85 static int hf_cmip_actionErrorInfo = -1;          /* ActionErrorInfo */
86 static int hf_cmip_specificErrorInfo = -1;        /* SpecificErrorInfo */
87 static int hf_cmip_RDNSequence_item = -1;         /* RelativeDistinguishedName */
88 static int hf_cmip_RelativeDistinguishedName_item = -1;  /* AttributeValueAssertion */
89 static int hf_cmip_deleteErrorInfo = -1;          /* T_deleteErrorInfo */
90 static int hf_cmip_attributeError = -1;           /* AttributeError */
91 static int hf_cmip_errorId = -1;                  /* T_errorId */
92 static int hf_cmip_errorInfo = -1;                /* T_errorInfo */
93 static int hf_cmip_actionType = -1;               /* T_actionType */
94 static int hf_cmip_eventType = -1;                /* T_eventType */
95 static int hf_cmip_actionId = -1;                 /* NoSuchArgumentAction */
96 static int hf_cmip_eventId = -1;                  /* NoSuchArgumentEvent */
97 static int hf_cmip_eventType1 = -1;               /* T_eventType1 */
98 static int hf_cmip_eventInfo = -1;                /* T_eventInfo */
99 static int hf_cmip_actionValue = -1;              /* ActionInfo */
100 static int hf_cmip_eventValue = -1;               /* InvalidArgumentValueEventValue */
101 static int hf_cmip_actionType1 = -1;              /* T_actionType1 */
102 static int hf_cmip_actionArgument = -1;           /* NoSuchArgument */
103 static int hf_cmip_argumentValue = -1;            /* InvalidArgumentValue */
104 static int hf_cmip_errorStatus1 = -1;             /* T_errorStatus1 */
105 static int hf_cmip_errorInfo1 = -1;               /* ErrorInfo */
106 static int hf_cmip_errorStatus2 = -1;             /* T_errorStatus2 */
107 static int hf_cmip_attributeId2 = -1;             /* T_attributeId1 */
108 static int hf_cmip_attributeValue1 = -1;          /* T_attributeValue1 */
109 static int hf_cmip_attributeList = -1;            /* SET_OF_Attribute */
110 static int hf_cmip_attributeList_item = -1;       /* Attribute */
111 static int hf_cmip_baseManagedObjectClass = -1;   /* ObjectClass */
112 static int hf_cmip_baseManagedObjectInstance = -1;  /* ObjectInstance */
113 static int hf_cmip_accessControl = -1;            /* AccessControl */
114 static int hf_cmip_synchronization = -1;          /* CMISSync */
115 static int hf_cmip_scope = -1;                    /* Scope */
116 static int hf_cmip_filter = -1;                   /* CMISFilter */
117 static int hf_cmip_modificationList = -1;         /* SET_OF_ModificationItem */
118 static int hf_cmip_modificationList_item = -1;    /* ModificationItem */
119 static int hf_cmip_getResult = -1;                /* GetResult */
120 static int hf_cmip_getListError = -1;             /* GetListError */
121 static int hf_cmip_setResult = -1;                /* SetResult */
122 static int hf_cmip_setListError = -1;             /* SetListError */
123 static int hf_cmip_actionResult = -1;             /* ActionResult */
124 static int hf_cmip_processingFailure = -1;        /* ProcessingFailure */
125 static int hf_cmip_deleteResult = -1;             /* DeleteResult */
126 static int hf_cmip_actionError = -1;              /* ActionError */
127 static int hf_cmip_deleteError = -1;              /* DeleteError */
128 static int hf_cmip_eventType2 = -1;               /* T_eventType2 */
129 static int hf_cmip_eventReplyInfo = -1;           /* T_eventReplyInfo */
130 static int hf_cmip_eventReply = -1;               /* EventReply */
131 static int hf_cmip_eventTime = -1;                /* GeneralizedTime */
132 static int hf_cmip_eventType3 = -1;               /* T_eventType3 */
133 static int hf_cmip_eventInfo1 = -1;               /* T_eventInfo1 */
134 static int hf_cmip_managedOrSuperiorObjectInstance = -1;  /* T_managedOrSuperiorObjectInstance */
135 static int hf_cmip_superiorObjectInstance = -1;   /* ObjectInstance */
136 static int hf_cmip_referenceObjectInstance = -1;  /* ObjectInstance */
137 static int hf_cmip_actionType2 = -1;              /* T_actionType2 */
138 static int hf_cmip_actionReplyInfo = -1;          /* T_actionReplyInfo */
139 static int hf_cmip_actionReply = -1;              /* ActionReply */
140 static int hf_cmip_actionInfo = -1;               /* ActionInfo */
141 static int hf_cmip_actionType3 = -1;              /* T_actionType3 */
142 static int hf_cmip_actionInfoArg = -1;            /* T_actionInfoArg */
143 static int hf_cmip_ocglobalForm = -1;             /* T_ocglobalForm */
144 static int hf_cmip_oclocalForm = -1;              /* T_oclocalForm */
145 static int hf_cmip_distinguishedName = -1;        /* DistinguishedName */
146 static int hf_cmip_nonSpecificForm = -1;          /* OCTET_STRING */
147 static int hf_cmip_localDistinguishedName = -1;   /* RDNSequence */
148 static int hf_cmip_globalForm = -1;               /* T_globalForm */
149 static int hf_cmip_localForm = -1;                /* T_localForm */
150 static int hf_cmip_id = -1;                       /* AttributeId */
151 static int hf_cmip_value = -1;                    /* T_value */
152 static int hf_cmip_id1 = -1;                      /* T_id */
153 static int hf_cmip_value1 = -1;                   /* T_value1 */
154 static int hf_cmip_equality = -1;                 /* Attribute */
155 static int hf_cmip_substrings = -1;               /* T_substrings */
156 static int hf_cmip_substrings_item = -1;          /* T_substrings_item */
157 static int hf_cmip_initialString = -1;            /* Attribute */
158 static int hf_cmip_anyString = -1;                /* Attribute */
159 static int hf_cmip_finalString = -1;              /* Attribute */
160 static int hf_cmip_greaterOrEqual = -1;           /* Attribute */
161 static int hf_cmip_lessOrEqual = -1;              /* Attribute */
162 static int hf_cmip_present = -1;                  /* AttributeId */
163 static int hf_cmip_subsetOf = -1;                 /* Attribute */
164 static int hf_cmip_supersetOf = -1;               /* Attribute */
165 static int hf_cmip_nonNullSetIntersection = -1;   /* Attribute */
166 static int hf_cmip_single = -1;                   /* AE_title */
167 static int hf_cmip_multiple = -1;                 /* SET_OF_AE_title */
168 static int hf_cmip_multiple_item = -1;            /* AE_title */
169 static int hf_cmip_ae_title_form1 = -1;           /* AE_title_form1 */
170 static int hf_cmip_ae_title_form2 = -1;           /* AE_title_form2 */
171 static int hf_cmip_rdnSequence = -1;              /* RDNSequence */
172 static int hf_cmip_item = -1;                     /* FilterItem */
173 static int hf_cmip_and = -1;                      /* SET_OF_CMISFilter */
174 static int hf_cmip_and_item = -1;                 /* CMISFilter */
175 static int hf_cmip_or = -1;                       /* SET_OF_CMISFilter */
176 static int hf_cmip_or_item = -1;                  /* CMISFilter */
177 static int hf_cmip_not = -1;                      /* CMISFilter */
178 static int hf_cmip_namedNumbers = -1;             /* T_namedNumbers */
179 static int hf_cmip_individualLevels = -1;         /* INTEGER */
180 static int hf_cmip_baseToNthLevel = -1;           /* INTEGER */
181 static int hf_cmip_attributeIdList = -1;          /* SET_OF_AttributeId */
182 static int hf_cmip_attributeIdList_item = -1;     /* AttributeId */
183 static int hf_cmip_opcode = -1;                   /* Opcode */
184 static int hf_cmip_argument = -1;                 /* Argument */
185 static int hf_cmip_present1 = -1;                 /* InvokeID */
186 static int hf_cmip_absent = -1;                   /* NULL */
187 static int hf_cmip_invokeId = -1;                 /* InvokeId */
188 static int hf_cmip_linkedId = -1;                 /* InvokeLinkedId */
189 static int hf_cmip_rRBody = -1;                   /* ReturnResultBody */
190 static int hf_cmip_generalProblem = -1;           /* GeneralProblem */
191 static int hf_cmip_invokeProblem = -1;            /* InvokeProblem */
192 static int hf_cmip_returnResultProblem = -1;      /* ReturnResultProblem */
193 static int hf_cmip_returnErrorProblem = -1;       /* ReturnErrorProblem */
194 static int hf_cmip_rejectProblem = -1;            /* RejectProb */
195 static int hf_cmip_invoke = -1;                   /* Invoke */
196 static int hf_cmip_returnResult = -1;             /* ReturnResult */
197 static int hf_cmip_returnError = -1;              /* ReturnError */
198 static int hf_cmip_reject = -1;                   /* Reject */
199 static int hf_cmip_abortSource = -1;              /* CMIPAbortSource */
200 static int hf_cmip_userInfo = -1;                 /* EXTERNAL */
201 static int hf_cmip_protocolVersion = -1;          /* ProtocolVersion */
202 static int hf_cmip_functionalUnits = -1;          /* FunctionalUnits */
203 static int hf_cmip_accessControl1 = -1;           /* EXTERNAL */
204 /* named bits */
205 static int hf_cmip_FunctionalUnits_multipleObjectSelection = -1;
206 static int hf_cmip_FunctionalUnits_filter = -1;
207 static int hf_cmip_FunctionalUnits_multipleReply = -1;
208 static int hf_cmip_FunctionalUnits_extendedService = -1;
209 static int hf_cmip_FunctionalUnits_cancelGet = -1;
210 static int hf_cmip_ProtocolVersion_version1 = -1;
211 static int hf_cmip_ProtocolVersion_version2 = -1;
212
213 /*--- End of included file: packet-cmip-hf.c ---*/
214
215
216 /* Initialize the subtree pointers */
217 static gint ett_cmip = -1;
218
219 /*--- Included file: packet-cmip-ett.c ---*/
220
221 static gint ett_cmip_ModificationItem = -1;
222 static gint ett_cmip_GetListError = -1;
223 static gint ett_cmip_SET_OF_GetInfoStatus = -1;
224 static gint ett_cmip_GetInfoStatus = -1;
225 static gint ett_cmip_AttributeIdError = -1;
226 static gint ett_cmip_SetListError = -1;
227 static gint ett_cmip_SET_OF_SetInfoStatus = -1;
228 static gint ett_cmip_ActionError = -1;
229 static gint ett_cmip_ProcessingFailure = -1;
230 static gint ett_cmip_RDNSequence = -1;
231 static gint ett_cmip_RelativeDistinguishedName = -1;
232 static gint ett_cmip_DeleteError = -1;
233 static gint ett_cmip_SetInfoStatus = -1;
234 static gint ett_cmip_SpecificErrorInfo = -1;
235 static gint ett_cmip_NoSuchArgumentAction = -1;
236 static gint ett_cmip_NoSuchArgumentEvent = -1;
237 static gint ett_cmip_NoSuchArgument = -1;
238 static gint ett_cmip_InvalidArgumentValueEventValue = -1;
239 static gint ett_cmip_InvalidArgumentValue = -1;
240 static gint ett_cmip_ErrorInfo = -1;
241 static gint ett_cmip_ActionErrorInfo = -1;
242 static gint ett_cmip_AttributeError = -1;
243 static gint ett_cmip_SetResult = -1;
244 static gint ett_cmip_SET_OF_Attribute = -1;
245 static gint ett_cmip_SetArgument = -1;
246 static gint ett_cmip_SET_OF_ModificationItem = -1;
247 static gint ett_cmip_LinkedReplyArgument = -1;
248 static gint ett_cmip_EventReply = -1;
249 static gint ett_cmip_EventReportResult = -1;
250 static gint ett_cmip_EventReportArgument = -1;
251 static gint ett_cmip_DeleteArgument = -1;
252 static gint ett_cmip_DeleteResult = -1;
253 static gint ett_cmip_CreateArgument = -1;
254 static gint ett_cmip_T_managedOrSuperiorObjectInstance = -1;
255 static gint ett_cmip_CreateResult = -1;
256 static gint ett_cmip_ActionReply = -1;
257 static gint ett_cmip_ActionResult = -1;
258 static gint ett_cmip_ActionArgument = -1;
259 static gint ett_cmip_ActionInfo = -1;
260 static gint ett_cmip_ObjectClass = -1;
261 static gint ett_cmip_ObjectInstance = -1;
262 static gint ett_cmip_BaseManagedObjectId = -1;
263 static gint ett_cmip_AttributeId = -1;
264 static gint ett_cmip_Attribute = -1;
265 static gint ett_cmip_AttributeValueAssertion = -1;
266 static gint ett_cmip_FilterItem = -1;
267 static gint ett_cmip_T_substrings = -1;
268 static gint ett_cmip_T_substrings_item = -1;
269 static gint ett_cmip_Destination = -1;
270 static gint ett_cmip_SET_OF_AE_title = -1;
271 static gint ett_cmip_AE_title = -1;
272 static gint ett_cmip_Name = -1;
273 static gint ett_cmip_CMISFilter = -1;
274 static gint ett_cmip_SET_OF_CMISFilter = -1;
275 static gint ett_cmip_Scope = -1;
276 static gint ett_cmip_GetArgument = -1;
277 static gint ett_cmip_SET_OF_AttributeId = -1;
278 static gint ett_cmip_GetResult = -1;
279 static gint ett_cmip_ReturnResultBody = -1;
280 static gint ett_cmip_InvokeId = -1;
281 static gint ett_cmip_Invoke = -1;
282 static gint ett_cmip_ReturnResult = -1;
283 static gint ett_cmip_ReturnError = -1;
284 static gint ett_cmip_RejectProb = -1;
285 static gint ett_cmip_Reject = -1;
286 static gint ett_cmip_ROS = -1;
287 static gint ett_cmip_CMIPAbortInfo = -1;
288 static gint ett_cmip_FunctionalUnits = -1;
289 static gint ett_cmip_CMIPUserInfo = -1;
290 static gint ett_cmip_ProtocolVersion = -1;
291
292 /*--- End of included file: packet-cmip-ett.c ---*/
293
294
295 static guint32 opcode;
296
297 static int opcode_type;
298 #define OPCODE_INVOKE        1
299 #define OPCODE_RETURN_RESULT 2
300 #define OPCODE_RETURN_ERROR  3
301 #define OPCODE_REJECT        4
302
303 static int attributeform;
304 #define ATTRIBUTE_LOCAL_FORM  0
305 #define ATTRIBUTE_GLOBAL_FORM 1
306 static const char *attribute_identifier_id;
307
308 static const char *attributevalueassertion_id;
309
310 static const char *object_identifier_id;
311
312 static int objectclassform;
313 #define OBJECTCLASS_LOCAL_FORM  0
314 #define OBJECTCLASS_GLOBAL_FORM 1
315 static const char *objectclass_identifier_id;
316
317
318 /*--- Included file: packet-cmip-fn.c ---*/
319
320 /*--- Cyclic dependencies ---*/
321
322 /* CMISFilter -> CMISFilter/and -> CMISFilter */
323 /* CMISFilter -> CMISFilter */
324 static int dissect_cmip_CMISFilter(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
325
326 static int dissect_filter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
327   return dissect_cmip_CMISFilter(FALSE, tvb, offset, pinfo, tree, hf_cmip_filter);
328 }
329 static int dissect_and_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
330   return dissect_cmip_CMISFilter(FALSE, tvb, offset, pinfo, tree, hf_cmip_and_item);
331 }
332 static int dissect_or_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
333   return dissect_cmip_CMISFilter(FALSE, tvb, offset, pinfo, tree, hf_cmip_or_item);
334 }
335 static int dissect_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
336   return dissect_cmip_CMISFilter(FALSE, tvb, offset, pinfo, tree, hf_cmip_not);
337 }
338
339
340 /*--- Fields for imported types ---*/
341
342 static int dissect_userInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
343   return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_cmip_userInfo);
344 }
345 static int dissect_accessControl1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
346   return dissect_acse_EXTERNAL(FALSE, tvb, offset, pinfo, tree, hf_cmip_accessControl1);
347 }
348
349
350 static const value_string cmip_ModifyOperator_vals[] = {
351   {   0, "replace" },
352   {   1, "addValues" },
353   {   2, "removeValues" },
354   {   3, "setToDefault" },
355   { 0, NULL }
356 };
357
358
359 static int
360 dissect_cmip_ModifyOperator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
361   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
362                                   NULL);
363
364   return offset;
365 }
366 static int dissect_modifyOperator_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
367   return dissect_cmip_ModifyOperator(TRUE, tvb, offset, pinfo, tree, hf_cmip_modifyOperator);
368 }
369
370
371
372 static int
373 dissect_cmip_T_attributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
374   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_attributeId_OID, &object_identifier_id);
375
376   return offset;
377 }
378 static int dissect_attributeId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
379   return dissect_cmip_T_attributeId(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeId);
380 }
381
382
383
384 static int
385 dissect_cmip_T_attributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
386   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
387
388
389   return offset;
390 }
391 static int dissect_attributeValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
392   return dissect_cmip_T_attributeValue(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeValue);
393 }
394
395
396 static const ber_sequence_t ModificationItem_sequence[] = {
397   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyOperator_impl },
398   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeId },
399   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributeValue },
400   { 0, 0, 0, NULL }
401 };
402
403 static int
404 dissect_cmip_ModificationItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
405   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
406                                    ModificationItem_sequence, hf_index, ett_cmip_ModificationItem);
407
408   return offset;
409 }
410 static int dissect_modificationList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
411   return dissect_cmip_ModificationItem(FALSE, tvb, offset, pinfo, tree, hf_cmip_modificationList_item);
412 }
413
414
415
416 static int
417 dissect_cmip_T_ocglobalForm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
418   objectclassform = OBJECTCLASS_GLOBAL_FORM;
419   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &objectclass_identifier_id);
420
421   return offset;
422 }
423 static int dissect_ocglobalForm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
424   return dissect_cmip_T_ocglobalForm(TRUE, tvb, offset, pinfo, tree, hf_cmip_ocglobalForm);
425 }
426
427
428
429 static int
430 dissect_cmip_T_oclocalForm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
431   objectclassform = OBJECTCLASS_LOCAL_FORM;
432
433   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
434                                   NULL);
435
436   return offset;
437 }
438 static int dissect_oclocalForm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
439   return dissect_cmip_T_oclocalForm(TRUE, tvb, offset, pinfo, tree, hf_cmip_oclocalForm);
440 }
441
442
443 const value_string cmip_ObjectClass_vals[] = {
444   {   0, "ocglobalForm" },
445   {   1, "oclocalForm" },
446   { 0, NULL }
447 };
448
449 static const ber_choice_t ObjectClass_choice[] = {
450   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ocglobalForm_impl },
451   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_oclocalForm_impl },
452   { 0, 0, 0, 0, NULL }
453 };
454
455 int
456 dissect_cmip_ObjectClass(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
457   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
458                                  ObjectClass_choice, hf_index, ett_cmip_ObjectClass,
459                                  NULL);
460
461   return offset;
462 }
463 static int dissect_managedObjectClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
464   return dissect_cmip_ObjectClass(FALSE, tvb, offset, pinfo, tree, hf_cmip_managedObjectClass);
465 }
466 static int dissect_baseManagedObjectClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
467   return dissect_cmip_ObjectClass(FALSE, tvb, offset, pinfo, tree, hf_cmip_baseManagedObjectClass);
468 }
469
470
471
472 static int
473 dissect_cmip_T_id(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
474   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &attributevalueassertion_id);
475
476   return offset;
477 }
478 static int dissect_id1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
479   return dissect_cmip_T_id(FALSE, tvb, offset, pinfo, tree, hf_cmip_id1);
480 }
481
482
483
484 static int
485 dissect_cmip_T_value1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
486     offset=call_ber_oid_callback(attributevalueassertion_id, tvb, offset, pinfo, tree);
487
488
489   return offset;
490 }
491 static int dissect_value1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
492   return dissect_cmip_T_value1(FALSE, tvb, offset, pinfo, tree, hf_cmip_value1);
493 }
494
495
496 static const ber_sequence_t AttributeValueAssertion_sequence[] = {
497   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_id1 },
498   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_value1 },
499   { 0, 0, 0, NULL }
500 };
501
502 static int
503 dissect_cmip_AttributeValueAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
504   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
505                                    AttributeValueAssertion_sequence, hf_index, ett_cmip_AttributeValueAssertion);
506
507   return offset;
508 }
509 static int dissect_RelativeDistinguishedName_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
510   return dissect_cmip_AttributeValueAssertion(FALSE, tvb, offset, pinfo, tree, hf_cmip_RelativeDistinguishedName_item);
511 }
512
513
514 static const ber_sequence_t RelativeDistinguishedName_set_of[1] = {
515   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RelativeDistinguishedName_item },
516 };
517
518 static int
519 dissect_cmip_RelativeDistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
520   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
521                                  RelativeDistinguishedName_set_of, hf_index, ett_cmip_RelativeDistinguishedName);
522
523   return offset;
524 }
525 static int dissect_RDNSequence_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
526   return dissect_cmip_RelativeDistinguishedName(FALSE, tvb, offset, pinfo, tree, hf_cmip_RDNSequence_item);
527 }
528
529
530 static const ber_sequence_t RDNSequence_sequence_of[1] = {
531   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_RDNSequence_item },
532 };
533
534 int
535 dissect_cmip_RDNSequence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
536   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
537                                       RDNSequence_sequence_of, hf_index, ett_cmip_RDNSequence);
538
539   return offset;
540 }
541 static int dissect_localDistinguishedName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
542   return dissect_cmip_RDNSequence(TRUE, tvb, offset, pinfo, tree, hf_cmip_localDistinguishedName);
543 }
544 static int dissect_rdnSequence(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
545   return dissect_cmip_RDNSequence(FALSE, tvb, offset, pinfo, tree, hf_cmip_rdnSequence);
546 }
547
548
549
550 static int
551 dissect_cmip_DistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
552   offset = dissect_cmip_RDNSequence(implicit_tag, tvb, offset, pinfo, tree, hf_index);
553
554   return offset;
555 }
556 static int dissect_distinguishedName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
557   return dissect_cmip_DistinguishedName(TRUE, tvb, offset, pinfo, tree, hf_cmip_distinguishedName);
558 }
559
560
561
562 static int
563 dissect_cmip_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
564   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
565                                        NULL);
566
567   return offset;
568 }
569 static int dissect_nonSpecificForm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
570   return dissect_cmip_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_cmip_nonSpecificForm);
571 }
572
573
574 const value_string cmip_ObjectInstance_vals[] = {
575   {   2, "distinguishedName" },
576   {   3, "nonSpecificForm" },
577   {   4, "localDistinguishedName" },
578   { 0, NULL }
579 };
580
581 static const ber_choice_t ObjectInstance_choice[] = {
582   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_distinguishedName_impl },
583   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_nonSpecificForm_impl },
584   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_localDistinguishedName_impl },
585   { 0, 0, 0, 0, NULL }
586 };
587
588 int
589 dissect_cmip_ObjectInstance(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
590   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
591                                  ObjectInstance_choice, hf_index, ett_cmip_ObjectInstance,
592                                  NULL);
593
594   return offset;
595 }
596 static int dissect_managedObjectInstance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
597   return dissect_cmip_ObjectInstance(FALSE, tvb, offset, pinfo, tree, hf_cmip_managedObjectInstance);
598 }
599 static int dissect_baseManagedObjectInstance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
600   return dissect_cmip_ObjectInstance(FALSE, tvb, offset, pinfo, tree, hf_cmip_baseManagedObjectInstance);
601 }
602 static int dissect_superiorObjectInstance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
603   return dissect_cmip_ObjectInstance(FALSE, tvb, offset, pinfo, tree, hf_cmip_superiorObjectInstance);
604 }
605 static int dissect_referenceObjectInstance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
606   return dissect_cmip_ObjectInstance(FALSE, tvb, offset, pinfo, tree, hf_cmip_referenceObjectInstance);
607 }
608
609
610
611 static int
612 dissect_cmip_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
613   offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index);
614
615   return offset;
616 }
617 static int dissect_currentTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
618   return dissect_cmip_GeneralizedTime(TRUE, tvb, offset, pinfo, tree, hf_cmip_currentTime);
619 }
620 static int dissect_eventTime_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
621   return dissect_cmip_GeneralizedTime(TRUE, tvb, offset, pinfo, tree, hf_cmip_eventTime);
622 }
623
624
625 static const value_string cmip_T_errorStatus_vals[] = {
626   {   2, "accessDenied" },
627   {   5, "noSuchAttribute" },
628   { 0, NULL }
629 };
630
631
632 static int
633 dissect_cmip_T_errorStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
634   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
635                                   NULL);
636
637   return offset;
638 }
639 static int dissect_errorStatus(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
640   return dissect_cmip_T_errorStatus(FALSE, tvb, offset, pinfo, tree, hf_cmip_errorStatus);
641 }
642
643
644
645 static int
646 dissect_cmip_T_globalForm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
647   attributeform = ATTRIBUTE_GLOBAL_FORM;
648     offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &attribute_identifier_id);
649
650
651
652   return offset;
653 }
654 static int dissect_globalForm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
655   return dissect_cmip_T_globalForm(TRUE, tvb, offset, pinfo, tree, hf_cmip_globalForm);
656 }
657
658
659
660 static int
661 dissect_cmip_T_localForm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
662   attributeform = ATTRIBUTE_LOCAL_FORM;
663   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_localForm, NULL);
664
665
666   return offset;
667 }
668 static int dissect_localForm_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
669   return dissect_cmip_T_localForm(TRUE, tvb, offset, pinfo, tree, hf_cmip_localForm);
670 }
671
672
673 static const value_string cmip_AttributeId_vals[] = {
674   {   0, "globalForm" },
675   {   1, "localForm" },
676   { 0, NULL }
677 };
678
679 static const ber_choice_t AttributeId_choice[] = {
680   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_globalForm_impl },
681   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_localForm_impl },
682   { 0, 0, 0, 0, NULL }
683 };
684
685 static int
686 dissect_cmip_AttributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
687   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
688                                  AttributeId_choice, hf_index, ett_cmip_AttributeId,
689                                  NULL);
690
691   return offset;
692 }
693 static int dissect_attributeId1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
694   return dissect_cmip_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeId1);
695 }
696 static int dissect_id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
697   return dissect_cmip_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_cmip_id);
698 }
699 static int dissect_present(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
700   return dissect_cmip_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_cmip_present);
701 }
702 static int dissect_attributeIdList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
703   return dissect_cmip_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeIdList_item);
704 }
705
706
707 static const ber_sequence_t AttributeIdError_sequence[] = {
708   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_errorStatus },
709   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attributeId1 },
710   { 0, 0, 0, NULL }
711 };
712
713 static int
714 dissect_cmip_AttributeIdError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
715   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
716                                    AttributeIdError_sequence, hf_index, ett_cmip_AttributeIdError);
717
718   return offset;
719 }
720 static int dissect_attributeIdError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
721   return dissect_cmip_AttributeIdError(TRUE, tvb, offset, pinfo, tree, hf_cmip_attributeIdError);
722 }
723
724
725
726 static int
727 dissect_cmip_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
728   /*XXX handle local form here */
729   if(attributeform==ATTRIBUTE_GLOBAL_FORM){
730     offset=call_ber_oid_callback(attribute_identifier_id, tvb, offset, pinfo, tree);
731   }
732
733   return offset;
734 }
735 static int dissect_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
736   return dissect_cmip_T_value(FALSE, tvb, offset, pinfo, tree, hf_cmip_value);
737 }
738
739
740 static const ber_sequence_t Attribute_sequence[] = {
741   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_id },
742   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_value },
743   { 0, 0, 0, NULL }
744 };
745
746 int
747 dissect_cmip_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
748   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
749                                    Attribute_sequence, hf_index, ett_cmip_Attribute);
750
751   return offset;
752 }
753 static int dissect_attribute_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
754   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_attribute);
755 }
756 static int dissect_attributeList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
757   return dissect_cmip_Attribute(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeList_item);
758 }
759 static int dissect_equality_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
760   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_equality);
761 }
762 static int dissect_initialString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
763   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_initialString);
764 }
765 static int dissect_anyString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
766   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_anyString);
767 }
768 static int dissect_finalString_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
769   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_finalString);
770 }
771 static int dissect_greaterOrEqual_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
772   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_greaterOrEqual);
773 }
774 static int dissect_lessOrEqual_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
775   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_lessOrEqual);
776 }
777 static int dissect_subsetOf_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
778   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_subsetOf);
779 }
780 static int dissect_supersetOf_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
781   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_supersetOf);
782 }
783 static int dissect_nonNullSetIntersection_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
784   return dissect_cmip_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_nonNullSetIntersection);
785 }
786
787
788 static const value_string cmip_GetInfoStatus_vals[] = {
789   {   0, "attributeIdError" },
790   {   1, "attribute" },
791   { 0, NULL }
792 };
793
794 static const ber_choice_t GetInfoStatus_choice[] = {
795   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attributeIdError_impl },
796   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_attribute_impl },
797   { 0, 0, 0, 0, NULL }
798 };
799
800 static int
801 dissect_cmip_GetInfoStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
802   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
803                                  GetInfoStatus_choice, hf_index, ett_cmip_GetInfoStatus,
804                                  NULL);
805
806   return offset;
807 }
808 static int dissect_getInfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
809   return dissect_cmip_GetInfoStatus(FALSE, tvb, offset, pinfo, tree, hf_cmip_getInfoList_item);
810 }
811
812
813 static const ber_sequence_t SET_OF_GetInfoStatus_set_of[1] = {
814   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_getInfoList_item },
815 };
816
817 static int
818 dissect_cmip_SET_OF_GetInfoStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
819   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
820                                  SET_OF_GetInfoStatus_set_of, hf_index, ett_cmip_SET_OF_GetInfoStatus);
821
822   return offset;
823 }
824 static int dissect_getInfoList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
825   return dissect_cmip_SET_OF_GetInfoStatus(TRUE, tvb, offset, pinfo, tree, hf_cmip_getInfoList);
826 }
827
828
829 static const ber_sequence_t GetListError_sequence[] = {
830   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
831   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
832   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
833   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_getInfoList_impl },
834   { 0, 0, 0, NULL }
835 };
836
837 static int
838 dissect_cmip_GetListError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
839   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
840                                    GetListError_sequence, hf_index, ett_cmip_GetListError);
841
842   return offset;
843 }
844 static int dissect_getListError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
845   return dissect_cmip_GetListError(TRUE, tvb, offset, pinfo, tree, hf_cmip_getListError);
846 }
847
848
849 static const value_string cmip_T_errorStatus2_vals[] = {
850   {   2, "accessDenied" },
851   {   5, "noSuchAttribute" },
852   {   6, "invalidAttributeValue" },
853   {  24, "invalidOperation" },
854   {  25, "invalidOperator" },
855   { 0, NULL }
856 };
857
858
859 static int
860 dissect_cmip_T_errorStatus2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
861   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
862                                   NULL);
863
864   return offset;
865 }
866 static int dissect_errorStatus2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
867   return dissect_cmip_T_errorStatus2(FALSE, tvb, offset, pinfo, tree, hf_cmip_errorStatus2);
868 }
869
870
871
872 static int
873 dissect_cmip_T_attributeId1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
874   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_attributeId_OID, &object_identifier_id);
875
876   return offset;
877 }
878 static int dissect_attributeId2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
879   return dissect_cmip_T_attributeId1(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeId2);
880 }
881
882
883
884 static int
885 dissect_cmip_T_attributeValue1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
886   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
887
888
889   return offset;
890 }
891 static int dissect_attributeValue1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
892   return dissect_cmip_T_attributeValue1(FALSE, tvb, offset, pinfo, tree, hf_cmip_attributeValue1);
893 }
894
895
896 static const ber_sequence_t AttributeError_sequence[] = {
897   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_errorStatus2 },
898   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_modifyOperator_impl },
899   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeId2 },
900   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attributeValue1 },
901   { 0, 0, 0, NULL }
902 };
903
904 static int
905 dissect_cmip_AttributeError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
906   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
907                                    AttributeError_sequence, hf_index, ett_cmip_AttributeError);
908
909   return offset;
910 }
911 static int dissect_attributeError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
912   return dissect_cmip_AttributeError(TRUE, tvb, offset, pinfo, tree, hf_cmip_attributeError);
913 }
914
915
916 static const value_string cmip_SetInfoStatus_vals[] = {
917   {   0, "attributeError" },
918   {   1, "attribute" },
919   { 0, NULL }
920 };
921
922 static const ber_choice_t SetInfoStatus_choice[] = {
923   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_attributeError_impl },
924   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_attribute_impl },
925   { 0, 0, 0, 0, NULL }
926 };
927
928 static int
929 dissect_cmip_SetInfoStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
930   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
931                                  SetInfoStatus_choice, hf_index, ett_cmip_SetInfoStatus,
932                                  NULL);
933
934   return offset;
935 }
936 static int dissect_setInfoList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
937   return dissect_cmip_SetInfoStatus(FALSE, tvb, offset, pinfo, tree, hf_cmip_setInfoList_item);
938 }
939
940
941 static const ber_sequence_t SET_OF_SetInfoStatus_set_of[1] = {
942   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_setInfoList_item },
943 };
944
945 static int
946 dissect_cmip_SET_OF_SetInfoStatus(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
947   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
948                                  SET_OF_SetInfoStatus_set_of, hf_index, ett_cmip_SET_OF_SetInfoStatus);
949
950   return offset;
951 }
952 static int dissect_setInfoList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
953   return dissect_cmip_SET_OF_SetInfoStatus(TRUE, tvb, offset, pinfo, tree, hf_cmip_setInfoList);
954 }
955
956
957 static const ber_sequence_t SetListError_sequence[] = {
958   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
959   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
960   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
961   { BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_setInfoList_impl },
962   { 0, 0, 0, NULL }
963 };
964
965 static int
966 dissect_cmip_SetListError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
967   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
968                                    SetListError_sequence, hf_index, ett_cmip_SetListError);
969
970   return offset;
971 }
972 static int dissect_setListError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
973   return dissect_cmip_SetListError(TRUE, tvb, offset, pinfo, tree, hf_cmip_setListError);
974 }
975
976
977 static const value_string cmip_T_errorStatus1_vals[] = {
978   {   2, "accessDenied" },
979   {   9, "noSuchAction" },
980   {  14, "noSuchArgument" },
981   {  15, "invalidArgumentValue" },
982   { 0, NULL }
983 };
984
985
986 static int
987 dissect_cmip_T_errorStatus1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
988   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
989                                   NULL);
990
991   return offset;
992 }
993 static int dissect_errorStatus1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
994   return dissect_cmip_T_errorStatus1(FALSE, tvb, offset, pinfo, tree, hf_cmip_errorStatus1);
995 }
996
997
998
999 static int
1000 dissect_cmip_T_actionType1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1001   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_actionType_OID, &object_identifier_id);
1002
1003   return offset;
1004 }
1005 static int dissect_actionType1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1006   return dissect_cmip_T_actionType1(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionType1);
1007 }
1008
1009
1010
1011 static int
1012 dissect_cmip_T_actionType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1013   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_actionType_OID, &object_identifier_id);
1014
1015   return offset;
1016 }
1017 static int dissect_actionType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1018   return dissect_cmip_T_actionType(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionType);
1019 }
1020
1021
1022 static const ber_sequence_t NoSuchArgumentAction_sequence[] = {
1023   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1024   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_actionType },
1025   { 0, 0, 0, NULL }
1026 };
1027
1028 static int
1029 dissect_cmip_NoSuchArgumentAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1030   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1031                                    NoSuchArgumentAction_sequence, hf_index, ett_cmip_NoSuchArgumentAction);
1032
1033   return offset;
1034 }
1035 static int dissect_actionId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1036   return dissect_cmip_NoSuchArgumentAction(TRUE, tvb, offset, pinfo, tree, hf_cmip_actionId);
1037 }
1038
1039
1040
1041 static int
1042 dissect_cmip_T_eventType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1043   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_eventType_OID, &object_identifier_id);
1044
1045   return offset;
1046 }
1047 static int dissect_eventType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1048   return dissect_cmip_T_eventType(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventType);
1049 }
1050
1051
1052 static const ber_sequence_t NoSuchArgumentEvent_sequence[] = {
1053   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1054   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_eventType },
1055   { 0, 0, 0, NULL }
1056 };
1057
1058 static int
1059 dissect_cmip_NoSuchArgumentEvent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1060   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1061                                    NoSuchArgumentEvent_sequence, hf_index, ett_cmip_NoSuchArgumentEvent);
1062
1063   return offset;
1064 }
1065 static int dissect_eventId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1066   return dissect_cmip_NoSuchArgumentEvent(TRUE, tvb, offset, pinfo, tree, hf_cmip_eventId);
1067 }
1068
1069
1070 static const value_string cmip_NoSuchArgument_vals[] = {
1071   {   0, "actionId" },
1072   {   1, "eventId" },
1073   { 0, NULL }
1074 };
1075
1076 static const ber_choice_t NoSuchArgument_choice[] = {
1077   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_actionId_impl },
1078   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventId_impl },
1079   { 0, 0, 0, 0, NULL }
1080 };
1081
1082 static int
1083 dissect_cmip_NoSuchArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1084   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1085                                  NoSuchArgument_choice, hf_index, ett_cmip_NoSuchArgument,
1086                                  NULL);
1087
1088   return offset;
1089 }
1090 static int dissect_actionArgument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1091   return dissect_cmip_NoSuchArgument(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionArgument);
1092 }
1093
1094
1095
1096 static int
1097 dissect_cmip_T_actionType3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1098   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_actionType_OID, &object_identifier_id);
1099
1100   return offset;
1101 }
1102 static int dissect_actionType3(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1103   return dissect_cmip_T_actionType3(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionType3);
1104 }
1105
1106
1107
1108 static int
1109 dissect_cmip_T_actionInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1110   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1111
1112
1113   return offset;
1114 }
1115 static int dissect_actionInfoArg(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1116   return dissect_cmip_T_actionInfoArg(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionInfoArg);
1117 }
1118
1119
1120 static const ber_sequence_t ActionInfo_sequence[] = {
1121   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_actionType3 },
1122   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_actionInfoArg },
1123   { 0, 0, 0, NULL }
1124 };
1125
1126 static int
1127 dissect_cmip_ActionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1128   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1129                                    ActionInfo_sequence, hf_index, ett_cmip_ActionInfo);
1130
1131   return offset;
1132 }
1133 static int dissect_actionValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1134   return dissect_cmip_ActionInfo(TRUE, tvb, offset, pinfo, tree, hf_cmip_actionValue);
1135 }
1136 static int dissect_actionInfo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1137   return dissect_cmip_ActionInfo(TRUE, tvb, offset, pinfo, tree, hf_cmip_actionInfo);
1138 }
1139
1140
1141
1142 static int
1143 dissect_cmip_T_eventType1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1144   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_eventType_OID, &object_identifier_id);
1145
1146   return offset;
1147 }
1148 static int dissect_eventType1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1149   return dissect_cmip_T_eventType1(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventType1);
1150 }
1151
1152
1153
1154 static int
1155 dissect_cmip_T_eventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1156   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1157
1158
1159   return offset;
1160 }
1161 static int dissect_eventInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1162   return dissect_cmip_T_eventInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventInfo);
1163 }
1164
1165
1166 static const ber_sequence_t InvalidArgumentValueEventValue_sequence[] = {
1167   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_eventType1 },
1168   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_eventInfo },
1169   { 0, 0, 0, NULL }
1170 };
1171
1172 static int
1173 dissect_cmip_InvalidArgumentValueEventValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1174   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1175                                    InvalidArgumentValueEventValue_sequence, hf_index, ett_cmip_InvalidArgumentValueEventValue);
1176
1177   return offset;
1178 }
1179 static int dissect_eventValue_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1180   return dissect_cmip_InvalidArgumentValueEventValue(TRUE, tvb, offset, pinfo, tree, hf_cmip_eventValue);
1181 }
1182
1183
1184 static const value_string cmip_InvalidArgumentValue_vals[] = {
1185   {   0, "actionValue" },
1186   {   1, "eventValue" },
1187   { 0, NULL }
1188 };
1189
1190 static const ber_choice_t InvalidArgumentValue_choice[] = {
1191   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_actionValue_impl },
1192   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_eventValue_impl },
1193   { 0, 0, 0, 0, NULL }
1194 };
1195
1196 static int
1197 dissect_cmip_InvalidArgumentValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1198   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1199                                  InvalidArgumentValue_choice, hf_index, ett_cmip_InvalidArgumentValue,
1200                                  NULL);
1201
1202   return offset;
1203 }
1204 static int dissect_argumentValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1205   return dissect_cmip_InvalidArgumentValue(FALSE, tvb, offset, pinfo, tree, hf_cmip_argumentValue);
1206 }
1207
1208
1209 static const value_string cmip_ErrorInfo_vals[] = {
1210   {   0, "actionType" },
1211   {   1, "actionArgument" },
1212   {   2, "argumentValue" },
1213   { 0, NULL }
1214 };
1215
1216 static const ber_choice_t ErrorInfo_choice[] = {
1217   {   0, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_actionType1 },
1218   {   1, BER_CLASS_CON, 0, 0, dissect_actionArgument },
1219   {   2, BER_CLASS_CON, 1, 0, dissect_argumentValue },
1220   { 0, 0, 0, 0, NULL }
1221 };
1222
1223 static int
1224 dissect_cmip_ErrorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1225   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1226                                  ErrorInfo_choice, hf_index, ett_cmip_ErrorInfo,
1227                                  NULL);
1228
1229   return offset;
1230 }
1231 static int dissect_errorInfo1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1232   return dissect_cmip_ErrorInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_errorInfo1);
1233 }
1234
1235
1236 static const ber_sequence_t ActionErrorInfo_sequence[] = {
1237   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_errorStatus1 },
1238   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_errorInfo1 },
1239   { 0, 0, 0, NULL }
1240 };
1241
1242 static int
1243 dissect_cmip_ActionErrorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1244   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1245                                    ActionErrorInfo_sequence, hf_index, ett_cmip_ActionErrorInfo);
1246
1247   return offset;
1248 }
1249 static int dissect_actionErrorInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1250   return dissect_cmip_ActionErrorInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionErrorInfo);
1251 }
1252
1253
1254 static const ber_sequence_t ActionError_sequence[] = {
1255   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1256   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1257   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1258   { BER_CLASS_CON, 6, 0, dissect_actionErrorInfo },
1259   { 0, 0, 0, NULL }
1260 };
1261
1262 static int
1263 dissect_cmip_ActionError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1264   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1265                                    ActionError_sequence, hf_index, ett_cmip_ActionError);
1266
1267   return offset;
1268 }
1269 static int dissect_actionError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1270   return dissect_cmip_ActionError(TRUE, tvb, offset, pinfo, tree, hf_cmip_actionError);
1271 }
1272
1273
1274
1275 static int
1276 dissect_cmip_T_errorId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1277   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_errorId_OID, &object_identifier_id);
1278
1279   return offset;
1280 }
1281 static int dissect_errorId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1282   return dissect_cmip_T_errorId(FALSE, tvb, offset, pinfo, tree, hf_cmip_errorId);
1283 }
1284
1285
1286
1287 static int
1288 dissect_cmip_T_errorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1289   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1290
1291
1292   return offset;
1293 }
1294 static int dissect_errorInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1295   return dissect_cmip_T_errorInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_errorInfo);
1296 }
1297
1298
1299 static const ber_sequence_t SpecificErrorInfo_sequence[] = {
1300   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_errorId },
1301   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_errorInfo },
1302   { 0, 0, 0, NULL }
1303 };
1304
1305 static int
1306 dissect_cmip_SpecificErrorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1307   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1308                                    SpecificErrorInfo_sequence, hf_index, ett_cmip_SpecificErrorInfo);
1309
1310   return offset;
1311 }
1312 static int dissect_specificErrorInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1313   return dissect_cmip_SpecificErrorInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_specificErrorInfo);
1314 }
1315
1316
1317 static const ber_sequence_t ProcessingFailure_sequence[] = {
1318   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1319   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1320   { BER_CLASS_CON, 5, 0, dissect_specificErrorInfo },
1321   { 0, 0, 0, NULL }
1322 };
1323
1324 static int
1325 dissect_cmip_ProcessingFailure(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1326   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1327                                    ProcessingFailure_sequence, hf_index, ett_cmip_ProcessingFailure);
1328
1329   return offset;
1330 }
1331 static int dissect_processingFailure_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1332   return dissect_cmip_ProcessingFailure(TRUE, tvb, offset, pinfo, tree, hf_cmip_processingFailure);
1333 }
1334
1335
1336 static const value_string cmip_T_deleteErrorInfo_vals[] = {
1337   {   2, "accessDenied" },
1338   { 0, NULL }
1339 };
1340
1341
1342 static int
1343 dissect_cmip_T_deleteErrorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1344   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1345                                   NULL);
1346
1347   return offset;
1348 }
1349 static int dissect_deleteErrorInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1350   return dissect_cmip_T_deleteErrorInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_deleteErrorInfo);
1351 }
1352
1353
1354 static const ber_sequence_t DeleteError_sequence[] = {
1355   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1356   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1357   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1358   { BER_CLASS_CON, 6, 0, dissect_deleteErrorInfo },
1359   { 0, 0, 0, NULL }
1360 };
1361
1362 static int
1363 dissect_cmip_DeleteError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1364   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1365                                    DeleteError_sequence, hf_index, ett_cmip_DeleteError);
1366
1367   return offset;
1368 }
1369 static int dissect_deleteError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1370   return dissect_cmip_DeleteError(TRUE, tvb, offset, pinfo, tree, hf_cmip_deleteError);
1371 }
1372
1373
1374 static const ber_sequence_t SET_OF_Attribute_set_of[1] = {
1375   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_attributeList_item },
1376 };
1377
1378 static int
1379 dissect_cmip_SET_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1380   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1381                                  SET_OF_Attribute_set_of, hf_index, ett_cmip_SET_OF_Attribute);
1382
1383   return offset;
1384 }
1385 static int dissect_attributeList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1386   return dissect_cmip_SET_OF_Attribute(TRUE, tvb, offset, pinfo, tree, hf_cmip_attributeList);
1387 }
1388
1389
1390 static const ber_sequence_t SetResult_sequence[] = {
1391   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1392   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1393   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1394   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attributeList_impl },
1395   { 0, 0, 0, NULL }
1396 };
1397
1398 static int
1399 dissect_cmip_SetResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1400   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1401                                    SetResult_sequence, hf_index, ett_cmip_SetResult);
1402
1403   return offset;
1404 }
1405 static int dissect_setResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1406   return dissect_cmip_SetResult(TRUE, tvb, offset, pinfo, tree, hf_cmip_setResult);
1407 }
1408
1409
1410
1411 static int
1412 dissect_cmip_AccessControl(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1413   offset = dissect_acse_EXTERNAL(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1414
1415   return offset;
1416 }
1417 static int dissect_accessControl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1418   return dissect_cmip_AccessControl(FALSE, tvb, offset, pinfo, tree, hf_cmip_accessControl);
1419 }
1420
1421
1422 static const value_string cmip_CMISSync_vals[] = {
1423   {   0, "bestEffort" },
1424   {   1, "atomic" },
1425   { 0, NULL }
1426 };
1427
1428
1429 static int
1430 dissect_cmip_CMISSync(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1431   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1432                                   NULL);
1433
1434   return offset;
1435 }
1436 static int dissect_synchronization_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1437   return dissect_cmip_CMISSync(TRUE, tvb, offset, pinfo, tree, hf_cmip_synchronization);
1438 }
1439
1440
1441 static const value_string cmip_T_namedNumbers_vals[] = {
1442   {   0, "baseObject" },
1443   {   1, "firstLevelOnly" },
1444   {   2, "wholeSubtree" },
1445   { 0, NULL }
1446 };
1447
1448
1449 static int
1450 dissect_cmip_T_namedNumbers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1451   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1452                                   NULL);
1453
1454   return offset;
1455 }
1456 static int dissect_namedNumbers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1457   return dissect_cmip_T_namedNumbers(FALSE, tvb, offset, pinfo, tree, hf_cmip_namedNumbers);
1458 }
1459
1460
1461
1462 static int
1463 dissect_cmip_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1464   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1465                                   NULL);
1466
1467   return offset;
1468 }
1469 static int dissect_individualLevels_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1470   return dissect_cmip_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_cmip_individualLevels);
1471 }
1472 static int dissect_baseToNthLevel_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1473   return dissect_cmip_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_cmip_baseToNthLevel);
1474 }
1475
1476
1477 static const value_string cmip_Scope_vals[] = {
1478   {   0, "namedNumbers" },
1479   {   1, "individualLevels" },
1480   {   2, "baseToNthLevel" },
1481   { 0, NULL }
1482 };
1483
1484 static const ber_choice_t Scope_choice[] = {
1485   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_namedNumbers },
1486   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_individualLevels_impl },
1487   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_baseToNthLevel_impl },
1488   { 0, 0, 0, 0, NULL }
1489 };
1490
1491 static int
1492 dissect_cmip_Scope(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1493   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1494                                  Scope_choice, hf_index, ett_cmip_Scope,
1495                                  NULL);
1496
1497   return offset;
1498 }
1499 static int dissect_scope(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1500   return dissect_cmip_Scope(FALSE, tvb, offset, pinfo, tree, hf_cmip_scope);
1501 }
1502
1503
1504 static const value_string cmip_T_substrings_item_vals[] = {
1505   {   0, "initialString" },
1506   {   1, "anyString" },
1507   {   2, "finalString" },
1508   { 0, NULL }
1509 };
1510
1511 static const ber_choice_t T_substrings_item_choice[] = {
1512   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_initialString_impl },
1513   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_anyString_impl },
1514   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_finalString_impl },
1515   { 0, 0, 0, 0, NULL }
1516 };
1517
1518 static int
1519 dissect_cmip_T_substrings_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1520   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1521                                  T_substrings_item_choice, hf_index, ett_cmip_T_substrings_item,
1522                                  NULL);
1523
1524   return offset;
1525 }
1526 static int dissect_substrings_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1527   return dissect_cmip_T_substrings_item(FALSE, tvb, offset, pinfo, tree, hf_cmip_substrings_item);
1528 }
1529
1530
1531 static const ber_sequence_t T_substrings_sequence_of[1] = {
1532   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_substrings_item },
1533 };
1534
1535 static int
1536 dissect_cmip_T_substrings(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1537   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1538                                       T_substrings_sequence_of, hf_index, ett_cmip_T_substrings);
1539
1540   return offset;
1541 }
1542 static int dissect_substrings_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1543   return dissect_cmip_T_substrings(TRUE, tvb, offset, pinfo, tree, hf_cmip_substrings);
1544 }
1545
1546
1547 static const value_string cmip_FilterItem_vals[] = {
1548   {   0, "equality" },
1549   {   1, "substrings" },
1550   {   2, "greaterOrEqual" },
1551   {   3, "lessOrEqual" },
1552   {   4, "present" },
1553   {   5, "subsetOf" },
1554   {   6, "supersetOf" },
1555   {   7, "nonNullSetIntersection" },
1556   { 0, NULL }
1557 };
1558
1559 static const ber_choice_t FilterItem_choice[] = {
1560   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_equality_impl },
1561   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_substrings_impl },
1562   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_greaterOrEqual_impl },
1563   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_lessOrEqual_impl },
1564   {   4, BER_CLASS_CON, 4, 0, dissect_present },
1565   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_subsetOf_impl },
1566   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_supersetOf_impl },
1567   {   7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_nonNullSetIntersection_impl },
1568   { 0, 0, 0, 0, NULL }
1569 };
1570
1571 static int
1572 dissect_cmip_FilterItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1573   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1574                                  FilterItem_choice, hf_index, ett_cmip_FilterItem,
1575                                  NULL);
1576
1577   return offset;
1578 }
1579 static int dissect_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1580   return dissect_cmip_FilterItem(FALSE, tvb, offset, pinfo, tree, hf_cmip_item);
1581 }
1582
1583
1584 static const ber_sequence_t SET_OF_CMISFilter_set_of[1] = {
1585   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_and_item },
1586 };
1587
1588 static int
1589 dissect_cmip_SET_OF_CMISFilter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1590   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1591                                  SET_OF_CMISFilter_set_of, hf_index, ett_cmip_SET_OF_CMISFilter);
1592
1593   return offset;
1594 }
1595 static int dissect_and_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1596   return dissect_cmip_SET_OF_CMISFilter(TRUE, tvb, offset, pinfo, tree, hf_cmip_and);
1597 }
1598 static int dissect_or_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1599   return dissect_cmip_SET_OF_CMISFilter(TRUE, tvb, offset, pinfo, tree, hf_cmip_or);
1600 }
1601
1602
1603 static const value_string cmip_CMISFilter_vals[] = {
1604   {   8, "item" },
1605   {   9, "and" },
1606   {  10, "or" },
1607   {  11, "not" },
1608   { 0, NULL }
1609 };
1610
1611 static const ber_choice_t CMISFilter_choice[] = {
1612   {   8, BER_CLASS_CON, 8, 0, dissect_item },
1613   {   9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_and_impl },
1614   {  10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_or_impl },
1615   {  11, BER_CLASS_CON, 11, 0, dissect_not },
1616   { 0, 0, 0, 0, NULL }
1617 };
1618
1619 static int
1620 dissect_cmip_CMISFilter(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1621   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1622                                  CMISFilter_choice, hf_index, ett_cmip_CMISFilter,
1623                                  NULL);
1624
1625   return offset;
1626 }
1627
1628
1629 static const ber_sequence_t SET_OF_ModificationItem_set_of[1] = {
1630   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_modificationList_item },
1631 };
1632
1633 static int
1634 dissect_cmip_SET_OF_ModificationItem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1635   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1636                                  SET_OF_ModificationItem_set_of, hf_index, ett_cmip_SET_OF_ModificationItem);
1637
1638   return offset;
1639 }
1640 static int dissect_modificationList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1641   return dissect_cmip_SET_OF_ModificationItem(TRUE, tvb, offset, pinfo, tree, hf_cmip_modificationList);
1642 }
1643
1644
1645 static const ber_sequence_t SetArgument_sequence[] = {
1646   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectClass },
1647   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectInstance },
1648   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_accessControl },
1649   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_synchronization_impl },
1650   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_scope },
1651   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_filter },
1652   { BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_modificationList_impl },
1653   { 0, 0, 0, NULL }
1654 };
1655
1656 static int
1657 dissect_cmip_SetArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1658   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1659                                    SetArgument_sequence, hf_index, ett_cmip_SetArgument);
1660
1661   return offset;
1662 }
1663
1664
1665 static const ber_sequence_t GetResult_sequence[] = {
1666   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1667   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1668   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1669   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attributeList_impl },
1670   { 0, 0, 0, NULL }
1671 };
1672
1673 static int
1674 dissect_cmip_GetResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1675   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1676                                    GetResult_sequence, hf_index, ett_cmip_GetResult);
1677
1678   return offset;
1679 }
1680 static int dissect_getResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1681   return dissect_cmip_GetResult(TRUE, tvb, offset, pinfo, tree, hf_cmip_getResult);
1682 }
1683
1684
1685
1686 static int
1687 dissect_cmip_T_actionType2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1688   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_actionType_OID, &object_identifier_id);
1689
1690   return offset;
1691 }
1692 static int dissect_actionType2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1693   return dissect_cmip_T_actionType2(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionType2);
1694 }
1695
1696
1697
1698 static int
1699 dissect_cmip_T_actionReplyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1700   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1701
1702
1703   return offset;
1704 }
1705 static int dissect_actionReplyInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1706   return dissect_cmip_T_actionReplyInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_actionReplyInfo);
1707 }
1708
1709
1710 static const ber_sequence_t ActionReply_sequence[] = {
1711   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_actionType2 },
1712   { BER_CLASS_CON, 4, 0, dissect_actionReplyInfo },
1713   { 0, 0, 0, NULL }
1714 };
1715
1716 static int
1717 dissect_cmip_ActionReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1718   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1719                                    ActionReply_sequence, hf_index, ett_cmip_ActionReply);
1720
1721   return offset;
1722 }
1723 static int dissect_actionReply_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1724   return dissect_cmip_ActionReply(TRUE, tvb, offset, pinfo, tree, hf_cmip_actionReply);
1725 }
1726
1727
1728 static const ber_sequence_t ActionResult_sequence[] = {
1729   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1730   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1731   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1732   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_actionReply_impl },
1733   { 0, 0, 0, NULL }
1734 };
1735
1736 static int
1737 dissect_cmip_ActionResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1738   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1739                                    ActionResult_sequence, hf_index, ett_cmip_ActionResult);
1740
1741   return offset;
1742 }
1743 static int dissect_actionResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1744   return dissect_cmip_ActionResult(TRUE, tvb, offset, pinfo, tree, hf_cmip_actionResult);
1745 }
1746
1747
1748 static const ber_sequence_t DeleteResult_sequence[] = {
1749   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1750   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1751   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1752   { 0, 0, 0, NULL }
1753 };
1754
1755 static int
1756 dissect_cmip_DeleteResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1757   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1758                                    DeleteResult_sequence, hf_index, ett_cmip_DeleteResult);
1759
1760   return offset;
1761 }
1762 static int dissect_deleteResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1763   return dissect_cmip_DeleteResult(TRUE, tvb, offset, pinfo, tree, hf_cmip_deleteResult);
1764 }
1765
1766
1767 static const value_string cmip_LinkedReplyArgument_vals[] = {
1768   {   0, "getResult" },
1769   {   1, "getListError" },
1770   {   2, "setResult" },
1771   {   3, "setListError" },
1772   {   4, "actionResult" },
1773   {   5, "processingFailure" },
1774   {   6, "deleteResult" },
1775   {   7, "actionError" },
1776   {   8, "deleteError" },
1777   { 0, NULL }
1778 };
1779
1780 static const ber_choice_t LinkedReplyArgument_choice[] = {
1781   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_getResult_impl },
1782   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_getListError_impl },
1783   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_setResult_impl },
1784   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_setListError_impl },
1785   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_actionResult_impl },
1786   {   5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_processingFailure_impl },
1787   {   6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_deleteResult_impl },
1788   {   7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_actionError_impl },
1789   {   8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_deleteError_impl },
1790   { 0, 0, 0, 0, NULL }
1791 };
1792
1793 static int
1794 dissect_cmip_LinkedReplyArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1795   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1796                                  LinkedReplyArgument_choice, hf_index, ett_cmip_LinkedReplyArgument,
1797                                  NULL);
1798
1799   return offset;
1800 }
1801
1802
1803
1804 static int
1805 dissect_cmip_T_eventType2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1806   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_eventType_OID, &object_identifier_id);
1807
1808   return offset;
1809 }
1810 static int dissect_eventType2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1811   return dissect_cmip_T_eventType2(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventType2);
1812 }
1813
1814
1815
1816 static int
1817 dissect_cmip_T_eventReplyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1818   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1819
1820
1821   return offset;
1822 }
1823 static int dissect_eventReplyInfo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1824   return dissect_cmip_T_eventReplyInfo(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventReplyInfo);
1825 }
1826
1827
1828 static const ber_sequence_t EventReply_sequence[] = {
1829   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_eventType2 },
1830   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_eventReplyInfo },
1831   { 0, 0, 0, NULL }
1832 };
1833
1834 static int
1835 dissect_cmip_EventReply(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1836   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1837                                    EventReply_sequence, hf_index, ett_cmip_EventReply);
1838
1839   return offset;
1840 }
1841 static int dissect_eventReply(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1842   return dissect_cmip_EventReply(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventReply);
1843 }
1844
1845
1846 static const ber_sequence_t EventReportResult_sequence[] = {
1847   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1848   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1849   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1850   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_eventReply },
1851   { 0, 0, 0, NULL }
1852 };
1853
1854 static int
1855 dissect_cmip_EventReportResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1856   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1857                                    EventReportResult_sequence, hf_index, ett_cmip_EventReportResult);
1858
1859   return offset;
1860 }
1861
1862
1863
1864 static int
1865 dissect_cmip_T_eventType3(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1866   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cmip_eventType_OID, &object_identifier_id);
1867
1868   return offset;
1869 }
1870 static int dissect_eventType3(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1871   return dissect_cmip_T_eventType3(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventType3);
1872 }
1873
1874
1875
1876 static int
1877 dissect_cmip_T_eventInfo1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1878   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1879
1880
1881   return offset;
1882 }
1883 static int dissect_eventInfo1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1884   return dissect_cmip_T_eventInfo1(FALSE, tvb, offset, pinfo, tree, hf_cmip_eventInfo1);
1885 }
1886
1887
1888 static const ber_sequence_t EventReportArgument_sequence[] = {
1889   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1890   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1891   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_eventTime_impl },
1892   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_eventType3 },
1893   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_eventInfo1 },
1894   { 0, 0, 0, NULL }
1895 };
1896
1897 static int
1898 dissect_cmip_EventReportArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1899   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1900                                    EventReportArgument_sequence, hf_index, ett_cmip_EventReportArgument);
1901
1902   return offset;
1903 }
1904
1905
1906 static const ber_sequence_t DeleteArgument_sequence[] = {
1907   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectClass },
1908   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectInstance },
1909   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_accessControl },
1910   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_synchronization_impl },
1911   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_scope },
1912   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_filter },
1913   { 0, 0, 0, NULL }
1914 };
1915
1916 static int
1917 dissect_cmip_DeleteArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1918   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1919                                    DeleteArgument_sequence, hf_index, ett_cmip_DeleteArgument);
1920
1921   return offset;
1922 }
1923
1924
1925 static const value_string cmip_T_managedOrSuperiorObjectInstance_vals[] = {
1926   {   0, "managedObjectInstance" },
1927   {   1, "superiorObjectInstance" },
1928   { 0, NULL }
1929 };
1930
1931 static const ber_choice_t T_managedOrSuperiorObjectInstance_choice[] = {
1932   {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_managedObjectInstance },
1933   {   1, BER_CLASS_CON, 8, 0, dissect_superiorObjectInstance },
1934   { 0, 0, 0, 0, NULL }
1935 };
1936
1937 static int
1938 dissect_cmip_T_managedOrSuperiorObjectInstance(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1939   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1940                                  T_managedOrSuperiorObjectInstance_choice, hf_index, ett_cmip_T_managedOrSuperiorObjectInstance,
1941                                  NULL);
1942
1943   return offset;
1944 }
1945 static int dissect_managedOrSuperiorObjectInstance(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1946   return dissect_cmip_T_managedOrSuperiorObjectInstance(FALSE, tvb, offset, pinfo, tree, hf_cmip_managedOrSuperiorObjectInstance);
1947 }
1948
1949
1950 static const ber_sequence_t CreateArgument_sequence[] = {
1951   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1952   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedOrSuperiorObjectInstance },
1953   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_accessControl },
1954   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_referenceObjectInstance },
1955   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attributeList_impl },
1956   { 0, 0, 0, NULL }
1957 };
1958
1959 static int
1960 dissect_cmip_CreateArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1961   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1962                                    CreateArgument_sequence, hf_index, ett_cmip_CreateArgument);
1963
1964   return offset;
1965 }
1966
1967
1968 static const ber_sequence_t CreateResult_sequence[] = {
1969   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectClass },
1970   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_managedObjectInstance },
1971   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_currentTime_impl },
1972   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attributeList_impl },
1973   { 0, 0, 0, NULL }
1974 };
1975
1976 static int
1977 dissect_cmip_CreateResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1978   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1979                                    CreateResult_sequence, hf_index, ett_cmip_CreateResult);
1980
1981   return offset;
1982 }
1983
1984
1985 static const ber_sequence_t ActionArgument_sequence[] = {
1986   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectClass },
1987   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectInstance },
1988   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_accessControl },
1989   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_synchronization_impl },
1990   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_scope },
1991   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_filter },
1992   { BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_actionInfo_impl },
1993   { 0, 0, 0, NULL }
1994 };
1995
1996 static int
1997 dissect_cmip_ActionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1998   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1999                                    ActionArgument_sequence, hf_index, ett_cmip_ActionArgument);
2000
2001   return offset;
2002 }
2003
2004
2005 static const ber_sequence_t BaseManagedObjectId_sequence[] = {
2006   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectClass },
2007   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectInstance },
2008   { 0, 0, 0, NULL }
2009 };
2010
2011 static int
2012 dissect_cmip_BaseManagedObjectId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2013   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2014                                    BaseManagedObjectId_sequence, hf_index, ett_cmip_BaseManagedObjectId);
2015
2016   return offset;
2017 }
2018
2019
2020 static const value_string cmip_AdministrativeState_vals[] = {
2021   {   0, "locked" },
2022   {   1, "unlocked" },
2023   {   2, "shuttingDown" },
2024   { 0, NULL }
2025 };
2026
2027
2028 static int
2029 dissect_cmip_AdministrativeState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2030   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2031                                   NULL);
2032
2033   return offset;
2034 }
2035
2036
2037
2038 static int
2039 dissect_cmip_DiscriminatorConstruct(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2040   offset = dissect_cmip_CMISFilter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2041
2042   return offset;
2043 }
2044
2045
2046 static const value_string cmip_Name_vals[] = {
2047   {   0, "rdnSequence" },
2048   { 0, NULL }
2049 };
2050
2051 static const ber_choice_t Name_choice[] = {
2052   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_rdnSequence },
2053   { 0, 0, 0, 0, NULL }
2054 };
2055
2056 static int
2057 dissect_cmip_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2058   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2059                                  Name_choice, hf_index, ett_cmip_Name,
2060                                  NULL);
2061
2062   return offset;
2063 }
2064
2065
2066
2067 static int
2068 dissect_cmip_AE_title_form1(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2069   offset = dissect_cmip_Name(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2070
2071   return offset;
2072 }
2073 static int dissect_ae_title_form1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2074   return dissect_cmip_AE_title_form1(FALSE, tvb, offset, pinfo, tree, hf_cmip_ae_title_form1);
2075 }
2076
2077
2078
2079 static int
2080 dissect_cmip_AE_title_form2(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2081   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2082
2083   return offset;
2084 }
2085 static int dissect_ae_title_form2(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2086   return dissect_cmip_AE_title_form2(FALSE, tvb, offset, pinfo, tree, hf_cmip_ae_title_form2);
2087 }
2088
2089
2090 static const value_string cmip_AE_title_vals[] = {
2091   {   0, "ae-title-form1" },
2092   {   1, "ae-title-form2" },
2093   { 0, NULL }
2094 };
2095
2096 static const ber_choice_t AE_title_choice[] = {
2097   {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_ae_title_form1 },
2098   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_ae_title_form2 },
2099   { 0, 0, 0, 0, NULL }
2100 };
2101
2102 static int
2103 dissect_cmip_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2104   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2105                                  AE_title_choice, hf_index, ett_cmip_AE_title,
2106                                  NULL);
2107
2108   return offset;
2109 }
2110 static int dissect_single(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2111   return dissect_cmip_AE_title(FALSE, tvb, offset, pinfo, tree, hf_cmip_single);
2112 }
2113 static int dissect_multiple_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2114   return dissect_cmip_AE_title(FALSE, tvb, offset, pinfo, tree, hf_cmip_multiple_item);
2115 }
2116
2117
2118 static const ber_sequence_t SET_OF_AE_title_set_of[1] = {
2119   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_multiple_item },
2120 };
2121
2122 static int
2123 dissect_cmip_SET_OF_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2124   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2125                                  SET_OF_AE_title_set_of, hf_index, ett_cmip_SET_OF_AE_title);
2126
2127   return offset;
2128 }
2129 static int dissect_multiple(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2130   return dissect_cmip_SET_OF_AE_title(FALSE, tvb, offset, pinfo, tree, hf_cmip_multiple);
2131 }
2132
2133
2134 static const value_string cmip_Destination_vals[] = {
2135   {   0, "single" },
2136   {   1, "multiple" },
2137   { 0, NULL }
2138 };
2139
2140 static const ber_choice_t Destination_choice[] = {
2141   {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_single },
2142   {   1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_multiple },
2143   { 0, 0, 0, 0, NULL }
2144 };
2145
2146 static int
2147 dissect_cmip_Destination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2148   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2149                                  Destination_choice, hf_index, ett_cmip_Destination,
2150                                  NULL);
2151
2152   return offset;
2153 }
2154
2155
2156 static const value_string cmip_OperationalState_vals[] = {
2157   {   0, "disabled" },
2158   {   1, "enabled" },
2159   { 0, NULL }
2160 };
2161
2162
2163 static int
2164 dissect_cmip_OperationalState(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2165   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2166                                   NULL);
2167
2168   return offset;
2169 }
2170
2171
2172
2173 static int
2174 dissect_cmip_NameBinding(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2175   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2176
2177   return offset;
2178 }
2179
2180
2181 static const ber_sequence_t SET_OF_AttributeId_set_of[1] = {
2182   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attributeIdList_item },
2183 };
2184
2185 static int
2186 dissect_cmip_SET_OF_AttributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2187   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2188                                  SET_OF_AttributeId_set_of, hf_index, ett_cmip_SET_OF_AttributeId);
2189
2190   return offset;
2191 }
2192 static int dissect_attributeIdList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2193   return dissect_cmip_SET_OF_AttributeId(TRUE, tvb, offset, pinfo, tree, hf_cmip_attributeIdList);
2194 }
2195
2196
2197 static const ber_sequence_t GetArgument_sequence[] = {
2198   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectClass },
2199   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_baseManagedObjectInstance },
2200   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_accessControl },
2201   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_synchronization_impl },
2202   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_scope },
2203   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_filter },
2204   { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_attributeIdList_impl },
2205   { 0, 0, 0, NULL }
2206 };
2207
2208 static int
2209 dissect_cmip_GetArgument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2210   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2211                                    GetArgument_sequence, hf_index, ett_cmip_GetArgument);
2212
2213   return offset;
2214 }
2215
2216
2217
2218 static int
2219 dissect_cmip_Argument(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2220   switch(opcode_type){
2221   case OPCODE_INVOKE:
2222     switch(opcode){
2223     case 0: /* M-eventreport */
2224       offset = dissect_cmip_EventReportArgument(FALSE, tvb, offset, pinfo, tree, -1);
2225       break;
2226     case 1: /* M-eventreport-confirmed */
2227       offset = dissect_cmip_EventReportArgument(FALSE, tvb, offset, pinfo, tree, -1);
2228       break;
2229     case 2: /* M-linkedreply */
2230       offset = dissect_cmip_LinkedReplyArgument(FALSE, tvb, offset, pinfo, tree, -1);
2231       break;
2232     case 3: /* M-get */
2233       offset = dissect_cmip_GetArgument(FALSE, tvb, offset, pinfo, tree, -1);
2234       break;
2235     case 4: /* M-set */
2236       offset = dissect_cmip_SetArgument(FALSE, tvb, offset, pinfo, tree, -1);
2237       break;
2238     case 5: /* M-set-confirmed */
2239       offset = dissect_cmip_SetArgument(FALSE, tvb, offset, pinfo, tree, -1);
2240       break;
2241     case 6: /* M-action*/
2242       offset = dissect_cmip_ActionArgument(FALSE, tvb,  offset, pinfo, tree, -1);
2243       break;
2244     case 7: /* M-action-confirmed*/
2245       offset = dissect_cmip_ActionArgument(FALSE, tvb,  offset, pinfo, tree, -1);
2246       break;
2247     case 8: /* M-create*/
2248       offset = dissect_cmip_CreateArgument(FALSE, tvb,  offset, pinfo, tree, -1);
2249       break;
2250     case 9: /* M-delete*/
2251       offset = dissect_cmip_DeleteArgument(FALSE, tvb,  offset, pinfo, tree, -1);
2252       break;
2253     case 10: /* M-cancelget */
2254       offset = dissect_cmip_InvokeIDType(FALSE, tvb,  offset, pinfo, tree, -1);
2255       break;
2256     }
2257     break;
2258   case OPCODE_RETURN_RESULT:
2259     switch(opcode){
2260     case 0: /* M-eventreport*/
2261       break;  /* No return data */
2262     case 1: /* M-eventreport-confirmed */
2263       offset = dissect_cmip_EventReportResult(FALSE, tvb, offset, pinfo, tree, -1);
2264       break;
2265     case 2: /* M-linkedreply*/
2266       break;  /* No return data */
2267     case 3: /* M-get */
2268       offset = dissect_cmip_GetResult(FALSE, tvb, offset, pinfo, tree, -1);
2269       break;
2270     case 4: /* M-set */
2271       break;  /* No return data */
2272     case 5: /* M-set-confirmed*/
2273       offset = dissect_cmip_SetResult(FALSE, tvb, offset, pinfo, tree, -1);
2274       break;
2275     case 6: /* M-action*/
2276       break;  /* No return data */
2277     case 7: /* M-action-confirmed*/
2278       offset = dissect_cmip_ActionResult(FALSE, tvb, offset, pinfo, tree, -1);
2279       break;
2280     case 8: /* M-create*/
2281       offset = dissect_cmip_CreateResult(FALSE, tvb,  offset, pinfo, tree, -1);
2282       break;
2283     case 9: /* M-delete*/
2284       offset = dissect_cmip_DeleteResult(FALSE, tvb,  offset, pinfo, tree, -1);
2285       break;
2286     case 10: /* M-cancelget */
2287       break; /* doe this one return any data? */
2288     }
2289     break;
2290   /*XXX add more types here */
2291   }
2292
2293
2294   return offset;
2295 }
2296 static int dissect_argument(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2297   return dissect_cmip_Argument(FALSE, tvb, offset, pinfo, tree, hf_cmip_argument);
2298 }
2299
2300
2301 static const value_string cmip_Opcode_vals[] = {
2302   {   0, "m-EventReport" },
2303   {   1, "m-EventReport-Confirmed" },
2304   {   2, "m-Linked-Reply" },
2305   {   3, "m-Get" },
2306   {   4, "m-Set" },
2307   {   5, "m-Set-Confirmed" },
2308   {   6, "m-Action" },
2309   {   7, "m-Action-Confirmed" },
2310   {   8, "m-Create" },
2311   {   9, "m-Delete" },
2312   {  10, "m-CancelGet" },
2313   { 0, NULL }
2314 };
2315
2316
2317 static int
2318 dissect_cmip_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2319     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2320                                   &opcode);
2321
2322   if(check_col(pinfo->cinfo, COL_INFO)){
2323     col_prepend_fstr(pinfo->cinfo, COL_INFO, "%s", val_to_str(opcode, cmip_Opcode_vals, " Unknown Opcode:%d"));
2324   }
2325
2326   return offset;
2327 }
2328 static int dissect_opcode(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2329   return dissect_cmip_Opcode(FALSE, tvb, offset, pinfo, tree, hf_cmip_opcode);
2330 }
2331
2332
2333 static const ber_sequence_t ReturnResultBody_sequence[] = {
2334   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_opcode },
2335   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_argument },
2336   { 0, 0, 0, NULL }
2337 };
2338
2339 static int
2340 dissect_cmip_ReturnResultBody(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2341   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2342                                    ReturnResultBody_sequence, hf_index, ett_cmip_ReturnResultBody);
2343
2344   return offset;
2345 }
2346 static int dissect_rRBody(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2347   return dissect_cmip_ReturnResultBody(FALSE, tvb, offset, pinfo, tree, hf_cmip_rRBody);
2348 }
2349
2350
2351
2352 static int
2353 dissect_cmip_InvokeID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2354   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2355                                   NULL);
2356
2357   return offset;
2358 }
2359 static int dissect_present1(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2360   return dissect_cmip_InvokeID(FALSE, tvb, offset, pinfo, tree, hf_cmip_present1);
2361 }
2362
2363
2364
2365 static int
2366 dissect_cmip_InvokeLinkedId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2367   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2368                                   NULL);
2369
2370   return offset;
2371 }
2372 static int dissect_linkedId_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2373   return dissect_cmip_InvokeLinkedId(TRUE, tvb, offset, pinfo, tree, hf_cmip_linkedId);
2374 }
2375
2376
2377
2378 static int
2379 dissect_cmip_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2380   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
2381
2382   return offset;
2383 }
2384 static int dissect_absent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2385   return dissect_cmip_NULL(FALSE, tvb, offset, pinfo, tree, hf_cmip_absent);
2386 }
2387
2388
2389 static const value_string cmip_InvokeId_vals[] = {
2390   {   0, "present" },
2391   {   1, "absent" },
2392   { 0, NULL }
2393 };
2394
2395 static const ber_choice_t InvokeId_choice[] = {
2396   {   0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_present1 },
2397   {   1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_absent },
2398   { 0, 0, 0, 0, NULL }
2399 };
2400
2401 static int
2402 dissect_cmip_InvokeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2403   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2404                                  InvokeId_choice, hf_index, ett_cmip_InvokeId,
2405                                  NULL);
2406
2407   return offset;
2408 }
2409 static int dissect_invokeId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2410   return dissect_cmip_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_cmip_invokeId);
2411 }
2412
2413
2414
2415 int
2416 dissect_cmip_InvokeIDType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2417   offset = dissect_cmip_InvokeId(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2418
2419   return offset;
2420 }
2421
2422
2423 static const ber_sequence_t Invoke_sequence[] = {
2424   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
2425   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_linkedId_impl },
2426   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_opcode },
2427   { BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_argument },
2428   { 0, 0, 0, NULL }
2429 };
2430
2431 static int
2432 dissect_cmip_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2433   opcode_type=OPCODE_INVOKE;
2434   if(check_col(pinfo->cinfo, COL_INFO)){
2435     col_prepend_fstr(pinfo->cinfo, COL_INFO, "Invoke ");
2436   }
2437   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2438                                    Invoke_sequence, hf_index, ett_cmip_Invoke);
2439
2440   return offset;
2441 }
2442 static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2443   return dissect_cmip_Invoke(TRUE, tvb, offset, pinfo, tree, hf_cmip_invoke);
2444 }
2445
2446
2447 static const ber_sequence_t ReturnResult_sequence[] = {
2448   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
2449   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_rRBody },
2450   { 0, 0, 0, NULL }
2451 };
2452
2453 static int
2454 dissect_cmip_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2455   opcode_type=OPCODE_RETURN_RESULT;
2456   if(check_col(pinfo->cinfo, COL_INFO)){
2457     col_prepend_fstr(pinfo->cinfo, COL_INFO, "ReturnResult ");
2458   }
2459   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2460                                    ReturnResult_sequence, hf_index, ett_cmip_ReturnResult);
2461
2462   return offset;
2463 }
2464 static int dissect_returnResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2465   return dissect_cmip_ReturnResult(TRUE, tvb, offset, pinfo, tree, hf_cmip_returnResult);
2466 }
2467
2468
2469 static const ber_sequence_t ReturnError_sequence[] = {
2470   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
2471   { 0, 0, 0, NULL }
2472 };
2473
2474 static int
2475 dissect_cmip_ReturnError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2476   opcode_type=OPCODE_RETURN_ERROR;
2477   if(check_col(pinfo->cinfo, COL_INFO)){
2478     col_prepend_fstr(pinfo->cinfo, COL_INFO, "ReturnError ");
2479   }
2480   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2481                                    ReturnError_sequence, hf_index, ett_cmip_ReturnError);
2482
2483   return offset;
2484 }
2485 static int dissect_returnError_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2486   return dissect_cmip_ReturnError(TRUE, tvb, offset, pinfo, tree, hf_cmip_returnError);
2487 }
2488
2489
2490 static const value_string cmip_GeneralProblem_vals[] = {
2491   {   0, "unrecognizedPDU" },
2492   {   1, "mistypedPDU" },
2493   {   2, "badlyStructuredPDU" },
2494   { 0, NULL }
2495 };
2496
2497
2498 static int
2499 dissect_cmip_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2500   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2501                                   NULL);
2502
2503   return offset;
2504 }
2505 static int dissect_generalProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2506   return dissect_cmip_GeneralProblem(TRUE, tvb, offset, pinfo, tree, hf_cmip_generalProblem);
2507 }
2508
2509
2510 static const value_string cmip_InvokeProblem_vals[] = {
2511   {   0, "duplicateInvocation" },
2512   {   1, "unrecognizedOperation" },
2513   {   2, "mistypedArgument" },
2514   {   3, "resourceLimitation" },
2515   {   4, "releaseInProgress" },
2516   {   5, "unrecognizedLinkedId" },
2517   {   6, "linkedResponseUnexpected" },
2518   {   7, "unexpectedLinkedOperation" },
2519   { 0, NULL }
2520 };
2521
2522
2523 static int
2524 dissect_cmip_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2525   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2526                                   NULL);
2527
2528   return offset;
2529 }
2530 static int dissect_invokeProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2531   return dissect_cmip_InvokeProblem(TRUE, tvb, offset, pinfo, tree, hf_cmip_invokeProblem);
2532 }
2533
2534
2535 static const value_string cmip_ReturnResultProblem_vals[] = {
2536   {   0, "unrecognizedInvocation" },
2537   {   1, "resultResponseUnexpected" },
2538   {   2, "mistypedResult" },
2539   { 0, NULL }
2540 };
2541
2542
2543 static int
2544 dissect_cmip_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2545   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2546                                   NULL);
2547
2548   return offset;
2549 }
2550 static int dissect_returnResultProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2551   return dissect_cmip_ReturnResultProblem(TRUE, tvb, offset, pinfo, tree, hf_cmip_returnResultProblem);
2552 }
2553
2554
2555 static const value_string cmip_ReturnErrorProblem_vals[] = {
2556   {   0, "unrecognizedInvocation" },
2557   {   1, "errorResponseUnexpected" },
2558   {   2, "unrecognizedError" },
2559   {   3, "unexpectedError" },
2560   {   4, "mistypedParameter" },
2561   { 0, NULL }
2562 };
2563
2564
2565 static int
2566 dissect_cmip_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2567   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2568                                   NULL);
2569
2570   return offset;
2571 }
2572 static int dissect_returnErrorProblem_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2573   return dissect_cmip_ReturnErrorProblem(TRUE, tvb, offset, pinfo, tree, hf_cmip_returnErrorProblem);
2574 }
2575
2576
2577 static const value_string cmip_RejectProblem_vals[] = {
2578   {   0, "general-unrecognizedPDU" },
2579   {   1, "general-mistypedPDU" },
2580   {   2, "general-badlyStructuredPDU" },
2581   {  10, "invoke-duplicateInvocation" },
2582   {  11, "invoke-unrecognizedOperation" },
2583   {  12, "invoke-mistypedArgument" },
2584   {  13, "invoke-resourceLimitation" },
2585   {  14, "invoke-releaseInProgress" },
2586   {  15, "invoke-unrecognizedLinkedId" },
2587   {  16, "invoke-linkedResponseUnexpected" },
2588   {  17, "invoke-unexpectedLinkedOperation" },
2589   {  20, "returnResult-unrecognizedInvocation" },
2590   {  21, "returnResult-resultResponseUnexpected" },
2591   {  22, "returnResult-mistypedResult" },
2592   {  30, "returnError-unrecognizedInvocation" },
2593   {  31, "returnError-errorResponseUnexpected" },
2594   {  32, "returnError-unrecognizedError" },
2595   {  33, "returnError-unexpectedError" },
2596   {  34, "returnError-mistypedParameter" },
2597   { 0, NULL }
2598 };
2599
2600
2601 static int
2602 dissect_cmip_RejectProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2603   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2604                                   NULL);
2605
2606   return offset;
2607 }
2608
2609
2610 static const value_string cmip_RejectProb_vals[] = {
2611   {   0, "generalProblem" },
2612   {   1, "invokeProblem" },
2613   {   2, "returnResultProblem" },
2614   {   3, "returnErrorProblem" },
2615   { 0, NULL }
2616 };
2617
2618 static const ber_choice_t RejectProb_choice[] = {
2619   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_generalProblem_impl },
2620   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invokeProblem_impl },
2621   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResultProblem_impl },
2622   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnErrorProblem_impl },
2623   { 0, 0, 0, 0, NULL }
2624 };
2625
2626 static int
2627 dissect_cmip_RejectProb(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2628   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2629                                  RejectProb_choice, hf_index, ett_cmip_RejectProb,
2630                                  NULL);
2631
2632   return offset;
2633 }
2634 static int dissect_rejectProblem(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2635   return dissect_cmip_RejectProb(FALSE, tvb, offset, pinfo, tree, hf_cmip_rejectProblem);
2636 }
2637
2638
2639 static const ber_sequence_t Reject_sequence[] = {
2640   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId },
2641   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_rejectProblem },
2642   { 0, 0, 0, NULL }
2643 };
2644
2645 static int
2646 dissect_cmip_Reject(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2647   opcode_type=OPCODE_REJECT;
2648   if(check_col(pinfo->cinfo, COL_INFO)){
2649     col_prepend_fstr(pinfo->cinfo, COL_INFO, "Reject ");
2650   }
2651   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2652                                    Reject_sequence, hf_index, ett_cmip_Reject);
2653
2654   return offset;
2655 }
2656 static int dissect_reject_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2657   return dissect_cmip_Reject(TRUE, tvb, offset, pinfo, tree, hf_cmip_reject);
2658 }
2659
2660
2661 const value_string cmip_ROS_vals[] = {
2662   {   1, "invoke" },
2663   {   2, "returnResult" },
2664   {   3, "returnError" },
2665   {   4, "reject" },
2666   { 0, NULL }
2667 };
2668
2669 static const ber_choice_t ROS_choice[] = {
2670   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl },
2671   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResult_impl },
2672   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl },
2673   {   4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl },
2674   { 0, 0, 0, 0, NULL }
2675 };
2676
2677 int
2678 dissect_cmip_ROS(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2679   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2680                                  ROS_choice, hf_index, ett_cmip_ROS,
2681                                  NULL);
2682
2683   return offset;
2684 }
2685
2686
2687 static const value_string cmip_CMIPAbortSource_vals[] = {
2688   {   0, "cmiseServiceUser" },
2689   {   1, "cmiseServiceProvider" },
2690   { 0, NULL }
2691 };
2692
2693
2694 static int
2695 dissect_cmip_CMIPAbortSource(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2696   guint32 value;
2697
2698     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2699                                   &value);
2700
2701   if(check_col(pinfo->cinfo, COL_INFO)){
2702     col_append_fstr(pinfo->cinfo, COL_INFO, " AbortSource:%s", val_to_str(value, cmip_CMIPAbortSource_vals, " Unknown AbortSource:%d"));
2703   }
2704
2705   return offset;
2706 }
2707 static int dissect_abortSource_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2708   return dissect_cmip_CMIPAbortSource(TRUE, tvb, offset, pinfo, tree, hf_cmip_abortSource);
2709 }
2710
2711
2712 static const ber_sequence_t CMIPAbortInfo_sequence[] = {
2713   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_abortSource_impl },
2714   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_userInfo },
2715   { 0, 0, 0, NULL }
2716 };
2717
2718 int
2719 dissect_cmip_CMIPAbortInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2720   if(check_col(pinfo->cinfo, COL_INFO)){
2721     col_append_fstr(pinfo->cinfo, COL_INFO, "CMIP-A-ABORT");
2722   }
2723   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2724                                    CMIPAbortInfo_sequence, hf_index, ett_cmip_CMIPAbortInfo);
2725
2726   return offset;
2727 }
2728
2729
2730 static const asn_namedbit FunctionalUnits_bits[] = {
2731   {  0, &hf_cmip_FunctionalUnits_multipleObjectSelection, -1, -1, "multipleObjectSelection", NULL },
2732   {  1, &hf_cmip_FunctionalUnits_filter, -1, -1, "filter", NULL },
2733   {  2, &hf_cmip_FunctionalUnits_multipleReply, -1, -1, "multipleReply", NULL },
2734   {  3, &hf_cmip_FunctionalUnits_extendedService, -1, -1, "extendedService", NULL },
2735   {  4, &hf_cmip_FunctionalUnits_cancelGet, -1, -1, "cancelGet", NULL },
2736   { 0, NULL, 0, 0, NULL, NULL }
2737 };
2738
2739 static int
2740 dissect_cmip_FunctionalUnits(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2741   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2742                                     FunctionalUnits_bits, hf_index, ett_cmip_FunctionalUnits,
2743                                     NULL);
2744
2745   return offset;
2746 }
2747 static int dissect_functionalUnits_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2748   return dissect_cmip_FunctionalUnits(TRUE, tvb, offset, pinfo, tree, hf_cmip_functionalUnits);
2749 }
2750
2751
2752 static const asn_namedbit ProtocolVersion_bits[] = {
2753   {  0, &hf_cmip_ProtocolVersion_version1, -1, -1, "version1", NULL },
2754   {  1, &hf_cmip_ProtocolVersion_version2, -1, -1, "version2", NULL },
2755   { 0, NULL, 0, 0, NULL, NULL }
2756 };
2757
2758 static int
2759 dissect_cmip_ProtocolVersion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2760   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2761                                     ProtocolVersion_bits, hf_index, ett_cmip_ProtocolVersion,
2762                                     NULL);
2763
2764   return offset;
2765 }
2766 static int dissect_protocolVersion_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2767   return dissect_cmip_ProtocolVersion(TRUE, tvb, offset, pinfo, tree, hf_cmip_protocolVersion);
2768 }
2769
2770
2771 static const ber_sequence_t CMIPUserInfo_sequence[] = {
2772   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_protocolVersion_impl },
2773   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_functionalUnits_impl },
2774   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_accessControl1 },
2775   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_userInfo },
2776   { 0, 0, 0, NULL }
2777 };
2778
2779 int
2780 dissect_cmip_CMIPUserInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2781   if(check_col(pinfo->cinfo, COL_INFO)){
2782     col_append_fstr(pinfo->cinfo, COL_INFO, "CMIP-A-ASSOCIATE");
2783   }
2784   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2785                                    CMIPUserInfo_sequence, hf_index, ett_cmip_CMIPUserInfo);
2786
2787   return offset;
2788 }
2789
2790
2791 /*--- End of included file: packet-cmip-fn.c ---*/
2792
2793
2794
2795 static void
2796 dissect_cmip_attribute_35(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2797 {
2798
2799         dissect_cmip_OperationalState(FALSE, tvb, 0, pinfo, parent_tree, hf_OperationalState);
2800
2801 }
2802
2803 static void
2804 dissect_cmip_attribute_55(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2805 {
2806
2807         dissect_cmip_Destination(FALSE, tvb, 0, pinfo, parent_tree,hf_Destination);
2808
2809 }
2810
2811 static void
2812 dissect_cmip_attribute_56(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2813 {
2814
2815         dissect_cmip_DiscriminatorConstruct(FALSE, tvb, 0, pinfo, parent_tree, hf_DiscriminatorConstruct);
2816
2817 }
2818
2819 static void
2820 dissect_cmip_attribute_63(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2821 {
2822
2823         dissect_cmip_NameBinding(FALSE, tvb, 0, pinfo, parent_tree, hf_NameBinding);
2824
2825 }
2826
2827 static void
2828 dissect_cmip_attribute_65(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2829 {
2830
2831         dissect_cmip_ObjectClass(FALSE, tvb, 0, pinfo, parent_tree, hf_ObjectClass);
2832
2833 }
2834
2835
2836 /* XXX this one should be broken out later and moved into the conformance file */
2837 static void
2838 dissect_cmip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
2839 {
2840         static struct SESSION_DATA_STRUCTURE* session = NULL;
2841         proto_item *item = NULL;
2842         proto_tree *tree = NULL;
2843
2844
2845         /* do we have spdu type from the session dissector?  */
2846         if( !pinfo->private_data ){
2847                 if(tree){
2848                         proto_tree_add_text(tree, tvb, 0, -1,
2849                                 "Internal error:can't get spdu type from session dissector.");
2850                         return;
2851                 }
2852         } else {
2853                 session  = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
2854                 if(session->spdu_type == 0 ){
2855                         if(tree){
2856                                 proto_tree_add_text(tree, tvb, 0, -1,
2857                                         "Internal error:wrong spdu type %x from session dissector.",session->spdu_type);
2858                                 return;
2859                         }
2860                 }
2861         }
2862
2863         if(parent_tree){
2864                 item = proto_tree_add_item(parent_tree, proto_cmip, tvb, 0, -1, FALSE);
2865                 tree = proto_item_add_subtree(item, ett_cmip);
2866         }
2867
2868         if (check_col(pinfo->cinfo, COL_PROTOCOL))
2869                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "CMIP");
2870         if (check_col(pinfo->cinfo, COL_INFO))
2871                 col_clear(pinfo->cinfo, COL_INFO);
2872         switch(session->spdu_type){
2873                 case SES_CONNECTION_REQUEST:
2874                 case SES_CONNECTION_ACCEPT:
2875                 case SES_DISCONNECT:
2876                 case SES_FINISH:
2877                 case SES_REFUSE:
2878                         dissect_cmip_CMIPUserInfo(FALSE,tvb,0,pinfo,tree,-1);
2879                         break;
2880                 case SES_ABORT:
2881                         dissect_cmip_CMIPAbortInfo(FALSE,tvb,0,pinfo,tree,-1);
2882                         break;
2883                 case SES_DATA_TRANSFER:
2884                         dissect_cmip_ROS(FALSE,tvb,0,pinfo,tree,-1);
2885                         break;
2886                 default:
2887                         ;
2888         }
2889 }
2890
2891 /*--- proto_register_cmip ----------------------------------------------*/
2892 void proto_register_cmip(void) {
2893
2894   /* List of fields */
2895   static hf_register_info hf[] = {
2896     { &hf_cmip_actionType_OID,
2897       { "actionType", "cmip.actionType_OID",
2898         FT_STRING, BASE_NONE, NULL, 0,
2899         "actionType", HFILL }},
2900     { &hf_cmip_eventType_OID,
2901       { "eventType", "cmip.eventType_OID",
2902         FT_STRING, BASE_NONE, NULL, 0,
2903         "eventType", HFILL }},
2904     { &hf_cmip_attributeId_OID,
2905       { "attributeId", "cmip.attributeId_OID",
2906         FT_STRING, BASE_NONE, NULL, 0,
2907         "attributeId", HFILL }},
2908     { &hf_cmip_errorId_OID,
2909       { "errorId", "cmip.errorId_OID",
2910         FT_STRING, BASE_NONE, NULL, 0,
2911         "errorId", HFILL }},
2912    { &hf_DiscriminatorConstruct,
2913       { "DiscriminatorConstruct", "cmip.DiscriminatorConstruct",
2914         FT_UINT32, BASE_DEC, NULL, 0,
2915         "", HFILL }},
2916     { &hf_Destination,
2917       { "Destination", "cmip.Destination",
2918         FT_UINT32, BASE_DEC, NULL, 0,
2919         "", HFILL }},
2920     { &hf_NameBinding,
2921       { "NameBinding", "cmip.NameBinding",
2922         FT_STRING, BASE_NONE, NULL, 0,
2923         "", HFILL }},
2924     { &hf_ObjectClass,
2925       { "ObjectClass", "cmip.ObjectClass",
2926         FT_UINT32, BASE_DEC, VALS(cmip_ObjectClass_vals), 0,
2927         "", HFILL }},
2928     { &hf_OperationalState,
2929       { "OperationalState", "cmip.OperationalState",
2930         FT_UINT32, BASE_DEC, VALS(cmip_OperationalState_vals), 0,
2931         "", HFILL }},
2932
2933
2934 /*--- Included file: packet-cmip-hfarr.c ---*/
2935
2936     { &hf_cmip_modifyOperator,
2937       { "modifyOperator", "cmip.modifyOperator",
2938         FT_INT32, BASE_DEC, VALS(cmip_ModifyOperator_vals), 0,
2939         "", HFILL }},
2940     { &hf_cmip_attributeId,
2941       { "attributeId", "cmip.attributeId",
2942         FT_STRING, BASE_NONE, NULL, 0,
2943         "ModificationItem/attributeId", HFILL }},
2944     { &hf_cmip_attributeValue,
2945       { "attributeValue", "cmip.attributeValue",
2946         FT_NONE, BASE_NONE, NULL, 0,
2947         "ModificationItem/attributeValue", HFILL }},
2948     { &hf_cmip_managedObjectClass,
2949       { "managedObjectClass", "cmip.managedObjectClass",
2950         FT_UINT32, BASE_DEC, VALS(cmip_ObjectClass_vals), 0,
2951         "", HFILL }},
2952     { &hf_cmip_managedObjectInstance,
2953       { "managedObjectInstance", "cmip.managedObjectInstance",
2954         FT_UINT32, BASE_DEC, VALS(cmip_ObjectInstance_vals), 0,
2955         "", HFILL }},
2956     { &hf_cmip_currentTime,
2957       { "currentTime", "cmip.currentTime",
2958         FT_STRING, BASE_NONE, NULL, 0,
2959         "", HFILL }},
2960     { &hf_cmip_getInfoList,
2961       { "getInfoList", "cmip.getInfoList",
2962         FT_UINT32, BASE_DEC, NULL, 0,
2963         "GetListError/getInfoList", HFILL }},
2964     { &hf_cmip_getInfoList_item,
2965       { "Item", "cmip.getInfoList_item",
2966         FT_UINT32, BASE_DEC, VALS(cmip_GetInfoStatus_vals), 0,
2967         "GetListError/getInfoList/_item", HFILL }},
2968     { &hf_cmip_attributeIdError,
2969       { "attributeIdError", "cmip.attributeIdError",
2970         FT_NONE, BASE_NONE, NULL, 0,
2971         "GetInfoStatus/attributeIdError", HFILL }},
2972     { &hf_cmip_attribute,
2973       { "attribute", "cmip.attribute",
2974         FT_NONE, BASE_NONE, NULL, 0,
2975         "", HFILL }},
2976     { &hf_cmip_errorStatus,
2977       { "errorStatus", "cmip.errorStatus",
2978         FT_UINT32, BASE_DEC, VALS(cmip_T_errorStatus_vals), 0,
2979         "AttributeIdError/errorStatus", HFILL }},
2980     { &hf_cmip_attributeId1,
2981       { "attributeId", "cmip.attributeId",
2982         FT_UINT32, BASE_DEC, VALS(cmip_AttributeId_vals), 0,
2983         "AttributeIdError/attributeId", HFILL }},
2984     { &hf_cmip_setInfoList,
2985       { "setInfoList", "cmip.setInfoList",
2986         FT_UINT32, BASE_DEC, NULL, 0,
2987         "SetListError/setInfoList", HFILL }},
2988     { &hf_cmip_setInfoList_item,
2989       { "Item", "cmip.setInfoList_item",
2990         FT_UINT32, BASE_DEC, VALS(cmip_SetInfoStatus_vals), 0,
2991         "SetListError/setInfoList/_item", HFILL }},
2992     { &hf_cmip_actionErrorInfo,
2993       { "actionErrorInfo", "cmip.actionErrorInfo",
2994         FT_NONE, BASE_NONE, NULL, 0,
2995         "ActionError/actionErrorInfo", HFILL }},
2996     { &hf_cmip_specificErrorInfo,
2997       { "specificErrorInfo", "cmip.specificErrorInfo",
2998         FT_NONE, BASE_NONE, NULL, 0,
2999         "ProcessingFailure/specificErrorInfo", HFILL }},
3000     { &hf_cmip_RDNSequence_item,
3001       { "Item", "cmip.RDNSequence_item",
3002         FT_UINT32, BASE_DEC, NULL, 0,
3003         "RDNSequence/_item", HFILL }},
3004     { &hf_cmip_RelativeDistinguishedName_item,
3005       { "Item", "cmip.RelativeDistinguishedName_item",
3006         FT_NONE, BASE_NONE, NULL, 0,
3007         "RelativeDistinguishedName/_item", HFILL }},
3008     { &hf_cmip_deleteErrorInfo,
3009       { "deleteErrorInfo", "cmip.deleteErrorInfo",
3010         FT_UINT32, BASE_DEC, VALS(cmip_T_deleteErrorInfo_vals), 0,
3011         "DeleteError/deleteErrorInfo", HFILL }},
3012     { &hf_cmip_attributeError,
3013       { "attributeError", "cmip.attributeError",
3014         FT_NONE, BASE_NONE, NULL, 0,
3015         "SetInfoStatus/attributeError", HFILL }},
3016     { &hf_cmip_errorId,
3017       { "errorId", "cmip.errorId",
3018         FT_STRING, BASE_NONE, NULL, 0,
3019         "SpecificErrorInfo/errorId", HFILL }},
3020     { &hf_cmip_errorInfo,
3021       { "errorInfo", "cmip.errorInfo",
3022         FT_NONE, BASE_NONE, NULL, 0,
3023         "SpecificErrorInfo/errorInfo", HFILL }},
3024     { &hf_cmip_actionType,
3025       { "actionType", "cmip.actionType",
3026         FT_STRING, BASE_NONE, NULL, 0,
3027         "NoSuchArgumentAction/actionType", HFILL }},
3028     { &hf_cmip_eventType,
3029       { "eventType", "cmip.eventType",
3030         FT_STRING, BASE_NONE, NULL, 0,
3031         "NoSuchArgumentEvent/eventType", HFILL }},
3032     { &hf_cmip_actionId,
3033       { "actionId", "cmip.actionId",
3034         FT_NONE, BASE_NONE, NULL, 0,
3035         "NoSuchArgument/actionId", HFILL }},
3036     { &hf_cmip_eventId,
3037       { "eventId", "cmip.eventId",
3038         FT_NONE, BASE_NONE, NULL, 0,
3039         "NoSuchArgument/eventId", HFILL }},
3040     { &hf_cmip_eventType1,
3041       { "eventType", "cmip.eventType",
3042         FT_STRING, BASE_NONE, NULL, 0,
3043         "InvalidArgumentValueEventValue/eventType", HFILL }},
3044     { &hf_cmip_eventInfo,
3045       { "eventInfo", "cmip.eventInfo",
3046         FT_NONE, BASE_NONE, NULL, 0,
3047         "InvalidArgumentValueEventValue/eventInfo", HFILL }},
3048     { &hf_cmip_actionValue,
3049       { "actionValue", "cmip.actionValue",
3050         FT_NONE, BASE_NONE, NULL, 0,
3051         "InvalidArgumentValue/actionValue", HFILL }},
3052     { &hf_cmip_eventValue,
3053       { "eventValue", "cmip.eventValue",
3054         FT_NONE, BASE_NONE, NULL, 0,
3055         "InvalidArgumentValue/eventValue", HFILL }},
3056     { &hf_cmip_actionType1,
3057       { "actionType", "cmip.actionType",
3058         FT_STRING, BASE_NONE, NULL, 0,
3059         "ErrorInfo/actionType", HFILL }},
3060     { &hf_cmip_actionArgument,
3061       { "actionArgument", "cmip.actionArgument",
3062         FT_UINT32, BASE_DEC, VALS(cmip_NoSuchArgument_vals), 0,
3063         "ErrorInfo/actionArgument", HFILL }},
3064     { &hf_cmip_argumentValue,
3065       { "argumentValue", "cmip.argumentValue",
3066         FT_UINT32, BASE_DEC, VALS(cmip_InvalidArgumentValue_vals), 0,
3067         "ErrorInfo/argumentValue", HFILL }},
3068     { &hf_cmip_errorStatus1,
3069       { "errorStatus", "cmip.errorStatus",
3070         FT_UINT32, BASE_DEC, VALS(cmip_T_errorStatus1_vals), 0,
3071         "ActionErrorInfo/errorStatus", HFILL }},
3072     { &hf_cmip_errorInfo1,
3073       { "errorInfo", "cmip.errorInfo",
3074         FT_UINT32, BASE_DEC, VALS(cmip_ErrorInfo_vals), 0,
3075         "ActionErrorInfo/errorInfo", HFILL }},
3076     { &hf_cmip_errorStatus2,
3077       { "errorStatus", "cmip.errorStatus",
3078         FT_UINT32, BASE_DEC, VALS(cmip_T_errorStatus2_vals), 0,
3079         "AttributeError/errorStatus", HFILL }},
3080     { &hf_cmip_attributeId2,
3081       { "attributeId", "cmip.attributeId",
3082         FT_STRING, BASE_NONE, NULL, 0,
3083         "AttributeError/attributeId", HFILL }},
3084     { &hf_cmip_attributeValue1,
3085       { "attributeValue", "cmip.attributeValue",
3086         FT_NONE, BASE_NONE, NULL, 0,
3087         "AttributeError/attributeValue", HFILL }},
3088     { &hf_cmip_attributeList,
3089       { "attributeList", "cmip.attributeList",
3090         FT_UINT32, BASE_DEC, NULL, 0,
3091         "", HFILL }},
3092     { &hf_cmip_attributeList_item,
3093       { "Item", "cmip.attributeList_item",
3094         FT_NONE, BASE_NONE, NULL, 0,
3095         "", HFILL }},
3096     { &hf_cmip_baseManagedObjectClass,
3097       { "baseManagedObjectClass", "cmip.baseManagedObjectClass",
3098         FT_UINT32, BASE_DEC, VALS(cmip_ObjectClass_vals), 0,
3099         "", HFILL }},
3100     { &hf_cmip_baseManagedObjectInstance,
3101       { "baseManagedObjectInstance", "cmip.baseManagedObjectInstance",
3102         FT_UINT32, BASE_DEC, VALS(cmip_ObjectInstance_vals), 0,
3103         "", HFILL }},
3104     { &hf_cmip_accessControl,
3105       { "accessControl", "cmip.accessControl",
3106         FT_NONE, BASE_NONE, NULL, 0,
3107         "", HFILL }},
3108     { &hf_cmip_synchronization,
3109       { "synchronization", "cmip.synchronization",
3110         FT_UINT32, BASE_DEC, VALS(cmip_CMISSync_vals), 0,
3111         "", HFILL }},
3112     { &hf_cmip_scope,
3113       { "scope", "cmip.scope",
3114         FT_UINT32, BASE_DEC, VALS(cmip_Scope_vals), 0,
3115         "", HFILL }},
3116     { &hf_cmip_filter,
3117       { "filter", "cmip.filter",
3118         FT_UINT32, BASE_DEC, VALS(cmip_CMISFilter_vals), 0,
3119         "", HFILL }},
3120     { &hf_cmip_modificationList,
3121       { "modificationList", "cmip.modificationList",
3122         FT_UINT32, BASE_DEC, NULL, 0,
3123         "SetArgument/modificationList", HFILL }},
3124     { &hf_cmip_modificationList_item,
3125       { "Item", "cmip.modificationList_item",
3126         FT_NONE, BASE_NONE, NULL, 0,
3127         "SetArgument/modificationList/_item", HFILL }},
3128     { &hf_cmip_getResult,
3129       { "getResult", "cmip.getResult",
3130         FT_NONE, BASE_NONE, NULL, 0,
3131         "LinkedReplyArgument/getResult", HFILL }},
3132     { &hf_cmip_getListError,
3133       { "getListError", "cmip.getListError",
3134         FT_NONE, BASE_NONE, NULL, 0,
3135         "LinkedReplyArgument/getListError", HFILL }},
3136     { &hf_cmip_setResult,
3137       { "setResult", "cmip.setResult",
3138         FT_NONE, BASE_NONE, NULL, 0,
3139         "LinkedReplyArgument/setResult", HFILL }},
3140     { &hf_cmip_setListError,
3141       { "setListError", "cmip.setListError",
3142         FT_NONE, BASE_NONE, NULL, 0,
3143         "LinkedReplyArgument/setListError", HFILL }},
3144     { &hf_cmip_actionResult,
3145       { "actionResult", "cmip.actionResult",
3146         FT_NONE, BASE_NONE, NULL, 0,
3147         "LinkedReplyArgument/actionResult", HFILL }},
3148     { &hf_cmip_processingFailure,
3149       { "processingFailure", "cmip.processingFailure",
3150         FT_NONE, BASE_NONE, NULL, 0,
3151         "LinkedReplyArgument/processingFailure", HFILL }},
3152     { &hf_cmip_deleteResult,
3153       { "deleteResult", "cmip.deleteResult",
3154         FT_NONE, BASE_NONE, NULL, 0,
3155         "LinkedReplyArgument/deleteResult", HFILL }},
3156     { &hf_cmip_actionError,
3157       { "actionError", "cmip.actionError",
3158         FT_NONE, BASE_NONE, NULL, 0,
3159         "LinkedReplyArgument/actionError", HFILL }},
3160     { &hf_cmip_deleteError,
3161       { "deleteError", "cmip.deleteError",
3162         FT_NONE, BASE_NONE, NULL, 0,
3163         "LinkedReplyArgument/deleteError", HFILL }},
3164     { &hf_cmip_eventType2,
3165       { "eventType", "cmip.eventType",
3166         FT_STRING, BASE_NONE, NULL, 0,
3167         "EventReply/eventType", HFILL }},
3168     { &hf_cmip_eventReplyInfo,
3169       { "eventReplyInfo", "cmip.eventReplyInfo",
3170         FT_NONE, BASE_NONE, NULL, 0,
3171         "EventReply/eventReplyInfo", HFILL }},
3172     { &hf_cmip_eventReply,
3173       { "eventReply", "cmip.eventReply",
3174         FT_NONE, BASE_NONE, NULL, 0,
3175         "EventReportResult/eventReply", HFILL }},
3176     { &hf_cmip_eventTime,
3177       { "eventTime", "cmip.eventTime",
3178         FT_STRING, BASE_NONE, NULL, 0,
3179         "EventReportArgument/eventTime", HFILL }},
3180     { &hf_cmip_eventType3,
3181       { "eventType", "cmip.eventType",
3182         FT_STRING, BASE_NONE, NULL, 0,
3183         "EventReportArgument/eventType", HFILL }},
3184     { &hf_cmip_eventInfo1,
3185       { "eventInfo", "cmip.eventInfo",
3186         FT_NONE, BASE_NONE, NULL, 0,
3187         "EventReportArgument/eventInfo", HFILL }},
3188     { &hf_cmip_managedOrSuperiorObjectInstance,
3189       { "managedOrSuperiorObjectInstance", "cmip.managedOrSuperiorObjectInstance",
3190         FT_UINT32, BASE_DEC, VALS(cmip_T_managedOrSuperiorObjectInstance_vals), 0,
3191         "CreateArgument/managedOrSuperiorObjectInstance", HFILL }},
3192     { &hf_cmip_superiorObjectInstance,
3193       { "superiorObjectInstance", "cmip.superiorObjectInstance",
3194         FT_UINT32, BASE_DEC, VALS(cmip_ObjectInstance_vals), 0,
3195         "CreateArgument/managedOrSuperiorObjectInstance/superiorObjectInstance", HFILL }},
3196     { &hf_cmip_referenceObjectInstance,
3197       { "referenceObjectInstance", "cmip.referenceObjectInstance",
3198         FT_UINT32, BASE_DEC, VALS(cmip_ObjectInstance_vals), 0,
3199         "CreateArgument/referenceObjectInstance", HFILL }},
3200     { &hf_cmip_actionType2,
3201       { "actionType", "cmip.actionType",
3202         FT_STRING, BASE_NONE, NULL, 0,
3203         "ActionReply/actionType", HFILL }},
3204     { &hf_cmip_actionReplyInfo,
3205       { "actionReplyInfo", "cmip.actionReplyInfo",
3206         FT_NONE, BASE_NONE, NULL, 0,
3207         "ActionReply/actionReplyInfo", HFILL }},
3208     { &hf_cmip_actionReply,
3209       { "actionReply", "cmip.actionReply",
3210         FT_NONE, BASE_NONE, NULL, 0,
3211         "ActionResult/actionReply", HFILL }},
3212     { &hf_cmip_actionInfo,
3213       { "actionInfo", "cmip.actionInfo",
3214         FT_NONE, BASE_NONE, NULL, 0,
3215         "ActionArgument/actionInfo", HFILL }},
3216     { &hf_cmip_actionType3,
3217       { "actionType", "cmip.actionType",
3218         FT_STRING, BASE_NONE, NULL, 0,
3219         "ActionInfo/actionType", HFILL }},
3220     { &hf_cmip_actionInfoArg,
3221       { "actionInfoArg", "cmip.actionInfoArg",
3222         FT_NONE, BASE_NONE, NULL, 0,
3223         "ActionInfo/actionInfoArg", HFILL }},
3224     { &hf_cmip_ocglobalForm,
3225       { "ocglobalForm", "cmip.ocglobalForm",
3226         FT_STRING, BASE_NONE, NULL, 0,
3227         "ObjectClass/ocglobalForm", HFILL }},
3228     { &hf_cmip_oclocalForm,
3229       { "oclocalForm", "cmip.oclocalForm",
3230         FT_INT32, BASE_DEC, NULL, 0,
3231         "ObjectClass/oclocalForm", HFILL }},
3232     { &hf_cmip_distinguishedName,
3233       { "distinguishedName", "cmip.distinguishedName",
3234         FT_UINT32, BASE_DEC, NULL, 0,
3235         "ObjectInstance/distinguishedName", HFILL }},
3236     { &hf_cmip_nonSpecificForm,
3237       { "nonSpecificForm", "cmip.nonSpecificForm",
3238         FT_BYTES, BASE_HEX, NULL, 0,
3239         "ObjectInstance/nonSpecificForm", HFILL }},
3240     { &hf_cmip_localDistinguishedName,
3241       { "localDistinguishedName", "cmip.localDistinguishedName",
3242         FT_UINT32, BASE_DEC, NULL, 0,
3243         "ObjectInstance/localDistinguishedName", HFILL }},
3244     { &hf_cmip_globalForm,
3245       { "globalForm", "cmip.globalForm",
3246         FT_STRING, BASE_NONE, NULL, 0,
3247         "AttributeId/globalForm", HFILL }},
3248     { &hf_cmip_localForm,
3249       { "localForm", "cmip.localForm",
3250         FT_INT32, BASE_DEC, NULL, 0,
3251         "AttributeId/localForm", HFILL }},
3252     { &hf_cmip_id,
3253       { "id", "cmip.id",
3254         FT_UINT32, BASE_DEC, VALS(cmip_AttributeId_vals), 0,
3255         "Attribute/id", HFILL }},
3256     { &hf_cmip_value,
3257       { "value", "cmip.value",
3258         FT_NONE, BASE_NONE, NULL, 0,
3259         "Attribute/value", HFILL }},
3260     { &hf_cmip_id1,
3261       { "id", "cmip.id",
3262         FT_STRING, BASE_NONE, NULL, 0,
3263         "AttributeValueAssertion/id", HFILL }},
3264     { &hf_cmip_value1,
3265       { "value", "cmip.value",
3266         FT_NONE, BASE_NONE, NULL, 0,
3267         "AttributeValueAssertion/value", HFILL }},
3268     { &hf_cmip_equality,
3269       { "equality", "cmip.equality",
3270         FT_NONE, BASE_NONE, NULL, 0,
3271         "FilterItem/equality", HFILL }},
3272     { &hf_cmip_substrings,
3273       { "substrings", "cmip.substrings",
3274         FT_UINT32, BASE_DEC, NULL, 0,
3275         "FilterItem/substrings", HFILL }},
3276     { &hf_cmip_substrings_item,
3277       { "Item", "cmip.substrings_item",
3278         FT_UINT32, BASE_DEC, VALS(cmip_T_substrings_item_vals), 0,
3279         "FilterItem/substrings/_item", HFILL }},
3280     { &hf_cmip_initialString,
3281       { "initialString", "cmip.initialString",
3282         FT_NONE, BASE_NONE, NULL, 0,
3283         "FilterItem/substrings/_item/initialString", HFILL }},
3284     { &hf_cmip_anyString,
3285       { "anyString", "cmip.anyString",
3286         FT_NONE, BASE_NONE, NULL, 0,
3287         "FilterItem/substrings/_item/anyString", HFILL }},
3288     { &hf_cmip_finalString,
3289       { "finalString", "cmip.finalString",
3290         FT_NONE, BASE_NONE, NULL, 0,
3291         "FilterItem/substrings/_item/finalString", HFILL }},
3292     { &hf_cmip_greaterOrEqual,
3293       { "greaterOrEqual", "cmip.greaterOrEqual",
3294         FT_NONE, BASE_NONE, NULL, 0,
3295         "FilterItem/greaterOrEqual", HFILL }},
3296     { &hf_cmip_lessOrEqual,
3297       { "lessOrEqual", "cmip.lessOrEqual",
3298         FT_NONE, BASE_NONE, NULL, 0,
3299         "FilterItem/lessOrEqual", HFILL }},
3300     { &hf_cmip_present,
3301       { "present", "cmip.present",
3302         FT_UINT32, BASE_DEC, VALS(cmip_AttributeId_vals), 0,
3303         "FilterItem/present", HFILL }},
3304     { &hf_cmip_subsetOf,
3305       { "subsetOf", "cmip.subsetOf",
3306         FT_NONE, BASE_NONE, NULL, 0,
3307         "FilterItem/subsetOf", HFILL }},
3308     { &hf_cmip_supersetOf,
3309       { "supersetOf", "cmip.supersetOf",
3310         FT_NONE, BASE_NONE, NULL, 0,
3311         "FilterItem/supersetOf", HFILL }},
3312     { &hf_cmip_nonNullSetIntersection,
3313       { "nonNullSetIntersection", "cmip.nonNullSetIntersection",
3314         FT_NONE, BASE_NONE, NULL, 0,
3315         "FilterItem/nonNullSetIntersection", HFILL }},
3316     { &hf_cmip_single,
3317       { "single", "cmip.single",
3318         FT_UINT32, BASE_DEC, VALS(cmip_AE_title_vals), 0,
3319         "Destination/single", HFILL }},
3320     { &hf_cmip_multiple,
3321       { "multiple", "cmip.multiple",
3322         FT_UINT32, BASE_DEC, NULL, 0,
3323         "Destination/multiple", HFILL }},
3324