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