--#comment "Copyright (C) Microsoft Corporation, 1995-1999. All rights reserved."-- --#comment "ASN.1 definitions for Generic Conference Control (GCC)"-- --#SS.basic slinked-- -- set of and sequence of w/o size constraint --#SS.sized slinked-- -- set of and sequence of w/ size constraint GCC-PROTOCOL DEFINITIONS AUTOMATIC TAGS ::= BEGIN -- Export all symbols -- ========================================================================== -- Part 1: Elements of which messages are composed -- ========================================================================== ChannelID ::= INTEGER (1..65535) StaticChannelID ::= INTEGER (1..1000) -- Those assigned by specifications DynamicChannelID ::= INTEGER (1001..65535)-- Those created and deleted by MCS UserID ::= DynamicChannelID TokenID ::= INTEGER (1..65535) StaticTokenID ::= INTEGER (1..16383) -- Those assigned by specifications DynamicTokenID ::= INTEGER (16384..65535) -- Those assigned by the registry Time ::= INTEGER (-2147483648..2147483647) -- Time in seconds Handle ::= INTEGER (0..4294967295) -- 32-bit value H221NonStandardIdentifier ::= OCTET STRING (SIZE (4..255)) -- First four octets shall be country code and -- Manufacturer code, assigned as specified in -- H.221 Annex A for NS-cap and NS-comm Key ::= CHOICE -- Identifier of a standard or non-standard object { object OBJECT IDENTIFIER, h221NonStandard H221NonStandardIdentifier --#field "h221_non_standard"-- } t124identifier Key ::= object : {itu-t recommendation t(20) 124 version(0) 1} NonStandardParameter ::= SEQUENCE { key Key, data OCTET STRING } TextString ::= BMPString (SIZE (0..255)) -- Basic Multilingual Plane of ISO/IEC 10646-1 (Unicode) simpleTextFirstCharacter UniversalString ::= {0, 0, 0, 0} simpleTextLastCharacter UniversalString ::= {0, 0, 0, 255} SimpleTextString ::= BMPString (SIZE (0..255)) (FROM (simpleTextFirstCharacter..simpleTextLastCharacter)) SimpleNumericString ::= NumericString (SIZE (1..255)) (FROM ("0123456789")) DialingString ::= NumericString (SIZE (1..16)) (FROM ("0123456789")) SubAddressString ::= NumericString (SIZE (1..40)) (FROM ("0123456789")) ExtraDialingString ::= TextString (SIZE (1..255)) (FROM ("0123456789#*,")) UserData ::= SET --#type "PSetOfUserData"-- --#value "user_data_element"-- OF SEQUENCE { key Key, value OCTET STRING --#field "user_data_field"-- OPTIONAL } Password ::= SEQUENCE { numeric SimpleNumericString, text SimpleTextString --#field "password_text"-- OPTIONAL, ... } PasswordSelector ::= CHOICE { numeric SimpleNumericString --#field "password_selector_numeric"--, text SimpleTextString --#field "password_selector_text"--, ... } ChallengeResponseItem ::= CHOICE { passwordString PasswordSelector --#field "password_string"--, responseData UserData --#field "set_of_response_data"--, ... } ChallengeResponseAlgorithm ::= CHOICE { passwordInTheClear NULL --#field "algorithm_clear_password"--, nonStandardAlgorithm NonStandardParameter --#field "non_standard_algorithm"--, ... } ChallengeItem ::= SEQUENCE { responseAlgorithm ChallengeResponseAlgorithm --#field "response_algorithm"--, challengeData UserData --#field "set_of_challenge_data"--, ... } ChallengeRequest ::= SEQUENCE { challenge-tag INTEGER, challenge-set SET --#type "SetOfChallengeItems"-- --#field "set_of_challenge_items"-- OF ChallengeItem, -- Set of algorithms offered for response ... } ChallengeResponse ::= SEQUENCE { challengeTag INTEGER --#field "challenge_tag"--, responseAlgorithm ChallengeResponseAlgorithm --#field "response_algorithm"--, -- Specific algorithm selected from the set of -- items presented in the ChallengeRequest responseItem ChallengeResponseItem --#field "response_item"--, ... } PasswordChallengeRequestResponse ::= CHOICE { passwordInTheClear PasswordSelector --#field "challenge_clear_password"--, challengeRequestResponse SEQUENCE { challengeRequest ChallengeRequest --#field "challenge_request"-- OPTIONAL, challengeResponse ChallengeResponse --#field "challenge_response"-- OPTIONAL, ... } --#type "ChallengeRequestResponse"-- --#field "challenge_request_response"--, ... } --#type "PasswordChallengeRequestResponse"-- ConferenceName ::= SEQUENCE { numeric SimpleNumericString, text SimpleTextString --#field "conference_name_text"-- OPTIONAL, ... } ConferenceNameSelector ::= CHOICE { numeric SimpleNumericString --#field "name_selector_numeric"--, text SimpleTextString --#field "name_selector_text"--, ... } ConferenceNameModifier ::= SimpleNumericString Privilege ::= ENUMERATED { terminate (0), ejectUser (1), add (2), lockUnlock (3), transfer (4), ... } TerminationMethod ::= ENUMERATED { automatic (0), manual (1), ... } NetworkAddress ::= SEQUENCE --#type "PSetOfNetworkAddresses"-- (SIZE (1..64)) OF CHOICE -- Listed in order of use { aggregatedChannel SEQUENCE { transferModes SEQUENCE -- One or more { speech BOOLEAN, voice-band BOOLEAN, digital-56k BOOLEAN, digital-64k BOOLEAN, digital-128k BOOLEAN, digital-192k BOOLEAN, digital-256k BOOLEAN, digital-320k BOOLEAN, digital-384k BOOLEAN, digital-512k BOOLEAN, digital-768k BOOLEAN, digital-1152k BOOLEAN, digital-1472k BOOLEAN, digital-1536k BOOLEAN, digital-1920k BOOLEAN, packet-mode BOOLEAN, frame-mode BOOLEAN, atm BOOLEAN, ... } --#type "TransferModes"-- --#field "transfer_modes"--, internationalNumber DialingString --#field "international_number"--, subAddress SubAddressString --#field "sub_address"-- OPTIONAL, extraDialing ExtraDialingString --#field "extra_dialing_string"-- OPTIONAL, highLayerCompatibility SEQUENCE { telephony3kHz BOOLEAN, telephony7kHz BOOLEAN, videotelephony BOOLEAN, videoconference BOOLEAN, audiographic BOOLEAN, audiovisual BOOLEAN, multimedia BOOLEAN, ... } --#type "HighLayerCompatibility"-- --#field "high_layer_compatibility"-- OPTIONAL, ... } --#type "AggregateChannel"-- --#field "aggregated_channel"--, transportConnection SEQUENCE { nsapAddress OCTET STRING (SIZE (1..20)) --#type "NsapAddress"-- --#field "nsap_address"--, transportSelector OCTET STRING --#type "TransportSelector"-- --#field "transport_selector"-- OPTIONAL } --#type "TransportConnectionType"-- --#field "transport_connection"--, nonStandard NonStandardParameter --#field "address_non_standard"--, ... } --#type "NetworkAddress"-- NodeType ::= ENUMERATED { terminal (0), multiportTerminal (1), mcu (2), ... } NodeProperties ::= SEQUENCE { managementDevice BOOLEAN --#field "device_is_manager"--, peripheralDevice BOOLEAN --#field "device_is_peripheral"--, ... } AsymmetryIndicator ::= CHOICE { callingNode NULL --#field "calling_node"--, calledNode NULL --#field "called_node"--, unknown INTEGER (0..4294967295) -- Uniformly distributed 32-bit random number } AlternativeNodeID ::= CHOICE { h243NodeID OCTET STRING --#type "H243NodeID"-- --#field "h243_node_id"#-- (SIZE (2)), ... } ConferenceDescriptor ::= SEQUENCE { conferenceName ConferenceName --#field "conference_name"--, conferenceNameModifier ConferenceNameModifier --#field "conference_name_modifier"-- OPTIONAL, conferenceDescription TextString --#field "conference_description"-- OPTIONAL, lockedConference BOOLEAN --#field "conference_is_locked"--, passwordInTheClearRequired BOOLEAN --#field "clear_password_required"--, networkAddress NetworkAddress --#field "descriptor_net_address"-- OPTIONAL, ... } NodeRecord ::= SEQUENCE { superiorNode UserID --#field "superior_node"-- OPTIONAL, -- Not present only for the Top GCC Provider nodeType NodeType --#field "node_type"-- , nodeProperties NodeProperties --#field "node_properties"--, nodeName TextString --#field "node_name"-- OPTIONAL, participantsList SEQUENCE --#type "ParticipantsList"-- --#field "participants_list"-- OF TextString OPTIONAL, siteInformation TextString --#field "site_information"-- OPTIONAL, networkAddress NetworkAddress --#field "record_net_address"-- OPTIONAL, alternativeNodeID AlternativeNodeID --#field "alternative_node_id"-- OPTIONAL, userData UserData --#field "record_user_data"-- OPTIONAL, ... } SessionKey ::= SEQUENCE { applicationProtocolKey Key --#field "application_protocol_key"--, sessionID ChannelID --#field "session_id"-- OPTIONAL } ChannelType ::= ENUMERATED { static (0), dynamicMulticast (1), dynamicPrivate (2), dynamicUserId (3) } ApplicationRecord ::= SEQUENCE { applicationActive BOOLEAN --#field "application_is_active"--, -- Active/Inactive flag conductingOperationCapable BOOLEAN --#field "is_conducting_capable"--, -- Maximum one per node per session startupChannel ChannelType --#field "record_startup_channel"-- OPTIONAL, applicationUserID UserID --#field "application_user_id"-- OPTIONAL, -- User ID assigned to the Application Protocol Entity nonCollapsingCapabilities SET --#type "SetOfNonCollapsingCapabilities"-- --#field "non_collapsing_capabilities"-- OF SEQUENCE { capabilityID CapabilityID --#field "capability_id"--, applicationData OCTET STRING --#field "application_data"--OPTIONAL } OPTIONAL, ... } CapabilityID ::= CHOICE { standard INTEGER (0..65535), -- Assigned by Application Protocol specifications nonStandard Key --#field "capability_non_standard"-- } CapabilityClass ::= CHOICE { logical NULL, unsignedMin INTEGER (0..MAX) --#field "unsigned_minimum"--, -- Capability value unsignedMax INTEGER (0..MAX) --#field "unsigned_maximum"--, -- Capability value ... } EntityID ::= INTEGER (0..65535) ApplicationInvokeSpecifier ::= SEQUENCE { sessionKey SessionKey --#field "session_key"--, expectedCapabilitySet SET --#type "SetOfExpectedCapabilities"-- --#field "expected_capability_set"-- OF SEQUENCE { capabilityID CapabilityID --#field "capability_id"--, capabilityClass CapabilityClass --#field "capability_class"--, ... } OPTIONAL, startupChannel ChannelType --#field "invoke_startup_channel"-- OPTIONAL, mandatoryFlag BOOLEAN --#field "invoke_is_mandatory"--, -- TRUE indicates required Application Protocol Entity ... } RegistryKey ::= SEQUENCE { sessionKey SessionKey --#field "session_key"--, resourceID OCTET STRING --#field "resource_id"-- (SIZE (0..64)) } RegistryItem ::= CHOICE { channelID DynamicChannelID --#field "channel_id"--, tokenID DynamicTokenID --#field "token_id"--, parameter OCTET STRING --#type "RegistryItemParameter"-- (SIZE (0..64)), vacant NULL, ... } RegistryEntryOwner ::= CHOICE { owned SEQUENCE { nodeID UserID --#field "node_id"--, -- Node ID of the owning node entityID EntityID --#field "entity_id"-- -- Entity ID of the owning } --#type "RegistryEntryOwnerOwned"--, -- Appliction Protocol Entity notOwned NULL --#field "not_owned"-- -- There is no current owner } RegistryModificationRights ::= ENUMERATED { owner (0), session (1), public (2) } -- ========================================================================== -- Part 2: PDU Messages -- ========================================================================== UserIDIndication ::= SEQUENCE { tag INTEGER, ... } -- DataBeam modification: pull out SetOfPrivileges structure SetOfPrivileges ::= SET --#type "PSetOfPrivileges"-- OF Privilege ConferenceCreateRequest ::= SEQUENCE { -- MCS-Connect-Provider request user data conferenceName ConferenceName --#field "conference_name"--, convenerPassword Password --#field "ccrq_convener_password"-- OPTIONAL, password Password --#field "ccrq_password"-- OPTIONAL, lockedConference BOOLEAN --#field "conference_is_locked"--, listedConference BOOLEAN --#field "conference_is_listed"--, conductibleConference BOOLEAN --#field "conference_is_conductible"--, terminationMethod TerminationMethod --#field "termination_method"--, conductorPrivileges SetOfPrivileges --#field "ccrq_conductor_privs"-- OPTIONAL, conductedPrivileges SetOfPrivileges --#field "ccrq_conducted_privs"-- OPTIONAL, nonConductedPrivileges SetOfPrivileges --#field "ccrq_non_conducted_privs"-- OPTIONAL, conferenceDescription TextString --#field "ccrq_description"-- OPTIONAL, callerIdentifier TextString --#field "ccrq_caller_id"-- OPTIONAL, userData UserData --#field "ccrq_user_data"-- OPTIONAL, ... } ConferenceCreateResponse ::= SEQUENCE { -- MCS-Connect-Provider response user data nodeID UserID --#field "node_id"--, -- Node ID of the sending node tag INTEGER, result ENUMERATED { success (0), userRejected (1), resourcesNotAvailable (2), rejectedForSymmetryBreaking (3), lockedConferenceNotSupported (4), ... } --#type "ConferenceCreateResult"--, userData UserData --#field "ccrs_user_data"-- OPTIONAL, ... } ConferenceQueryRequest ::= SEQUENCE { -- MCS-Connect-Provider request user data nodeType NodeType --#field "node_type"--, asymmetryIndicator AsymmetryIndicator --#field "cqrq_asymmetry_indicator"-- OPTIONAL, userData UserData --#field "cqrq_user_data"-- OPTIONAL, ... } ConferenceQueryResponse ::= SEQUENCE { -- MCS-Connect-Provider response user data nodeType NodeType --#field "node_type"--, asymmetryIndicator AsymmetryIndicator --#field "cqrs_asymmetry_indicator"-- OPTIONAL, conferenceList SET --#type "SetOfConferenceDescriptors"-- --#field "conference_list"-- OF ConferenceDescriptor, result ENUMERATED { success (0), userRejected (1), ... } --#type "ConferenceQueryResult"--, userData UserData --#field "cqrs_user_data"-- OPTIONAL, ... } ConferenceJoinRequest ::= SEQUENCE { -- MCS-Connect-Provider request user data as well as -- MCS-Send-Data on Node ID Channel of Top GCC sent -- by the receiver of the MCS-Connect-Provider conferenceName ConferenceNameSelector --#field "conference_name"-- OPTIONAL, -- Required when part of MCS-Connect-Provider conferenceNameModifier ConferenceNameModifier--#field "cjrq_conference_modifier"-- OPTIONAL, tag INTEGER OPTIONAL, -- Filled in when sent on Node ID Channel of Top GCC password PasswordChallengeRequestResponse --#field "cjrq_password"-- OPTIONAL, convenerPassword PasswordSelector --#field "cjrq_convener_password"-- OPTIONAL, callerIdentifier TextString --#field "cjrq_caller_id"-- OPTIONAL, userData UserData --#field "cjrq_user_data"-- OPTIONAL, ... } ConferenceJoinResponse ::= SEQUENCE { -- MCS-Connect-Provider response user data as well as -- MCS-Send-Data on Node ID Channel of -- the receiver of the MCS-Connect-Provider nodeID UserID --#field "cjrs_node_id"-- OPTIONAL, -- Node ID of directly connected node only topNodeID UserID--#field "top_node_id"-- , -- Node ID of Top GCC Provider tag INTEGER, conferenceNameAlias ConferenceNameSelector --#field "conference_name_alias"-- OPTIONAL, passwordInTheClearRequired BOOLEAN --#field "clear_password_required"-- , lockedConference BOOLEAN --#field "conference_is_locked"--, listedConference BOOLEAN --#field "conference_is_listed"--, conductibleConference BOOLEAN --#field "conference_is_conductible"--, terminationMethod TerminationMethod --#field "termination_method"--, conductorPrivileges SetOfPrivileges --#field "cjrs_conductor_privs"-- OPTIONAL, conductedPrivileges SetOfPrivileges --#field "cjrs_conducted_privs"-- OPTIONAL, nonConductedPrivileges SetOfPrivileges --#field "cjrs_non_conducted_privs"-- OPTIONAL, conferenceDescription TextString --#field "cjrs_description"-- OPTIONAL, password PasswordChallengeRequestResponse --#field "cjrs_password"-- OPTIONAL, result ENUMERATED { success (0), userRejected (1), invalidConference (2), invalidPassword (3), invalidConvenerPassword (4), challengeResponseRequired (5), invalidChallengeResponse (6), ... } --#type "ConferenceJoinResult"--, userData UserData --#field "cjrs_user_data"-- OPTIONAL, ... } ConferenceInviteRequest ::= SEQUENCE { -- MCS-Connect-Provider request user data conferenceName ConferenceName --#field "conference_name"--, nodeID UserID --#field "node_id"--, -- Node ID of the sending node topNodeID UserID --#field "top_node_id"--, -- Node ID of Top GCC Provider tag INTEGER, passwordInTheClearRequired BOOLEAN --#field "clear_password_required"--, lockedConference BOOLEAN --#field "conference_is_locked"--, listedConference BOOLEAN --#field "conference_is_listed"--, conductibleConference BOOLEAN --#field "conference_is_conductible"--, terminationMethod TerminationMethod --#field "termination_method"--, conductorPrivileges SetOfPrivileges --#field "cirq_conductor_privs"-- OPTIONAL, conductedPrivileges SetOfPrivileges --#field "cirq_conducted_privs"-- OPTIONAL, nonConductedPrivileges SetOfPrivileges --#field "cirq_non_conducted_privs"-- OPTIONAL, conferenceDescription TextString --#field "cirq_description"-- OPTIONAL, callerIdentifier TextString --#field "cirq_caller_id"-- OPTIONAL, userData UserData --#field "cirq_user_data"-- OPTIONAL, ... } ConferenceInviteResponse ::= SEQUENCE { -- MCS-Connect-Provider response user data result ENUMERATED { success (0), userRejected (1), ... } --#type "ConferenceInviteResult"--, userData UserData --#field "cirs_user_data"-- OPTIONAL, ... } ConferenceAddRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC or -- Node ID Channel of Adding MCU if specified networkAddress NetworkAddress --#field "add_request_net_address"--, requestingNode UserID --#field "requesting_node"--, tag INTEGER, addingMCU UserID --#field "adding_mcu"-- OPTIONAL, userData UserData --#field "carq_user_data"-- OPTIONAL, ... } ConferenceAddResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester tag INTEGER, result ENUMERATED { success (0), invalidRequester (1), invalidNetworkType (2), invalidNetworkAddress (3), addedNodeBusy (4), networkBusy (5), noPortsAvailable (6), connectionUnsuccessful (7), ... } --#type "ConferenceAddResult"--, userData UserData --#field "cars_user_data"-- OPTIONAL, ... } ConferenceLockRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC -- No parameters ... } ConferenceLockResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester result ENUMERATED { success (0), invalidRequester (1), alreadyLocked (2), ... } --#type "ConferenceLockResult"--, ... } ConferenceLockIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel -- or MCS-Send-Data on Node ID Channel -- No parameters ... } ConferenceUnlockRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC -- No parameters ... } ConferenceUnlockResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester result ENUMERATED { success (0), invalidRequester (1), alreadyUnlocked (2), ... } --#type "ConferenceUnlockResult"--, ... } ConferenceUnlockIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel -- or MCS-Send-Data on Node ID Channel -- No parameters ... } ConferenceTerminateRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC reason ENUMERATED { userInitiated (0), timedConferenceTermination (1), ... } --#type "ConferenceTerminateRequestReason"--, ... } ConferenceTerminateResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester result ENUMERATED { success (0), invalidRequester (1), ... } --#type "ConferenceTerminateResult"--, ... } ConferenceTerminateIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel reason ENUMERATED { userInitiated (0), timedConferenceTermination (1), ... } --#type "ConferenceTerminateIndicationReason"--, ... } ConferenceEjectUserRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC nodeToEject UserID --#field "node_to_eject"--, -- Node ID of the node to eject reason ENUMERATED { userInitiated (0), ... } --#type "ConferenceEjectRequestReason"--, ... } ConferenceEjectUserResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester nodeToEject UserID --#field "node_to_eject"--, -- Node ID of the node to eject result ENUMERATED { success (0), invalidRequester (1), invalidNode (2), ... } --#type "ConferenceEjectResult"--, ... } ConferenceEjectUserIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel nodeToEject UserID --#field "node_to_eject"--, -- Node ID of the node to eject reason ENUMERATED { userInitiated (0), higherNodeDisconnected (1), higherNodeEjected (2), ... } --#type "ConferenceEjectIndicationReason"--, ... } ConferenceTransferRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC conferenceName ConferenceNameSelector --#field "conference_name"--, -- Name of conference to transfer to conferenceNameModifier ConferenceNameModifier --#field "ctrq_conference_modifier"-- OPTIONAL, networkAddress NetworkAddress --#field "ctrq_net_address"-- OPTIONAL, transferringNodes SET --#type "SetOfTransferringNodesRq"-- --#field "ctrq_transferring_nodes"-- (SIZE (1..65536)) OF UserID OPTIONAL, password PasswordSelector --#field "ctrq_password"-- OPTIONAL, ... } ConferenceTransferResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester conferenceName ConferenceNameSelector --#field "conference_name"--, -- Name of conference to transfer to conferenceNameModifier ConferenceNameModifier --#field "ctrs_conference_modifier"-- OPTIONAL, transferringNodes SET --#type "SetOfTransferringNodesRs"-- --#field "ctrs_transferring_nodes"-- (SIZE (1..65536)) OF UserID OPTIONAL, result ENUMERATED { success (0), invalidRequester (1), ... } --#type "ConferenceTransferResult"--, ... } ConferenceTransferIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel conferenceName ConferenceNameSelector --#field "conference_name"--, -- Name of conference to transfer to conferenceNameModifier ConferenceNameModifier --#field "ctin_conference_modifier"-- OPTIONAL, networkAddress NetworkAddress --#field "ctin_net_address"-- OPTIONAL, transferringNodes SET --#type "SetOfTransferringNodesIn"-- --#field "ctin_transferring_nodes"-- (SIZE (1..65536)) OF UserID OPTIONAL, -- List of Node IDs, -- not present if destined for all nodes password PasswordSelector --#field "ctin_password"-- OPTIONAL, ... } -- DataBeam modification: change constraints on SetOfApplicationRecordRefreshes RosterUpdateIndication ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel or -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel fullRefresh BOOLEAN --#field "refresh_is_full"--, -- Conference Roster and all -- ApplicationProtocol Sessions refreshed nodeInformation SEQUENCE { nodeRecordList CHOICE { noChange NULL --#field "node_no_change"--, refresh SET --#type "SetOfNodeRecordRefreshes"-- --#field "node_record_refresh"-- (SIZE (1..65536)) OF SEQUENCE -- One for each node in the conference; -- no node shall be listed more than once { nodeID UserID --#field "node_id"--, -- Node ID of the node nodeRecord NodeRecord --#field "node_record"-- }, update SET --#type "SetOfNodeRecordUpdates"-- --#field "node_record_update"-- (SIZE (1..65536)) OF SEQUENCE -- One for each node changing its node record; -- no node shall be listed more than once { nodeID UserID --#field "node_id"-- , -- Node ID of the node nodeUpdate CHOICE { addRecord NodeRecord --#field "node_add_record"--, replaceRecord NodeRecord --#field "node_replace_record"--, removeRecord NULL --#field "node_remove_record"--, ... } --#type "NodeUpdate"-- --#field "node_update"-- }, ... } --#type "NodeRecordList"-- --#field "node_record_list"--, rosterInstanceNumber INTEGER --#field "roster_instance_number"-- (0..65535), nodesAdded BOOLEAN --#field "nodes_are_added"--, -- Nodes have been added since last instance nodesRemoved BOOLEAN --#field "nodes_are_removed"--, -- Nodes have been removed since last instance ... } --#type "NodeInformation"-- --#field "node_information"-- , applicationInformation SET --#type "SetOfApplicationInformation"-- --#field "application_information"-- (SIZE (0..65535)) OF SEQUENCE -- One for each Application Protocol Session; -- all Application Protocol Sessions if full refresh; -- no Application Protocol Session shall be -- listed more than once { sessionKey SessionKey --#field "session_key"--, applicationRecordList CHOICE { noChange NULL --#field "application_no_change"--, refresh SET --#type "SetOfApplicationRecordRefreshes"-- --#field "application_record_refresh"-- (SIZE (0..65535)) OF SEQUENCE -- One for each node with the -- Application Protocol Session enrolled; -- no node shall be listed more than once { nodeID UserID --#field "node_id"--, -- Node ID of node entityID EntityID --#field "entity_id"--, -- ID for this Application Protocol Entity at this node applicationRecord ApplicationRecord --#field "application_record"-- }, update SET --#type "SetOfApplicationRecordUpdates"-- --#field "application_record_update"-- (SIZE (1..65536)) OF SEQUENCE -- One for each node modifying its Application Record; -- no node shall be listed more than once { nodeID UserID --#field "node_id"-- , -- Node ID of node entityID EntityID --#field "entity_id"-- , -- ID for this Application Protocol Entity at this node applicationUpdate CHOICE { addRecord ApplicationRecord --#field "application_add_record"--, replaceRecord ApplicationRecord --#field "application_replace_record"--, removeRecord NULL --#field "application_remove_record"--, ... } --#type "ApplicationUpdate"-- --#field "application_update"-- }, ... } --#type "ApplicationRecordList"-- --#field "application_record_list"--, applicationCapabilitiesList CHOICE { noChange NULL --#field "capability_no_change"--, refresh SET --#type "SetOfApplicationCapabilityRefreshes"-- --#field "application_capability_refresh"-- OF SEQUENCE { capabilityID CapabilityID --#field "capability_id"--, capabilityClass CapabilityClass --#field "capability_class"--, numberOfEntities INTEGER --#field "number_of_entities"-- (1..65536), -- Number of Application Protocol Entities -- which issued the capability ... }, ... } --#type "ApplicationCapabilitiesList"-- --#field "application_capabilities_list"--, rosterInstanceNumber INTEGER --#field "roster_instance_number"-- (0..65535), peerEntitiesAdded BOOLEAN --#field "peer_entities_are_added"--, -- Peer Entities have been added since last instance peerEntitiesRemoved BOOLEAN --#field "peer_entities_are_removed"--, -- Peer Entities have been removed since last instance ... }, ... } ApplicationInvokeIndication ::= SEQUENCE { -- MCS-Send-Data or MCS-Uniform-Send-Data -- on GCC-Broadcast-Channel or Node ID Channel applicationProtocolEntityList SET --#type "ApplicationProtocolEntityList"-- --#field "application_protocol_entity_list"-- (SIZE (1..65536)) OF ApplicationInvokeSpecifier, destinationNodes SET --#type "SetOfDestinationNodes"-- --#field "destination_nodes"-- (SIZE (1..65536)) OF UserID OPTIONAL, -- List of Node IDs, -- not present if destined for all nodes ... } RegistryRegisterChannelRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, key RegistryKey --#field "key"--, channelID DynamicChannelID --#field "channel_id"--, ... } RegistryAssignTokenRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, key RegistryKey --#field "registry_key"--, ... } RegistrySetParameterRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, key RegistryKey --#field "key"--, parameter OCTET STRING --#field "registry_set_parameter"-- (SIZE (0..64)), modificationRights RegistryModificationRights --#field "parameter_modify_rights"-- OPTIONAL, ... } RegistryRetrieveEntryRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, key RegistryKey --#field "key"--, ... } RegistryDeleteEntryRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, key RegistryKey --#field "key"--, ... } RegistryMonitorEntryRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, key RegistryKey --#field "key"--, ... } RegistryMonitorEntryIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel key RegistryKey --#field "key"--, item RegistryItem --#field "item"--, -- Contents: channel, token, parameter, or empty owner RegistryEntryOwner --#field "owner"--, modificationRights RegistryModificationRights --#field "entry_modify_rights"-- OPTIONAL, ... } RegistryAllocateHandleRequest ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of Top GCC entityID EntityID --#field "entity_id"--, numberOfHandles INTEGER --#field "number_of_handles"-- (1..1024), ... } RegistryAllocateHandleResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester entityID EntityID --#field "entity_id"--, numberOfHandles INTEGER --#field "number_of_handles"-- (1..1024), firstHandle Handle --#field "first_handle"--, result ENUMERATED { successful (0), noHandlesAvailable (1), ... } --#type "RegistryAllocateHandleResult"--, ... } RegistryResponse ::= SEQUENCE { -- MCS-Send-Data on Node ID Channel of requester entityID EntityID --#field "entity_id"--, -- Entity ID of the requesting Application Protocol Entity primitiveType ENUMERATED { registerChannel (0), assignToken (1), setParameter (2), retrieveEntry (3), deleteEntry (4), monitorEntry (5), ... } --#type "RegistryResponsePrimitiveType"-- --#field "primitive_type"--, key RegistryKey --#field "key"--, -- Database index item RegistryItem --#field "item"--, -- Contents: channel, token, parameter, or vacant owner RegistryEntryOwner --#field "owner"--, modificationRights RegistryModificationRights --#field "response_modify_rights"-- OPTIONAL, result ENUMERATED { successful (0), belongsToOther (1), tooManyEntries (2), inconsistentType (3), entryNotFound (4), entryAlreadyExists (5), invalidRequester (6), ... } --#type "RegistryResponseResult"--, ... } ConductorAssignIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel conductingNode UserID --#field "user_id"--, ... } ConductorReleaseIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel -- No parameters ... } ConductorPermissionAskIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel grantFlag BOOLEAN --#field "permission_is_granted"--, -- TRUE to request permission grant, FALSE to release ... } --#type "ConductorPermissionAskIndication"-- ConductorPermissionGrantIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel permissionList SEQUENCE --#type "PermissionList"-- --#field "permission_list"-- (SIZE (0..65535)) OF UserID, -- Node ID of nodes granted permission waitingList SEQUENCE --#type "WaitingList"-- --#field "waiting_list"-- (SIZE (1..65536)) OF UserID OPTIONAL, -- Node ID of nodes waiting form permission ... } --#type "ConductorPermissionGrantIndication"-- ConferenceTimeRemainingIndication ::= SEQUENCE { -- MCS-Send-Data on GCC-Broadcast-Channel timeRemaining Time --#field "time_remaining"--, nodeID UserID --#field "time_remaining_node_id"-- OPTIONAL, ... } --#type "ConferenceTimeRemainingIndication"-- ConferenceTimeInquireIndication ::= SEQUENCE { -- MCS-Send-Data on GCC-Convener-Channel nodeSpecificTimeFlag BOOLEAN --#field "time_is_node_specific"--, -- FALSE for conference-wide, TRUE for node-specific ... } ConferenceTimeExtendIndication ::= SEQUENCE { -- MCS-Send-Data on GCC-Convener-Channel timeToExtend Time --#field "time_to_extend"--, nodeSpecificTimeFlag BOOLEAN --#field "time_is_node_specific"--, -- FALSE for conference-wide, TRUE for node-specific ... } ConferenceAssistanceIndication ::= SEQUENCE { -- MCS-Uniform-Send-Data on GCC-Broadcast-Channel userData UserData --#field "cain_user_data"-- OPTIONAL, ... } TextMessageIndication ::= SEQUENCE { -- MCS-Send-Data or MCS-Uniform-Send-Data message TextString, -- on GCC-Broadcast-Channel or Node ID Channel ... } FunctionNotSupportedResponse ::= SEQUENCE { request RequestPDU } NonStandardPDU ::= SEQUENCE { data NonStandardParameter, ... } -- ========================================================================== -- Part 3: Messages sent as MCS-Connect-Provider user data -- ========================================================================== ConnectData ::= SEQUENCE { t124Identifier Key --#field "t124_identifier"--, -- This shall be set to the value {itu recommendation t 124 version(0) 1} connectPDU OCTET STRING --#field "connect_pdu"-- } ConnectGCCPDU ::= CHOICE { conferenceCreateRequest ConferenceCreateRequest --#field "conference_create_request"--, conferenceCreateResponse ConferenceCreateResponse --#field "conference_create_response"--, conferenceQueryRequest ConferenceQueryRequest --#field "conference_query_request"--, conferenceQueryResponse ConferenceQueryResponse --#field "conference_query_response"--, conferenceJoinRequest ConferenceJoinRequest --#field "connect_join_request"--, conferenceJoinResponse ConferenceJoinResponse --#field "connect_join_response"--, conferenceInviteRequest ConferenceInviteRequest --#field "conference_invite_request"--, conferenceInviteResponse ConferenceInviteResponse --#field "conference_invite_response"--, ... } -- ========================================================================== -- Part 4: Messages sent using MCS-Send-Data or MCS-Uniform-Send-Data -- ========================================================================== GCCPDU ::= CHOICE { request RequestPDU, response ResponsePDU, indication IndicationPDU } RequestPDU ::= CHOICE { conferenceJoinRequest ConferenceJoinRequest --#field "conference_join_request"--, conferenceAddRequest ConferenceAddRequest --#field "conference_add_request"--, conferenceLockRequest ConferenceLockRequest --#field "conference_lock_request"--, conferenceUnlockRequest ConferenceUnlockRequest --#field "conference_unlock_request"--, conferenceTerminateRequest ConferenceTerminateRequest --#field "conference_terminate_request"--, conferenceEjectUserRequest ConferenceEjectUserRequest --#field "conference_eject_user_request"--, conferenceTransferRequest ConferenceTransferRequest --#field "conference_transfer_request"--, registryRegisterChannelRequest RegistryRegisterChannelRequest --#field "registry_register_channel_request"--, registryAssignTokenRequest RegistryAssignTokenRequest --#field "registry_assign_token_request"--, registrySetParameterRequest RegistrySetParameterRequest --#field "registry_set_parameter_request"--, registryRetrieveEntryRequest RegistryRetrieveEntryRequest --#field "registry_retrieve_entry_request"--, registryDeleteEntryRequest RegistryDeleteEntryRequest --#field "registry_delete_entry_request"--, registryMonitorEntryRequest RegistryMonitorEntryRequest --#field "registry_monitor_entry_request"--, registryAllocateHandleRequest RegistryAllocateHandleRequest --#field "registry_allocate_handle_request"--, nonStandardRequest NonStandardPDU --#field "non_standard_request"--, ... } ResponsePDU ::= CHOICE { conferenceJoinResponse ConferenceJoinResponse --#field "conference_join_response"--, conferenceAddResponse ConferenceAddResponse --#field "conference_add_response"--, conferenceLockResponse ConferenceLockResponse --#field "conference_lock_response"--, conferenceUnlockResponse ConferenceUnlockResponse --#field "conference_unlock_response"--, conferenceTerminateResponse ConferenceTerminateResponse --#field "conference_terminate_response"--, conferenceEjectUserResponse ConferenceEjectUserResponse --#field "conference_eject_user_response"--, conferenceTransferResponse ConferenceTransferResponse --#field "conference_transfer_response"--, registryResponse RegistryResponse --#field "registry_response"--, registryAllocateHandleResponse RegistryAllocateHandleResponse --#field "registry_allocate_handle_response"--, functionNotSupportedResponse FunctionNotSupportedResponse --#field "function_not_supported_response"--, nonStandardResponse NonStandardPDU --#field "non_standard_response"--, ... } IndicationPDU ::= CHOICE { userIDIndication UserIDIndication --#field "user_id_indication"--, conferenceLockIndication ConferenceLockIndication --#field "conference_lock_indication"--, conferenceUnlockIndication ConferenceUnlockIndication --#field "conference_unlock_indication"--, conferenceTerminateIndication ConferenceTerminateIndication --#field "conference_terminate_indication"--, conferenceEjectUserIndication ConferenceEjectUserIndication --#field "conference_eject_user_indication"--, conferenceTransferIndication ConferenceTransferIndication --#field "conference_transfer_indication"--, rosterUpdateIndication RosterUpdateIndication --#field "roster_update_indication"--, applicationInvokeIndication ApplicationInvokeIndication --#field "application_invoke_indication"--, registryMonitorEntryIndication RegistryMonitorEntryIndication --#field "registry_monitor_entry_indication"--, conductorAssignIndication ConductorAssignIndication --#field "conductor_assign_indication"--, conductorReleaseIndication ConductorReleaseIndication --#field "conductor_release_indication"--, conductorPermissionAskIndication ConductorPermissionAskIndication --#field "conductor_permission_ask_indication"--, conductorPermissionGrantIndication ConductorPermissionGrantIndication --#field "conductor_permission_grant_indication"--, conferenceTimeRemainingIndication ConferenceTimeRemainingIndication --#field "conference_time_remaining_indication"--, conferenceTimeInquireIndication ConferenceTimeInquireIndication --#field "conference_time_inquire_indication"--, conferenceTimeExtendIndication ConferenceTimeExtendIndication --#field "conference_time_extend_indication"--, conferenceAssistanceIndication ConferenceAssistanceIndication --#field "conference_assistance_indication"--, textMessageIndication TextMessageIndication --#field "text_message_indication"--, nonStandardIndication NonStandardPDU --#field "non_standard_indication"--, ... } END