diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/cmip | |
parent | Initial commit. (diff) | |
download | wireshark-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.asn | 706 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/CMIP-A-ABORT-Information.asn | 17 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/CMIP-A-ASSOCIATE-Information.asn | 24 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/CMIP.asn | 526 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/CMakeLists.txt | 48 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/cmip.cnf | 507 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/packet-cmip-template.c | 202 | ||||
-rw-r--r-- | epan/dissectors/asn1/cmip/packet-cmip-template.h | 18 |
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 */ + |