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