FreeRDP/libfreerdp-asn1/mcs.asn1
2011-06-30 18:41:09 -04:00

754 lines
16 KiB
Groff

MCS-PROTOCOL-3 DEFINITIONS AUTOMATIC TAGS::=
BEGIN
-- Part 1: Fundamental MCS types
H221NonStandardIdentifier ::= OCTET STRING (SIZE (4..255))
-- First four octets shall be country
-- code and Manufacturer code, assigned
-- as specified in Annex A/H.221 for
-- NS-cap and NS-comm
Key ::= CHOICE -- Identifier of a standard or non-standard object
{
object OBJECT IDENTIFIER,
h221NonStandard H221NonStandardIdentifier
}
NonStandardParameter ::= SEQUENCE
{
key Key,
data OCTET STRING
}
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 ::= CHOICE
{
notInUse NULL,
selfGrabbed NULL,
otherGrabbed NULL,
selfInhibited NULL,
otherInhibited NULL,
selfRecipient NULL,
selfGiving NULL,
otherGiving NULL,
...
}
DataPriority ::= CHOICE
{
top NULL,
high NULL,
medium NULL,
low NULL,
...
}
Segmentation ::= BIT STRING
{
begin (0),
end (1)
} (SIZE (2))
-- Part 2: Extended parameter
ExtendedParameters ::= SEQUENCE
{
unreliableDataSupported BOOLEAN,
domainReferenceID INTEGER (0 .. 65535),
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ExtendedParameterPropose ::= SEQUENCE
{
targetExtendedParameters ExtendedParameters,
minimumExtendedParameters ExtendedParameters,
maximumExtendedParameters ExtendedParameters,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ExtendedParameterAccept ::= SEQUENCE
{
extendedParameters ExtendedParameters,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 3: Merge domain
PlumbDomainIndication ::= SEQUENCE
{
heightLimit INTEGER (0..MAX),
-- a restriction on the MCSPDU receiver
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ErectDomainRequest ::= SEQUENCE
{
subHeight INTEGER (0..MAX),
-- height in domain of the MCSPDU transmitter
subInterval INTEGER (0..MAX),
-- its throughput enforcement interval in milliseconds
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelAttributes ::= CHOICE
{
static SEQUENCE
{
channelId StaticChannelId,
-- joined is implicitely TRUE
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
userId SEQUENCE
{
joined BOOLEAN,
-- TRUE if user is joined to its user id
userId UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
private SEQUENCE
{
joined BOOLEAN,
-- TRUE if channel id is joined below
channelId PrivateChannelId,
manager UserId,
admitted SET OF UserId,
-- may span multiple MergeChannelsRequest
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
assigned SEQUENCE
{
channelId AssignedChannelId,
-- joined is implicitely TRUE
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
...
}
MergeChannelsRequest ::= SEQUENCE
{
mergeChannels SET OF ChannelAttributes,
purgeChannelIds SET OF ChannelId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
MergeChannelsConfirm ::= SEQUENCE
{
mergeChannels SET OF ChannelAttributes,
purgeChannelIds SET OF ChannelId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
PurgeChannelsIndication ::= SEQUENCE
{
detachUserIds SET OF UserId,
-- purge user id channels
purgeChannelIds SET OF ChannelId,
-- purge other channels
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenAttributes ::= CHOICE
{
grabbed SEQUENCE
{
tokenId TokenId,
grabber UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
inhibited SEQUENCE
{
tokenId TokenId,
inhibitors SET OF UserId,
-- may span multiple MergeTokensRequest
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
giving SEQUENCE
{
tokenId TokenId,
grabber UserId,
recipient UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
ungivable SEQUENCE
{
tokenId TokenId,
grabber UserId,
-- recipient has since detached
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
},
given SEQUENCE
{
tokenId TokenId,
recipient UserId,
-- grabber released or detached
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
}
MergeTokensRequest ::= SEQUENCE
{
mergeTokens SET OF TokenAttributes,
purgeTokenIds SET OF TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
MergeTokensConfirm ::= SEQUENCE
{
mergeTokens SET OF TokenAttributes,
purgeTokenIds SET OF TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
PurgeTokensIndication ::= SEQUENCE
{
purgeTokenIds SET OF TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 4: Disconnect provider
DisconnectProviderUltimatum ::= SEQUENCE
{
reason Reason,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
RejectMCSPDUUltimatum ::= SEQUENCE
{
diagnostic Diagnostic,
initialOctets OCTET STRING,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 5: Attach/Detach user
AttachUserRequest ::= SEQUENCE
{
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
AttachUserConfirm ::= SEQUENCE
{
result Result,
initiator UserId OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
DetachUserRequest ::= SEQUENCE
{
reason Reason,
userIds SET OF UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
DetachUserIndication ::= SEQUENCE
{
reason Reason,
userIds SET OF UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 6: Channel management
ChannelJoinRequest ::= SEQUENCE
{
initiator UserId,
channelId ChannelId, -- may be zero
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelJoinConfirm ::= SEQUENCE
{
result Result,
initiator UserId,
requested ChannelId, -- may be zero
channelId ChannelId OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelLeaveRequest ::= SEQUENCE
{
channelIds SET OF ChannelId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelConveneRequest ::= SEQUENCE
{
initiator UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelConveneConfirm ::= SEQUENCE
{
result Result,
initiator UserId,
channelId PrivateChannelId OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelDisbandRequest ::= SEQUENCE
{
initiator UserId,
channelId PrivateChannelId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelDisbandIndication ::= SEQUENCE
{
channelId PrivateChannelId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelAdmitRequest ::= SEQUENCE
{
initiator UserId,
channelId PrivateChannelId,
userIds SET OF UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelAdmitIndication ::= SEQUENCE
{
initiator UserId,
channelId PrivateChannelId,
userIds SET OF UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelExpelRequest ::= SEQUENCE
{
initiator UserId,
channelId PrivateChannelId,
userIds SET OF UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
ChannelExpelIndication ::= SEQUENCE
{
channelId PrivateChannelId,
userIds SET OF UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 7: Data transfer
SendDataRequest ::= SEQUENCE
{
initiator UserId,
channelId ChannelId,
reliability BOOLEAN,
domainReferenceID INTEGER (0 .. 65535) OPTIONAL,
dataPriority DataPriority,
segmentation Segmentation,
userData OCTET STRING,
totalDataSize INTEGER OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
SendDataIndication ::= SEQUENCE
{
initiator UserId,
channelId ChannelId,
reliability BOOLEAN,
domainReferenceID INTEGER (0 .. 65535) OPTIONAL,
dataPriority DataPriority,
segmentation Segmentation,
userData OCTET STRING,
totalDataSize INTEGER OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
UniformSendDataRequest ::= SEQUENCE
{
initiator UserId,
channelId ChannelId,
reliability BOOLEAN,
domainReferenceID INTEGER (0 .. 65535) OPTIONAL,
dataPriority DataPriority,
segmentation Segmentation,
userData OCTET STRING,
totalDataSize INTEGER OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
UniformSendDataIndication ::= SEQUENCE
{
initiator UserId,
channelId ChannelId,
reliability BOOLEAN,
domainReferenceID INTEGER (0 .. 65535) OPTIONAL,
dataPriority DataPriority,
segmentation Segmentation,
userData OCTET STRING,
totalDataSize INTEGER OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 8: Token management
TokenGrabRequest ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenGrabConfirm ::= SEQUENCE
{
result Result,
initiator UserId,
tokenId TokenId,
tokenStatus TokenStatus,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenInhibitRequest ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenInhibitConfirm ::= SEQUENCE
{
result Result,
initiator UserId,
tokenId TokenId,
tokenStatus TokenStatus,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenGiveRequest ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
recipient UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenGiveIndication ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
recipient UserId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenGiveResponse ::= SEQUENCE
{
result Result,
recipient UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenGiveConfirm ::= SEQUENCE
{
result Result,
initiator UserId,
tokenId TokenId,
tokenStatus TokenStatus,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenPleaseRequest ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenPleaseIndication ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenReleaseRequest ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenReleaseConfirm ::= SEQUENCE
{
result Result,
initiator UserId,
tokenId TokenId,
tokenStatus TokenStatus,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenTestRequest ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
TokenTestConfirm ::= SEQUENCE
{
initiator UserId,
tokenId TokenId,
tokenStatus TokenStatus,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 9: Capabilities notification
CapabilityID ::= CHOICE
{
standardID INTEGER (0 .. 65535),
nonstandardID Key
}
CapabilityClass ::= CHOICE
{
null NULL,
unsignedMin INTEGER (0 .. MAX),
unsignedMax INTEGER (0 .. MAX)
}
ParticipationIndicator ::= CHOICE
{
global NULL,
partial INTEGER (1 .. 2)
}
RequestCapability ::= SEQUENCE
{
capabilityID CapabilityID,
capabilityClass CapabilityClass,
participationIndicator ParticipationIndicator,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
SeqOfRequestCapabilities ::= SEQUENCE OF RequestCapability
IndicationCapability ::= SEQUENCE
{
capabilityID CapabilityID,
capabilityClass CapabilityClass,
summitProviderSupported BOOLEAN,
intermediateNodeSupported BOOLEAN,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
SeqOfIndicationCapabilities ::= SEQUENCE OF IndicationCapability
CapabilitiesNotificationRequest ::= SEQUENCE
{
v2NodePresent BOOLEAN,
addList SeqOfRequestCapabilities OPTIONAL,
removeList SeqOfRequestCapabilities OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
CapabilitiesNotificationIndication ::= SEQUENCE
{
v2NodePresent BOOLEAN,
addList SeqOfIndicationCapabilities OPTIONAL,
removeList SeqOfIndicationCapabilities OPTIONAL,
nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
...
}
-- Part 10: Status codes
Reason ::= CHOICE
{
rn-domain-disconnected NULL,
rn-provider-initiated NULL,
rn-token-purged NULL,
rn-user-requested NULL,
rn-channel-purged NULL,
...
}
Result ::= CHOICE
{
rt-successful NULL,
rt-domain-merging NULL,
rt-domain-not-hierarchical NULL,
rt-no-such-channel NULL,
rt-no-such-domain NULL,
rt-no-such-user NULL,
rt-not-admitted NULL,
rt-other-user-id NULL,
rt-parameters-unacceptable NULL,
rt-token-not-available NULL,
rt-token-not-possessed NULL,
rt-too-many-channels NULL,
rt-too-many-tokens NULL,
rt-too-many-users NULL,
rt-unspecified-failure NULL,
rt-user-rejected NULL,
...
}
Diagnostic ::= CHOICE
{
dc-inconsistent-merge NULL,
dc-forbidden-PDU-downward NULL,
dc-forbidden-PDU-upward NULL,
dc-invalid-BER-encoding NULL,
dc-invalid-PER-encoding NULL,
dc-misrouted-user NULL,
dc-unrequested-confirm NULL,
dc-wrong-transport-priority NULL,
dc-channel-id-conflict NULL,
dc-token-id-conflict NULL,
dc-not-user-id-channel NULL,
dc-too-many-channels NULL,
dc-too-many-tokens NULL,
dc-too-many-users NULL,
...
}
-- Part 11: MCSPDU repertoire
NonStandardPDU ::= SEQUENCE
{
data NonStandardParameter,
...
}
ExtendedParameterMCSPDU ::= CHOICE
{
extendedParameterPropose ExtendedParameterPropose,
extendedParameterAccept ExtendedParameterAccept,
nonStandard NonStandardPDU,
...
}
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,
nonStandard NonStandardPDU,
...
}
END