Revised DAP dissector using latest asn2wrs features (requiring fewer changes the ASN.1 module) and table-driven operations.

svn path=/trunk/; revision=23875
This commit is contained in:
Graeme Lunt 2007-12-15 15:21:25 +00:00
parent 7a5f960bb7
commit 9c6ac3835f
7 changed files with 1284 additions and 948 deletions

View File

@ -0,0 +1,171 @@
-- $Id$
-- http://www.itu.int/ITU-T/asn1/database/itu-t/x/x519/2001/index.html
-- Module DirectoryAccessProtocol (X.519:02/2001)
DirectoryAccessProtocol {joint-iso-itu-t ds(5) module(1) dap(11) 4} DEFINITIONS
::=
BEGIN
-- EXPORTS All
-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
-- within the Directory Specifications, and for the use of other applications which will use them to access
-- Directory services. Other applications may use them for their own purposes, but this will not constrain
-- extensions and modifications needed to maintain or improve the Directory service.
IMPORTS
-- from ITU-T Rec. X.501 | ISO/IEC 9594-2
directoryAbstractService, protocolObjectIdentifiers
FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
usefulDefinitions(0) 4}
-- from ITU-T Rec. X.511 | ISO/IEC 9594-3
abandon, addEntry, compare, directoryBind, directoryUnbind, list, modifyDN,
modifyEntry, read, removeEntry, search
FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
directoryAbstractService(2) 4}
-- from ITU-T Rec. X.519 | ISO/IEC 9594-5
id-ac-directoryAccessAC, id-as-directoryAccessAS, id-contract-dap,
id-package-dapConnection, id-package-modify, id-package-read,
id-package-search, id-rosObject-dapDSA, id-rosObject-directory,
id-rosObject-dua
FROM ProtocolObjectIdentifiers {joint-iso-itu-t ds(5) module(1)
protocolObjectIdentifiers(4) 4}
-- from ITU-T Rec. X.880 | ISO/IEC 13712-1
Code, CONNECTION-PACKAGE, CONTRACT, OPERATION, OPERATION-PACKAGE,
ROS-OBJECT-CLASS
FROM Remote-Operations-Information-Objects {joint-iso-itu-t
remote-operations(4) informationObjects(5) version1(0)}
Bind{}, InvokeId, ROS{}, Unbind{}
FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
remote-operations(4) generic-ROS-PDUs(6) version1(0)}
-- from ITU-T Rec. X.881 | ISO/IEC 13712-2
APPLICATION-CONTEXT
FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
remote-operations(4) informationObjects-extensions(8) version1(0)}
-- from ITU-T Rec. X.882 | ISO/IEC 13712-3
acse, pData
FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
realizations(9) version1(0)}
acse-abstract-syntax
FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)};
-- application contexts
directoryAccessAC APPLICATION-CONTEXT ::= {
CONTRACT dapContract
ESTABLISHED BY acse
INFORMATION TRANSFER BY pData
ABSTRACT SYNTAXES
{acse-abstract-syntax | directoryAccessAbstractSyntax}
APPLICATION CONTEXT NAME id-ac-directoryAccessAC
}
-- ROS objects
dua ROS-OBJECT-CLASS ::= {INITIATES {dapContract}
ID id-rosObject-dua
}
directory ROS-OBJECT-CLASS ::= {
RESPONDS {dapContract}
ID id-rosObject-directory
}
dap-dsa ROS-OBJECT-CLASS ::= {
RESPONDS {dapContract}
ID id-rosObject-dapDSA
}
-- contracts
dapContract CONTRACT ::= {
CONNECTION dapConnectionPackage
INITIATOR CONSUMER OF {readPackage | searchPackage | modifyPackage}
ID id-contract-dap
}
-- connection package
dapConnectionPackage CONNECTION-PACKAGE ::= {
BIND directoryBind
UNBIND directoryUnbind
ID id-package-dapConnection
}
-- read package
readPackage OPERATION-PACKAGE ::= {
CONSUMER INVOKES {read | compare | abandon}
ID id-package-read
}
-- search package
searchPackage OPERATION-PACKAGE ::= {
CONSUMER INVOKES {list | search}
ID id-package-search
}
-- modify Package
modifyPackage OPERATION-PACKAGE ::= {
CONSUMER INVOKES {addEntry | removeEntry | modifyEntry | modifyDN}
ID id-package-modify
}
-- abstract syntaxes
directoryAccessAbstractSyntax ABSTRACT-SYNTAX ::= {
DAP-PDUs
IDENTIFIED BY id-as-directoryAccessAS
}
--DAP-PDUs ::= CHOICE {
-- basicRos ROS{{DAP-InvokeIDSet}, {DAP-Invokable}, {DAP-Returnable}},
-- bind Bind{directoryBind},
-- unbind Unbind{directoryUnbind}
--}
DAP-InvokeIDSet ::= InvokeId --(ALL EXCEPT absent:NULL)
DAP-Invokable OPERATION ::=
{read | compare | abandon | list | search | addEntry | removeEntry |
modifyEntry | modifyDN}
DAP-Returnable OPERATION ::=
{read | compare | abandon | list | search | addEntry | removeEntry |
modifyEntry | modifyDN}
-- remote operation codes
id-opcode-read Code ::= local:1
id-opcode-compare Code ::= local:2
id-opcode-abandon Code ::= local:3
id-opcode-list Code ::= local:4
id-opcode-search Code ::= local:5
id-opcode-addEntry Code ::= local:6
id-opcode-removeEntry Code ::= local:7
id-opcode-modifyEntry Code ::= local:8
id-opcode-modifyDN Code ::= local:9
-- remote error codes
id-errcode-attributeError Code ::= local:1
id-errcode-nameError Code ::= local:2
id-errcode-serviceError Code ::= local:3
id-errcode-referral Code ::= local:4
id-errcode-abandoned Code ::= local:5
id-errcode-securityError Code ::= local:6
id-errcode-abandonFailed Code ::= local:7
id-errcode-updateError Code ::= local:8
-- remote error code for DSP
id-errcode-dsaReferral Code ::= local:9
END -- DirectoryAccessProtocol
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D

View File

@ -33,7 +33,9 @@ EXPORT_FILES = \
EXT_ASN_FILE_LIST =
ASN_FILE_LIST = \
$(PROTOCOL_NAME).asn
$(PROTOCOL_NAME).asn \
DirectoryAccessProtocol.asn
# The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn
# files do not exist # for all protocols: Please add/remove as required.
@ -47,7 +49,7 @@ SRC_FILES = \
$(EXTRA_DIST) \
$(EXT_ASN_FILE_LIST)
A2W_FLAGS= -b -e
A2W_FLAGS= -b -e -L
EXTRA_CNF= \
../disp/disp-exp.cnf \

View File

@ -70,27 +70,27 @@ IMPORTS
remote-operations(4) useful-definitions(7) version1(0)}
InvokeId
FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
remote-operations(4) generic-ROS-PDUs(6) version1(0)};
remote-operations(4) generic-ROS-PDUs(6) version1(0)}
-- from RFC 2025
-- SPKM-ERROR, SPKM-REP-TI, SPKM-REQ
-- FROM SpkmGssTokens {iso(1) identified-organization(3) dod(6) internet(1)
-- security(5) mechanisms(5) spkm(1) spkmGssTokens(10)};
SPKM-ERROR, SPKM-REP-TI, SPKM-REQ
FROM SpkmGssTokens {iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) spkm(1) spkmGssTokens(10)};
-- Common data types
--CommonArguments ::= SET {
-- serviceControls [30] ServiceControls DEFAULT {},
-- securityParameters [29] SecurityParameters OPTIONAL,
-- requestor [28] DistinguishedName OPTIONAL,
-- operationProgress
-- [27] OperationProgress DEFAULT {nameResolutionPhase notStarted},
-- aliasedRDNs [26] INTEGER OPTIONAL,
-- criticalExtensions [25] BIT STRING OPTIONAL,
-- referenceType [24] ReferenceType OPTIONAL,
-- entryOnly [23] BOOLEAN DEFAULT TRUE,
-- nameResolveOnMaster [21] BOOLEAN DEFAULT FALSE,
-- operationContexts [20] ContextSelection OPTIONAL,
-- familyGrouping [19] FamilyGrouping DEFAULT entryOnly
--}
CommonArguments ::= SET {
serviceControls [30] ServiceControls DEFAULT {},
securityParameters [29] SecurityParameters OPTIONAL,
requestor [28] DistinguishedName OPTIONAL,
operationProgress
[27] OperationProgress DEFAULT {nameResolutionPhase notStarted},
aliasedRDNs [26] INTEGER OPTIONAL,
criticalExtensions [25] BIT STRING OPTIONAL,
referenceType [24] ReferenceType OPTIONAL,
entryOnly [23] BOOLEAN DEFAULT TRUE,
nameResolveOnMaster [21] BOOLEAN DEFAULT FALSE,
operationContexts [20] ContextSelection OPTIONAL,
familyGrouping [19] FamilyGrouping DEFAULT entryOnly
}
FamilyGrouping ::= ENUMERATED {
entryOnly(1), compoundEntry(2), strands(3), multiStrand(4)}
@ -99,15 +99,15 @@ CommonResults ::= SET {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--CommonResultsSeq ::= SEQUENCE {
-- securityParameters [30] SecurityParameters OPTIONAL,
-- performer [29] DistinguishedName OPTIONAL,
-- aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
-- notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
--}
CommonResultsSeq ::= SEQUENCE {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
ServiceControls ::= SET {
options [0] ServiceControlOptions DEFAULT {},
@ -140,7 +140,7 @@ EntryInformationSelection ::= SET {
DEFAULT attributeTypesAndValues,
extraAttributes
CHOICE {allOperationalAttributes [3] NULL,
select [4] SET --SIZE (1..MAX)-- OF AttributeType
select [4] SET SIZE (1..MAX) OF AttributeType
} OPTIONAL,
contextSelection ContextSelection OPTIONAL,
returnContexts BOOLEAN DEFAULT FALSE,
@ -149,7 +149,7 @@ EntryInformationSelection ::= SET {
ContextSelection ::= CHOICE {
allContexts NULL,
selectedContexts SET --SIZE (1..MAX)-- OF TypeAndContextAssertion
selectedContexts SET SIZE (1..MAX) OF TypeAndContextAssertion
}
TypeAndContextAssertion ::= SEQUENCE {
@ -163,7 +163,7 @@ FamilyReturn ::= SEQUENCE {
memberSelect
ENUMERATED {contributingEntriesOnly(1), participatingEntriesOnly(2),
compoundEntry(3)},
familySelect SEQUENCE --SIZE (1..MAX)-- OF --OBJECT-CLASS.&id-- OBJECT IDENTIFIER OPTIONAL
familySelect SEQUENCE SIZE (1..MAX) OF OBJECT-CLASS.&id OPTIONAL
}
@ -171,7 +171,7 @@ EntryInformation ::= SEQUENCE {
name Name,
fromEntry BOOLEAN DEFAULT TRUE,
information
SET --SIZE (1..MAX)-- OF CHOICE {
SET SIZE (1..MAX) OF CHOICE {
attributeType AttributeType,
attribute Attribute} OPTIONAL,
incompleteEntry [3] BOOLEAN DEFAULT FALSE, -- not in 1988-edition systems
@ -196,7 +196,7 @@ FamilyEntry ::= SEQUENCE {
information
SEQUENCE OF CHOICE {attributeType AttributeType,
attribute Attribute},
family-info SEQUENCE --SIZE (1..MAX)-- OF FamilyEntries OPTIONAL
family-info SEQUENCE SIZE (1..MAX) OF FamilyEntries OPTIONAL
}
Filter ::= CHOICE {
@ -212,21 +212,21 @@ SetOfFilter ::= SET OF Filter
FilterItem ::= CHOICE {
equality [0] AttributeValueAssertion,
substrings
[1] SEQUENCE {type --ATTRIBUTE.&id({SupportedAttributes})-- OBJECT IDENTIFIER,
[1] SEQUENCE {type ATTRIBUTE.&id({SupportedAttributes}),
strings
SEQUENCE OF
CHOICE {initial
[0] -- ATTRIBUTE.&Type -- ANY
-- ({SupportedAttributes}
-- {@substrings.type})--,
[0] ATTRIBUTE.&Type
({SupportedAttributes}
{@substrings.type}),
any
[1] -- ATTRIBUTE.&Type -- ANY
-- ({SupportedAttributes}
-- {@substrings.type})--,
[1] ATTRIBUTE.&Type
({SupportedAttributes}
{@substrings.type}),
final
[2] --ATTRIBUTE.&Type -- ANY
-- ({SupportedAttributes}
-- {@substrings.type})--,
[2] ATTRIBUTE.&Type
({SupportedAttributes}
{@substrings.type}),
control Attribute}}, -- Used to specify interpretation of following items
greaterOrEqual [2] AttributeValueAssertion,
lessOrEqual [3] AttributeValueAssertion,
@ -237,10 +237,10 @@ FilterItem ::= CHOICE {
}
MatchingRuleAssertion ::= SEQUENCE {
matchingRule [1] SET --SIZE (1..MAX)-- OF --MATCHING-RULE.&id-- OBJECT IDENTIFIER,
matchingRule [1] SET SIZE (1..MAX) OF MATCHING-RULE.&id,
type [2] AttributeType OPTIONAL,
matchValue
[3] --MATCHING-RULE.&AssertionType-- ANY
[3] MATCHING-RULE.&AssertionType
-- (CONSTRAINED BY {
-- matchValue shall be a value of type specified by the &AssertionType field of
-- one of the MATCHING-RULE information objects identified by matchingRule }) --,
@ -250,7 +250,7 @@ MatchingRuleAssertion ::= SEQUENCE {
PagedResultsRequest ::= CHOICE {
newRequest
SEQUENCE {pageSize INTEGER,
sortKeys SEQUENCE --SIZE (1..MAX)-- OF SortKey OPTIONAL,
sortKeys SEQUENCE SIZE (1..MAX) OF SortKey OPTIONAL,
reverse [1] BOOLEAN DEFAULT FALSE,
unmerged [2] BOOLEAN DEFAULT FALSE},
queryReference OCTET STRING
@ -285,11 +285,12 @@ ErrorProtectionRequest ::= INTEGER {
none(0), signed(1), encrypted(2), signed-encrypted(3)}
-- Bind and unbind operations
--directoryBind OPERATION ::= {
-- ARGUMENT DirectoryBindArgument
-- RESULT DirectoryBindResult
-- ERRORS {directoryBindError}
--}
directoryBind OPERATION ::= {
ARGUMENT DirectoryBindArgument
RESULT DirectoryBindResult
ERRORS {directoryBindError}
CODE op-ros-bind -- WS: internal operation code
}
DirectoryBindArgument ::= SET {
credentials [0] Credentials OPTIONAL,
@ -361,13 +362,14 @@ Versions ::= BIT STRING {v1(0), v2(1)}
DirectoryBindResult ::= DirectoryBindArgument
DirectoryBindErrorData --ERROR-- ::= --{
-- PARAMETER OPTIONALLY-PROTECTED
-- {--SET {versions [0] Versions DEFAULT {v1},
error
CHOICE {serviceError [1] ServiceProblem,
securityError [2] SecurityProblem}} --}
--}
directoryBindError ERROR ::= {
PARAMETER -- OPTIONALLY-PROTECTED -- DirectoryBindError
-- {SET {versions [0] Versions DEFAULT {v1},
-- error
-- CHOICE {serviceError [1] ServiceProblem,
-- securityError [2] SecurityProblem}} }
CODE err-ros-bind -- WS: internal error code
}
-- expand OPTIONALLY-PROTECTED macro
DirectoryBindError ::= CHOICE {
@ -379,20 +381,26 @@ DirectoryBindError ::= CHOICE {
}
}
DirectoryBindErrorData ::=
SET {versions [0] Versions DEFAULT {v1},
error
CHOICE {serviceError [1] ServiceProblem,
securityError [2] SecurityProblem}}
BindKeyInfo ::= -- ENCRYPTED{-- BIT STRING --
BindKeyInfo ::= -- ENCRYPTED{-- BIT STRING
--directoryUnbind OPERATION ::= emptyUnbind
-- Operations, arguments, and results
--read OPERATION ::= {
-- ARGUMENT ReadArgument
-- RESULT ReadResult
-- ERRORS
-- {attributeError | nameError | serviceError | referral | abandoned |
-- securityError}
-- CODE id-opcode-read
--}
read OPERATION ::= {
ARGUMENT ReadArgument
RESULT ReadResult
ERRORS
{attributeError | nameError | serviceError | referral | abandoned |
securityError}
CODE id-opcode-read
}
ReadArgumentData ::=
-- OPTIONALLY-PROTECTED
@ -437,7 +445,7 @@ ReadResultData ::=
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}--}
-- OPTIONALLY-PROTECTED macro expansion
@ -461,14 +469,14 @@ ModifyRights ::=
[3] BIT STRING {add(0), remove(1), rename(2), move(3)}
}
--compare OPERATION ::= {
-- ARGUMENT CompareArgument
-- RESULT CompareResult
-- ERRORS
-- {attributeError | nameError | serviceError | referral | abandoned |
-- securityError}
-- CODE id-opcode-compare
--}
compare OPERATION ::= {
ARGUMENT CompareArgument
RESULT CompareResult
ERRORS
{attributeError | nameError | serviceError | referral | abandoned |
securityError}
CODE id-opcode-compare
}
CompareArgumentData ::=
-- OPTIONALLY-PROTECTED
@ -510,7 +518,7 @@ CompareResultData ::=
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
-- OPTIONALLY-PROTECTED macro expansion
@ -524,12 +532,12 @@ CompareResult ::= CHOICE {
}
--abandon OPERATION ::= {
-- ARGUMENT AbandonArgument
-- RESULT AbandonResult
-- ERRORS {abandonFailed}
-- CODE id-opcode-abandon
--}
abandon OPERATION ::= {
ARGUMENT AbandonArgument
RESULT AbandonResult
ERRORS {abandonFailed}
CODE id-opcode-abandon
}
AbandonArgumentData ::=
-- OPTIONALLY-PROTECTED-SEQ{--SEQUENCE {invokeID [0] InvokeId}--}
@ -550,7 +558,7 @@ AbandonResultData ::= SEQUENCE {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
AbandonResult ::= CHOICE {
@ -569,12 +577,12 @@ AbandonResult ::= CHOICE {
}
}
--list OPERATION ::= {
-- ARGUMENT ListArgument
-- RESULT ListResult
-- ERRORS {nameError | serviceError | referral | abandoned | securityError}
-- CODE id-opcode-list
--}
list OPERATION ::= {
ARGUMENT ListArgument
RESULT ListResult
ERRORS {nameError | serviceError | referral | abandoned | securityError}
CODE id-opcode-list
}
ListArgumentData ::=
-- OPTIONALLY-PROTECTED
@ -623,7 +631,7 @@ ListResultData ::=
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
},
uncorrelatedListInfo [0] SET OF ListResult}--}
@ -641,14 +649,14 @@ ListResult ::= CHOICE {
PartialOutcomeQualifier ::= SET {
limitProblem [0] LimitProblem OPTIONAL,
unexplored
[1] SET --SIZE (1..MAX)-- OF ContinuationReference OPTIONAL,
[1] SET SIZE (1..MAX) OF ContinuationReference OPTIONAL,
unavailableCriticalExtensions [2] BOOLEAN DEFAULT FALSE,
unknownErrors
[3] SET --SIZE (1..MAX)-- OF --ABSTRACT-SYNTAX.&Type-- OBJECT IDENTIFIER OPTIONAL,
[3] SET SIZE (1..MAX) OF --ABSTRACT-SYNTAX.&Type-- OBJECT IDENTIFIER OPTIONAL,
queryReference [4] OCTET STRING OPTIONAL,
overspecFilter [5] Filter OPTIONAL,
notification
[6] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL,
[6] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL,
entryCount
CHOICE {bestEstimate [7] INTEGER,
lowEstimate [8] INTEGER} OPTIONAL
@ -658,14 +666,14 @@ LimitProblem ::= INTEGER {
timeLimitExceeded(0), sizeLimitExceeded(1), administrativeLimitExceeded(2)
}
--search OPERATION ::= {
-- ARGUMENT SearchArgument
-- RESULT SearchResult
-- ERRORS
-- {attributeError | nameError | serviceError | referral | abandoned |
-- securityError}
-- CODE id-opcode-search
--}
search OPERATION ::= {
ARGUMENT SearchArgument
RESULT SearchResult
ERRORS
{attributeError | nameError | serviceError | referral | abandoned |
securityError}
CODE id-opcode-search
}
SearchArgumentData ::=
-- OPTIONALLY-PROTECTED
@ -732,7 +740,7 @@ JoinArgument ::= SEQUENCE {
[2] ENUMERATED {baseObject(0), oneLevel(1), wholeSubtree(2)}
DEFAULT baseObject,
joinFilter [3] Filter OPTIONAL,
joinAttributes [4] SEQUENCE --SIZE (1..MAX)-- OF JoinAttPair OPTIONAL,
joinAttributes [4] SEQUENCE SIZE (1..MAX) OF JoinAttPair OPTIONAL,
joinSelection [5] EntryInformationSelection
}
@ -741,7 +749,7 @@ DomainLocalID ::= DirectoryString --{ub-domainLocalID}--
JoinAttPair ::= SEQUENCE {
baseAtt AttributeType,
joinAtt AttributeType,
joinContext SEQUENCE --SIZE (1..MAX)-- OF JoinContextType OPTIONAL
joinContext SEQUENCE SIZE (1..MAX) OF JoinContextType OPTIONAL
}
JoinContextType ::= --CONTEXT.&id({SupportedContexts})-- OBJECT IDENTIFIER
@ -758,7 +766,7 @@ SearchResultData ::=
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL},
notification [27] SEQUENCE SIZE (1..MAX)OF Attribute OPTIONAL},
uncorrelatedSearchInfo [0] SET OF SearchResult}--}
-- expand OPTIONALLY-PROTECTED macro
@ -772,14 +780,14 @@ SearchResult ::= CHOICE {
}
--addEntry OPERATION ::= {
-- ARGUMENT AddEntryArgument
-- RESULT AddEntryResult
-- ERRORS
-- {attributeError | nameError | serviceError | referral | securityError |
-- updateError}
-- CODE id-opcode-addEntry
--}
addEntry OPERATION ::= {
ARGUMENT AddEntryArgument
RESULT AddEntryResult
ERRORS
{attributeError | nameError | serviceError | referral | securityError |
updateError}
CODE id-opcode-addEntry
}
AddEntryArgumentData ::=
-- OPTIONALLY-PROTECTED
@ -815,7 +823,7 @@ AddEntryResultData ::= SEQUENCE {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
AddEntryResult ::= CHOICE {
@ -832,12 +840,12 @@ AddEntryResult ::= CHOICE {
}
}
--removeEntry OPERATION ::= {
-- ARGUMENT RemoveEntryArgument
-- RESULT RemoveEntryResult
-- ERRORS {nameError | serviceError | referral | securityError | updateError}
-- CODE id-opcode-removeEntry
--}
removeEntry OPERATION ::= {
ARGUMENT RemoveEntryArgument
RESULT RemoveEntryResult
ERRORS {nameError | serviceError | referral | securityError | updateError}
CODE id-opcode-removeEntry
}
RemoveEntryArgumentData ::=
-- OPTIONALLY-PROTECTED{--SET {object [0] Name,
@ -871,7 +879,7 @@ RemoveEntryResultData ::= SEQUENCE {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
RemoveEntryResult ::= CHOICE {
@ -888,14 +896,14 @@ RemoveEntryResult ::= CHOICE {
}
}
--modifyEntry OPERATION ::= {
-- ARGUMENT ModifyEntryArgument
-- RESULT ModifyEntryResult
-- ERRORS
-- {attributeError | nameError | serviceError | referral | securityError |
-- updateError}
-- CODE id-opcode-modifyEntry
--}
modifyEntry OPERATION ::= {
ARGUMENT ModifyEntryArgument
RESULT ModifyEntryResult
ERRORS
{attributeError | nameError | serviceError | referral | securityError |
updateError}
CODE id-opcode-modifyEntry
}
ModifyEntryArgumentData ::=
-- OPTIONALLY-PROTECTED
@ -933,7 +941,7 @@ ModifyEntryResultData ::= SEQUENCE {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
ModifyEntryResult ::= CHOICE {
@ -959,12 +967,12 @@ EntryModification ::= CHOICE {
resetValue [5] AttributeType
}
--modifyDN OPERATION ::= {
-- ARGUMENT ModifyDNArgument
-- RESULT ModifyDNResult
-- ERRORS {nameError | serviceError | referral | securityError | updateError}
-- CODE id-opcode-modifyDN
--}
modifyDN OPERATION ::= {
ARGUMENT ModifyDNArgument
RESULT ModifyDNResult
ERRORS {nameError | serviceError | referral | securityError | updateError}
CODE id-opcode-modifyDN
}
ModifyDNArgument ::=
-- OPTIONALLY-PROTECTED
@ -992,7 +1000,7 @@ ModifyDNResultData ::= SEQUENCE {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
@ -1013,18 +1021,18 @@ ModifyDNResult ::= CHOICE {
-- Errors and parameters
abandoned ERROR ::= { -- not literally an "error"
PARAMETER --OPTIONALLY-PROTECTED {SET {COMPONENTS OF CommonResults}}-- Abandoned
CODE id-errcode-abandoned
}
AbandonedData ::= SET {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--abandoned ERROR ::= { - - not literally an "error"
-- PARAMETER OPTIONALLY-PROTECTED {SET {COMPONENTS OF CommonResults}}
-- CODE id-errcode-abandoned
--}
Abandoned ::= CHOICE {
unsignedAbandoned AbandonedData,
signedAbandoned SEQUENCE {
@ -1034,6 +1042,13 @@ Abandoned ::= CHOICE {
}
}
abandonFailed ERROR ::= {
PARAMETER --OPTIONALLY-PROTECTED-- AbandonFailedError
-- {SET {problem [0] AbandonProblem,
-- operation [1] InvokeId,
-- COMPONENTS OF CommonResults}}
CODE id-errcode-abandonFailed
}
AbandonFailedErrorData ::= SET {
problem [0] AbandonProblem,
@ -1041,18 +1056,9 @@ AbandonFailedErrorData ::= SET {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--abandonFailed ERROR ::= {
-- PARAMETER OPTIONALLY-PROTECTED
-- {SET {problem [0] AbandonProblem,
-- operation [1] InvokeId,
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-abandonFailed
--}
AbandonFailedError ::= CHOICE {
unsignedAbandonFailedError AbandonFailedErrorData,
signedAbandonFailedError SEQUENCE {
@ -1064,6 +1070,18 @@ AbandonFailedError ::= CHOICE {
AbandonProblem ::= INTEGER {noSuchOperation(1), tooLate(2), cannotAbandon(3)}
attributeError ERROR ::= {
PARAMETER --OPTIONALLY-PROTECTED-- AttributeError
-- {SET {object [0] Name,
-- problems
-- [1] SET OF
-- SEQUENCE {problem [0] AttributeProblem,
-- type [1] AttributeType,
-- value [2] AttributeValue OPTIONAL},
-- COMPONENTS OF CommonResults}}
CODE id-errcode-attributeError
}
AttributeErrorData ::= SET {
object [0] Name,
problems
@ -1074,22 +1092,9 @@ AttributeErrorData ::= SET {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--attributeError ERROR ::= {
-- PARAMETER OPTIONALLY-PROTECTED
-- {SET {object [0] Name,
-- problems
-- [1] SET OF
-- SEQUENCE {problem [0] AttributeProblem,
-- type [1] AttributeType,
-- value [2] AttributeValue OPTIONAL},
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-attributeError
--}
AttributeError ::= CHOICE {
unsignedAttributeError AttributeErrorData,
signedAttributeError SEQUENCE {
@ -1104,6 +1109,13 @@ AttributeProblem ::= INTEGER {
undefinedAttributeType(3), inappropriateMatching(4), constraintViolation(5),
attributeOrValueAlreadyExists(6), contextViolation(7)}
nameError ERROR ::= {
PARAMETER --OPTIONALLY-PROTECTED-- NameError
-- {SET {problem [0] NameProblem,
-- matched [1] Name,
-- COMPONENTS OF CommonResults}}
CODE id-errcode-nameError
}
NameErrorData ::= SET {
problem [0] NameProblem,
@ -1111,16 +1123,9 @@ NameErrorData ::= SET {
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--nameError ERROR ::= {
-- PARAMETER OPTIONALLY-PROTECTED
-- {SET {problem [0] NameProblem,
-- matched [1] Name,
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-nameError
--}
NameError ::= CHOICE {
unsignedNameError NameErrorData,
@ -1131,27 +1136,26 @@ NameError ::= CHOICE {
}
}
NameProblem ::= INTEGER {
noSuchObject(1), aliasProblem(2), invalidAttributeSyntax(3),
aliasDereferencingProblem(4), contextProblem(5)}
referral ERROR ::= { -- not literally an "error"
PARAMETER --OPTIONALLY-PROTECTED-- Referral
-- {SET {candidate [0] ContinuationReference,
-- COMPONENTS OF CommonResults}}
CODE id-errcode-referral
}
ReferralData ::= SET {
candidate [0] ContinuationReference,
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--referral ERROR ::= { - - not literally an "error"
-- PARAMETER OPTIONALLY-PROTECTED
-- {SET {candidate [0] ContinuationReference,
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-referral
--}
Referral ::= CHOICE {
unsignedReferral ReferralData,
signedReferral SEQUENCE {
@ -1161,23 +1165,23 @@ Referral ::= CHOICE {
}
}
securityError ERROR ::= {
PARAMETER --OPTIONALLY-PROTECTED-- SecurityError
-- {SET {problem [0] SecurityProblem,
-- spkmInfo [1] SPKM-ERROR,
-- COMPONENTS OF CommonResults}}
CODE id-errcode-securityError
}
SecurityErrorData ::= SET {
problem [0] SecurityProblem,
spkmInfo [1] -- SPKM-ERROR -- ANY,
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--securityError ERROR ::= {
-- PARAMETER OPTIONALLY-PROTECTED
-- {SET {problem [0] SecurityProblem,
-- spkmInfo [1] SPKM-ERROR,
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-securityError
--}
SecurityError ::= CHOICE {
unsignedSecurityError SecurityErrorData,
signedSecurityError SEQUENCE {
@ -1194,22 +1198,22 @@ SecurityProblem ::= INTEGER {
noInformation(6), blockedCredentials(7), invalidQOPMatch(8), spkmError(9)
}
serviceError ERROR ::= {
PARAMETER --OPTIONALLY-PROTECTED-- ServiceError
-- {SET {problem [0] ServiceProblem,
-- COMPONENTS OF CommonResults}}
CODE id-errcode-serviceError
}
ServiceErrorData ::= SET {
problem [0] ServiceProblem,
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
--serviceError ERROR ::= {
-- PARAMETER OPTIONALLY-PROTECTED
-- {SET {problem [0] ServiceProblem,
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-serviceError
--}
ServiceError ::= CHOICE {
unsignedServiceError ServiceErrorData,
signedServiceError SEQUENCE {
@ -1228,28 +1232,29 @@ ServiceProblem ::= INTEGER {
invalidQueryReference(13), requestedServiceNotAvailable(14),
relaxationNotSupported(15), unsupportedMatchingUse(16)}
UpdateErrorData ::= SET {
problem [0] UpdateProblem,
attributeInfo
[1] SET --SIZE (1..MAX)-- OF
CHOICE {attributeType AttributeType,
attribute Attribute} OPTIONAL,
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE --SIZE (1..MAX)-- OF Attribute OPTIONAL
}
--updateError ERROR ::= {
-- PARAMETER OPTIONALLY-PROTECTED
updateError ERROR ::= {
PARAMETER --OPTIONALLY-PROTECTED-- UpdateError
-- {SET {problem [0] UpdateProblem,
-- attributeInfo
-- [1] SET SIZE (1..MAX) OF
-- CHOICE {attributeType AttributeType,
-- attribute Attribute} OPTIONAL,
-- COMPONENTS OF CommonResults}}
-- CODE id-errcode-updateError
--}
CODE id-errcode-updateError
}
UpdateErrorData ::= SET {
problem [0] UpdateProblem,
attributeInfo
[1] SET SIZE (1..MAX) OF
CHOICE {attributeType AttributeType,
attribute Attribute} OPTIONAL,
securityParameters [30] SecurityParameters OPTIONAL,
performer [29] DistinguishedName OPTIONAL,
aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
}
UpdateError ::= CHOICE {
unsignedUpdateError UpdateErrorData,

View File

@ -9,17 +9,65 @@
#.MODULE_IMPORT
ServiceAdministration x509if
AttributeCertificateDefinitions x509af
BasicAccessControl crmf
Remote-Operations-Information-Objects ros
#.CLASS OBJECT-CLASS
&Superclasses ClassReference OBJECT-CLASS
&kind
&MandatoryAttributes ClassReference ATTRIBUTE
&OptionalAttributes ClassReference ATTRIBUTE
&id ObjectIdentifierType
#.END
#.CLASS ATTRIBUTE
&derivation ClassReference ATTRIBUTE
&Type
&equality-match ClassReference MATCHING-RULE
&ordering-match ClassReference MATCHING-RULE
&substrings-match ClassReference MATCHING-RULE
&single-valued BooleanType
&collective BooleanType
&no-user-modification BooleanType
&usage
&id ObjectIdentifierType
#.END
#.CLASS MATCHING-RULE
&ParentMatchingRules ClassReference MATCHING-RULE
&AssertionType
&uniqueMatchIndicator ClassReference ATTRIBUTE
&id ObjectIdentifierType
#.END
#.CLASS CONTEXT
&Type
&Assertion
&id ObjectIdentifierType
#.END
#.CLASS CONTRACT
&connection ClassReference CONNECTION-PACKAGE
&OperationsOf ClassReference OPERATION-PACKAGE
&InitiatorConsumerOf ClassReference OPERATION-PACKAGE
&InitiatorSupplierOf ClassReference OPERATION-PACKAGE
&id ObjectIdentifierType
#.END
#.CLASS APPLICATION-CONTEXT
&bind-operation ClassReference OPERATION
&Operations ClassReference OPERATION
&applicationContextName ObjectIdentifierType
#.END
#.OMIT_ASSIGNMENT
CommonArguments
CommonResults
CommonResultsSeq
#.END
#.EXPORTS
Filter
CommonResults
Referral
SecurityParameters
EntryModification
@ -112,6 +160,59 @@ TokenData/time utctime
PagedResultsRequest/queryReference pagedResultsQueryReference
EntryInformationSelection/extraAttributes/select extraSelect
# This table creates the value_sting to name P7 operation codes and errors
# in file packet-p7-table.c which is included in the template file
#
#.TABLE_HDR
/* DAP OPERATIONS */
const value_string dap_opr_code_string_vals[] = {
#.TABLE_BODY OPERATION
{ %(&operationCode)s, "%(_ident)s" },
#.TABLE_FTR
{ 0, NULL }
};
#.END
#.TABLE_HDR
/* DAP ERRORS */
static const value_string dap_err_code_string_vals[] = {
#.TABLE_BODY ERROR
{ %(&errorCode)s, "%(_ident)s" },
#.TABLE_FTR
{ 0, NULL }
};
#.END
# Create a table of opcode and corresponding args and res
#.TABLE11_HDR
static const ros_opr_t dap_opr_tab[] = {
#.TABLE11_BODY OPERATION
/* %(_name)s */
{ %(&operationCode)-25s, %(_argument_pdu)s, %(_result_pdu)s },
#.TABLE11_FTR
{ 0, (new_dissector_t)(-1), (new_dissector_t)(-1) },
};
#.END
#.TABLE21_HDR
static const ros_err_t dap_err_tab[] = {
#.TABLE21_BODY ERROR
/* %(_name)s*/
{ %(&errorCode)s, %(_parameter_pdu)s },
#.TABLE21_FTR
{ 0, (new_dissector_t)(-1) },
};
#.END
#.PDU_NEW
ERROR.&ParameterType
OPERATION.&ArgumentType
OPERATION.&ResultType
#.END
#.FN_BODY FilterItem/substrings/strings/_item/initial
proto_item *it;
it = proto_tree_add_item(tree, hf_index, tvb, offset, -1, FALSE);
@ -261,13 +362,3 @@ PagedResultsRequest/queryReference pagedResultsQueryReference
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", (dn && *dn) ? dn : "(root)");
}
#.FN_BODY ListResultData/listInfo/subordinates/_item
proto_item *sub_item;
%(DEFAULT_BODY)s
if((sub_item = get_ber_last_created_item())) {
proto_item_append_text(sub_item," (%%s)", x509if_get_last_dn());
}

View File

@ -74,203 +74,24 @@ static struct SESSION_DATA_STRUCTURE* session = NULL;
static gint ett_dap = -1;
#include "packet-dap-ett.c"
#include "packet-dap-val.h"
#include "packet-dap-table.c" /* operation and error codes */
#include "packet-dap-fn.c"
/*
* Dissect DAP PDUs inside a ROS PDUs
*/
static void
dissect_dap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
int offset = 0;
int old_offset;
proto_item *item=NULL;
proto_tree *tree=NULL;
int (*dap_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) = NULL;
char *dap_op_name;
asn1_ctx_t asn1_ctx;
#include "packet-dap-table11.c" /* operation argument/result dissectors */
#include "packet-dap-table21.c" /* error dissector */
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
/* do we have operation information from the ROS dissector? */
if( !pinfo->private_data ){
if(parent_tree){
proto_tree_add_text(parent_tree, tvb, offset, -1,
"Internal error: can't get operation information from ROS dissector.");
}
return ;
} else {
session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
}
if(parent_tree){
item = proto_tree_add_item(parent_tree, proto_dap, tvb, 0, -1, FALSE);
tree = proto_item_add_subtree(item, ett_dap);
}
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DAP");
if (check_col(pinfo->cinfo, COL_INFO))
col_clear(pinfo->cinfo, COL_INFO);
switch(session->ros_op & ROS_OP_MASK) {
case (ROS_OP_BIND | ROS_OP_ARGUMENT): /* BindInvoke */
dap_dissector = dissect_dap_DirectoryBindArgument;
dap_op_name = "Bind-Argument";
break;
case (ROS_OP_BIND | ROS_OP_RESULT): /* BindResult */
dap_dissector = dissect_dap_DirectoryBindResult;
dap_op_name = "Bind-Result";
break;
case (ROS_OP_BIND | ROS_OP_ERROR): /* BindError */
dap_dissector = dissect_dap_DirectoryBindError;
dap_op_name = "Bind-Error";
break;
case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /* Invoke Argument */
switch(session->ros_op & ROS_OP_OPCODE_MASK) {
case 1: /* read */
dap_dissector = dissect_dap_ReadArgument;
dap_op_name = "Read-Argument";
break;
case 2: /* compare */
dap_dissector = dissect_dap_CompareArgument;
dap_op_name = "Compare-Argument";
break;
case 3: /* abandon */
dap_dissector = dissect_dap_AbandonArgument;
dap_op_name = "Abandon-Argument";
break;
case 4: /* list */
dap_dissector = dissect_dap_ListArgument;
dap_op_name = "List-Argument";
break;
case 5: /* search */
dap_dissector = dissect_dap_SearchArgument;
dap_op_name = "Search-Argument";
break;
case 6: /* addEntry */
dap_dissector = dissect_dap_AddEntryArgument;
dap_op_name = "Add-Entry-Argument";
break;
case 7: /* removeEntry */
dap_dissector = dissect_dap_RemoveEntryArgument;
dap_op_name = "Remove-Entry-Argument";
break;
case 8: /* modifyEntry */
dap_dissector = dissect_dap_ModifyEntryArgument;
dap_op_name = "Modify-Entry-Argument";
break;
case 9: /* modifyDN */
dap_dissector = dissect_dap_ModifyDNArgument;
dap_op_name = "Modify-DN-Argument";
break;
default:
proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP opcode (%d)",
session->ros_op & ROS_OP_OPCODE_MASK);
break;
}
break;
case (ROS_OP_INVOKE | ROS_OP_RESULT): /* Return Result */
switch(session->ros_op & ROS_OP_OPCODE_MASK) {
case 1: /* read */
dap_dissector = dissect_dap_ReadResult;
dap_op_name = "Read-Result";
break;
case 2: /* compare */
dap_dissector = dissect_dap_CompareResult;
dap_op_name = "Compare-Result";
break;
case 3: /* abandon */
dap_dissector = dissect_dap_AbandonResult;
dap_op_name = "Abandon-Result";
break;
case 4: /* list */
dap_dissector = dissect_dap_ListResult;
dap_op_name = "List-Result";
break;
case 5: /* search */
dap_dissector = dissect_dap_SearchResult;
dap_op_name = "Search-Result";
break;
case 6: /* addEntry */
dap_dissector = dissect_dap_AddEntryResult;
dap_op_name = "Add-Entry-Result";
break;
case 7: /* removeEntry */
dap_dissector = dissect_dap_RemoveEntryResult;
dap_op_name = "Remove-Entry-Result";
break;
case 8: /* modifyEntry */
dap_dissector = dissect_dap_ModifyEntryResult;
dap_op_name = "Modify-Entry-Result";
break;
case 9: /* modifyDN */
dap_dissector = dissect_dap_ModifyDNResult;
dap_op_name = "Modify-DN-Result";
break;
default:
proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP opcode");
break;
}
break;
case (ROS_OP_INVOKE | ROS_OP_ERROR): /* Return Error */
switch(session->ros_op & ROS_OP_OPCODE_MASK) {
case 1: /* attributeError */
dap_dissector = dissect_dap_AttributeError;
dap_op_name = "Attribute-Error";
break;
case 2: /* nameError */
dap_dissector = dissect_dap_NameError;
dap_op_name = "Name-Error";
break;
case 3: /* serviceError */
dap_dissector = dissect_dap_ServiceError;
dap_op_name = "Service-Error";
break;
case 4: /* referral */
dap_dissector = dissect_dap_Referral;
dap_op_name = "Referral";
break;
case 5: /* abandoned */
dap_dissector = dissect_dap_Abandoned;
dap_op_name = "Abandoned";
break;
case 6: /* securityError */
dap_dissector = dissect_dap_SecurityError;
dap_op_name = "Security-Error";
break;
case 7: /* abandonFailed */
dap_dissector = dissect_dap_AbandonFailedError;
dap_op_name = "Abandon-Failed-Error";
break;
case 8: /* updateError */
dap_dissector = dissect_dap_UpdateError;
dap_op_name = "Update-Error";
break;
default:
proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP errcode");
break;
}
break;
default:
proto_tree_add_text(tree, tvb, offset, -1,"Unsupported DAP PDU");
return;
}
if(dap_dissector) {
if (check_col(pinfo->cinfo, COL_INFO))
col_set_str(pinfo->cinfo, COL_INFO, dap_op_name);
while (tvb_reported_length_remaining(tvb, offset) > 0){
old_offset=offset;
offset=(*dap_dissector)(FALSE, tvb, offset, &asn1_ctx, tree, -1);
if(offset == old_offset){
proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte DAP PDU");
offset = tvb_length(tvb);
break;
}
}
}
}
static const ros_info_t dap_ros_info = {
"DAP",
&proto_dap,
&ett_dap,
dap_opr_code_string_vals,
dap_opr_tab,
dap_err_code_string_vals,
dap_err_tab
};
/*--- proto_register_dap -------------------------------------------*/
@ -291,7 +112,6 @@ void proto_register_dap(void) {
/* Register protocol */
proto_dap = proto_register_protocol(PNAME, PSNAME, PFNAME);
register_dissector("dap", dissect_dap, proto_dap);
/* Register fields and subtrees */
proto_register_field_array(proto_dap, hf, array_length(hf));
@ -299,11 +119,7 @@ void proto_register_dap(void) {
/* Register our configuration options for DAP, particularly our port */
#ifdef PREFERENCE_GROUPING
dap_module = prefs_register_protocol_subtree("OSI/X.500", proto_dap, prefs_register_dap);
#else
dap_module = prefs_register_protocol(proto_dap, prefs_register_dap);
#endif
prefs_register_uint_preference(dap_module, "tcp.port", "DAP TCP Port",
"Set the port for DAP operations (if other"
@ -326,9 +142,7 @@ void proto_reg_handoff_dap(void) {
/* ABSTRACT SYNTAXES */
/* Register DAP with ROS (with no use of RTSE) */
if((handle = find_dissector("dap"))) {
register_ros_oid_dissector_handle("2.5.9.1", handle, 0, "id-as-directory-access", FALSE);
}
register_ros_protocol_info("2.5.9.1", &dap_ros_info, 0, "id-as-directory-access", FALSE);
/* remember the tpkt handler for change in preferences */
tpkt_handle = find_dissector("tpkt");

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-dap.h */
/* ../../tools/asn2wrs.py -b -e -X -T -p dap -c dap.cnf -s packet-dap-template dap.asn */
/* ../../tools/asn2wrs.py -b -e -X -T -L -p dap -c dap.cnf -s packet-dap-template dap.asn DirectoryAccessProtocol.asn */
/* Input file: packet-dap-template.h */
@ -66,7 +66,6 @@ extern const value_string dap_Referral_vals[];
extern const value_string dap_SecurityError_vals[];
extern const value_string dap_ServiceError_vals[];
extern const value_string dap_UpdateError_vals[];
int dissect_dap_CommonResults(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
int dissect_dap_ContextSelection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
int dissect_dap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
int dissect_dap_SecurityParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);