summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/cmip
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/cmip
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/cmip')
-rw-r--r--epan/dissectors/asn1/cmip/CMIP-1.asn706
-rw-r--r--epan/dissectors/asn1/cmip/CMIP-A-ABORT-Information.asn17
-rw-r--r--epan/dissectors/asn1/cmip/CMIP-A-ASSOCIATE-Information.asn24
-rw-r--r--epan/dissectors/asn1/cmip/CMIP.asn526
-rw-r--r--epan/dissectors/asn1/cmip/CMakeLists.txt48
-rw-r--r--epan/dissectors/asn1/cmip/cmip.cnf507
-rw-r--r--epan/dissectors/asn1/cmip/packet-cmip-template.c202
-rw-r--r--epan/dissectors/asn1/cmip/packet-cmip-template.h18
8 files changed, 2048 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/cmip/CMIP-1.asn b/epan/dissectors/asn1/cmip/CMIP-1.asn
new file mode 100644
index 00000000..a50e66e5
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/CMIP-1.asn
@@ -0,0 +1,706 @@
+-- Module CMIP-1 (X.711:10/1997)
+CMIP-1 {joint-iso-itu-t ms(9) cmip(1) modules(0) protocol(3)} DEFINITIONS ::=
+BEGIN
+
+IMPORTS
+ ERROR, OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ ROS{}, InvokeId, noInvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)};
+
+CMIP-Operations OPERATION ::=
+ {m-Action | m-Action-Confirmed | m-CancelGet | m-Create | m-Delete |
+ m-EventReport | m-EventReport-Confirmed | m-Get | m-Linked-Reply | m-Set |
+ m-Set-Confirmed}
+
+CMIP-Confirmed-Operations OPERATION ::=
+ {m-Action-Confirmed | m-CancelGet | m-Create | m-Delete |
+ m-EventReport-Confirmed | m-Get | m-Set-Confirmed}
+
+-- CMISE error definitions
+accessDenied ERROR ::= {PRIORITY {0}
+ CODE local:2
+}
+
+classInstanceConflict ERROR ::= {
+ PARAMETER BaseManagedObjectId
+ PRIORITY {1}
+ CODE local:19
+}
+
+complexityLimitation ERROR ::= {
+ PARAMETER ComplexityLimitation
+ OPTIONAL TRUE
+ PRIORITY {1}
+ CODE local:20
+}
+
+duplicateManagedObjectInstance ERROR ::= {
+ PARAMETER ObjectInstance
+ PRIORITY {1}
+ CODE local:11
+}
+
+getListError ERROR ::= {
+ PARAMETER GetListError
+ PRIORITY {1}
+ CODE local:7
+}
+
+invalidArgumentValue ERROR ::= {
+ PARAMETER InvalidArgumentValue
+ PRIORITY {1}
+ CODE local:15
+}
+
+invalidAttributeValue ERROR ::= {
+ PARAMETER Attribute
+ PRIORITY {1}
+ CODE local:6
+}
+
+invalidFilter ERROR ::= {
+ PARAMETER CMISFilter
+ PRIORITY {1}
+ CODE local:4
+}
+
+invalidObjectInstance ERROR ::= {
+ PARAMETER ObjectInstance
+ PRIORITY {1}
+ CODE local:17
+}
+
+invalidScope ERROR ::= {PARAMETER Scope
+ PRIORITY {1}
+ CODE local:16
+}
+
+missingAttributeValue ERROR ::= {
+ PARAMETER SET OF AttributeId
+ PRIORITY {1}
+ CODE local:18
+}
+
+mistypedOperation ERROR ::= {PRIORITY {1}
+ CODE local:21
+}
+
+noSuchAction ERROR ::= {
+ PARAMETER NoSuchAction
+ PRIORITY {1}
+ CODE local:9
+}
+
+noSuchArgument ERROR ::= {
+ PARAMETER NoSuchArgument
+ PRIORITY {1}
+ CODE local:14
+}
+
+noSuchAttribute ERROR ::= {
+ PARAMETER AttributeId
+ PRIORITY {1}
+ CODE local:5
+}
+
+noSuchEventType ERROR ::= {
+ PARAMETER NoSuchEventType
+ PRIORITY {1}
+ CODE local:13
+}
+
+noSuchInvokeId ERROR ::= {
+ PARAMETER InvokeIDType
+ PRIORITY {1}
+ CODE local:22
+}
+
+noSuchObjectClass ERROR ::= {
+ PARAMETER ObjectClass
+ PRIORITY {1}
+ CODE local:0
+}
+
+noSuchObjectInstance ERROR ::= {
+ PARAMETER ObjectInstance
+ PRIORITY {1}
+ CODE local:1
+}
+
+noSuchReferenceObject ERROR ::= {
+ PARAMETER ObjectInstance
+ PRIORITY {1}
+ CODE local:12
+}
+
+operationCancelled ERROR ::= {PRIORITY {1}
+ CODE local:23
+}
+
+processingFailure ERROR ::= {
+ PARAMETER ProcessingFailure
+ OPTIONAL TRUE
+ PRIORITY {1}
+ CODE local:10
+}
+
+setListError ERROR ::= {
+ PARAMETER SetListError
+ PRIORITY {1}
+ CODE local:8
+}
+
+syncNotSupported ERROR ::= {
+ PARAMETER CMISSync
+ PRIORITY {1}
+ CODE local:3
+}
+
+-- CMISE operations
+-- Action operation (M-ACTION)
+m-Action OPERATION ::= {
+ ARGUMENT ActionArgument
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local:6
+}
+
+m-Action-Confirmed OPERATION ::= {
+ ARGUMENT ActionArgument
+ RESULT ActionResult
+ OPTIONAL TRUE -- this result is conditional;
+ -- for conditions see 8.3.3.2.9 of ITU-T Rec. X.710
+ ERRORS
+ {accessDenied | classInstanceConflict | complexityLimitation | invalidScope
+ | invalidArgumentValue | invalidFilter | noSuchAction | noSuchArgument |
+ noSuchObjectClass | noSuchObjectInstance | processingFailure |
+ syncNotSupported}
+ LINKED {m-Linked-Reply}
+ CODE local:7
+}
+
+-- Cancel get operation (M-CANCEL-GET)
+m-CancelGet OPERATION ::= {
+ ARGUMENT InvokeIDType
+ RETURN RESULT TRUE
+ ERRORS {mistypedOperation | noSuchInvokeId | processingFailure}
+ CODE local:10
+}
+
+-- Create operation (M-CREATE)
+m-Create OPERATION ::= {
+ ARGUMENT CreateArgument
+ RESULT CreateResult
+ OPTIONAL TRUE -- this result is conditional;
+ -- for conditions see 8.3.4.1.3 of ITU-T Rec. X.710
+ ERRORS
+ {accessDenied | classInstanceConflict | duplicateManagedObjectInstance |
+ invalidAttributeValue | invalidObjectInstance | missingAttributeValue |
+ noSuchAttribute | noSuchObjectClass | noSuchObjectInstance |
+ noSuchReferenceObject | processingFailure}
+ CODE local:8
+}
+
+-- Delete operation (M-DELETE)
+m-Delete OPERATION ::= {
+ ARGUMENT DeleteArgument
+ RESULT DeleteResult
+ OPTIONAL TRUE -- this result is conditional;
+ -- for conditions see 8.3.5.2.8 of ITU-T Rec. X.710
+ ERRORS
+ {accessDenied | classInstanceConflict | complexityLimitation |
+ invalidFilter | invalidScope | noSuchObjectClass | noSuchObjectInstance |
+ processingFailure | syncNotSupported}
+ LINKED {m-Linked-Reply}
+ CODE local:9
+}
+
+-- Event Reporting operations (M-EVENT-REPORT)
+m-EventReport OPERATION ::= {
+ ARGUMENT EventReportArgument
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local:0
+}
+
+m-EventReport-Confirmed OPERATION ::= {
+ ARGUMENT EventReportArgument
+ RESULT EventReportResult
+ OPTIONAL TRUE
+ ERRORS
+ {invalidArgumentValue | noSuchArgument | noSuchEventType |
+ noSuchObjectClass | noSuchObjectInstance | processingFailure}
+ CODE local:1
+}
+
+-- Get operation (M-GET)
+m-Get OPERATION ::= {
+ ARGUMENT GetArgument
+ RESULT GetResult
+ OPTIONAL TRUE -- this result is conditional;
+ -- for conditions see 8.3.1.2.8 of ITU-T Rec. X.710
+ ERRORS
+ {accessDenied | classInstanceConflict | complexityLimitation | getListError
+ | invalidFilter | invalidScope | noSuchObjectClass | noSuchObjectInstance
+ | operationCancelled | processingFailure | syncNotSupported}
+ LINKED {m-Linked-Reply}
+ CODE local:3
+}
+
+-- Linked operation to M-GET, M-SET (Confirmed), M-ACTION (Confirmed), and M-DELETE
+m-Linked-Reply OPERATION ::= {ARGUMENT LinkedReplyArgument
+ CODE local:2
+}
+
+-- Set operations (M-SET)
+m-Set OPERATION ::= {
+ ARGUMENT SetArgument
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local:4
+}
+
+m-Set-Confirmed OPERATION ::= {
+ ARGUMENT SetArgument
+ RESULT SetResult
+ OPTIONAL TRUE -- this result is conditional;
+ -- for conditions see 8.3.2.2.9 of ITU-T Rec. X.710
+ ERRORS
+ {accessDenied | classInstanceConflict | complexityLimitation |
+ invalidFilter | invalidScope | noSuchObjectClass | noSuchObjectInstance |
+ processingFailure | setListError | syncNotSupported}
+ LINKED {m-Linked-Reply}
+ CODE local:5
+}
+
+-- INFORMATION OBJECT definitions
+-- While it is possible to use the Information object class definitions defined below to specify
+-- Action types, Attribute types, Event Report types, and their associated ASN.1 type definitions,
+-- the alternative approach using GDMO templates, as defined in ITU-T Rec. 722 | ISO/IEC 10165-5,
+-- continues to be available for use with this Recommendation | International Standard.
+CMIP-ACTION ::= CLASS {&id ActionTypeId UNIQUE,
+ &Value
+}WITH SYNTAX {TYPE &Value
+ ID &id
+}
+
+CMIP-ATTRIBUTE ::= CLASS {&id AttributeId UNIQUE,
+ &Value
+}WITH SYNTAX {TYPE &Value
+ ID &id
+}
+
+CMIP-AVA ::= CLASS {&id OBJECT IDENTIFIER UNIQUE,
+ &Value
+}
+
+CMIP-EVENT ::= CLASS {&id EventTypeId UNIQUE,
+ &Value
+}WITH SYNTAX {TYPE &Value
+ ID &id
+}
+
+CMIP-SPECIFICERROR ::= CLASS {&id OBJECT IDENTIFIER UNIQUE,
+ &Value
+}WITH SYNTAX {TYPE &Value
+ ID &id
+}
+
+-- Supporting type definitions
+AccessControl ::= EXTERNAL
+
+ActionArgument ::= SEQUENCE {
+ COMPONENTS OF BaseManagedObjectId,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync DEFAULT bestEffort,
+ scope [7] Scope DEFAULT namedNumbers:baseObject,
+ filter CMISFilter DEFAULT and:{},
+ actionInfo [12] IMPLICIT ActionInfo,
+ ...
+}
+
+ActionError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ actionErrorInfo [6] ActionErrorInfo,
+ ...
+}
+
+ActionErrorInfo ::= SEQUENCE {
+ errorStatus
+ ENUMERATED {accessDenied(2), noSuchAction(9), noSuchArgument(14),
+ invalidArgumentValue(15), ...
+ },
+ errorInfo
+ CHOICE {actionType CMIP-ACTION.&id({ActionSet}),
+ actionArgument [0] NoSuchArgument,
+ argumentValue [1] InvalidArgumentValue},
+ ...
+}
+
+ActionInfo ::= SEQUENCE {
+ actionType CMIP-ACTION.&id({ActionSet}),
+ actionInfoArg [4] CMIP-ACTION.&Value({ActionSet}{@.actionType}) OPTIONAL
+}
+
+ActionReply ::= SEQUENCE {
+ actionType CMIP-ACTION.&id({ActionSet}),
+ actionReplyInfo [4] CMIP-ACTION.&Value({ActionSet}{@.actionType})
+}
+
+ActionResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ actionReply [6] IMPLICIT ActionReply OPTIONAL,
+ ...
+}
+
+ActionSet CMIP-ACTION ::=
+ {...}
+
+ActionTypeId ::= CHOICE {
+ globalForm [2] IMPLICIT OBJECT IDENTIFIER,
+ localForm [3] IMPLICIT INTEGER
+}
+
+-- This Recommendation | International Standard does not allocate any values for localForm.
+-- Where this alternative is used, the permissible values for the integers and their meanings shall be defined
+-- as part of the application context in which they are used
+Attribute ::= SEQUENCE {
+ id CMIP-ATTRIBUTE.&id({AttributeSet}),
+ value CMIP-ATTRIBUTE.&Value({AttributeSet}{@.id})
+}
+
+AttributeError ::= SEQUENCE {
+ errorStatus
+ ENUMERATED {accessDenied(2), noSuchAttribute(5), invalidAttributeValue(6),
+ invalidOperation(24), invalidOperator(25), ...
+ },
+ modifyOperator [2] IMPLICIT ModifyOperator OPTIONAL, -- present for invalidOperator
+
+ -- and invalidOperation
+ attributeId CMIP-ATTRIBUTE.&id({AttributeSet}),
+ attributeValue CMIP-ATTRIBUTE.&Value({AttributeSet}{@.attributeId}) OPTIONAL
+ -- value is absent for setToDefault
+}
+
+AttributeId ::= CHOICE {
+ globalForm [0] IMPLICIT OBJECT IDENTIFIER,
+ localForm [1] IMPLICIT INTEGER
+}
+
+-- This Recommendation | International Standard does not allocate any values for localForm.
+-- Where this alternative is used, the permissible values for the integers and their meanings shall be defined
+-- as part of the application context in which they are used
+AttributeIdError ::= SEQUENCE {
+ errorStatus ENUMERATED {accessDenied(2), noSuchAttribute(5), ...
+ },
+ attributeId AttributeId,
+ ...
+}
+
+AttributeSet CMIP-ATTRIBUTE ::=
+ {...}
+
+AttributeValueAssertion ::= SEQUENCE {
+ id CMIP-AVA.&id({AvaSet}),
+ value CMIP-AVA.&Value({AvaSet}{@.id})
+}
+
+AvaSet CMIP-AVA ::=
+ {...}
+
+BaseManagedObjectId ::= SEQUENCE {
+ baseManagedObjectClass ObjectClass,
+ baseManagedObjectInstance ObjectInstance
+}
+
+CMISFilter ::= CHOICE {
+ item [8] FilterItem,
+ and [9] IMPLICIT SET OF CMISFilter,
+ or [10] IMPLICIT SET OF CMISFilter,
+ not [11] CMISFilter
+}
+
+CMISSync ::= ENUMERATED {bestEffort(0), atomic(1)}
+
+ComplexityLimitation ::= SET {
+ scope [0] Scope OPTIONAL,
+ filter [1] CMISFilter OPTIONAL,
+ sync [2] CMISSync OPTIONAL,
+ ...
+}
+
+CreateArgument ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ managedOrSuperiorObjectInstance
+ CHOICE {managedObjectInstance ObjectInstance,
+ superiorObjectInstance [8] ObjectInstance} OPTIONAL,
+ accessControl [5] AccessControl OPTIONAL,
+ referenceObjectInstance [6] ObjectInstance OPTIONAL,
+ attributeList [7] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+CreateResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL, -- shall be returned if omitted from CreateArgument
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ attributeList [6] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+DeleteArgument ::= SEQUENCE {
+ COMPONENTS OF BaseManagedObjectId,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync DEFAULT bestEffort,
+ scope [7] Scope DEFAULT namedNumbers:baseObject,
+ filter CMISFilter DEFAULT and:{},
+ ...
+}
+
+DeleteError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ deleteErrorInfo [6] ENUMERATED {accessDenied(2), ...
+ },
+ ...
+}
+
+DeleteResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ ...
+}
+
+DistinguishedName ::= RDNSequence
+
+EventReply ::= SEQUENCE {
+ eventType CMIP-EVENT.&id({EventSet}),
+ eventReplyInfo [8] CMIP-EVENT.&Value({EventSet}{@.eventType}) OPTIONAL
+}
+
+EventReportArgument ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ managedObjectInstance ObjectInstance,
+ eventTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ eventType CMIP-EVENT.&id({EventSet}),
+ eventInfo
+ [8] CMIP-EVENT.&Value({EventSet}{@.eventType}) OPTIONAL,
+ ...
+}
+
+EventReportResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ eventReply EventReply OPTIONAL,
+ ...
+}
+
+EventSet CMIP-EVENT ::=
+ {...}
+
+EventTypeId ::= CHOICE {
+ globalForm [6] IMPLICIT OBJECT IDENTIFIER,
+ localForm [7] IMPLICIT INTEGER
+}
+
+-- This Recommendation | International Standard does not allocate any values for localForm.
+-- Where this alternative is used, the permissible values for the integers and their meanings shall be defined
+-- as part of the application context in which they are used
+FilterItem ::= CHOICE {
+ equality [0] IMPLICIT Attribute,
+ substrings
+ [1] IMPLICIT SEQUENCE OF
+ CHOICE {initialString [0] IMPLICIT Attribute,
+ anyString [1] IMPLICIT Attribute,
+ finalString [2] IMPLICIT Attribute},
+ greaterOrEqual [2] IMPLICIT Attribute, -- asserted value ? attribute value
+ lessOrEqual [3] IMPLICIT Attribute, -- asserted value <= attribute value
+ present [4] AttributeId,
+ subsetOf [5] IMPLICIT Attribute, -- asserted value is a subset of attribute value
+ supersetOf [6] IMPLICIT Attribute, -- asserted value is a superset of attribute value
+ nonNullSetIntersection [7] IMPLICIT Attribute
+}
+
+GetArgument ::= SEQUENCE {
+ COMPONENTS OF BaseManagedObjectId,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync DEFAULT bestEffort,
+ scope [7] Scope DEFAULT namedNumbers:baseObject,
+ filter CMISFilter DEFAULT and:{},
+ attributeIdList [12] IMPLICIT SET OF AttributeId OPTIONAL,
+ ...
+}
+
+GetInfoStatus ::= CHOICE {
+ attributeIdError [0] IMPLICIT AttributeIdError,
+ attribute [1] IMPLICIT Attribute
+}
+
+GetListError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ getInfoList [6] IMPLICIT SET OF GetInfoStatus,
+ ...
+}
+
+GetResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ attributeList [6] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+InvalidArgumentValue ::= CHOICE {
+ actionValue [0] IMPLICIT ActionInfo,
+ eventValue
+ [1] IMPLICIT SEQUENCE {eventType CMIP-EVENT.&id({EventSet}),
+ eventInfo
+ [8] CMIP-EVENT.&Value({EventSet}{@.eventType})
+ OPTIONAL}
+}
+
+InvokeIDType ::= InvokeId--(ALL EXCEPT absent:NULL)
+
+LinkedReplyArgument ::= CHOICE {
+ getResult [0] IMPLICIT GetResult,
+ getListError [1] IMPLICIT GetListError,
+ setResult [2] IMPLICIT SetResult,
+ setListError [3] IMPLICIT SetListError,
+ actionResult [4] IMPLICIT ActionResult,
+ processingFailure [5] IMPLICIT ProcessingFailure,
+ deleteResult [6] IMPLICIT DeleteResult,
+ actionError [7] IMPLICIT ActionError,
+ deleteError [8] IMPLICIT DeleteError
+}
+
+ModifyOperator ::= INTEGER {
+ replace(0), addValues(1), removeValues(2), setToDefault(3)}
+
+NoSuchAction ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ actionType CMIP-ACTION.&id({ActionSet}),
+ ...
+}
+
+NoSuchArgument ::= CHOICE {
+ actionId
+ [0] IMPLICIT SEQUENCE {managedObjectClass ObjectClass OPTIONAL,
+ actionType CMIP-ACTION.&id({ActionSet})
+ },
+ eventId
+ [1] IMPLICIT SEQUENCE {managedObjectClass ObjectClass OPTIONAL,
+ eventType CMIP-EVENT.&id({EventSet})
+ }
+}
+
+NoSuchEventType ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ eventType CMIP-EVENT.&id({EventSet}),
+ ...
+}
+
+ObjectClass ::= CHOICE {
+ globalForm [0] IMPLICIT OBJECT IDENTIFIER,
+ localForm [1] IMPLICIT INTEGER
+}
+
+-- This Recommendation | International Standard does not allocate any values for localForm.
+-- Where this alternative is used, the permissible values for the integers and their meanings shall be defined
+-- as part of the application context in which they are used
+ObjectInstance ::= CHOICE {
+ distinguishedName [2] IMPLICIT DistinguishedName,
+ nonSpecificForm [3] IMPLICIT OCTET STRING,
+ localDistinguishedName [4] IMPLICIT RDNSequence
+}
+
+-- localDistinguishedName is that portion of the distinguished name that is necessary to unambiguously identify the
+-- managed object within the context of communication between the open systems
+ProcessingFailure ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ specificErrorInfo [5] SpecificErrorInfo,
+ ...
+}
+
+RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+RelativeDistinguishedName ::= SET OF AttributeValueAssertion
+
+Scope ::= CHOICE {
+ namedNumbers INTEGER {baseObject(0), firstLevelOnly(1), wholeSubtree(2)},
+ individualLevels [1] IMPLICIT INTEGER, -- POSITIVE integer indicates the level to be selected
+ baseToNthLevel [2] IMPLICIT INTEGER
+} -- POSITIVE integer N indicates that the range of levels
+
+-- (0 - N) is to be selected
+-- with individualLevels and baseToNthLevel, a value of 0 has the same semantics as baseObject
+-- with individualLevels, a value of 1 has the same semantics as firstLevelOnly
+SetArgument ::= SEQUENCE {
+ COMPONENTS OF BaseManagedObjectId,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync DEFAULT bestEffort,
+ scope [7] Scope DEFAULT namedNumbers:baseObject,
+ filter CMISFilter DEFAULT and:{},
+ modificationList
+ [12] IMPLICIT SET OF
+ SEQUENCE {modifyOperator
+ [2] IMPLICIT ModifyOperator DEFAULT replace,
+ attributeId
+ CMIP-ATTRIBUTE.&id({AttributeSet}),
+ attributeValue
+ CMIP-ATTRIBUTE.&Value
+ ({AttributeSet}{@.attributeId}) OPTIONAL
+ },
+ -- value is absent for setToDefault
+ ...
+}
+
+SetInfoStatus ::= CHOICE {
+ attributeError [0] IMPLICIT AttributeError,
+ attribute [1] IMPLICIT Attribute
+}
+
+SetListError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ setInfoList [6] IMPLICIT SET OF SetInfoStatus,
+ ...
+}
+
+SetResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ attributeList [6] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+SpecificErrorInfo ::= SEQUENCE {
+ errorId CMIP-SPECIFICERROR.&id({SpecificErrorSet}),
+ errorInfo CMIP-SPECIFICERROR.&Value({SpecificErrorSet}{@.errorId})
+}
+
+SpecificErrorSet CMIP-SPECIFICERROR ::=
+ {...}
+
+-- the following type specifies the constraints to be applied when using ROSE to support CMIP
+ROSEapdus ::=
+ ROS{{InvokeIDType}, {CMIP-Operations}, {CMIP-Confirmed-Operations}}
+
+END -- End of CMIP syntax definitions
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/cmip/CMIP-A-ABORT-Information.asn b/epan/dissectors/asn1/cmip/CMIP-A-ABORT-Information.asn
new file mode 100644
index 00000000..f2d3e8e4
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/CMIP-A-ABORT-Information.asn
@@ -0,0 +1,17 @@
+-- Module CMIP-A-ABORT-Information (X.711:10/1997)
+CMIP-A-ABORT-Information {joint-iso-itu-t ms(9) cmip(1) modules(0)
+ aAbortUserInfo(2)} DEFINITIONS ::=
+BEGIN
+
+-- Information carried in user-information parameter of A-ABORT
+CMIPAbortInfo ::= SEQUENCE {
+ abortSource [0] IMPLICIT CMIPAbortSource,
+ userInfo [1] EXTERNAL OPTIONAL
+}
+
+CMIPAbortSource ::= ENUMERATED {cmiseServiceUser(0), cmiseServiceProvider(1)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/cmip/CMIP-A-ASSOCIATE-Information.asn b/epan/dissectors/asn1/cmip/CMIP-A-ASSOCIATE-Information.asn
new file mode 100644
index 00000000..0516dd5e
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/CMIP-A-ASSOCIATE-Information.asn
@@ -0,0 +1,24 @@
+-- Module CMIP-A-ASSOCIATE-Information (X.711:10/1997)
+CMIP-A-ASSOCIATE-Information {joint-iso-itu-t ms(9) cmip(1) modules(0)
+ aAssociateUserInfo(1)} DEFINITIONS ::=
+BEGIN
+
+FunctionalUnits ::= BIT STRING {
+ multipleObjectSelection(0), filter(1), multipleReply(2), extendedService(3),
+ cancelGet(4)}
+
+-- Functional unit i is supported if and only if bit i is one
+-- Information carried in user-information parameter of A-ASSOCIATE
+CMIPUserInfo ::= SEQUENCE {
+ protocolVersion [0] IMPLICIT ProtocolVersion DEFAULT {version1},
+ functionalUnits [1] IMPLICIT FunctionalUnits DEFAULT {},
+ accessControl [2] EXTERNAL OPTIONAL,
+ userInfo [3] EXTERNAL OPTIONAL
+}
+
+ProtocolVersion ::= BIT STRING {version1(0), version2(1)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/cmip/CMIP.asn b/epan/dissectors/asn1/cmip/CMIP.asn
new file mode 100644
index 00000000..a00ef223
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/CMIP.asn
@@ -0,0 +1,526 @@
+-- some of the definitions use implicit tags so be careful when adding
+-- new structures.
+-- Module CMIP-A-ASSOCIATE-Information (X.711:10/1997)
+CMIP-A-ASSOCIATE-Information {joint-iso-itu-t ms(9) cmip(1) modules(0)
+ aAssociateUserInfo(1)} DEFINITIONS ::=
+BEGIN
+
+ IMPORTS
+
+ EXTERNALt
+ FROM ACSE-1 {joint-iso-itu-t association-control(2) modules(0) acse1(1) version1(1)};
+
+
+ModificationItem ::= SEQUENCE {
+ modifyOperator [2] IMPLICIT ModifyOperator OPTIONAL,
+ attributeId OBJECT IDENTIFIER,
+ attributeValue ANY OPTIONAL
+}
+
+GetListError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ getInfoList [6] IMPLICIT SET OF GetInfoStatus,
+ ...
+}
+
+ModifyOperator ::= INTEGER {
+ replace(0), addValues(1), removeValues(2), setToDefault(3)}
+
+GetInfoStatus ::= CHOICE {
+ attributeIdError [0] IMPLICIT AttributeIdError,
+ attribute [1] IMPLICIT Attribute
+}
+
+AttributeIdError ::= SEQUENCE {
+ errorStatus ENUMERATED {accessDenied(2), noSuchAttribute(5), ...
+ },
+ attributeId AttributeId,
+ ...
+}
+
+SetListError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ setInfoList [6] IMPLICIT SET OF SetInfoStatus,
+ ...
+}
+
+ActionError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ actionErrorInfo [6] ActionErrorInfo,
+ ...
+}
+
+ProcessingFailure ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ specificErrorInfo [5] SpecificErrorInfo,
+ ...
+}
+
+RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+RelativeDistinguishedName ::= SET OF AttributeValueAssertion
+
+DeleteError ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ deleteErrorInfo [6] ENUMERATED {accessDenied(2), ...
+ },
+ ...
+}
+
+SetInfoStatus ::= CHOICE {
+ attributeError [0] IMPLICIT AttributeError,
+ attribute [1] IMPLICIT Attribute
+}
+
+SpecificErrorInfo ::= SEQUENCE {
+ errorId OBJECT IDENTIFIER,
+ errorInfo ANY
+}
+
+NoSuchArgumentAction ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ actionType OBJECT IDENTIFIER
+}
+
+NoSuchArgumentEvent ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ eventType OBJECT IDENTIFIER
+}
+
+NoSuchArgument ::= CHOICE {
+ actionId
+ [0] IMPLICIT NoSuchArgumentAction,
+ eventId
+ [1] IMPLICIT NoSuchArgumentEvent
+}
+
+InvalidArgumentValueEventValue ::= SEQUENCE {
+ eventType OBJECT IDENTIFIER,
+ eventInfo [8] ANY OPTIONAL
+}
+
+InvalidArgumentValue ::= CHOICE {
+ actionValue [0] IMPLICIT ActionInfo,
+ eventValue
+ [1] IMPLICIT InvalidArgumentValueEventValue
+}
+
+ErrorInfo ::= CHOICE {
+ actionType OBJECT IDENTIFIER,
+ actionArgument [0] NoSuchArgument,
+ argumentValue [1] InvalidArgumentValue
+}
+
+ActionErrorInfo ::= SEQUENCE {
+ errorStatus
+ ENUMERATED {accessDenied(2), noSuchAction(9), noSuchArgument(14),
+ invalidArgumentValue(15), ...
+ },
+ errorInfo
+ ErrorInfo,
+ ...
+}
+
+AttributeError ::= SEQUENCE {
+ errorStatus
+ ENUMERATED {accessDenied(2), noSuchAttribute(5), invalidAttributeValue(6),
+ invalidOperation(24), invalidOperator(25), ...
+ },
+ modifyOperator [2] IMPLICIT ModifyOperator OPTIONAL, -- present for invalidOperator
+
+ -- and invalidOperation
+ attributeId OBJECT IDENTIFIER,
+ attributeValue ANY OPTIONAL
+ -- value is absent for setToDefault
+}
+
+SetResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ attributeList [6] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+SetArgument ::= SEQUENCE {
+ baseManagedObjectClass ObjectClass,
+ baseManagedObjectInstance ObjectInstance,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync OPTIONAL,
+ scope [7] Scope OPTIONAL,
+ filter CMISFilter OPTIONAL,
+ modificationList [12] IMPLICIT SET OF ModificationItem,
+ -- value is absent for setToDefault
+ ...
+}
+
+LinkedReplyArgument ::= CHOICE {
+ getResult [0] IMPLICIT GetResult,
+ getListError [1] IMPLICIT GetListError,
+ setResult [2] IMPLICIT SetResult,
+ setListError [3] IMPLICIT SetListError,
+ actionResult [4] IMPLICIT ActionResult,
+ processingFailure [5] IMPLICIT ProcessingFailure,
+ deleteResult [6] IMPLICIT DeleteResult,
+ actionError [7] IMPLICIT ActionError,
+ deleteError [8] IMPLICIT DeleteError
+}
+
+EventReply ::= SEQUENCE {
+ eventType OBJECT IDENTIFIER,
+ eventReplyInfo [8] ANY OPTIONAL
+}
+
+DistinguishedName ::= RDNSequence
+
+EventReportResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ eventReply EventReply OPTIONAL,
+ ...
+}
+
+EventReportArgument ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ managedObjectInstance ObjectInstance,
+ eventTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ eventType OBJECT IDENTIFIER,
+ eventInfo [8] ANY OPTIONAL,
+ ...
+}
+
+DeleteArgument ::= SEQUENCE {
+ baseManagedObjectClass ObjectClass,
+ baseManagedObjectInstance ObjectInstance,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync OPTIONAL,
+ scope [7] Scope OPTIONAL,
+ filter CMISFilter OPTIONAL,
+ ...
+}
+
+DeleteResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ ...
+}
+
+CreateArgument ::= SEQUENCE {
+ managedObjectClass ObjectClass,
+ managedOrSuperiorObjectInstance
+ CHOICE {managedObjectInstance ObjectInstance,
+ superiorObjectInstance [8] ObjectInstance} OPTIONAL,
+ accessControl [5] AccessControl OPTIONAL,
+ referenceObjectInstance [6] ObjectInstance OPTIONAL,
+ attributeList [7] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+CreateResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL, -- shall be returned if omitted from CreateArgument
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ attributeList [6] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+ActionReply ::= SEQUENCE {
+ actionType OBJECT IDENTIFIER,
+ actionReplyInfo [4] ANY
+}
+
+ActionResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ actionReply [6] IMPLICIT ActionReply OPTIONAL,
+ ...
+}
+
+ActionArgument ::= SEQUENCE {
+ baseManagedObjectClass ObjectClass,
+ baseManagedObjectInstance ObjectInstance,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync OPTIONAL,
+ scope [7] Scope OPTIONAL,
+ filter CMISFilter OPTIONAL,
+ actionInfo [12] IMPLICIT ActionInfo,
+ ...
+}
+
+ActionInfo ::= SEQUENCE {
+ actionType OBJECT IDENTIFIER,
+ actionInfoArg [4] ANY OPTIONAL
+}
+
+ObjectClass ::= CHOICE {
+ ocglobalForm [0] IMPLICIT OBJECT IDENTIFIER,
+ oclocalForm [1] IMPLICIT INTEGER
+}
+
+ObjectInstance ::= CHOICE {
+ distinguishedName [2] IMPLICIT DistinguishedName,
+ nonSpecificForm [3] IMPLICIT OCTET STRING,
+ localDistinguishedName [4] IMPLICIT RDNSequence
+}
+
+BaseManagedObjectId ::= SEQUENCE {
+ baseManagedObjectClass ObjectClass,
+ baseManagedObjectInstance ObjectInstance
+}
+
+AttributeId ::= CHOICE {
+ globalForm [0] IMPLICIT OBJECT IDENTIFIER,
+ localForm [1] IMPLICIT INTEGER
+}
+
+Attribute ::= SEQUENCE {
+ id AttributeId,
+ value ANY
+}
+
+AttributeValueAssertion ::= SEQUENCE {
+ id OBJECT IDENTIFIER,
+ value ANY
+}
+
+-- This Recommendation | International Standard does not allocate any values for localForm.
+-- Where this alternative is used, the permissible values for the integers and their meanings shall be defined
+-- as part of the application context in which they are used
+FilterItem ::= CHOICE {
+ equality [0] IMPLICIT Attribute,
+ substrings
+ [1] IMPLICIT SEQUENCE OF
+ CHOICE {initialString [0] IMPLICIT Attribute,
+ anyString [1] IMPLICIT Attribute,
+ finalString [2] IMPLICIT Attribute},
+ greaterOrEqual [2] IMPLICIT Attribute, -- asserted value ? attribute value
+ lessOrEqual [3] IMPLICIT Attribute, -- asserted value <= attribute value
+ present [4] AttributeId,
+ subsetOf [5] IMPLICIT Attribute, -- asserted value is a subset of attribute value
+ supersetOf [6] IMPLICIT Attribute, -- asserted value is a superset of attribute value
+ nonNullSetIntersection [7] IMPLICIT Attribute
+}
+
+-- IMPORTED from Attribute-ASN1Module {joint-iso-itu-t ms(9) smi(3) part2(2) asn1Module(2) 1}
+
+AdministrativeState ::= ENUMERATED {locked(0), unlocked(1), shuttingDown(2)}
+
+DiscriminatorConstruct ::= CMISFilter
+
+Destination ::= CHOICE {single AE-title,
+ multiple SET OF AE-title
+}
+
+OperationalState ::= ENUMERATED {disabled(0), enabled(1)}
+
+NameBinding ::= OBJECT IDENTIFIER
+
+
+-- FROM ACSE
+AE-title ::= CHOICE {
+ ae-title-form1 AE-title-form1,
+ ae-title-form2 AE-title-form2,
+ ...
+}
+
+-- As defined in ITU-T Rec. X.650 | ISO/IEC 7498-3, an application-entity title is composed of an application process
+-- title and an application-entity qualifier. The ACSE protocol provides for the transfer of an application-entity title
+-- value by the transfer of its component values. However, the following data type is provided for International
+-- Standards that reference a single syntactic structure for AE titles.
+AE-title-form1 ::= Name
+
+-- For access to The Directory (see ITU-T Rec. X.500 series | ISO/IEC 9594), an AE title has AE-title-form1. This value
+-- can be constructed from AP-title-form1 and AE-qualifier-form1 values contained in an AARQ or AARE APDU.
+-- A discussion of forming an AE-title-form1 from AP-title-form1 and AE-qualifier form1 may be found in itu-t
+-- Rec X.665 | ISO/IEC 9834-6.
+AE-title-form2 ::= OBJECT IDENTIFIER
+
+Name ::= CHOICE {
+ rdnSequence RDNSequence
+}
+
+-- End Imports
+
+
+CMISFilter ::= CHOICE {
+ item [8] FilterItem,
+ and [9] IMPLICIT SET OF CMISFilter,
+ or [10] IMPLICIT SET OF CMISFilter,
+ not [11] CMISFilter
+}
+
+Scope ::= CHOICE {
+ namedNumbers INTEGER {baseObject(0), firstLevelOnly(1), wholeSubtree(2)},
+ individualLevels [1] IMPLICIT INTEGER, -- POSITIVE integer indicates the level to be selected
+ baseToNthLevel [2] IMPLICIT INTEGER
+} -- POSITIVE integer N indicates that the range of levels
+
+CMISSync ::= ENUMERATED {bestEffort(0), atomic(1)}
+
+-- Supporting type definitions
+AccessControl ::= EXTERNALt
+
+
+GetArgument ::= SEQUENCE {
+-- COMPONENTS OF BaseManagedObjectId, manually expanded
+ baseManagedObjectClass ObjectClass,
+ baseManagedObjectInstance ObjectInstance,
+ accessControl [5] AccessControl OPTIONAL,
+ synchronization [6] IMPLICIT CMISSync OPTIONAL,
+ scope [7] Scope OPTIONAL,
+ filter CMISFilter OPTIONAL,
+ attributeIdList [12] IMPLICIT SET OF AttributeId OPTIONAL,
+ ...
+}
+
+GetResult ::= SEQUENCE {
+ managedObjectClass ObjectClass OPTIONAL,
+ managedObjectInstance ObjectInstance OPTIONAL,
+ currentTime [5] IMPLICIT GeneralizedTime OPTIONAL,
+ attributeList [6] IMPLICIT SET OF Attribute OPTIONAL,
+ ...
+}
+
+Argument ::= ANY
+
+ReturnResultBody ::= SEQUENCE {
+ opcode Opcode,
+ argument Argument
+}
+
+InvokeID ::= INTEGER
+
+Opcode ::= INTEGER { m-EventReport(0), m-EventReport-Confirmed(1), m-Linked-Reply(2), m-Get(3), m-Set(4), m-Set-Confirmed(5), m-Action(6), m-Action-Confirmed(7), m-Create(8), m-Delete(9), m-CancelGet(10) }
+
+--InvokeLinkedId ::= CHOICE {
+-- present [0] IMPLICIT InvokeId,
+-- absent [1] IMPLICIT NULL
+--}
+InvokeLinkedId ::= INTEGER
+
+InvokeIDType ::= InvokeId
+
+InvokeId ::= CHOICE {
+ present InvokeID,
+ absent NULL
+}
+
+Invoke ::= SEQUENCE {
+ invokeId InvokeId,
+ linkedId [0] IMPLICIT InvokeLinkedId OPTIONAL,
+ opcode Opcode,
+ argument Argument OPTIONAL
+}
+
+ReturnResult ::= SEQUENCE {
+ invokeId InvokeId,
+ rRBody ReturnResultBody OPTIONAL
+}
+
+ReturnError ::= SEQUENCE {
+ invokeId InvokeId
+--XXX need to fill in missing fields here
+}
+
+
+GeneralProblem ::= INTEGER {
+ unrecognizedPDU(0), mistypedPDU(1), badlyStructuredPDU(2)
+}
+
+InvokeProblem ::= INTEGER {
+ duplicateInvocation(0), unrecognizedOperation(1), mistypedArgument(2),
+ resourceLimitation(3), releaseInProgress(4), unrecognizedLinkedId(5),
+ linkedResponseUnexpected(6), unexpectedLinkedOperation(7)
+}
+
+ReturnResultProblem ::= INTEGER {
+ unrecognizedInvocation(0), resultResponseUnexpected(1), mistypedResult(2)
+}
+
+ReturnErrorProblem ::= INTEGER {
+ unrecognizedInvocation(0), errorResponseUnexpected(1), unrecognizedError(2),
+ unexpectedError(3), mistypedParameter(4)
+}
+
+RejectProblem ::= INTEGER {
+ general-unrecognizedPDU(0), general-mistypedPDU(1),
+ general-badlyStructuredPDU(2), invoke-duplicateInvocation(10),
+ invoke-unrecognizedOperation(11), invoke-mistypedArgument(12),
+ invoke-resourceLimitation(13), invoke-releaseInProgress(14),
+ invoke-unrecognizedLinkedId(15), invoke-linkedResponseUnexpected(16),
+ invoke-unexpectedLinkedOperation(17),
+ returnResult-unrecognizedInvocation(20),
+ returnResult-resultResponseUnexpected(21), returnResult-mistypedResult(22),
+ returnError-unrecognizedInvocation(30),
+ returnError-errorResponseUnexpected(31), returnError-unrecognizedError(32),
+ returnError-unexpectedError(33), returnError-mistypedParameter(34)
+}
+
+RejectProb ::= CHOICE {
+ generalProblem [0] IMPLICIT GeneralProblem,
+ invokeProblem [1] IMPLICIT InvokeProblem,
+ returnResultProblem [2] IMPLICIT ReturnResultProblem,
+ returnErrorProblem [3] IMPLICIT ReturnErrorProblem
+}
+
+Reject ::= SEQUENCE {
+ invokeId InvokeId,
+ rejectProblem RejectProb
+}
+
+ROS ::= CHOICE {
+ invoke [1] IMPLICIT Invoke,
+ returnResult [2] IMPLICIT ReturnResult,
+ returnError [3] IMPLICIT ReturnError,
+ reject [4] IMPLICIT Reject
+}
+
+
+
+
+
+
+-- CMIP-A-ABORT
+-- Information carried in user-information parameter of A-ABORT
+CMIPAbortInfo ::= SEQUENCE {
+ abortSource [0] IMPLICIT CMIPAbortSource,
+ userInfo [1] EXTERNALt OPTIONAL
+}
+
+CMIPAbortSource ::= ENUMERATED {cmiseServiceUser(0), cmiseServiceProvider(1)}
+
+
+
+
+-- CMIP-A-ASSOCIATE
+FunctionalUnits ::= BIT STRING {
+ multipleObjectSelection(0), filter(1), multipleReply(2), extendedService(3),
+ cancelGet(4)}
+
+-- Functional unit i is supported if and only if bit i is one
+-- Information carried in user-information parameter of A-ASSOCIATE
+CMIPUserInfo ::= SEQUENCE {
+ protocolVersion [0] IMPLICIT ProtocolVersion OPTIONAL,
+ functionalUnits [1] IMPLICIT FunctionalUnits OPTIONAL,
+ accessControl [2] EXTERNALt OPTIONAL,
+ userInfo [3] EXTERNALt OPTIONAL
+}
+
+ProtocolVersion ::= BIT STRING {version1(0), version2(1)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/cmip/CMakeLists.txt b/epan/dissectors/asn1/cmip/CMakeLists.txt
new file mode 100644
index 00000000..740db2b0
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/CMakeLists.txt
@@ -0,0 +1,48 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+set( PROTOCOL_NAME cmip )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST_LATE
+ ../x721/Attribute-ASN1Module.asn
+ ../ros/Remote-Operations-Information-Objects.asn
+ ../ros/Remote-Operations-Generic-ROS-PDUs.asn
+)
+
+set( ASN_FILE_LIST
+ CMIP-1.asn
+ CMIP-A-ABORT-Information.asn
+ CMIP-A-ASSOCIATE-Information.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ packet-${PROTOCOL_NAME}-template.h
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS -b )
+
+set( EXTRA_CNF
+ "${CMAKE_CURRENT_BINARY_DIR}/../acse/acse-exp.cnf"
+)
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/cmip/cmip.cnf b/epan/dissectors/asn1/cmip/cmip.cnf
new file mode 100644
index 00000000..0b547579
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/cmip.cnf
@@ -0,0 +1,507 @@
+# cmip.cnf
+# CMIP conformation file
+
+#.IMPORT ../acse/acse-exp.cnf
+
+#.MODULE
+Remote-Operations-Information-Objects cmip.ros
+Attribute-ASN1Module cmip.x721
+
+
+#.OMIT_ASSIGNMENT Remote-Operations-Information-Objects
+Bind
+Unbind
+#.END
+
+#.NO_EMIT ONLY_VALS
+LinkedReplyArgument
+
+#.TYPE_RENAME
+
+Invoke/argument InvokeArgument
+ReturnResult/result/result ResultArgument
+Attribute/value AttributeValue
+EventReportArgument/eventInfo EventReportArgumentEventInfo
+
+#.FIELD_RENAME
+
+Invoke/linkedId/present linkedIdPresent
+
+Reject/problem/invoke invokeProblem
+Reject/problem/returnError returnErrorProblem
+Reject/problem/returnResult returnResultProblem
+
+ReturnResult/result/result resultArgument
+
+SetArgument/modificationList/_item/attributeValue attributevalue
+ActionTypeId/globalForm actionTypeId_globalForm
+AttributeId/globalForm attributeId_globalForm
+EventTypeId/globalForm eventTypeId_globalForm
+ObjectClass/globalForm objectClass_globalForm
+ManagementExtension/identifier managementExtensionidentifier
+ServiceUser/identifier serviceUseridentifier
+AttributeValueAssertion/value attributeValueAssertionvalue
+FilterItem/present filterItempresent
+ObjectClass/localForm objectClasslocalForm
+AttributeId/localForm attributeIdlocalForm
+ActionErrorInfo/errorStatus actionErrorInfo-errorStatus
+AttributeError/errorStatus attributeError-errorStatus
+AttributeIdError/errorStatus attributeIdError-errorStatus
+ActionErrorInfo/errorInfo actionErrorInfo
+# SpecificErrorInfo/errorInfo specificErrorInfo
+Attribute/id attributeid
+CMIPUserInfo/accessControl cmipUserInfoaccessControl
+ActionError/actionErrorInfo actionErroractionErrorInfo
+EventReportArgument/eventInfo eventReportArgumenteventInfo
+
+#.EXPORTS
+CMIPAbortInfo
+CMIPUserInfo
+ROS
+InvokeIDType
+ObjectInstance
+ObjectClass
+Attribute
+RDNSequence
+ProbableCause
+AdministrativeState
+AvailabilityStatus
+AttributeList
+AdditionalInformation
+
+#.TABLE_HDR
+/* CMIP OPERATIONS */
+static const value_string cmip_Opcode_vals[] = {
+#.TABLE_BODY OPERATION
+ { %(&operationCode)s, "%(_ident)s" },
+#.TABLE_FTR
+ { 0, NULL }
+};
+#.END
+
+#.TABLE_HDR
+/* CMIP ERRORS */
+static const value_string cmip_error_code_vals[] = {
+#.TABLE_BODY ERROR
+ { %(&errorCode)s, "%(_ident)s" },
+#.TABLE_FTR
+ { 0, NULL }
+};
+#.END
+
+# X.721
+
+#.REGISTER
+BaseManagedObjectId B "2.9.2.21.7.13" "BaseManagedObjectId(13)"
+# X.721
+SimpleNameType B "2.9.3.2.7.1" "discriminatorId(1)"
+SimpleNameType B "2.9.3.2.7.2" "logId(2)"
+LogRecordId B "2.9.3.2.7.3" "logRecordId(3)"
+SystemId B "2.9.3.2.7.4" "systemId(4)"
+SystemTitle B "2.9.3.2.7.5" "systemTitle(5)"
+AdditionalInformation B "2.9.3.2.7.6" "additionalInformation(6)"
+AdditionalText B "2.9.3.2.7.7" "additionalText(7)"
+AttributeIdentifierList B "2.9.3.2.7.8" "attributeIdentifierList(8)"
+AttributeList B "2.9.3.2.7.9" "attributeList(9)"
+AttributeValueChangeDefinition B "2.9.3.2.7.10" "attributeValueChangeDefinition(10)"
+BackedUpStatus B "2.9.3.2.7.11" "backedUpStatus(11)"
+CorrelatedNotifications B "2.9.3.2.7.12" "correlatedNotifications(12)"
+EventTime B "2.9.3.2.7.13" "eventTime(13)"
+EventTypeId B "2.9.3.2.7.14" "eventType(14)"
+MonitoredAttributes B "2.9.3.2.7.15" "monitoredAttributes(15)"
+NotificationIdentifier B "2.9.3.2.7.16" "notificationIdentifier(16)"
+PerceivedSeverity B "2.9.3.2.7.17" "perceivedSeverity(17)"
+ProbableCause B "2.9.3.2.7.18" "probableCause(18)"
+ProposedRepairActions B "2.9.3.2.7.19" "proposedRepairActions(19)"
+AttributeValueChangeDefinition B "2.9.3.2.7.20" "relationshipChangeDefinition(20)"
+SecurityAlarmCause B "2.9.3.2.7.21" "securityAlarmCause(21)"
+SecurityAlarmDetector B "2.9.3.2.7.22" "securityAlarmDetector(22)"
+SecurityAlarmSeverity B "2.9.3.2.7.23" "securityAlarmSeverity(23)"
+ServiceProvider B "2.9.3.2.7.24" "serviceProvider(24)"
+ServiceUser B "2.9.3.2.7.25" "serviceUser(25)"
+SourceIndicator B "2.9.3.2.7.26" "sourceIndicator(26)"
+SpecificProblems B "2.9.3.2.7.27" "specificProblems(27)"
+AttributeValueChangeDefinition B "2.9.3.2.7.28" "stateChangeDefinition(28)"
+ThresholdInfo B "2.9.3.2.7.29" "thresholdInfo(29)"
+TrendIndication B "2.9.3.2.7.30" "trendIndication(30)"
+AdministrativeState B "2.9.3.2.7.31" "administrativeState(31)"
+AlarmStatus B "2.9.3.2.7.32" "alarmStatus(32)"
+AvailabilityStatus B "2.9.3.2.7.33" "availabilityStatus(33)"
+ControlStatus B "2.9.3.2.7.34" "controlStatus(34)"
+OperationalState B "2.9.3.2.7.35" "operationalState(35)"
+ProceduralStatus B "2.9.3.2.7.36" "proceduralStatus(36)"
+StandbyStatus B "2.9.3.2.7.37" "standbyStatus(37)"
+UnknownStatus B "2.9.3.2.7.38" "unknownStatus(38)"
+UsageState B "2.9.3.2.7.39" "usageState(39)"
+BackUpRelationshipObject B "2.9.3.2.7.40" "backUpObject(40)"
+BackUpRelationshipObject B "2.9.3.2.7.41" "backedUpObject(41)"
+GroupObjects B "2.9.3.2.7.42" "member(42)"
+GroupObjects B "2.9.3.2.7.43" "owner(43)"
+BackUpRelationshipObject B "2.9.3.2.7.44" "peer(44)"
+PrioritisedObject B "2.9.3.2.7.45" "primary(45)"
+PrioritisedObject B "2.9.3.2.7.46" "providerObject(46)"
+PrioritisedObject B "2.9.3.2.7.47" "secondary(47)"
+PrioritisedObject B "2.9.3.2.7.48" "userObject(48)"
+ActiveDestination B "2.9.3.2.7.49" "activeDestination(49)"
+Allomorphs B "2.9.3.2.7.50" "allomorphs(50)"
+BackUpDestinationList B "2.9.3.2.7.51" "backUpDestinationList(51)"
+CapacityAlarmThreshold B "2.9.3.2.7.52" "capacityAlarmThreshold(52)"
+ConfirmedMode B "2.9.3.2.7.53" "confirmedMode(53)"
+CurrentLogSize B "2.9.3.2.7.54" "currentLogSize(54)"
+Destination B "2.9.3.2.7.55" "destination(55)"
+DiscriminatorConstruct B "2.9.3.2.7.56" "discriminatorConstruct(56)"
+IntervalsOfDay B "2.9.3.2.7.57" "intervalsOfDay(57)"
+LogFullAction B "2.9.3.2.7.58" "logFullAction(58)"
+LoggingTime B "2.9.3.2.7.59" "loggingTime(59)"
+#ObjectClass B "2.9.3.2.7.60" "managedObjectClass(60)"
+#ObjectInstance B "2.9.3.2.7.61" "managedObjectInstance(61)"
+MaxLogSize B "2.9.3.2.7.62" "maxLogSize(62)"
+NameBinding B "2.9.3.2.7.63" "nameBinding(63)"
+NumberOfRecords B "2.9.3.2.7.64" "numberOfRecords(64)"
+ObjectClass B "2.9.3.2.7.65" "objectClass(65)"
+Packages B "2.9.3.2.7.66" "packages(66)"
+#ObjectInstance B "2.9.3.2.7.66" "schedulerName(67)"
+StartTime B "2.9.3.2.7.68" "startTime(68)"
+StopTime B "2.9.3.2.7.69" "stopTime(69)"
+SupportedFeatures B "2.9.3.2.7.70" "supportedFeatures(70)"
+WeekMask B "2.9.3.2.7.71" "weekMask(71)"
+# corruptedPDUsReceivedCounter(72) -- corruptedPDUsReceivedCounter attribute type
+# incomingConnectionRejectErrorCounter(73) -- incomingConnectionRejectErrorCounte...
+# incomingConnectionRequestsCounter(74) -- incomingConnectionRequestsCounter attr...
+# incomingDisconnectCounter(75) -- incomingDisconnectCounter attribute type
+# ncomingDisconnectErrorCounter(76) -- ncomingDisconnectErrorCounter attribute ty...
+# incomingProtocolErrorCounter(77) -- incomingProtocolErrorCounter attribute type
+# octetsReceivedCounter(78) -- octetsReceivedCounter attribute type
+# octetsRetransmittedErrorCounter(79) -- octetsRetransmittedErrorCounter attribut...
+# octetsSentCounter(80) -- octetsSentCounter attribute type
+# outgoingConnectionRejectErrorCounter(81) -- outgoingConnectionRejectErrorCounte...
+# outgoingConnectionRequestsCounter(82) -- outgoingConnectionRequestsCounter attr...
+# outgoingDisconnectCounter(83) -- outgoingDisconnectCounter attribute type
+# outgoingDisconnectErrorCounter(84) -- outgoingDisconnectErrorCounter attribute ...
+# outgoingProtocolErrorCounter(85) -- outgoingProtocolErrorCounter attribute type
+# pdusReceivedCounter(86) -- pdusReceivedCounter attribute type (PDU: Protocol Da...
+# pdusRetransmittedErrorCounter(87) -- pdusRetransmittedErrorCounter attribute ty...
+# pdusSentCounter(88) -- pdusSentCounter attribute type (PDU: Protocol Data Unit)
+# corruptedPDUsReceivedThreshold(89) -- corruptedPDUsReceivedThreshold attribute ...
+# incomingConnectionRejectErrorThreshold(90) -- incomingConnectionRejectErrorThre...
+# incomingConnectionRequestsThreshold(91) -- incomingConnectionRequestsThreshold ...
+# incomingDisconnectErrorThreshold(92) -- incomingDisconnectErrorThreshold attrib...
+# incomingProtocolErrorThreshold(93) -- incomingProtocolErrorThreshold attribute ...
+# octetsReceivedThreshold(94) -- octetsReceivedThreshold attribute type
+# octetsRetransmittedThreshold(95) -- octetsRetransmittedThreshold attribute type
+# octetsSentThreshold(96) -- octetsSentThreshold attribute type
+# outgoingConnectionRejectErrorThreshold(97) -- outgoingConnectionRejectErrorThre...
+# outgoingConnectionRequestsThreshold(98) -- outgoingConnectionRequestsThreshold ...
+# outgoingDisconnectErrorThreshold(99) -- outgoingDisconnectErrorThreshold attrib...
+# outgoingProtocolErrorThreshold(100) -- outgoingProtocolErrorThreshold attribute...
+# pdusReceivedThreshold(101) -- pdusReceivedThreshold attribute type (PDU: Protoc...
+# pdusRetransmittedErrorThreshold(102) -- pdusRetransmittedErrorThreshold attribu...
+# pdusSentThreshold(103) -- pdusSentThreshold attribute type (PDU: Protocol Data ...
+LifecycleState B "2.9.3.2.7.115" "lifecycleState(115)"
+
+
+#.OMIT_ASSIGNMENT
+# Removed as they are giving 'defined but not used' warnings currently.
+ROSEapdus
+CounterThreshold
+GaugeThreshold
+GaugeThresholdValue
+LogAvailability
+NotifyThreshold
+SchedulingAvailability
+TideMarkInfo
+TideMark
+UnscheduledLogAvailability
+Priority
+RejectProblem
+
+
+#.PDU
+
+
+#.FN_HDR CMIPAbortInfo
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "CMIP-A-ABORT");
+#.END
+
+#.FN_HDR CMIPUserInfo
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "CMIP-A-ASSOCIATE");
+#.END
+
+#.FN_BODY CMIPAbortSource VAL_PTR = &value
+ guint32 value;
+
+ %(DEFAULT_BODY)s
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, " AbortSource:%%s", val_to_str(value, cmip_CMIPAbortSource_vals, " Unknown AbortSource:%%d"));
+#.END
+
+#.FN_BODY Code/local VAL_PTR = &opcode
+ %(DEFAULT_BODY)s
+ if(opcode_type== OPCODE_RETURN_ERROR){
+ col_append_str(actx->pinfo->cinfo, COL_INFO, val_to_str(opcode, cmip_error_code_vals, " Unknown Opcode:%%d"));
+ }else{
+ col_append_str(actx->pinfo->cinfo, COL_INFO, val_to_str(opcode, cmip_Opcode_vals, " Unknown Opcode:%%d"));
+ }
+#.END
+
+#.FN_HDR Invoke
+ opcode_type=OPCODE_INVOKE;
+ col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "Invoke ");
+#.END
+
+#.FN_HDR ReturnResult
+ opcode_type=OPCODE_RETURN_RESULT;
+ col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "ReturnResult ");
+#.END
+
+#.FN_HDR ReturnError
+ opcode_type=OPCODE_RETURN_ERROR;
+ col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "ReturnError ");
+#.END
+
+#.FN_HDR Reject
+ opcode_type=OPCODE_REJECT;
+ col_prepend_fstr(actx->pinfo->cinfo, COL_INFO, "Reject ");
+#.END
+
+#.FN_BODY AttributeId/globalForm FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
+ %(DEFAULT_BODY)s
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
+
+#.FN_BODY AttributeId/localForm VAL_PTR = &actx->external.indirect_reference
+ %(DEFAULT_BODY)s
+ actx->external.indirect_ref_present = TRUE;
+
+#.FN_BODY Attribute/value
+ if(actx->external.direct_ref_present){
+ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
+ } else if (actx->external.indirect_ref_present &&
+ dissector_try_uint(attribute_id_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) {
+ offset=tvb_reported_length (tvb);
+ } else {
+ offset=dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
+ }
+
+#.FN_PARS AttributeValueAssertion/id
+ FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
+
+#.FN_FTR AttributeValueAssertion/id
+ actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
+
+#.FN_BODY AttributeValueAssertion/value
+ if (actx->external.direct_ref_present) {
+ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
+ }
+
+#.FN_BODY Invoke/argument
+ switch(opcode){
+ case 0: /* M-eventreport */
+ offset = dissect_cmip_EventReportArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 1: /* M-eventreport-confirmed */
+ offset = dissect_cmip_EventReportArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 2: /* M-linkedreply */
+ offset = dissect_cmip_LinkedReplyArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 3: /* M-get */
+ offset = dissect_cmip_GetArgument(FALSE, tvb, offset,actx, tree, -1);
+ break;
+ case 4: /* M-set */
+ offset = dissect_cmip_SetArgument(FALSE, tvb, offset,actx, tree, -1);
+ break;
+ case 5: /* M-set-confirmed */
+ offset = dissect_cmip_SetArgument(FALSE, tvb, offset,actx, tree, -1);
+ break;
+ case 6: /* M-action*/
+ offset = dissect_cmip_ActionArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 7: /* M-action-confirmed*/
+ offset = dissect_cmip_ActionArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 8: /* M-create*/
+ offset = dissect_cmip_CreateArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 9: /* M-delete*/
+ offset = dissect_cmip_DeleteArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 10: /* M-cancelget */
+ offset = dissect_cmip_InvokeIDType(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ }
+
+
+#.FN_BODY ReturnResult/result/result
+
+ switch(opcode){
+ case 0: /* M-eventreport*/
+ break; /* No return data */
+ case 1: /* M-eventreport-confirmed */
+ offset = dissect_cmip_EventReportResult(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 2: /* M-linkedreply*/
+ break; /* No return data */
+ case 3: /* M-get */
+ offset = dissect_cmip_GetResult(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 4: /* M-set */
+ break; /* No return data */
+ case 5: /* M-set-confirmed*/
+ offset = dissect_cmip_SetResult(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 6: /* M-action*/
+ break; /* No return data */
+ case 7: /* M-action-confirmed*/
+ offset = dissect_cmip_ActionResult(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 8: /* M-create*/
+ offset = dissect_cmip_CreateResult(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 9: /* M-delete*/
+ offset = dissect_cmip_DeleteResult(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 10: /* M-cancelget */
+ break; /* doe this one return any data? */
+ }
+ /*XXX add more types here */
+
+#.FN_BODY ReturnError/parameter
+
+ switch(opcode){
+ case 19: /* classInstanceConflict */
+ dissect_cmip_BaseManagedObjectId(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 20: /* complexityLimitation */
+ dissect_cmip_ComplexityLimitation(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 11: /* duplicateManagedObjectInstance */
+ dissect_cmip_ObjectInstance(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 7: /* getListError */
+ dissect_cmip_GetListError(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 15: /* invalidArgumentValue */
+ dissect_cmip_InvalidArgumentValue(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 6: /* invalidAttributeValue */
+ dissect_cmip_Attribute(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 4: /* invalidFilter */
+ dissect_cmip_CMISFilter(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 17: /* invalidObjectInstance */
+ dissect_cmip_ObjectInstance(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 16: /* invalidScope */
+ dissect_cmip_Scope(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 18: /* missingAttributeValue */
+ /* Hmmm SET OF AttributeId */
+ dissect_cmip_PAR_missingAttributeValue(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 9: /* noSuchAction */
+ dissect_cmip_NoSuchAction(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 14: /* noSuchArgument */
+ dissect_cmip_NoSuchArgument(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 5: /* noSuchAttribute */
+ dissect_cmip_AttributeId(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 13: /* noSuchEventType */
+ dissect_cmip_NoSuchEventType(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 22: /* noSuchInvokeId */
+ dissect_cmip_InvokeIDType(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 0: /* noSuchObjectClass */
+ dissect_cmip_ObjectClass(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 1:/* noSuchObjectInstance */
+ dissect_cmip_ObjectInstance(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 12: /* noSuchReferenceObject */
+ dissect_cmip_ObjectInstance(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 10: /* processingFailure OPTIONAL TRUE*/
+ dissect_cmip_ProcessingFailure(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 8: /* setListError */
+ dissect_cmip_SetListError(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ case 3:/* syncNotSupported */
+ dissect_cmip_CMISSync(FALSE, tvb, offset, actx, tree, -1);
+ break;
+ }
+
+#.FN_PARS ObjectClass/globalForm
+ FN_VARIANT = _str
+
+#.FN_PARS ActionTypeId/globalForm
+ FN_VARIANT = _str HF_INDEX = hf_cmip_actionType_OID VAL_PTR = &object_identifier_id
+
+#.FN_BODY ActionInfo/actionInfoArg
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_PARS EventTypeId/globalForm
+ FN_VARIANT = _str HF_INDEX = hf_cmip_eventType_OID VAL_PTR = &object_identifier_id
+
+#.FN_BODY EventReportArgument/eventInfo
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY EventReply/eventReplyInfo
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY SetArgument/modificationList/_item/attributeValue
+ if(actx->external.direct_ref_present){
+ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
+ } else if (actx->external.indirect_ref_present &&
+ dissector_try_uint(attribute_id_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) {
+ offset=tvb_reported_length (tvb);
+ } else {
+ offset=dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
+ }
+
+#.FN_PARS SpecificErrorInfo/errorId
+ FN_VARIANT = _str HF_INDEX = hf_cmip_errorId_OID VAL_PTR = &object_identifier_id
+
+#.FN_BODY SpecificErrorInfo/errorInfo
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY AttributeError/attributeValue
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY InvalidArgumentValue/eventValue/eventInfo
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY ActionReply/actionReplyInfo
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+
+# X.721
+#.FN_PARS ManagementExtension/identifier FN_VARIANT = _str VAL_PTR = &object_identifier_id
+
+#.FN_BODY ManagementExtension/information
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY AttributeValueChangeDefinition/_item/oldAttributeValue
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_BODY AttributeValueChangeDefinition/_item/newAttributeValue
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_PARS ServiceUser/identifier FN_VARIANT = _str VAL_PTR = &object_identifier_id
+
+#.FN_BODY ServiceUser/details
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FN_PARS SupportedFeatures/_item/featureIdentifier FN_VARIANT = _str VAL_PTR = &object_identifier_id
+
+#.FN_BODY SupportedFeatures/_item/featureInfo
+ offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
+
+#.FIELD_ATTR
+Attribute/id ABBREV=attributeid
+FilterItem/present ABBREV=filterItempresent
+Invoke/linkedId/present ABBREV=linkedIdPresent
+
+#.END
diff --git a/epan/dissectors/asn1/cmip/packet-cmip-template.c b/epan/dissectors/asn1/cmip/packet-cmip-template.c
new file mode 100644
index 00000000..53caeb03
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/packet-cmip-template.c
@@ -0,0 +1,202 @@
+/* packet-cmip.c
+ * Routines for X.711 CMIP packet dissection
+ * Ronnie Sahlberg 2004
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/expert.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+#include <epan/proto_data.h>
+
+#include "packet-ber.h"
+#include "packet-acse.h"
+#include "packet-x509if.h"
+#include "packet-cmip.h"
+
+#define PNAME "X711 CMIP"
+#define PSNAME "CMIP"
+#define PFNAME "cmip"
+
+void proto_register_cmip(void);
+void proto_reg_handoff_cmip(void);
+
+/* XXX some stuff we need until we can get rid of it */
+#include "packet-ses.h"
+#include "packet-pres.h"
+
+/* Initialize the protocol and registered fields */
+static int proto_cmip = -1;
+static int hf_cmip_actionType_OID = -1;
+static int hf_cmip_eventType_OID = -1;
+static int hf_cmip_attributeId_OID = -1;
+static int hf_cmip_errorId_OID = -1;
+
+#include "packet-cmip-hf.c"
+
+/* Initialize the subtree pointers */
+static gint ett_cmip = -1;
+#include "packet-cmip-ett.c"
+
+static expert_field ei_wrong_spdu_type = EI_INIT;
+
+static guint32 opcode;
+
+static dissector_handle_t cmip_handle = NULL;
+
+/* Dissector table */
+static dissector_table_t attribute_id_dissector_table;
+
+#include "packet-cmip-table.c"
+
+static int opcode_type;
+#define OPCODE_INVOKE 1
+#define OPCODE_RETURN_RESULT 2
+#define OPCODE_RETURN_ERROR 3
+#define OPCODE_REJECT 4
+
+static const char *object_identifier_id;
+
+#include "packet-cmip-val.h"
+#include "packet-cmip-fn.c"
+
+
+
+
+/* XXX this one should be broken out later and moved into the conformance file */
+static int
+dissect_cmip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data)
+{
+ struct SESSION_DATA_STRUCTURE* session;
+ proto_item *item;
+ proto_tree *tree;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+
+ /* Reject the packet if data is NULL */
+ if (data == NULL)
+ return 0;
+ session = (struct SESSION_DATA_STRUCTURE*)data;
+
+ if(session->spdu_type == 0 ) {
+ proto_tree_add_expert_format(parent_tree, pinfo, &ei_wrong_spdu_type, tvb, 0, -1,
+ "Internal error: wrong spdu type %x from session dissector.", session->spdu_type);
+ return 0;
+ }
+
+ asn1_ctx.private_data = session;
+
+ item = proto_tree_add_item(parent_tree, proto_cmip, tvb, 0, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_cmip);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "CMIP");
+ col_clear(pinfo->cinfo, COL_INFO);
+ switch(session->spdu_type){
+ case SES_CONNECTION_REQUEST:
+ case SES_CONNECTION_ACCEPT:
+ case SES_DISCONNECT:
+ case SES_FINISH:
+ case SES_REFUSE:
+ dissect_cmip_CMIPUserInfo(FALSE,tvb,0,&asn1_ctx,tree,-1);
+ break;
+ case SES_ABORT:
+ dissect_cmip_CMIPAbortInfo(FALSE,tvb,0,&asn1_ctx,tree,-1);
+ break;
+ case SES_DATA_TRANSFER:
+ dissect_cmip_ROS(FALSE,tvb,0,&asn1_ctx,tree,-1);
+ break;
+ default:
+ ;
+ }
+
+ return tvb_captured_length(tvb);
+}
+
+/*--- proto_register_cmip ----------------------------------------------*/
+void proto_register_cmip(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+ { &hf_cmip_actionType_OID,
+ { "actionType", "cmip.actionType_OID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_cmip_eventType_OID,
+ { "eventType", "cmip.eventType_OID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_cmip_attributeId_OID,
+ { "attributeId", "cmip.attributeId_OID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_cmip_errorId_OID,
+ { "errorId", "cmip.errorId_OID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+
+#include "packet-cmip-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_cmip,
+#include "packet-cmip-ettarr.c"
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_wrong_spdu_type, { "cmip.wrong_spdu_type", PI_PROTOCOL, PI_ERROR, "Internal error: wrong spdu type", EXPFILL }},
+ };
+
+ expert_module_t* expert_cmip;
+
+ /* Register protocol */
+ proto_cmip = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ cmip_handle = register_dissector("cmip", dissect_cmip, proto_cmip);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_cmip, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ expert_cmip = expert_register_protocol(proto_cmip);
+ expert_register_field_array(expert_cmip, ei, array_length(ei));
+
+#include "packet-cmip-dis-tab.c"
+ oid_add_from_string("discriminatorId(1)","2.9.3.2.7.1");
+
+ attribute_id_dissector_table = register_dissector_table("cmip.attribute_id", "CMIP Attribute Id", proto_cmip, FT_UINT32, BASE_DEC);
+
+}
+
+
+/*--- proto_reg_handoff_cmip -------------------------------------------*/
+void proto_reg_handoff_cmip(void) {
+ register_ber_oid_dissector_handle("2.9.0.0.2", cmip_handle, proto_cmip, "cmip");
+ register_ber_oid_dissector_handle("2.9.1.1.4", cmip_handle, proto_cmip, "joint-iso-itu-t(2) ms(9) cmip(1) cmip-pci(1) abstractSyntax(4)");
+
+ oid_add_from_string("2.9.3.2.3.1","managedObjectClass(3) alarmRecord(1)");
+ oid_add_from_string("2.9.3.2.3.2","managedObjectClass(3) attributeValueChangeRecord(2)");
+ oid_add_from_string("2.9.3.2.3.3","managedObjectClass(3) discriminator(3)");
+ oid_add_from_string("2.9.3.2.3.4","managedObjectClass(3) eventForwardingDiscriminator(4)");
+ oid_add_from_string("2.9.3.2.3.5","managedObjectClass(3) eventLogRecord(5)");
+ oid_add_from_string("2.9.3.2.3.6","managedObjectClass(3) log(6)");
+ oid_add_from_string("2.9.3.2.3.7","managedObjectClass(3) logRecord(7)");
+ oid_add_from_string("2.9.3.2.3.8","managedObjectClass(3) objectCreationRecord(8)");
+ oid_add_from_string("2.9.3.2.3.9","managedObjectClass(3) objectDeletionRecord(9)");
+ oid_add_from_string("2.9.3.2.3.10","managedObjectClass(3) relationshipChangeRecord(10)");
+ oid_add_from_string("2.9.3.2.3.11","managedObjectClass(3) securityAlarmReportRecord(11)");
+ oid_add_from_string("2.9.3.2.3.12","managedObjectClass(3) stateChangeRecord(12)");
+ oid_add_from_string("2.9.3.2.3.13","managedObjectClass(3) system(13)");
+ oid_add_from_string("2.9.3.2.3.14","managedObjectClass(3) top(14)");
+ oid_add_from_string("2.9.3.2.4.14","administrativeStatePackage(14)");
+ oid_add_from_string("2.9.1.1.4","joint-iso-itu-t(2) ms(9) cmip(1) cmip-pci(1) abstractSyntax(4)");
+
+/*#include "packet-cmip-dis-tab.c" */
+}
+
diff --git a/epan/dissectors/asn1/cmip/packet-cmip-template.h b/epan/dissectors/asn1/cmip/packet-cmip-template.h
new file mode 100644
index 00000000..895a2c7a
--- /dev/null
+++ b/epan/dissectors/asn1/cmip/packet-cmip-template.h
@@ -0,0 +1,18 @@
+/* packet-cmip.h
+ * Routines for X.711 CMIP packet dissection
+ * Ronnie Sahlberg 2004
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef PACKET_CMIP_H
+#define PACKET_CMIP_H
+
+#include "packet-cmip-exp.h"
+
+#endif /* PACKET_CMIP_H */
+