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