446 lines
14 KiB
Text
446 lines
14 KiB
Text
![]() |
-- Module MCS-PROTOCOL (T.125:02/1998)
|
||
|
MCS-PROTOCOL DEFINITIONS ::=
|
||
|
BEGIN
|
||
|
|
||
|
-- Part 1: Fundamental MCS types
|
||
|
ChannelId ::= INTEGER(0..65535) -- range is 16 bits
|
||
|
|
||
|
|
||
|
StaticChannelId ::= ChannelId(1..1000) -- those known permanently
|
||
|
|
||
|
|
||
|
DynamicChannelId ::= ChannelId(1001..65535) -- those created and deleted
|
||
|
|
||
|
|
||
|
UserId ::= DynamicChannelId -- created by Attach-User
|
||
|
|
||
|
-- deleted by Detach-User
|
||
|
PrivateChannelId ::=
|
||
|
DynamicChannelId -- created by Channel-Convene
|
||
|
|
||
|
-- deleted by Channel-Disband
|
||
|
AssignedChannelId ::=
|
||
|
DynamicChannelId -- created by Channel-Join zero
|
||
|
|
||
|
-- deleted by last Channel-Leave
|
||
|
TokenId ::= INTEGER(1..65535) -- all are known permanently
|
||
|
|
||
|
|
||
|
TokenStatus ::= ENUMERATED {
|
||
|
notInUse(0), selfGrabbed(1), otherGrabbed(2), selfInhibited(3),
|
||
|
otherInhibited(4), selfRecipient(5), selfGiving(6), otherGiving(7)}
|
||
|
|
||
|
DataPriority ::= ENUMERATED {top(0), high(1), medium(2), low(3)}
|
||
|
|
||
|
Segmentation ::= BIT STRING {begin(0), end(1)}(SIZE (2))
|
||
|
|
||
|
DomainParameters ::= SEQUENCE {
|
||
|
maxChannelIds INTEGER(0..MAX),
|
||
|
-- a limit on channel ids in use,
|
||
|
-- static + user id + private + assigned
|
||
|
maxUserIds INTEGER(0..MAX),
|
||
|
-- a sublimit on user id channels alone
|
||
|
maxTokenIds INTEGER(0..MAX),
|
||
|
-- a limit on token ids in use
|
||
|
-- grabbed + inhibited + giving + ungivable + given
|
||
|
numPriorities INTEGER(0..MAX),
|
||
|
-- the number of TCs in an MCS connection
|
||
|
minThroughput INTEGER(0..MAX),
|
||
|
-- the enforced number of octets per second
|
||
|
maxHeight INTEGER(0..MAX),
|
||
|
-- a limit on the height of a provider
|
||
|
maxMCSPDUsize INTEGER(0..MAX),
|
||
|
-- an octet limit on domain MCSPDUs
|
||
|
protocolVersion INTEGER(0..MAX)
|
||
|
}
|
||
|
|
||
|
-- Part 2: Connect provider
|
||
|
Connect-Initial ::= [APPLICATION 101] IMPLICIT SEQUENCE {
|
||
|
callingDomainSelector OCTET STRING,
|
||
|
calledDomainSelector OCTET STRING,
|
||
|
upwardFlag BOOLEAN,
|
||
|
-- TRUE if called provider is higher
|
||
|
targetParameters DomainParameters,
|
||
|
minimumParameters DomainParameters,
|
||
|
maximumParameters DomainParameters,
|
||
|
userData OCTET STRING
|
||
|
}
|
||
|
|
||
|
Connect-Response ::= [APPLICATION 102] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
calledConnectId INTEGER(0..MAX),
|
||
|
-- assigned by the called provider
|
||
|
-- to identify additional TCs of
|
||
|
-- the same MCS connection
|
||
|
domainParameters DomainParameters,
|
||
|
userData OCTET STRING
|
||
|
}
|
||
|
|
||
|
Connect-Additional ::= [APPLICATION 103] IMPLICIT SEQUENCE {
|
||
|
calledConnectId INTEGER(0..MAX),
|
||
|
dataPriority DataPriority
|
||
|
}
|
||
|
|
||
|
Connect-Result ::= [APPLICATION 104] IMPLICIT SEQUENCE {result Result
|
||
|
}
|
||
|
|
||
|
-- Part 3: Merge domain
|
||
|
PlumbDomainIndication ::= [APPLICATION 0] IMPLICIT SEQUENCE {
|
||
|
heightLimit INTEGER(0..MAX)
|
||
|
} -- a restriction on the MCSPDU receiver
|
||
|
|
||
|
ErectDomainRequest ::= [APPLICATION 1] IMPLICIT SEQUENCE {
|
||
|
subHeight INTEGER(0..MAX),
|
||
|
-- height in domain of the MCSPDU transmitter
|
||
|
subInterval INTEGER(0..MAX)
|
||
|
} -- its throughput enforcement interval in milliseconds
|
||
|
|
||
|
ChannelAttributes ::= CHOICE {
|
||
|
static [0] IMPLICIT SEQUENCE {channelId StaticChannelId}, -- joined is implicitly TRUE
|
||
|
userId
|
||
|
[1] IMPLICIT SEQUENCE {joined BOOLEAN,
|
||
|
-- TRUE if user is joined to its user id
|
||
|
userId UserId},
|
||
|
private
|
||
|
[2] IMPLICIT SEQUENCE {joined BOOLEAN,
|
||
|
-- TRUE if channel id is joined below
|
||
|
channelId PrivateChannelId,
|
||
|
manager UserId,
|
||
|
admitted SET OF UserId}, -- may span multiple MergeChannelsRequest
|
||
|
assigned [3] IMPLICIT SEQUENCE {channelId AssignedChannelId} -- joined is implicitly TRUE
|
||
|
}
|
||
|
|
||
|
MergeChannelsRequest ::= [APPLICATION 2] IMPLICIT SEQUENCE {
|
||
|
mergeChannels SET OF ChannelAttributes,
|
||
|
purgeChannelIds SET OF ChannelId
|
||
|
}
|
||
|
|
||
|
MergeChannelsConfirm ::= [APPLICATION 3] IMPLICIT SEQUENCE {
|
||
|
mergeChannels SET OF ChannelAttributes,
|
||
|
purgeChannelIds SET OF ChannelId
|
||
|
}
|
||
|
|
||
|
PurgeChannelsIndication ::= [APPLICATION 4] IMPLICIT SEQUENCE {
|
||
|
detachUserIds SET OF UserId,
|
||
|
-- purge user id channels
|
||
|
purgeChannelIds SET OF ChannelId
|
||
|
} -- purge other channels
|
||
|
|
||
|
TokenAttributes ::= CHOICE {
|
||
|
grabbed [0] IMPLICIT SEQUENCE {tokenId TokenId,
|
||
|
grabber UserId},
|
||
|
inhibited
|
||
|
[1] IMPLICIT SEQUENCE {tokenId TokenId,
|
||
|
inhibitors SET OF UserId}, -- may span multiple MergeTokensRequest
|
||
|
giving
|
||
|
[2] IMPLICIT SEQUENCE {tokenId TokenId,
|
||
|
grabber UserId,
|
||
|
recipient UserId},
|
||
|
ungivable [3] IMPLICIT SEQUENCE {tokenId TokenId,
|
||
|
grabber UserId}, -- recipient has since detached
|
||
|
given [4] IMPLICIT SEQUENCE {tokenId TokenId,
|
||
|
recipient UserId} -- grabber released or detached
|
||
|
}
|
||
|
|
||
|
MergeTokensRequest ::= [APPLICATION 5] IMPLICIT SEQUENCE {
|
||
|
mergeTokens SET OF TokenAttributes,
|
||
|
purgeTokenIds SET OF TokenId
|
||
|
}
|
||
|
|
||
|
MergeTokensConfirm ::= [APPLICATION 6] IMPLICIT SEQUENCE {
|
||
|
mergeTokens SET OF TokenAttributes,
|
||
|
purgeTokenIds SET OF TokenId
|
||
|
}
|
||
|
|
||
|
PurgeTokensIndication ::= [APPLICATION 7] IMPLICIT SEQUENCE {
|
||
|
purgeTokenIds SET OF TokenId
|
||
|
}
|
||
|
|
||
|
-- Part 4: Disconnect provider
|
||
|
DisconnectProviderUltimatum ::= [APPLICATION 8] IMPLICIT SEQUENCE {
|
||
|
reason Reason
|
||
|
}
|
||
|
|
||
|
RejectMCSPDUUltimatum ::= [APPLICATION 9] IMPLICIT SEQUENCE {
|
||
|
diagnostic Diagnostic,
|
||
|
initialOctets OCTET STRING
|
||
|
}
|
||
|
|
||
|
-- Part 5: Attach/Detach user
|
||
|
AttachUserRequest ::= [APPLICATION 10] IMPLICIT SEQUENCE {
|
||
|
}
|
||
|
|
||
|
AttachUserConfirm ::= [APPLICATION 11] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId OPTIONAL
|
||
|
}
|
||
|
|
||
|
DetachUserRequest ::= [APPLICATION 12] IMPLICIT SEQUENCE {
|
||
|
reason Reason,
|
||
|
userIds SET OF UserId
|
||
|
}
|
||
|
|
||
|
DetachUserIndication ::= [APPLICATION 13] IMPLICIT SEQUENCE {
|
||
|
reason Reason,
|
||
|
userIds SET OF UserId
|
||
|
}
|
||
|
|
||
|
-- Part 6: Channel management
|
||
|
ChannelJoinRequest ::= [APPLICATION 14] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId ChannelId
|
||
|
} -- may be zero
|
||
|
|
||
|
ChannelJoinConfirm ::= [APPLICATION 15] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId,
|
||
|
requested ChannelId,
|
||
|
-- may be zero
|
||
|
channelId ChannelId OPTIONAL
|
||
|
}
|
||
|
|
||
|
ChannelLeaveRequest ::= [APPLICATION 16] IMPLICIT SEQUENCE {
|
||
|
channelIds SET OF ChannelId
|
||
|
}
|
||
|
|
||
|
ChannelConveneRequest ::= [APPLICATION 17] IMPLICIT SEQUENCE {initiator UserId
|
||
|
}
|
||
|
|
||
|
ChannelConveneConfirm ::= [APPLICATION 18] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId,
|
||
|
channelId PrivateChannelId OPTIONAL
|
||
|
}
|
||
|
|
||
|
ChannelDisbandRequest ::= [APPLICATION 19] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId PrivateChannelId
|
||
|
}
|
||
|
|
||
|
ChannelDisbandIndication ::= [APPLICATION 20] IMPLICIT SEQUENCE {
|
||
|
channelId PrivateChannelId
|
||
|
}
|
||
|
|
||
|
ChannelAdmitRequest ::= [APPLICATION 21] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId PrivateChannelId,
|
||
|
userIds SET OF UserId
|
||
|
}
|
||
|
|
||
|
ChannelAdmitIndication ::= [APPLICATION 22] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId PrivateChannelId,
|
||
|
userIds SET OF UserId
|
||
|
}
|
||
|
|
||
|
ChannelExpelRequest ::= [APPLICATION 23] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId PrivateChannelId,
|
||
|
userIds SET OF UserId
|
||
|
}
|
||
|
|
||
|
ChannelExpelIndication ::= [APPLICATION 24] IMPLICIT SEQUENCE {
|
||
|
channelId PrivateChannelId,
|
||
|
userIds SET OF UserId
|
||
|
}
|
||
|
|
||
|
-- Part 7: Data transfer
|
||
|
SendDataRequest ::= [APPLICATION 25] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId ChannelId,
|
||
|
dataPriority DataPriority,
|
||
|
segmentation Segmentation,
|
||
|
userData OCTET STRING
|
||
|
}
|
||
|
|
||
|
SendDataIndication ::= [APPLICATION 26] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId ChannelId,
|
||
|
dataPriority DataPriority,
|
||
|
segmentation Segmentation,
|
||
|
userData OCTET STRING
|
||
|
}
|
||
|
|
||
|
UniformSendDataRequest ::= [APPLICATION 27] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId ChannelId,
|
||
|
dataPriority DataPriority,
|
||
|
segmentation Segmentation,
|
||
|
userData OCTET STRING
|
||
|
}
|
||
|
|
||
|
UniformSendDataIndication ::= [APPLICATION 28] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
channelId ChannelId,
|
||
|
dataPriority DataPriority,
|
||
|
segmentation Segmentation,
|
||
|
userData OCTET STRING
|
||
|
}
|
||
|
|
||
|
-- Part 8: Token management
|
||
|
TokenGrabRequest ::= [APPLICATION 29] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenGrabConfirm ::= [APPLICATION 30] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
tokenStatus TokenStatus
|
||
|
}
|
||
|
|
||
|
TokenInhibitRequest ::= [APPLICATION 31] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenInhibitConfirm ::= [APPLICATION 32] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
tokenStatus TokenStatus
|
||
|
}
|
||
|
|
||
|
TokenGiveRequest ::= [APPLICATION 33] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
recipient UserId
|
||
|
}
|
||
|
|
||
|
TokenGiveIndication ::= [APPLICATION 34] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
recipient UserId
|
||
|
}
|
||
|
|
||
|
TokenGiveResponse ::= [APPLICATION 35] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
recipient UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenGiveConfirm ::= [APPLICATION 36] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
tokenStatus TokenStatus
|
||
|
}
|
||
|
|
||
|
TokenPleaseRequest ::= [APPLICATION 37] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenPleaseIndication ::= [APPLICATION 38] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenReleaseRequest ::= [APPLICATION 39] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenReleaseConfirm ::= [APPLICATION 40] IMPLICIT SEQUENCE {
|
||
|
result Result,
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
tokenStatus TokenStatus
|
||
|
}
|
||
|
|
||
|
TokenTestRequest ::= [APPLICATION 41] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId
|
||
|
}
|
||
|
|
||
|
TokenTestConfirm ::= [APPLICATION 42] IMPLICIT SEQUENCE {
|
||
|
initiator UserId,
|
||
|
tokenId TokenId,
|
||
|
tokenStatus TokenStatus
|
||
|
}
|
||
|
|
||
|
-- Part 9: Status codes
|
||
|
-- in DisconnectProviderUltimatum, DetachUserRequest, DetachUserIndication
|
||
|
Reason ::= ENUMERATED {
|
||
|
rn-domain-disconnected(0), rn-provider-initiated(1), rn-token-purged(2),
|
||
|
rn-user-requested(3), rn-channel-purged(4)}
|
||
|
|
||
|
-- in Connect, response, confirm
|
||
|
Result ::= ENUMERATED {
|
||
|
rt-successful(0), rt-domain-merging(1), rt-domain-not-hierarchical(2),
|
||
|
rt-no-such-channel(3), rt-no-such-domain(4), rt-no-such-user(5),
|
||
|
rt-not-admitted(6), rt-other-user-id(7), rt-parameters-unacceptable(8),
|
||
|
rt-token-not-available(9), rt-token-not-possessed(10),
|
||
|
rt-too-many-channels(11), rt-too-many-tokens(12), rt-too-many-users(13),
|
||
|
rt-unspecified-failure(14), rt-user-rejected(15)}
|
||
|
|
||
|
-- in RejectMCSPDUUltimatum
|
||
|
Diagnostic ::= ENUMERATED {
|
||
|
dc-inconsistent-merge(0), dc-forbidden-PDU-downward(1),
|
||
|
dc-forbidden-PDU-upward(2), dc-invalid-BER-encoding(3),
|
||
|
dc-invalid-PER-encoding(4), dc-misrouted-user(5), dc-unrequested-confirm(6),
|
||
|
dc-wrong-transport-priority(7), dc-channel-id-conflict(8),
|
||
|
dc-token-id-conflict(9), dc-not-user-id-channel(10),
|
||
|
dc-too-many-channels(11), dc-too-many-tokens(12), dc-too-many-users(13)
|
||
|
}
|
||
|
|
||
|
-- Part 10: MCSPDU repertoire
|
||
|
ConnectMCSPDU ::= CHOICE {
|
||
|
connect-initial Connect-Initial,
|
||
|
connect-response Connect-Response,
|
||
|
connect-additional Connect-Additional,
|
||
|
connect-result Connect-Result
|
||
|
}
|
||
|
|
||
|
DomainMCSPDU ::= CHOICE {
|
||
|
plumbDomainIndication PlumbDomainIndication,
|
||
|
erectDomainRequest ErectDomainRequest,
|
||
|
mergeChannelsRequest MergeChannelsRequest,
|
||
|
mergeChannelsConfirm MergeChannelsConfirm,
|
||
|
purgeChannelsIndication PurgeChannelsIndication,
|
||
|
mergeTokensRequest MergeTokensRequest,
|
||
|
mergeTokensConfirm MergeTokensConfirm,
|
||
|
purgeTokensIndication PurgeTokensIndication,
|
||
|
disconnectProviderUltimatum DisconnectProviderUltimatum,
|
||
|
rejectMCSPDUUltimatum RejectMCSPDUUltimatum,
|
||
|
attachUserRequest AttachUserRequest,
|
||
|
attachUserConfirm AttachUserConfirm,
|
||
|
detachUserRequest DetachUserRequest,
|
||
|
detachUserIndication DetachUserIndication,
|
||
|
channelJoinRequest ChannelJoinRequest,
|
||
|
channelJoinConfirm ChannelJoinConfirm,
|
||
|
channelLeaveRequest ChannelLeaveRequest,
|
||
|
channelConveneRequest ChannelConveneRequest,
|
||
|
channelConveneConfirm ChannelConveneConfirm,
|
||
|
channelDisbandRequest ChannelDisbandRequest,
|
||
|
channelDisbandIndication ChannelDisbandIndication,
|
||
|
channelAdmitRequest ChannelAdmitRequest,
|
||
|
channelAdmitIndication ChannelAdmitIndication,
|
||
|
channelExpelRequest ChannelExpelRequest,
|
||
|
channelExpelIndication ChannelExpelIndication,
|
||
|
sendDataRequest SendDataRequest,
|
||
|
sendDataIndication SendDataIndication,
|
||
|
uniformSendDataRequest UniformSendDataRequest,
|
||
|
uniformSendDataIndication UniformSendDataIndication,
|
||
|
tokenGrabRequest TokenGrabRequest,
|
||
|
tokenGrabConfirm TokenGrabConfirm,
|
||
|
tokenInhibitRequest TokenInhibitRequest,
|
||
|
tokenInhibitConfirm TokenInhibitConfirm,
|
||
|
tokenGiveRequest TokenGiveRequest,
|
||
|
tokenGiveIndication TokenGiveIndication,
|
||
|
tokenGiveResponse TokenGiveResponse,
|
||
|
tokenGiveConfirm TokenGiveConfirm,
|
||
|
tokenPleaseRequest TokenPleaseRequest,
|
||
|
tokenPleaseIndication TokenPleaseIndication,
|
||
|
tokenReleaseRequest TokenReleaseRequest,
|
||
|
tokenReleaseConfirm TokenReleaseConfirm,
|
||
|
tokenTestRequest TokenTestRequest,
|
||
|
tokenTestConfirm TokenTestConfirm
|
||
|
}
|
||
|
|
||
|
END
|
||
|
|
||
|
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
|
||
|
|