summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/h245
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/h245
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/h245')
-rw-r--r--epan/dissectors/asn1/h245/CMakeLists.txt42
-rw-r--r--epan/dissectors/asn1/h245/MULTIMEDIA-SYSTEM-CONTROL.asn3410
-rw-r--r--epan/dissectors/asn1/h245/h245.cnf1425
-rw-r--r--epan/dissectors/asn1/h245/packet-h245-template.c598
-rw-r--r--epan/dissectors/asn1/h245/packet-h245-template.h119
5 files changed, 5594 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/h245/CMakeLists.txt b/epan/dissectors/asn1/h245/CMakeLists.txt
new file mode 100644
index 00000000..ba97d92b
--- /dev/null
+++ b/epan/dissectors/asn1/h245/CMakeLists.txt
@@ -0,0 +1,42 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+set( PROTOCOL_NAME h245 )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ MULTIMEDIA-SYSTEM-CONTROL.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ packet-${PROTOCOL_NAME}-template.h
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS )
+
+set( EXTRA_CNF
+)
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/h245/MULTIMEDIA-SYSTEM-CONTROL.asn b/epan/dissectors/asn1/h245/MULTIMEDIA-SYSTEM-CONTROL.asn
new file mode 100644
index 00000000..3324b082
--- /dev/null
+++ b/epan/dissectors/asn1/h245/MULTIMEDIA-SYSTEM-CONTROL.asn
@@ -0,0 +1,3410 @@
+-- MULTIMEDIA-SYSTEM-CONTROL.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/formal-language/itu-t/h/h245/2009v15/MULTIMEDIA-SYSTEM-CONTROL.asn
+--
+
+-- Module MULTIMEDIA-SYSTEM-CONTROL (H.245:12/2009)
+MULTIMEDIA-SYSTEM-CONTROL {itu-t(0) recommendation(0) h(8) h245(245)
+ version(0) 15 multimedia-system-control(0)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- Export all symbols
+-- =======================================================================
+-- Top level Messages
+-- =======================================================================
+MultimediaSystemControlMessage ::= CHOICE {
+ request RequestMessage,
+ response ResponseMessage,
+ command CommandMessage,
+ indication IndicationMessage,
+ ...
+}
+
+-- A RequestMessage results in action and requires an immediate response
+RequestMessage ::= CHOICE {
+ nonStandard NonStandardMessage,
+ masterSlaveDetermination MasterSlaveDetermination,
+ terminalCapabilitySet TerminalCapabilitySet,
+ openLogicalChannel OpenLogicalChannel,
+ closeLogicalChannel CloseLogicalChannel,
+ requestChannelClose RequestChannelClose,
+ multiplexEntrySend MultiplexEntrySend,
+ requestMultiplexEntry RequestMultiplexEntry,
+ requestMode RequestMode,
+ roundTripDelayRequest RoundTripDelayRequest,
+ maintenanceLoopRequest MaintenanceLoopRequest,
+ ...,
+ communicationModeRequest CommunicationModeRequest,
+ conferenceRequest ConferenceRequest,
+ multilinkRequest MultilinkRequest,
+ logicalChannelRateRequest LogicalChannelRateRequest,
+ genericRequest GenericMessage
+}
+
+-- A ResponseMessage is the response to a RequestMessage
+ResponseMessage ::= CHOICE {
+ nonStandard NonStandardMessage,
+ masterSlaveDeterminationAck MasterSlaveDeterminationAck,
+ masterSlaveDeterminationReject MasterSlaveDeterminationReject,
+ terminalCapabilitySetAck TerminalCapabilitySetAck,
+ terminalCapabilitySetReject TerminalCapabilitySetReject,
+ openLogicalChannelAck OpenLogicalChannelAck,
+ openLogicalChannelReject OpenLogicalChannelReject,
+ closeLogicalChannelAck CloseLogicalChannelAck,
+ requestChannelCloseAck RequestChannelCloseAck,
+ requestChannelCloseReject RequestChannelCloseReject,
+ multiplexEntrySendAck MultiplexEntrySendAck,
+ multiplexEntrySendReject MultiplexEntrySendReject,
+ requestMultiplexEntryAck RequestMultiplexEntryAck,
+ requestMultiplexEntryReject RequestMultiplexEntryReject,
+ requestModeAck RequestModeAck,
+ requestModeReject RequestModeReject,
+ roundTripDelayResponse RoundTripDelayResponse,
+ maintenanceLoopAck MaintenanceLoopAck,
+ maintenanceLoopReject MaintenanceLoopReject,
+ ...,
+ communicationModeResponse CommunicationModeResponse,
+ conferenceResponse ConferenceResponse,
+ multilinkResponse MultilinkResponse,
+ logicalChannelRateAcknowledge LogicalChannelRateAcknowledge,
+ logicalChannelRateReject LogicalChannelRateReject,
+ genericResponse GenericMessage
+}
+
+-- A CommandMessage requires action, but no explicit response
+CommandMessage ::= CHOICE {
+ nonStandard NonStandardMessage,
+ maintenanceLoopOffCommand MaintenanceLoopOffCommand,
+ sendTerminalCapabilitySet SendTerminalCapabilitySet,
+ encryptionCommand EncryptionCommand,
+ flowControlCommand FlowControlCommand,
+ endSessionCommand EndSessionCommand,
+ miscellaneousCommand MiscellaneousCommand,
+ ...,
+ communicationModeCommand CommunicationModeCommand,
+ conferenceCommand ConferenceCommand,
+ h223MultiplexReconfiguration H223MultiplexReconfiguration,
+ newATMVCCommand NewATMVCCommand,
+ mobileMultilinkReconfigurationCommand MobileMultilinkReconfigurationCommand,
+ genericCommand GenericMessage
+}
+
+-- An IndicationMessage is information that does not require action or response
+IndicationMessage ::= CHOICE {
+ nonStandard NonStandardMessage,
+ functionNotUnderstood FunctionNotUnderstood,
+ masterSlaveDeterminationRelease MasterSlaveDeterminationRelease,
+ terminalCapabilitySetRelease TerminalCapabilitySetRelease,
+ openLogicalChannelConfirm OpenLogicalChannelConfirm,
+ requestChannelCloseRelease RequestChannelCloseRelease,
+ multiplexEntrySendRelease MultiplexEntrySendRelease,
+ requestMultiplexEntryRelease RequestMultiplexEntryRelease,
+ requestModeRelease RequestModeRelease,
+ miscellaneousIndication MiscellaneousIndication,
+ jitterIndication JitterIndication,
+ h223SkewIndication H223SkewIndication,
+ newATMVCIndication NewATMVCIndication,
+ userInput UserInputIndication,
+ ...,
+ h2250MaximumSkewIndication H2250MaximumSkewIndication,
+ mcLocationIndication MCLocationIndication,
+ conferenceIndication ConferenceIndication,
+ vendorIdentification VendorIdentification,
+ functionNotSupported FunctionNotSupported,
+ multilinkIndication MultilinkIndication,
+ logicalChannelRateRelease LogicalChannelRateRelease,
+ flowControlIndication FlowControlIndication,
+ mobileMultilinkReconfigurationIndication
+ MobileMultilinkReconfigurationIndication,
+ genericIndication GenericMessage
+}
+
+-- SequenceNumber is defined here as it is used in a number of Messages
+SequenceNumber ::= INTEGER(0..255)
+
+-- =============================================================================
+-- Generic Message definitions
+-- =============================================================================
+GenericMessage ::= SEQUENCE {
+ messageIdentifier CapabilityIdentifier,
+ subMessageIdentifier INTEGER(0..127) OPTIONAL,
+ messageContent SEQUENCE OF GenericParameter OPTIONAL,
+ ...
+}
+
+GenericInformation ::= GenericMessage
+
+-- =============================================================================
+-- Non-standard Message definitions
+-- =============================================================================
+NonStandardMessage ::= SEQUENCE {nonStandardData NonStandardParameter,
+ ...
+}
+
+NonStandardParameter ::= SEQUENCE {
+ nonStandardIdentifier NonStandardIdentifier,
+ data OCTET STRING
+}
+
+NonStandardIdentifier ::= CHOICE {
+ object OBJECT IDENTIFIER,
+ h221NonStandard
+ SEQUENCE {t35CountryCode INTEGER(0..255), -- country, per --
+ -- Annex A/T.35
+ t35Extension INTEGER(0..255),
+ -- assigned nationally unless
+ -- t35CountryCode is binary
+ -- 1111 1111, in which case it shall
+ -- contain the country code
+ -- according to Annex B/T.35
+ manufacturerCode INTEGER(0..65535) -- assigned nationally
+ }
+}
+
+-- =============================================================================
+-- Master-slave determination definitions
+-- =============================================================================
+MasterSlaveDetermination ::= SEQUENCE {
+ terminalType INTEGER(0..255),
+ statusDeterminationNumber INTEGER(0..16777215),
+ ...
+}
+
+MasterSlaveDeterminationAck ::= SEQUENCE {
+ decision CHOICE {master NULL,
+ slave NULL},
+ ...
+}
+
+MasterSlaveDeterminationReject ::= SEQUENCE {
+ cause CHOICE {identicalNumbers NULL,
+ ...},
+ ...
+}
+
+MasterSlaveDeterminationRelease ::= SEQUENCE {...
+}
+
+-- =============================================================================
+-- Capability exchange definitions
+-- =============================================================================
+TerminalCapabilitySet ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ protocolIdentifier OBJECT IDENTIFIER,
+ -- shall be set to the value
+ -- {itu-t (0) recommendation (0) h (8) 245
+ -- version (0) 15}
+ multiplexCapability MultiplexCapability OPTIONAL,
+ capabilityTable SET SIZE (1..256) OF CapabilityTableEntry OPTIONAL,
+ capabilityDescriptors SET SIZE (1..256) OF CapabilityDescriptor OPTIONAL,
+ ...,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+ -- generic information associated
+ -- with the message
+}
+
+CapabilityTableEntry ::= SEQUENCE {
+ capabilityTableEntryNumber CapabilityTableEntryNumber,
+ capability Capability OPTIONAL
+}
+
+CapabilityDescriptor ::= SEQUENCE {
+ capabilityDescriptorNumber CapabilityDescriptorNumber,
+ simultaneousCapabilities
+ SET SIZE (1..256) OF AlternativeCapabilitySet OPTIONAL
+}
+
+AlternativeCapabilitySet ::=
+ SEQUENCE SIZE (1..256) OF CapabilityTableEntryNumber
+
+CapabilityTableEntryNumber ::= INTEGER(1..65535)
+
+CapabilityDescriptorNumber ::= INTEGER(0..255)
+
+TerminalCapabilitySetAck ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ ...,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+ -- generic information associated
+ -- with the message
+}
+
+TerminalCapabilitySetReject ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ cause
+ CHOICE {unspecified NULL,
+ undefinedTableEntryUsed NULL,
+ descriptorCapacityExceeded NULL,
+ tableEntryCapacityExceeded
+ CHOICE {highestEntryNumberProcessed CapabilityTableEntryNumber,
+ noneProcessed NULL},
+ ...},
+ ...,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+ -- generic information associated
+ -- with the message
+}
+
+TerminalCapabilitySetRelease ::= SEQUENCE {
+ ...,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+ -- generic information associated
+ -- with the message
+}
+
+-- =============================================================================
+-- Capability exchange definitions: top level capability description
+-- =============================================================================
+Capability ::= CHOICE {
+ nonStandard NonStandardParameter,
+ receiveVideoCapability VideoCapability,
+ transmitVideoCapability VideoCapability,
+ receiveAndTransmitVideoCapability VideoCapability,
+ receiveAudioCapability AudioCapability,
+ transmitAudioCapability AudioCapability,
+ receiveAndTransmitAudioCapability AudioCapability,
+ receiveDataApplicationCapability DataApplicationCapability,
+ transmitDataApplicationCapability DataApplicationCapability,
+ receiveAndTransmitDataApplicationCapability DataApplicationCapability,
+ h233EncryptionTransmitCapability BOOLEAN,
+ h233EncryptionReceiveCapability
+ SEQUENCE {h233IVResponseTime INTEGER(0..255), -- units milliseconds --
+ ...},
+ ...,
+ conferenceCapability ConferenceCapability,
+ h235SecurityCapability H235SecurityCapability,
+ maxPendingReplacementFor INTEGER(0..255),
+ receiveUserInputCapability UserInputCapability,
+ transmitUserInputCapability UserInputCapability,
+ receiveAndTransmitUserInputCapability UserInputCapability,
+ genericControlCapability GenericCapability,
+ receiveMultiplexedStreamCapability MultiplexedStreamCapability,
+ transmitMultiplexedStreamCapability MultiplexedStreamCapability,
+ receiveAndTransmitMultiplexedStreamCapability MultiplexedStreamCapability,
+ receiveRTPAudioTelephonyEventCapability AudioTelephonyEventCapability,
+ receiveRTPAudioToneCapability AudioToneCapability,
+ depFecCapability DepFECCapability, -- Deprecated, do not use
+ multiplePayloadStreamCapability
+ MultiplePayloadStreamCapability,
+ fecCapability FECCapability,
+ redundancyEncodingCap RedundancyEncodingCapability,
+ oneOfCapabilities AlternativeCapabilitySet
+}
+
+H235SecurityCapability ::= SEQUENCE {
+ encryptionAuthenticationAndIntegrity EncryptionAuthenticationAndIntegrity,
+ mediaCapability CapabilityTableEntryNumber,
+ -- NOTE - The mediaCapability shall refer to Capability Table Entries
+ -- that do contain, directly or indirectly, one or more transmit,
+ -- receive, or receiveAndTransmit AudioCapability, VideoCapability,
+ -- DataApplicationCapability, or similar capabilities indicated by a
+ -- NonStandardParameter or GenericCapability only
+ ...
+}
+
+-- =============================================================================
+-- Capability exchange definitions: Multiplex capabilities
+-- =============================================================================
+MultiplexCapability ::= CHOICE {
+ nonStandard NonStandardParameter,
+ h222Capability H222Capability,
+ h223Capability H223Capability,
+ v76Capability V76Capability,
+ ...,
+ h2250Capability H2250Capability,
+ genericMultiplexCapability GenericCapability
+}
+
+H222Capability ::= SEQUENCE {
+ numberOfVCs INTEGER(1..256),
+ vcCapability SET OF VCCapability,
+ ...
+}
+
+VCCapability ::= SEQUENCE {
+ aal1
+ SEQUENCE {nullClockRecovery BOOLEAN,
+ srtsClockRecovery BOOLEAN,
+ adaptiveClockRecovery BOOLEAN,
+ nullErrorCorrection BOOLEAN,
+ longInterleaver BOOLEAN,
+ shortInterleaver BOOLEAN,
+ errorCorrectionOnly BOOLEAN,
+ structuredDataTransfer BOOLEAN,
+ partiallyFilledCells BOOLEAN,
+ ...} OPTIONAL,
+ aal5
+ SEQUENCE {forwardMaximumSDUSize INTEGER(0..65535), -- units octets--
+ backwardMaximumSDUSize INTEGER(0..65535), -- units octets--
+ ...} OPTIONAL,
+ transportStream BOOLEAN,
+ programStream BOOLEAN,
+ availableBitRates
+ SEQUENCE {type
+ CHOICE {singleBitRate INTEGER(1..65535), -- units 64 kbit/s--
+ rangeOfBitRates
+ SEQUENCE {lowerBitRate INTEGER(1..65535), -- units 64 kbit/s--
+ higherBitRate INTEGER(1..65535) -- units 64 kbit/s
+ }},
+ ...},
+ ...,
+ aal1ViaGateway
+ SEQUENCE {gatewayAddress SET SIZE (1..256) OF Q2931Address,
+ nullClockRecovery BOOLEAN,
+ srtsClockRecovery BOOLEAN,
+ adaptiveClockRecovery BOOLEAN,
+ nullErrorCorrection BOOLEAN,
+ longInterleaver BOOLEAN,
+ shortInterleaver BOOLEAN,
+ errorCorrectionOnly BOOLEAN,
+ structuredDataTransfer BOOLEAN,
+ partiallyFilledCells BOOLEAN,
+ ...} OPTIONAL
+}
+
+H223Capability ::= SEQUENCE {
+ transportWithI-frames BOOLEAN, -- I-frame transport
+
+ -- of H.245
+ videoWithAL1 BOOLEAN,
+ videoWithAL2 BOOLEAN,
+ videoWithAL3 BOOLEAN,
+ audioWithAL1 BOOLEAN,
+ audioWithAL2 BOOLEAN,
+ audioWithAL3 BOOLEAN,
+ dataWithAL1 BOOLEAN,
+ dataWithAL2 BOOLEAN,
+ dataWithAL3 BOOLEAN,
+ maximumAl2SDUSize INTEGER(0..65535), -- units octets
+ maximumAl3SDUSize INTEGER(0..65535), -- units octets
+ maximumDelayJitter INTEGER(0..1023), -- units milliseconds
+ h223MultiplexTableCapability
+ CHOICE {basic NULL,
+ enhanced
+ SEQUENCE {maximumNestingDepth INTEGER(1..15),
+ maximumElementListSize INTEGER(2..255),
+ maximumSubElementListSize INTEGER(2..255),
+ ...}},
+ ...,
+ maxMUXPDUSizeCapability BOOLEAN,
+ nsrpSupport BOOLEAN,
+ mobileOperationTransmitCapability
+ SEQUENCE {modeChangeCapability BOOLEAN,
+ h223AnnexA BOOLEAN,
+ h223AnnexADoubleFlag BOOLEAN,
+ h223AnnexB BOOLEAN,
+ h223AnnexBwithHeader BOOLEAN,
+ ...} OPTIONAL,
+ h223AnnexCCapability H223AnnexCCapability OPTIONAL,
+ bitRate INTEGER(1..19200) OPTIONAL, -- units of
+
+ -- 100 bit/s
+ mobileMultilinkFrameCapability
+ SEQUENCE {maximumSampleSize INTEGER(1..255), -- units octets--
+ maximumPayloadLength INTEGER(1..65025), -- units octets--
+ ...} OPTIONAL
+}
+
+H223AnnexCCapability ::= SEQUENCE {
+ videoWithAL1M BOOLEAN,
+ videoWithAL2M BOOLEAN,
+ videoWithAL3M BOOLEAN,
+ audioWithAL1M BOOLEAN,
+ audioWithAL2M BOOLEAN,
+ audioWithAL3M BOOLEAN,
+ dataWithAL1M BOOLEAN,
+ dataWithAL2M BOOLEAN,
+ dataWithAL3M BOOLEAN,
+ alpduInterleaving BOOLEAN,
+ maximumAL1MPDUSize INTEGER(0..65535), -- units octets
+ maximumAL2MSDUSize INTEGER(0..65535), -- units octets
+ maximumAL3MSDUSize INTEGER(0..65535), -- units octets
+ ...,
+ rsCodeCapability BOOLEAN OPTIONAL
+}
+
+V76Capability ::= SEQUENCE {
+ suspendResumeCapabilitywAddress BOOLEAN,
+ suspendResumeCapabilitywoAddress BOOLEAN,
+ rejCapability BOOLEAN,
+ sREJCapability BOOLEAN,
+ mREJCapability BOOLEAN,
+ crc8bitCapability BOOLEAN,
+ crc16bitCapability BOOLEAN,
+ crc32bitCapability BOOLEAN,
+ uihCapability BOOLEAN,
+ numOfDLCS INTEGER(2..8191),
+ twoOctetAddressFieldCapability BOOLEAN,
+ loopBackTestCapability BOOLEAN,
+ n401Capability INTEGER(1..4095),
+ maxWindowSizeCapability INTEGER(1..127),
+ v75Capability V75Capability,
+ ...
+}
+
+V75Capability ::= SEQUENCE {audioHeader BOOLEAN,
+ ...
+}
+
+H2250Capability ::= SEQUENCE {
+ maximumAudioDelayJitter INTEGER(0..1023), -- units in
+
+ -- milliseconds
+ receiveMultipointCapability MultipointCapability,
+ transmitMultipointCapability MultipointCapability,
+ receiveAndTransmitMultipointCapability MultipointCapability,
+ mcCapability
+ SEQUENCE {centralizedConferenceMC BOOLEAN,
+ decentralizedConferenceMC BOOLEAN,
+ ...},
+ rtcpVideoControlCapability BOOLEAN, -- FIR and NACK
+ mediaPacketizationCapability MediaPacketizationCapability,
+ ...,
+ transportCapability TransportCapability OPTIONAL,
+ redundancyEncodingCapability
+ SEQUENCE SIZE (1..256) OF RedundancyEncodingCapability OPTIONAL,
+ logicalChannelSwitchingCapability BOOLEAN,
+ t120DynamicPortCapability BOOLEAN
+}
+
+MediaPacketizationCapability ::= SEQUENCE {
+ h261aVideoPacketization BOOLEAN,
+ ...,
+ rtpPayloadType SEQUENCE SIZE (1..256) OF RTPPayloadType OPTIONAL
+}
+
+RSVPParameters ::= SEQUENCE {
+ qosMode QOSMode OPTIONAL,
+ tokenRate INTEGER(1..4294967295) OPTIONAL,
+ -- rate in bytes/s
+ bucketSize INTEGER(1..4294967295) OPTIONAL,
+ -- size in bytes
+ peakRate INTEGER(1..4294967295) OPTIONAL,
+ -- peak bandwidth bytes/s
+ minPoliced INTEGER(1..4294967295) OPTIONAL,
+ --
+ maxPktSize INTEGER(1..4294967295) OPTIONAL,
+ -- size in bytes
+ ...
+}
+
+QOSMode ::= CHOICE {guaranteedQOS NULL,
+ controlledLoad NULL,
+ ...
+}
+
+ATMParameters ::= SEQUENCE {
+ maxNTUSize INTEGER(0..65535), -- units in octets
+ atmUBR BOOLEAN, -- unspecified bit rate
+ atmrtVBR BOOLEAN, -- real time variable
+
+ -- bit rate
+ atmnrtVBR BOOLEAN, -- non real time
+
+ -- variable bit rate
+ atmABR BOOLEAN, -- available bit rate
+ atmCBR BOOLEAN, -- constant bit rate
+ ...
+}
+
+ServicePriorityValue ::= SEQUENCE {
+ nonStandardParameter NonStandardParameter OPTIONAL,
+ ...,
+ value INTEGER(0..255)
+}
+
+ServicePriority ::= SEQUENCE {
+ nonStandardData NonStandardParameter OPTIONAL,
+ servicePrioritySignalled BOOLEAN,
+ servicePriorityValue ServicePriorityValue OPTIONAL,
+ ...,
+ serviceClass INTEGER(0..4095) OPTIONAL,
+ serviceSubclass INTEGER(0..255) OPTIONAL
+}
+
+AuthorizationParameters ::= SEQUENCE {
+ nonStandardData NonStandardParameter OPTIONAL,
+ ...
+}
+
+QOSType ::= CHOICE {desired NULL,
+ required NULL,
+ ...
+}
+
+QOSClass ::= CHOICE {
+ class0 NULL,
+ class1 NULL,
+ class2 NULL,
+ class3 NULL,
+ class4 NULL,
+ class5 NULL,
+ ...
+}
+
+QOSDescriptor ::= SEQUENCE {
+ nonStandardData NonStandardParameter OPTIONAL,
+ qosType QOSType,
+ qosClass QOSClass,
+ ...
+}
+
+GenericTransportParameters ::= SEQUENCE {
+ nonStandardData NonStandardParameter OPTIONAL,
+ averageRate INTEGER(1..4294967295) OPTIONAL,
+ -- average bandwidth bytes/s
+ burst INTEGER(1..4294967295) OPTIONAL,
+ -- size in bytes
+ peakRate INTEGER(1..4294967295) OPTIONAL,
+ -- peak bandwidth bytes/s
+ maxPktSize INTEGER(1..4294967295) OPTIONAL,
+ -- size in bytes
+ ...
+}
+
+QOSCapability ::= SEQUENCE {
+ nonStandardData NonStandardParameter OPTIONAL,
+ rsvpParameters RSVPParameters OPTIONAL,
+ atmParameters ATMParameters OPTIONAL,
+ ...,
+ localQoS BOOLEAN OPTIONAL,
+ genericTransportParameters GenericTransportParameters OPTIONAL,
+ servicePriority ServicePriority OPTIONAL,
+ authorizationParameter AuthorizationParameters OPTIONAL,
+ qosDescriptor QOSDescriptor OPTIONAL,
+ dscpValue INTEGER(0..63) OPTIONAL
+}
+
+MediaTransportType ::= CHOICE {
+ ip-UDP NULL,
+ ip-TCP NULL,
+ atm-AAL5-UNIDIR NULL, -- virtual circuits used as unidirectional
+ atm-AAL5-BIDIR NULL, -- virtual circuits used as bidirectional
+ ...,
+ atm-AAL5-compressed SEQUENCE {variable-delta BOOLEAN,
+ ...}
+}
+
+MediaChannelCapability ::= SEQUENCE {
+ mediaTransport MediaTransportType OPTIONAL,
+ ...
+}
+
+TransportCapability ::= SEQUENCE {
+ nonStandard NonStandardParameter OPTIONAL,
+ qOSCapabilities SEQUENCE SIZE (1..256) OF QOSCapability OPTIONAL,
+ mediaChannelCapabilities
+ SEQUENCE SIZE (1..256) OF MediaChannelCapability OPTIONAL,
+ ...
+}
+
+RedundancyEncodingCapability ::= SEQUENCE {
+ redundancyEncodingMethod RedundancyEncodingMethod,
+ primaryEncoding CapabilityTableEntryNumber,
+ secondaryEncoding
+ SEQUENCE SIZE (1..256) OF CapabilityTableEntryNumber OPTIONAL,
+ -- must be Audio, Video, or Data capabilities, not derived
+ -- capabilities; redundancy order is inferred from number of
+ -- secondary encodings
+ ...
+}
+
+RedundancyEncodingMethod ::= CHOICE {
+ nonStandard NonStandardParameter,
+ rtpAudioRedundancyEncoding NULL,
+ ...,
+ rtpH263VideoRedundancyEncoding RTPH263VideoRedundancyEncoding
+}
+
+RTPH263VideoRedundancyEncoding ::= SEQUENCE {
+ numberOfThreads INTEGER(1..16),
+ framesBetweenSyncPoints INTEGER(1..256),
+ frameToThreadMapping
+ CHOICE {roundrobin NULL,
+ custom
+ SEQUENCE SIZE (1..256) OF RTPH263VideoRedundancyFrameMapping,
+ -- empty SEQUENCE for capability negotiation
+ -- meaningful contents only OpenLogicalChannel
+ ...},
+ containedThreads SEQUENCE SIZE (1..256) OF INTEGER(0..15) OPTIONAL,
+ -- only used for opening of logical channels
+ ...
+}
+
+RTPH263VideoRedundancyFrameMapping ::= SEQUENCE {
+ threadNumber INTEGER(0..15),
+ frameSequence SEQUENCE SIZE (1..256) OF INTEGER(0..255),
+ ...
+}
+
+MultipointCapability ::= SEQUENCE {
+ multicastCapability BOOLEAN,
+ multiUniCastConference BOOLEAN,
+ mediaDistributionCapability SEQUENCE OF MediaDistributionCapability,
+ ...
+}
+
+MediaDistributionCapability ::= SEQUENCE {
+ centralizedControl BOOLEAN,
+ distributedControl BOOLEAN, -- for further study in
+
+ -- ITU-T Rec. H.323
+ centralizedAudio BOOLEAN,
+ distributedAudio BOOLEAN,
+ centralizedVideo BOOLEAN,
+ distributedVideo BOOLEAN,
+ centralizedData SEQUENCE OF DataApplicationCapability OPTIONAL,
+ distributedData SEQUENCE OF DataApplicationCapability OPTIONAL,
+ -- for further study in
+ -- ITU-T Rec. H.323
+ ...
+}
+
+-- =============================================================================
+-- Capability exchange definitions: Video capabilities
+-- =============================================================================
+VideoCapability ::= CHOICE {
+ nonStandard NonStandardParameter,
+ h261VideoCapability H261VideoCapability,
+ h262VideoCapability H262VideoCapability,
+ h263VideoCapability H263VideoCapability,
+ is11172VideoCapability IS11172VideoCapability,
+ ...,
+ genericVideoCapability GenericCapability,
+ extendedVideoCapability ExtendedVideoCapability
+}
+
+ExtendedVideoCapability ::= SEQUENCE {
+ videoCapability SEQUENCE OF VideoCapability,
+ videoCapabilityExtension SEQUENCE OF GenericCapability OPTIONAL,
+ ...
+}
+
+H261VideoCapability ::= SEQUENCE {
+ qcifMPI INTEGER(1..4) OPTIONAL, -- units 1/29.97 Hz
+ cifMPI INTEGER(1..4) OPTIONAL, -- units 1/29.97 Hz
+ temporalSpatialTradeOffCapability BOOLEAN,
+ maxBitRate INTEGER(1..19200), -- units of
+
+ -- 100 bit/s
+ stillImageTransmission BOOLEAN, -- Annex D/H.261
+ ...,
+ videoBadMBsCap BOOLEAN
+}
+
+H262VideoCapability ::= SEQUENCE {
+ profileAndLevel-SPatML BOOLEAN,
+ profileAndLevel-MPatLL BOOLEAN,
+ profileAndLevel-MPatML BOOLEAN,
+ profileAndLevel-MPatH-14 BOOLEAN,
+ profileAndLevel-MPatHL BOOLEAN,
+ profileAndLevel-SNRatLL BOOLEAN,
+ profileAndLevel-SNRatML BOOLEAN,
+ profileAndLevel-SpatialatH-14 BOOLEAN,
+ profileAndLevel-HPatML BOOLEAN,
+ profileAndLevel-HPatH-14 BOOLEAN,
+ profileAndLevel-HPatHL BOOLEAN,
+ videoBitRate INTEGER(0..1073741823) OPTIONAL, -- units 400 bit/s
+ vbvBufferSize INTEGER(0..262143) OPTIONAL, -- units 16 384 bits
+ samplesPerLine INTEGER(0..16383) OPTIONAL, -- units samples/line
+ linesPerFrame INTEGER(0..16383) OPTIONAL, -- units lines/frame
+ framesPerSecond INTEGER(0..15) OPTIONAL, -- frame_rate_code
+ luminanceSampleRate INTEGER(0..4294967295) OPTIONAL, -- units samples/s
+ ...,
+ videoBadMBsCap BOOLEAN
+}
+
+H263VideoCapability ::= SEQUENCE {
+ sqcifMPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ qcifMPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ cifMPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ cif4MPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ cif16MPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ maxBitRate INTEGER(1..192400), -- units 100 bit/s
+ unrestrictedVector BOOLEAN,
+ arithmeticCoding BOOLEAN,
+ advancedPrediction BOOLEAN,
+ pbFrames BOOLEAN,
+ temporalSpatialTradeOffCapability BOOLEAN,
+ hrd-B INTEGER(0..524287) OPTIONAL, -- units 128 bits
+ bppMaxKb INTEGER(0..65535) OPTIONAL, -- units 1024 bits
+ ...,
+ slowSqcifMPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowQcifMPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowCifMPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowCif4MPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowCif16MPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ errorCompensation BOOLEAN,
+ enhancementLayerInfo EnhancementLayerInfo OPTIONAL,
+ h263Options H263Options OPTIONAL
+}
+
+EnhancementLayerInfo ::= SEQUENCE {
+ baseBitRateConstrained BOOLEAN,
+ snrEnhancement SET SIZE (1..14) OF EnhancementOptions OPTIONAL,
+ spatialEnhancement SET SIZE (1..14) OF EnhancementOptions OPTIONAL,
+ bPictureEnhancement SET SIZE (1..14) OF BEnhancementParameters OPTIONAL,
+ ...
+}
+
+BEnhancementParameters ::= SEQUENCE {
+ enhancementOptions EnhancementOptions,
+ numberOfBPictures INTEGER(1..64),
+ ...
+}
+
+EnhancementOptions ::= SEQUENCE {
+ sqcifMPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ qcifMPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ cifMPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ cif4MPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ cif16MPI INTEGER(1..32) OPTIONAL, -- units 1/29.97 Hz
+ maxBitRate INTEGER(1..192400), -- units 100 bit/s
+ unrestrictedVector BOOLEAN,
+ arithmeticCoding BOOLEAN,
+ temporalSpatialTradeOffCapability BOOLEAN,
+ slowSqcifMPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowQcifMPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowCifMPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowCif4MPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ slowCif16MPI INTEGER(1..3600) OPTIONAL, -- units seconds/frame
+ errorCompensation BOOLEAN,
+ h263Options H263Options OPTIONAL,
+ ...
+}
+
+H263Options ::= SEQUENCE {
+ advancedIntraCodingMode BOOLEAN,
+ deblockingFilterMode BOOLEAN,
+ improvedPBFramesMode BOOLEAN,
+ unlimitedMotionVectors BOOLEAN,
+ fullPictureFreeze BOOLEAN,
+ partialPictureFreezeAndRelease BOOLEAN,
+ resizingPartPicFreezeAndRelease BOOLEAN,
+ fullPictureSnapshot BOOLEAN,
+ partialPictureSnapshot BOOLEAN,
+ videoSegmentTagging BOOLEAN,
+ progressiveRefinement BOOLEAN,
+ dynamicPictureResizingByFour BOOLEAN,
+ dynamicPictureResizingSixteenthPel BOOLEAN,
+ dynamicWarpingHalfPel BOOLEAN,
+ dynamicWarpingSixteenthPel BOOLEAN,
+ independentSegmentDecoding BOOLEAN,
+ slicesInOrder-NonRect BOOLEAN,
+ slicesInOrder-Rect BOOLEAN,
+ slicesNoOrder-NonRect BOOLEAN,
+ slicesNoOrder-Rect BOOLEAN,
+ alternateInterVLCMode BOOLEAN,
+ modifiedQuantizationMode BOOLEAN,
+ reducedResolutionUpdate BOOLEAN,
+ transparencyParameters TransparencyParameters OPTIONAL,
+ separateVideoBackChannel BOOLEAN,
+ refPictureSelection RefPictureSelection OPTIONAL,
+ customPictureClockFrequency
+ SET SIZE (1..16) OF CustomPictureClockFrequency OPTIONAL,
+ customPictureFormat
+ SET SIZE (1..16) OF CustomPictureFormat OPTIONAL,
+ modeCombos
+ SET SIZE (1..16) OF H263VideoModeCombos OPTIONAL,
+ ...,
+ videoBadMBsCap BOOLEAN,
+ h263Version3Options H263Version3Options
+}
+
+TransparencyParameters ::= SEQUENCE {
+ presentationOrder INTEGER(1..256),
+ offset-x INTEGER(-262144..262143), -- 1/8 pixels
+ offset-y INTEGER(-262144..262143), -- 1/8 pixels
+ scale-x INTEGER(1..255),
+ scale-y INTEGER(1..255),
+ ...
+}
+
+RefPictureSelection ::= SEQUENCE {
+ additionalPictureMemory
+ SEQUENCE {sqcifAdditionalPictureMemory INTEGER(1..256) OPTIONAL, -- units frame--
+ qcifAdditionalPictureMemory INTEGER(1..256) OPTIONAL, -- units frame--
+ cifAdditionalPictureMemory INTEGER(1..256) OPTIONAL, -- units frame--
+ cif4AdditionalPictureMemory INTEGER(1..256) OPTIONAL, -- units frame--
+ cif16AdditionalPictureMemory INTEGER(1..256) OPTIONAL, -- units frame--
+ bigCpfAdditionalPictureMemory INTEGER(1..256) OPTIONAL, -- units frame--
+ ...} OPTIONAL,
+ videoMux BOOLEAN,
+ videoBackChannelSend
+ CHOICE {none NULL,
+ ackMessageOnly NULL,
+ nackMessageOnly NULL,
+ ackOrNackMessageOnly NULL,
+ ackAndNackMessage NULL,
+ ...},
+ ...,
+ enhancedReferencePicSelect
+ SEQUENCE {subPictureRemovalParameters
+ SEQUENCE {mpuHorizMBs INTEGER(1..128),
+ mpuVertMBs INTEGER(1..72),
+ mpuTotalNumber INTEGER(1..65536),
+ ...} OPTIONAL,
+ ...}
+}
+
+CustomPictureClockFrequency ::= SEQUENCE {
+ clockConversionCode INTEGER(1000..1001),
+ clockDivisor INTEGER(1..127),
+ sqcifMPI INTEGER(1..2048) OPTIONAL,
+ qcifMPI INTEGER(1..2048) OPTIONAL,
+ cifMPI INTEGER(1..2048) OPTIONAL,
+ cif4MPI INTEGER(1..2048) OPTIONAL,
+ cif16MPI INTEGER(1..2048) OPTIONAL,
+ ...
+}
+
+CustomPictureFormat ::= SEQUENCE {
+ maxCustomPictureWidth INTEGER(1..2048), -- units 4 pixels
+ maxCustomPictureHeight INTEGER(1..2048), -- units 4 pixels
+ minCustomPictureWidth INTEGER(1..2048), -- units 4 pixels
+ minCustomPictureHeight INTEGER(1..2048), -- units 4 pixels
+ mPI
+ SEQUENCE {standardMPI INTEGER(1..31) OPTIONAL,
+ customPCF
+ SET SIZE (1..16) OF
+ SEQUENCE {clockConversionCode INTEGER(1000..1001),
+ clockDivisor INTEGER(1..127),
+ customMPI INTEGER(1..2048),
+ ...} OPTIONAL,
+ ...},
+ pixelAspectInformation
+ CHOICE {anyPixelAspectRatio BOOLEAN,
+ pixelAspectCode SET SIZE (1..14) OF INTEGER(1..14),
+ extendedPAR
+ SET SIZE (1..256) OF
+ SEQUENCE {width INTEGER(1..255),
+ height INTEGER(1..255),
+ ...},
+ ...},
+ ...
+}
+
+H263VideoModeCombos ::= SEQUENCE {
+ h263VideoUncoupledModes H263ModeComboFlags,
+ h263VideoCoupledModes SET SIZE (1..16) OF H263ModeComboFlags,
+ ...
+}
+
+H263ModeComboFlags ::= SEQUENCE {
+ unrestrictedVector BOOLEAN,
+ arithmeticCoding BOOLEAN,
+ advancedPrediction BOOLEAN,
+ pbFrames BOOLEAN,
+ advancedIntraCodingMode BOOLEAN,
+ deblockingFilterMode BOOLEAN,
+ unlimitedMotionVectors BOOLEAN,
+ slicesInOrder-NonRect BOOLEAN,
+ slicesInOrder-Rect BOOLEAN,
+ slicesNoOrder-NonRect BOOLEAN,
+ slicesNoOrder-Rect BOOLEAN,
+ improvedPBFramesMode BOOLEAN,
+ referencePicSelect BOOLEAN,
+ dynamicPictureResizingByFour BOOLEAN,
+ dynamicPictureResizingSixteenthPel BOOLEAN,
+ dynamicWarpingHalfPel BOOLEAN,
+ dynamicWarpingSixteenthPel BOOLEAN,
+ reducedResolutionUpdate BOOLEAN,
+ independentSegmentDecoding BOOLEAN,
+ alternateInterVLCMode BOOLEAN,
+ modifiedQuantizationMode BOOLEAN,
+ ...,
+ enhancedReferencePicSelect BOOLEAN,
+ h263Version3Options H263Version3Options
+}
+
+H263Version3Options ::= SEQUENCE {
+ dataPartitionedSlices BOOLEAN,
+ fixedPointIDCT0 BOOLEAN,
+ interlacedFields BOOLEAN,
+ currentPictureHeaderRepetition BOOLEAN,
+ previousPictureHeaderRepetition BOOLEAN,
+ nextPictureHeaderRepetition BOOLEAN,
+ pictureNumber BOOLEAN,
+ spareReferencePictures BOOLEAN,
+ ...
+}
+
+IS11172VideoCapability ::= SEQUENCE {
+ constrainedBitstream BOOLEAN,
+ videoBitRate INTEGER(0..1073741823) OPTIONAL, -- units 400 bit/s
+ vbvBufferSize INTEGER(0..262143) OPTIONAL, -- units 16 384 bits
+ samplesPerLine INTEGER(0..16383) OPTIONAL, -- units samples/line
+ linesPerFrame INTEGER(0..16383) OPTIONAL, -- units lines/frame
+ pictureRate INTEGER(0..15) OPTIONAL,
+ luminanceSampleRate INTEGER(0..4294967295) OPTIONAL, -- units samples/s
+ ...,
+ videoBadMBsCap BOOLEAN
+}
+
+-- =============================================================================
+-- Capability exchange definitions: Audio capabilities
+-- =============================================================================
+-- For an H.222 multiplex, the integers indicate the size of the STD buffer
+-- in units of 256 octets
+-- For an H.223 multiplex, the integers indicate the maximum number of audio
+-- frames per AL-SDU
+-- For an H.225.0 multiplex, the integers indicate the maximum number of audio
+-- frames per packet
+AudioCapability ::= CHOICE {
+ nonStandard NonStandardParameter,
+ g711Alaw64k INTEGER(1..256),
+ g711Alaw56k INTEGER(1..256),
+ g711Ulaw64k INTEGER(1..256),
+ g711Ulaw56k INTEGER(1..256),
+ g722-64k INTEGER(1..256),
+ g722-56k INTEGER(1..256),
+ g722-48k INTEGER(1..256),
+ g7231
+ SEQUENCE {maxAl-sduAudioFrames INTEGER(1..256),
+ silenceSuppression BOOLEAN},
+ g728 INTEGER(1..256),
+ g729 INTEGER(1..256),
+ g729AnnexA INTEGER(1..256),
+ is11172AudioCapability IS11172AudioCapability,
+ is13818AudioCapability IS13818AudioCapability,
+ ...,
+ g729wAnnexB INTEGER(1..256),
+ g729AnnexAwAnnexB INTEGER(1..256),
+ g7231AnnexCCapability G7231AnnexCCapability,
+ gsmFullRate GSMAudioCapability,
+ gsmHalfRate GSMAudioCapability,
+ gsmEnhancedFullRate GSMAudioCapability,
+ genericAudioCapability GenericCapability,
+ g729Extensions G729Extensions,
+ vbd VBDCapability,
+ audioTelephonyEvent NoPTAudioTelephonyEventCapability,
+ audioTone NoPTAudioToneCapability
+}
+
+G729Extensions ::= SEQUENCE {
+ audioUnit INTEGER(1..256) OPTIONAL,
+ annexA BOOLEAN,
+ annexB BOOLEAN,
+ annexD BOOLEAN,
+ annexE BOOLEAN,
+ annexF BOOLEAN,
+ annexG BOOLEAN,
+ annexH BOOLEAN,
+ ...
+}
+
+G7231AnnexCCapability ::= SEQUENCE {
+ maxAl-sduAudioFrames INTEGER(1..256),
+ silenceSuppression BOOLEAN,
+ g723AnnexCAudioMode
+ SEQUENCE {highRateMode0 INTEGER(27..78), -- units octets--
+ highRateMode1 INTEGER(27..78), -- units octets--
+ lowRateMode0 INTEGER(23..66), -- units octets--
+ lowRateMode1 INTEGER(23..66), -- units octets--
+ sidMode0 INTEGER(6..17), -- units octets--
+ sidMode1 INTEGER(6..17), -- units octets--
+ ...} OPTIONAL,
+ ...
+}
+
+IS11172AudioCapability ::= SEQUENCE {
+ audioLayer1 BOOLEAN,
+ audioLayer2 BOOLEAN,
+ audioLayer3 BOOLEAN,
+ audioSampling32k BOOLEAN,
+ audioSampling44k1 BOOLEAN,
+ audioSampling48k BOOLEAN,
+ singleChannel BOOLEAN,
+ twoChannels BOOLEAN,
+ bitRate INTEGER(1..448), -- units kbit/s
+ ...
+}
+
+IS13818AudioCapability ::= SEQUENCE {
+ audioLayer1 BOOLEAN,
+ audioLayer2 BOOLEAN,
+ audioLayer3 BOOLEAN,
+ audioSampling16k BOOLEAN,
+ audioSampling22k05 BOOLEAN,
+ audioSampling24k BOOLEAN,
+ audioSampling32k BOOLEAN,
+ audioSampling44k1 BOOLEAN,
+ audioSampling48k BOOLEAN,
+ singleChannel BOOLEAN,
+ twoChannels BOOLEAN,
+ threeChannels2-1 BOOLEAN,
+ threeChannels3-0 BOOLEAN,
+ fourChannels2-0-2-0 BOOLEAN,
+ fourChannels2-2 BOOLEAN,
+ fourChannels3-1 BOOLEAN,
+ fiveChannels3-0-2-0 BOOLEAN,
+ fiveChannels3-2 BOOLEAN,
+ lowFrequencyEnhancement BOOLEAN,
+ multilingual BOOLEAN,
+ bitRate INTEGER(1..1130), -- units kbit/s
+ ...
+}
+
+GSMAudioCapability ::= SEQUENCE {
+ audioUnitSize INTEGER(1..256),
+ comfortNoise BOOLEAN,
+ scrambled BOOLEAN,
+ ...
+}
+
+VBDCapability ::= SEQUENCE {type AudioCapability, -- shall not be "vbd"
+ ...
+}
+
+-- =============================================================================
+-- Capability exchange definitions: Data capabilities
+-- =============================================================================
+DataApplicationCapability ::= SEQUENCE {
+ application
+ CHOICE {nonStandard NonStandardParameter,
+ t120 DataProtocolCapability,
+ dsm-cc DataProtocolCapability,
+ userData DataProtocolCapability,
+ t84
+ SEQUENCE {t84Protocol DataProtocolCapability,
+ t84Profile T84Profile},
+ t434 DataProtocolCapability,
+ h224 DataProtocolCapability,
+ nlpid
+ SEQUENCE {nlpidProtocol DataProtocolCapability,
+ nlpidData OCTET STRING},
+ dsvdControl NULL,
+ h222DataPartitioning DataProtocolCapability,
+ ...,
+ t30fax DataProtocolCapability,
+ t140 DataProtocolCapability,
+ t38fax
+ SEQUENCE {t38FaxProtocol DataProtocolCapability,
+ t38FaxProfile T38FaxProfile},
+ genericDataCapability GenericCapability},
+ maxBitRate INTEGER(0..4294967295), -- units 100 bit/s
+ ...
+}
+
+DataProtocolCapability ::= CHOICE {
+ nonStandard NonStandardParameter,
+ v14buffered NULL,
+ v42lapm NULL, -- may negotiate to V.42 bis
+ hdlcFrameTunnelling NULL,
+ h310SeparateVCStack NULL,
+ h310SingleVCStack NULL,
+ transparent NULL,
+ ...,
+ segmentationAndReassembly NULL,
+ hdlcFrameTunnelingwSAR NULL,
+ v120 NULL, -- as in H.230
+ separateLANStack NULL,
+ v76wCompression
+ CHOICE {transmitCompression CompressionType,
+ receiveCompression CompressionType,
+ transmitAndReceiveCompression CompressionType,
+ ...},
+ tcp NULL,
+ udp NULL
+}
+
+CompressionType ::= CHOICE {v42bis V42bis,
+ ...
+}
+
+V42bis ::= SEQUENCE {
+ numberOfCodewords INTEGER(1..65536),
+ maximumStringLength INTEGER(1..256),
+ ...
+}
+
+T84Profile ::= CHOICE {
+ t84Unrestricted NULL,
+ t84Restricted
+ SEQUENCE {qcif BOOLEAN,
+ cif BOOLEAN,
+ ccir601Seq BOOLEAN,
+ ccir601Prog BOOLEAN,
+ hdtvSeq BOOLEAN,
+ hdtvProg BOOLEAN,
+ g3FacsMH200x100 BOOLEAN,
+ g3FacsMH200x200 BOOLEAN,
+ g4FacsMMR200x100 BOOLEAN,
+ g4FacsMMR200x200 BOOLEAN,
+ jbig200x200Seq BOOLEAN,
+ jbig200x200Prog BOOLEAN,
+ jbig300x300Seq BOOLEAN,
+ jbig300x300Prog BOOLEAN,
+ digPhotoLow BOOLEAN,
+ digPhotoMedSeq BOOLEAN,
+ digPhotoMedProg BOOLEAN,
+ digPhotoHighSeq BOOLEAN,
+ digPhotoHighProg BOOLEAN,
+ ...}
+}
+
+T38FaxProfile ::= SEQUENCE {
+ fillBitRemoval BOOLEAN,
+ transcodingJBIG BOOLEAN,
+ transcodingMMR BOOLEAN,
+ ...,
+ version INTEGER(0..255),
+ -- Version 0, the default, refers to
+ -- T.38 (2005)
+ t38FaxRateManagement T38FaxRateManagement,
+ -- The default Data Rate Management is
+ -- determined by the choice of
+ -- DataProtocolCapability
+ t38FaxUdpOptions T38FaxUdpOptions OPTIONAL,
+ -- For UDP, t38UDPRedundancy is the default
+ t38FaxTcpOptions T38FaxTcpOptions OPTIONAL
+}
+
+T38FaxRateManagement ::= CHOICE {
+ localTCF NULL,
+ transferredTCF NULL,
+ ...
+}
+
+T38FaxUdpOptions ::= SEQUENCE {
+ t38FaxMaxBuffer INTEGER OPTIONAL,
+ t38FaxMaxDatagram INTEGER OPTIONAL,
+ t38FaxUdpEC
+ CHOICE {t38UDPFEC NULL,
+ t38UDPRedundancy NULL,
+ ...}
+}
+
+T38FaxTcpOptions ::= SEQUENCE {t38TCPBidirectionalMode BOOLEAN,
+ ...
+}
+
+-- =============================================================================
+-- Encryption Capability Definitions
+-- =============================================================================
+EncryptionAuthenticationAndIntegrity ::= SEQUENCE {
+ encryptionCapability EncryptionCapability OPTIONAL,
+ authenticationCapability AuthenticationCapability OPTIONAL,
+ integrityCapability IntegrityCapability OPTIONAL,
+ ...,
+ genericH235SecurityCapability GenericCapability OPTIONAL
+}
+
+EncryptionCapability ::= SEQUENCE SIZE (1..256) OF MediaEncryptionAlgorithm
+
+MediaEncryptionAlgorithm ::= CHOICE {
+ nonStandard NonStandardParameter,
+ algorithm OBJECT IDENTIFIER, -- many defined
+
+ -- in ISO/IEC 9979
+ ...
+}
+
+AuthenticationCapability ::= SEQUENCE {
+ nonStandard NonStandardParameter OPTIONAL,
+ ...,
+ antiSpamAlgorithm OBJECT IDENTIFIER OPTIONAL
+}
+
+IntegrityCapability ::= SEQUENCE {
+ nonStandard NonStandardParameter OPTIONAL,
+ ...
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: UserInput
+-- =============================================================================
+UserInputCapability ::= CHOICE {
+ nonStandard SEQUENCE SIZE (1..16) OF NonStandardParameter,
+ basicString NULL, -- alphanumeric
+ iA5String NULL, -- alphanumeric
+ generalString NULL, -- alphanumeric
+ dtmf NULL, -- supports dtmf using signal
+
+ -- and signalUpdate
+ hookflash NULL, -- supports hookflash using signal
+ ...,
+ extendedAlphanumeric NULL,
+ encryptedBasicString NULL, -- encrypted Basic string in
+
+ -- encryptedAlphanumeric
+ encryptedIA5String NULL, -- encrypted IA5 string in
+
+ -- encryptedSignalType
+ encryptedGeneralString NULL, -- encrypted general string in
+
+ -- extendedAlphanumeric.encryptedalphanumeric
+ secureDTMF NULL, -- secure DTMF using encryptedSignalType
+ genericUserInputCapability GenericCapability
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: Conference
+-- =============================================================================
+ConferenceCapability ::= SEQUENCE {
+ nonStandardData
+ SEQUENCE OF NonStandardParameter OPTIONAL,
+ chairControlCapability BOOLEAN,
+ ...,
+ videoIndicateMixingCapability BOOLEAN,
+ multipointVisualizationCapability BOOLEAN OPTIONAL -- same as H.230 MVC
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: Generic Capability
+-- =============================================================================
+GenericCapability ::= SEQUENCE {
+ capabilityIdentifier CapabilityIdentifier,
+ maxBitRate INTEGER(0..4294967295) OPTIONAL,
+ -- Units 100 bit/s
+ collapsing SEQUENCE OF GenericParameter OPTIONAL,
+ nonCollapsing SEQUENCE OF GenericParameter OPTIONAL,
+ nonCollapsingRaw OCTET STRING OPTIONAL,
+ -- Typically contains ASN.1
+ -- PER encoded data describing capability
+ transport DataProtocolCapability OPTIONAL,
+ ...
+}
+
+CapabilityIdentifier ::= CHOICE {
+ standard OBJECT IDENTIFIER,
+ -- e.g., { itu-t (0) recommendation (0) h (8) 267
+ -- version (0) 2 subIdentifier (0)}
+ h221NonStandard NonStandardParameter,
+ uuid OCTET STRING(SIZE (16)),
+ domainBased IA5String(SIZE (1..64)),
+ ...
+}
+
+-- NOTE - The ranges of parameter values have been selected to ensure that the
+-- GenericParameter preamble, standard part of ParameterIdentifier and the
+-- encoding of that choice, and the preamble of ParameterValue to fit into
+-- 2 octets.
+GenericParameter ::= SEQUENCE {
+ parameterIdentifier ParameterIdentifier,
+ parameterValue ParameterValue,
+ supersedes SEQUENCE OF ParameterIdentifier OPTIONAL,
+ ...
+}
+
+ParameterIdentifier ::= CHOICE {
+ standard INTEGER(0..127), -- Assigned by
+
+ -- Capability
+ -- specifications
+ h221NonStandard NonStandardParameter, -- N.B.
+
+ -- NonStandardIdentifier
+ -- is not sufficient in
+ -- this case
+ uuid OCTET STRING(SIZE (16)), -- For non-
+
+ -- standard
+ domainBased IA5String(SIZE (1..64)),
+ ...
+}
+
+ParameterValue ::= CHOICE {
+ logical NULL, -- Only acceptable if
+
+ -- all entities
+ -- include this option
+ booleanArray INTEGER(0..255), -- array of 8 logical
+
+ -- types
+ unsignedMin INTEGER(0..65535), -- Look for min
+
+ -- common value
+ unsignedMax INTEGER(0..65535), -- Look for max
+
+ -- common value
+ unsigned32Min INTEGER(0..4294967295), -- Look for min
+
+ -- common value
+ unsigned32Max INTEGER(0..4294967295), -- Look for max
+
+ -- common value
+ octetString OCTET STRING, -- non-collapsing
+
+ -- octet string
+ genericParameter SEQUENCE OF GenericParameter,
+ ...
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: Multiplexed Stream Capability
+-- =============================================================================
+MultiplexedStreamCapability ::= SEQUENCE {
+ multiplexFormat MultiplexFormat,
+ controlOnMuxStream BOOLEAN,
+ capabilityOnMuxStream SET SIZE (1..256) OF AlternativeCapabilitySet OPTIONAL,
+ ...
+}
+
+MultiplexFormat ::= CHOICE {
+ nonStandard NonStandardParameter,
+ h222Capability H222Capability,
+ h223Capability H223Capability,
+ ...
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: AudioTelephonyEventCapability and AudioToneCapability
+--==============================================================================
+AudioTelephonyEventCapability ::= SEQUENCE {
+ dynamicRTPPayloadType INTEGER(96..127),
+ audioTelephoneEvent GeneralString, -- As per <list of values>
+
+ -- in RFC 4733
+ ...
+}
+
+AudioToneCapability ::= SEQUENCE {dynamicRTPPayloadType INTEGER(96..127),
+ ...
+}
+
+-- The following definitions are as above but without a Payload Type field.
+NoPTAudioTelephonyEventCapability ::= SEQUENCE {
+ audioTelephoneEvent GeneralString, -- As per <list of values>
+
+ -- in RFC 4733
+ ...
+}
+
+NoPTAudioToneCapability ::= SEQUENCE {...
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: MultiplePayloadStreamCapability
+-- =============================================================================
+MultiplePayloadStreamCapability ::= SEQUENCE {
+ capabilities SET SIZE (1..256) OF AlternativeCapabilitySet,
+ ...
+}
+
+-- =============================================================================
+-- Capability Exchange Definitions: FECCapability
+-- =============================================================================
+DepFECCapability ::= CHOICE -- Deprecated, do not use
+ {
+ rfc2733
+ SEQUENCE {redundancyEncoding BOOLEAN,
+ separateStream
+ SEQUENCE {separatePort BOOLEAN,
+ samePort BOOLEAN,
+ ...},
+ ...},
+ ...
+}
+
+FECCapability ::= SEQUENCE {
+ protectedCapability CapabilityTableEntryNumber,
+ fecScheme
+ -- identifies encoding scheme -- OBJECT IDENTIFIER OPTIONAL,
+ rfc2733Format
+ CHOICE {rfc2733rfc2198 -- RFC 2198 -- MaxRedundancy,
+ rfc2733sameport -- separate packet, same port -- MaxRedundancy,
+ rfc2733diffport -- separate packet and port -- MaxRedundancy
+ } OPTIONAL,
+ ...
+}
+
+MaxRedundancy ::= INTEGER(1..MAX)
+
+-- =============================================================================
+-- Logical channel signalling definitions
+-- =============================================================================
+-- "Forward" is used to refer to transmission in the direction from the terminal
+-- making the original request for a logical channel to the other terminal, and
+-- "reverse" is used to refer to the opposite direction of transmission, in the
+-- case of a bidirectional channel request.
+OpenLogicalChannel ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ forwardLogicalChannelParameters
+ SEQUENCE {portNumber INTEGER(0..65535) OPTIONAL,
+ dataType DataType,
+ multiplexParameters
+ CHOICE {h222LogicalChannelParameters
+ H222LogicalChannelParameters,
+ h223LogicalChannelParameters
+ H223LogicalChannelParameters,
+ v76LogicalChannelParameters
+ V76LogicalChannelParameters,
+ ...,
+ h2250LogicalChannelParameters
+ H2250LogicalChannelParameters,
+ none NULL}, -- for use with Separate Stack when--
+ -- multiplexParameters are not
+ -- required or appropriate
+ ...,
+ forwardLogicalChannelDependency LogicalChannelNumber OPTIONAL,
+ -- also used to refer to the primary
+ -- logical channel when using video
+ -- redundancy coding
+ replacementFor LogicalChannelNumber OPTIONAL
+ },
+ -- Used to specify the reverse channel for bidirectional open request
+ reverseLogicalChannelParameters
+ SEQUENCE {dataType DataType,
+ multiplexParameters
+ CHOICE {-- H.222 parameters are never present in reverse direction
+ h223LogicalChannelParameters
+ H223LogicalChannelParameters,
+ v76LogicalChannelParameters
+ V76LogicalChannelParameters,
+ ...,
+ h2250LogicalChannelParameters
+ H2250LogicalChannelParameters} OPTIONAL, -- Not present for H.222--
+ ...,
+ reverseLogicalChannelDependency LogicalChannelNumber OPTIONAL,
+ -- also used to refer to the primary logical channel when using
+ -- video redundancy coding
+ replacementFor LogicalChannelNumber OPTIONAL
+ } OPTIONAL, -- Not present for unidirectional channel request
+ ...,
+ separateStack NetworkAccessParameters OPTIONAL,
+ -- for Open responder to establish the stack
+ encryptionSync EncryptionSync OPTIONAL,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+}
+
+-- generic information associated
+-- with the message
+LogicalChannelNumber ::= INTEGER(1..65535)
+
+NetworkAccessParameters ::= SEQUENCE {
+ distribution
+ CHOICE {unicast NULL,
+ multicast NULL, -- for further study in T.120--
+ ...} OPTIONAL,
+ networkAddress
+ CHOICE {q2931Address Q2931Address,
+ e164Address IA5String(SIZE (1..128))(FROM ("0123456789#*,")),
+ localAreaAddress TransportAddress,
+ ...},
+ associateConference BOOLEAN,
+ externalReference OCTET STRING(SIZE (1..255)) OPTIONAL,
+ ...,
+ t120SetupProcedure
+ CHOICE {originateCall NULL,
+ waitForCall NULL,
+ issueQuery NULL,
+ ...} OPTIONAL
+}
+
+Q2931Address ::= SEQUENCE {
+ address
+ CHOICE {internationalNumber NumericString(SIZE (1..16)),
+ nsapAddress OCTET STRING(SIZE (1..20)),
+ ...},
+ subaddress OCTET STRING(SIZE (1..20)) OPTIONAL,
+ ...
+}
+
+V75Parameters ::= SEQUENCE {audioHeaderPresent BOOLEAN,
+ ...
+}
+
+DataType ::= CHOICE {
+ nonStandard NonStandardParameter,
+ nullData NULL,
+ videoData VideoCapability,
+ audioData AudioCapability,
+ data DataApplicationCapability,
+ encryptionData EncryptionMode,
+ ...,
+ h235Control NonStandardParameter,
+ h235Media H235Media,
+ multiplexedStream MultiplexedStreamParameter,
+ redundancyEncoding RedundancyEncoding,
+ multiplePayloadStream MultiplePayloadStream,
+ depFec DepFECData, -- Deprecated, do not use
+ fec FECData
+}
+
+H235Media ::= SEQUENCE {
+ encryptionAuthenticationAndIntegrity EncryptionAuthenticationAndIntegrity,
+ mediaType
+ CHOICE {nonStandard NonStandardParameter,
+ videoData VideoCapability,
+ audioData AudioCapability,
+ data DataApplicationCapability,
+ ...,
+ redundancyEncoding RedundancyEncoding,
+ multiplePayloadStream MultiplePayloadStream,
+ depFec DepFECData, -- Deprecated, do not use--
+ fec FECData},
+ ...
+}
+
+MultiplexedStreamParameter ::= SEQUENCE {
+ multiplexFormat MultiplexFormat,
+ controlOnMuxStream BOOLEAN,
+ ...
+}
+
+H222LogicalChannelParameters ::= SEQUENCE {
+ resourceID INTEGER(0..65535),
+ subChannelID INTEGER(0..8191),
+ pcr-pid INTEGER(0..8191) OPTIONAL,
+ programDescriptors OCTET STRING OPTIONAL,
+ streamDescriptors OCTET STRING OPTIONAL,
+ ...
+}
+
+H223LogicalChannelParameters ::= SEQUENCE {
+ adaptationLayerType
+ CHOICE {nonStandard NonStandardParameter,
+ al1Framed NULL,
+ al1NotFramed NULL,
+ al2WithoutSequenceNumbers NULL,
+ al2WithSequenceNumbers NULL,
+ al3
+ SEQUENCE {controlFieldOctets INTEGER(0..2),
+ sendBufferSize
+ -- units octets -- INTEGER(0..16777215)},
+ ...,
+ al1M H223AL1MParameters,
+ al2M H223AL2MParameters,
+ al3M H223AL3MParameters},
+ segmentableFlag BOOLEAN,
+ ...
+}
+
+H223AL1MParameters ::= SEQUENCE {
+ transferMode CHOICE {framed NULL,
+ unframed NULL,
+ ...},
+ headerFEC CHOICE {sebch16-7 NULL,
+ golay24-12 NULL,
+ ...},
+ crcLength
+ CHOICE {crc4bit NULL,
+ crc12bit NULL,
+ crc20bit NULL,
+ crc28bit NULL,
+ ...,
+ crc8bit NULL,
+ crc16bit NULL,
+ crc32bit NULL,
+ crcNotUsed NULL},
+ rcpcCodeRate INTEGER(8..32),
+ arqType
+ CHOICE {noArq NULL,
+ typeIArq H223AnnexCArqParameters,
+ typeIIArq H223AnnexCArqParameters,
+ ...},
+ alpduInterleaving BOOLEAN,
+ alsduSplitting BOOLEAN,
+ ...,
+ rsCodeCorrection INTEGER(0..127) OPTIONAL
+}
+
+H223AL2MParameters ::= SEQUENCE {
+ headerFEC CHOICE {sebch16-5 NULL,
+ golay24-12 NULL,
+ ...},
+ alpduInterleaving BOOLEAN,
+ ...
+}
+
+H223AL3MParameters ::= SEQUENCE {
+ headerFormat CHOICE {sebch16-7 NULL,
+ golay24-12 NULL,
+ ...},
+ crcLength
+ CHOICE {crc4bit NULL,
+ crc12bit NULL,
+ crc20bit NULL,
+ crc28bit NULL,
+ ...,
+ crc8bit NULL,
+ crc16bit NULL,
+ crc32bit NULL,
+ crcNotUsed NULL},
+ rcpcCodeRate INTEGER(8..32),
+ arqType
+ CHOICE {noArq NULL,
+ typeIArq H223AnnexCArqParameters,
+ typeIIArq H223AnnexCArqParameters,
+ ...},
+ alpduInterleaving BOOLEAN,
+ ...,
+ rsCodeCorrection INTEGER(0..127) OPTIONAL
+}
+
+H223AnnexCArqParameters ::= SEQUENCE {
+ numberOfRetransmissions
+ CHOICE {finite INTEGER(0..16),
+ infinite NULL,
+ ...},
+ sendBufferSize INTEGER(0..16777215), -- units octets
+ ...
+}
+
+V76LogicalChannelParameters ::= SEQUENCE {
+ hdlcParameters V76HDLCParameters,
+ suspendResume
+ CHOICE {noSuspendResume NULL,
+ suspendResumewAddress NULL,
+ suspendResumewoAddress NULL,
+ ...},
+ uIH BOOLEAN,
+ mode
+ CHOICE {eRM
+ SEQUENCE {windowSize INTEGER(1..127),
+ recovery
+ CHOICE {rej NULL,
+ sREJ NULL,
+ mSREJ NULL,
+ ...},
+ ...},
+ uNERM NULL,
+ ...},
+ v75Parameters V75Parameters,
+ ...
+}
+
+V76HDLCParameters ::= SEQUENCE {
+ crcLength CRCLength,
+ n401 INTEGER(1..4095),
+ loopbackTestProcedure BOOLEAN,
+ ...
+}
+
+CRCLength ::= CHOICE {crc8bit NULL,
+ crc16bit NULL,
+ crc32bit NULL,
+ ...
+}
+
+H2250LogicalChannelParameters ::= SEQUENCE {
+ nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
+ sessionID INTEGER(0..255),
+ associatedSessionID INTEGER(1..255) OPTIONAL,
+ mediaChannel TransportAddress OPTIONAL,
+ mediaGuaranteedDelivery BOOLEAN OPTIONAL,
+ mediaControlChannel TransportAddress OPTIONAL, -- reverse
+
+ -- RTCP channel
+ mediaControlGuaranteedDelivery BOOLEAN OPTIONAL,
+ silenceSuppression BOOLEAN OPTIONAL,
+ destination TerminalLabel OPTIONAL,
+ dynamicRTPPayloadType INTEGER(96..127) OPTIONAL,
+ mediaPacketization
+ CHOICE {h261aVideoPacketization NULL,
+ ...,
+ rtpPayloadType RTPPayloadType} OPTIONAL,
+ ...,
+ transportCapability TransportCapability OPTIONAL,
+ redundancyEncoding RedundancyEncoding OPTIONAL,
+ source TerminalLabel OPTIONAL
+}
+
+RTPPayloadType ::= SEQUENCE {
+ payloadDescriptor
+ CHOICE {nonStandardIdentifier NonStandardParameter,
+ rfc-number INTEGER(1..32768, ...),
+ oid OBJECT IDENTIFIER,
+ ...},
+ payloadType INTEGER(0..127) OPTIONAL,
+ ...
+}
+
+RedundancyEncoding ::= SEQUENCE {
+ redundancyEncodingMethod RedundancyEncodingMethod,
+ secondaryEncoding DataType OPTIONAL, -- depends on method
+ ...,
+ -- The sequence below may be used in place of the above secondaryEncoding field
+ rtpRedundancyEncoding
+ SEQUENCE {primary RedundancyEncodingElement OPTIONAL,
+ -- Present when redundancyEncoding
+ -- is selected as the dataType
+ -- in an OpenLogicalChannel or
+ -- as part of a MultiplePayloadSteam
+ secondary SEQUENCE OF RedundancyEncodingElement OPTIONAL,
+ ...} OPTIONAL
+}
+
+RedundancyEncodingElement ::= SEQUENCE {
+ dataType DataType,
+ payloadType INTEGER(0..127) OPTIONAL,
+ ...
+}
+
+MultiplePayloadStream ::= SEQUENCE {
+ elements SEQUENCE OF MultiplePayloadStreamElement,
+ ...
+}
+
+MultiplePayloadStreamElement ::= SEQUENCE {
+ dataType DataType,
+ payloadType INTEGER(0..127) OPTIONAL,
+ ...
+}
+
+DepFECData ::= CHOICE -- Deprecated, do not use
+ {
+ rfc2733
+ SEQUENCE {mode
+ CHOICE {redundancyEncoding NULL,
+ separateStream
+ CHOICE {differentPort
+ SEQUENCE {protectedSessionID
+ INTEGER(1..255),
+ protectedPayloadType
+ INTEGER(0..127) OPTIONAL,
+ ...},
+ samePort
+ SEQUENCE {protectedPayloadType
+ INTEGER(0..127),
+ ...},
+ ...},
+ ...},
+ ...}
+}
+
+FECData ::= CHOICE {
+ rfc2733
+ SEQUENCE {protectedPayloadType INTEGER(0..127),
+ fecScheme OBJECT IDENTIFIER OPTIONAL,
+ pktMode
+ CHOICE {rfc2198coding NULL,
+ rfc2733sameport SEQUENCE {...},
+ rfc2733diffport
+ SEQUENCE {protectedChannel LogicalChannelNumber,
+ ...},
+ ...},
+ ...},
+ ...
+}
+
+TransportAddress ::= CHOICE {
+ unicastAddress UnicastAddress,
+ multicastAddress MulticastAddress,
+ ...
+}
+
+UnicastAddress ::= CHOICE {
+ iPAddress
+ SEQUENCE {network OCTET STRING(SIZE (4)),
+ tsapIdentifier INTEGER(0..65535),
+ ...},
+ iPXAddress
+ SEQUENCE {node OCTET STRING(SIZE (6)),
+ netnum OCTET STRING(SIZE (4)),
+ tsapIdentifier OCTET STRING(SIZE (2)),
+ ...},
+ iP6Address
+ SEQUENCE {network OCTET STRING(SIZE (16)),
+ tsapIdentifier INTEGER(0..65535),
+ ...},
+ netBios OCTET STRING(SIZE (16)),
+ iPSourceRouteAddress
+ SEQUENCE {routing CHOICE {strict NULL,
+ loose NULL},
+ network OCTET STRING(SIZE (4)),
+ tsapIdentifier INTEGER(0..65535),
+ route SEQUENCE OF OCTET STRING(SIZE (4)),
+ ...},
+ ...,
+ nsap OCTET STRING(SIZE (1..20)),
+ nonStandardAddress NonStandardParameter
+}
+
+MulticastAddress ::= CHOICE {
+ iPAddress
+ SEQUENCE {network OCTET STRING(SIZE (4)),
+ tsapIdentifier INTEGER(0..65535),
+ ...},
+ iP6Address
+ SEQUENCE {network OCTET STRING(SIZE (16)),
+ tsapIdentifier INTEGER(0..65535),
+ ...},
+ ...,
+ nsap OCTET STRING(SIZE (1..20)),
+ nonStandardAddress NonStandardParameter
+}
+
+EncryptionSync ::=
+ SEQUENCE
+ -- used to supply new key and synchronization point
+ {
+ nonStandard NonStandardParameter OPTIONAL,
+ synchFlag INTEGER(0..255), -- may need to be larger
+
+ -- for H.324, etc.
+ -- shall be the Dynamic
+ -- Payload# for H.323
+ h235Key OCTET STRING(SIZE (1..65535)), -- H.235.0
+
+ -- encoded value
+ escrowentry SEQUENCE SIZE (1..256) OF EscrowData OPTIONAL,
+ ...,
+ genericParameter GenericParameter OPTIONAL
+}
+
+EscrowData ::= SEQUENCE {
+ escrowID OBJECT IDENTIFIER,
+ escrowValue BIT STRING(SIZE (1..65535)),
+ ...
+}
+
+OpenLogicalChannelAck ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ reverseLogicalChannelParameters
+ SEQUENCE {reverseLogicalChannelNumber LogicalChannelNumber,
+ portNumber INTEGER(0..65535) OPTIONAL,
+ multiplexParameters
+ CHOICE {h222LogicalChannelParameters
+ H222LogicalChannelParameters,
+ -- H.223 parameters are never present in reverse direction
+ ...,
+ h2250LogicalChannelParameters
+ H2250LogicalChannelParameters} OPTIONAL, -- not present for H.223--
+ ...,
+ replacementFor LogicalChannelNumber OPTIONAL
+ } OPTIONAL, -- not present for unidirectional channel
+
+ -- request
+ ...,
+ separateStack NetworkAccessParameters OPTIONAL,
+ -- for Open requester to establish
+ -- the stack
+ forwardMultiplexAckParameters
+ CHOICE {-- H.222 parameters are never present in the Ack
+ -- H.223 parameters are never present in the Ack
+ -- V.76 parameters are never present in the Ack
+ h2250LogicalChannelAckParameters H2250LogicalChannelAckParameters,
+ ...} OPTIONAL,
+ encryptionSync EncryptionSync OPTIONAL, -- used only by Master
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+}
+
+-- generic information associated
+-- with the message
+OpenLogicalChannelReject ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ cause
+ CHOICE {unspecified NULL,
+ unsuitableReverseParameters NULL,
+ dataTypeNotSupported NULL,
+ dataTypeNotAvailable NULL,
+ unknownDataType NULL,
+ dataTypeALCombinationNotSupported NULL,
+ ...,
+ multicastChannelNotAllowed NULL,
+ insufficientBandwidth NULL,
+ separateStackEstablishmentFailed NULL,
+ invalidSessionID NULL,
+ masterSlaveConflict NULL,
+ waitForCommunicationMode NULL,
+ invalidDependentChannel NULL,
+ replacementForRejected NULL,
+ securityDenied NULL,
+ qoSControlNotSupported NULL}, -- added for callee to indicate
+
+ -- that requested QoS support cannot be
+ -- supported.
+ ...,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+}
+
+-- generic information associated
+-- with the message
+OpenLogicalChannelConfirm ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ ...,
+ genericInformation SEQUENCE OF GenericInformation OPTIONAL
+}
+
+-- generic information associated
+-- with the message
+H2250LogicalChannelAckParameters ::= SEQUENCE {
+ nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
+ sessionID INTEGER(1..255) OPTIONAL,
+ mediaChannel TransportAddress OPTIONAL,
+ mediaControlChannel TransportAddress OPTIONAL, -- forward RTCP
+
+ -- channel
+ dynamicRTPPayloadType INTEGER(96..127) OPTIONAL, -- used only by
+
+ -- the master or
+ -- MC
+ ...,
+ flowControlToZero BOOLEAN,
+ portNumber INTEGER(0..65535) OPTIONAL
+}
+
+CloseLogicalChannel ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ source CHOICE {user NULL,
+ lcse NULL},
+ ...,
+ reason
+ CHOICE {unknown NULL,
+ reopen NULL,
+ reservationFailure NULL,
+ ...,
+ networkErrorCode INTEGER(0..255)}
+} -- Indicates the error
+
+-- code received from network
+CloseLogicalChannelAck ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ ...
+}
+
+RequestChannelClose ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ ...,
+ qosCapability QOSCapability OPTIONAL,
+ reason
+ CHOICE {unknown NULL,
+ normal NULL,
+ reopen NULL,
+ reservationFailure NULL,
+ ...,
+ networkErrorCode INTEGER(0..255)}
+} -- Indicates the error
+
+-- code received from network
+RequestChannelCloseAck ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ ...
+}
+
+RequestChannelCloseReject ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ cause CHOICE {unspecified NULL,
+ ...},
+ ...
+}
+
+RequestChannelCloseRelease ::= SEQUENCE {
+ forwardLogicalChannelNumber LogicalChannelNumber,
+ ...
+}
+
+-- =============================================================================
+-- H.223 multiplex table definitions
+-- =============================================================================
+MultiplexEntrySend ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ multiplexEntryDescriptors SET SIZE (1..15) OF MultiplexEntryDescriptor,
+ ...
+}
+
+MultiplexEntryDescriptor ::= SEQUENCE {
+ multiplexTableEntryNumber MultiplexTableEntryNumber,
+ elementList
+ SEQUENCE SIZE (1..256) OF MultiplexElement OPTIONAL
+}
+
+MultiplexElement ::= SEQUENCE {
+ type
+ CHOICE {logicalChannelNumber INTEGER(0..65535),
+ subElementList SEQUENCE SIZE (2..255) OF MultiplexElement
+ },
+ repeatCount
+ CHOICE {finite -- repeats of type -- INTEGER(1..65535),
+ untilClosingFlag -- used for last element -- NULL}
+}
+
+MultiplexTableEntryNumber ::= INTEGER(1..15)
+
+MultiplexEntrySendAck ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ multiplexTableEntryNumber SET SIZE (1..15) OF MultiplexTableEntryNumber,
+ ...
+}
+
+MultiplexEntrySendReject ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ rejectionDescriptions
+ SET SIZE (1..15) OF MultiplexEntryRejectionDescriptions,
+ ...
+}
+
+MultiplexEntryRejectionDescriptions ::= SEQUENCE {
+ multiplexTableEntryNumber MultiplexTableEntryNumber,
+ cause
+ CHOICE {unspecifiedCause NULL,
+ descriptorTooComplex NULL,
+ ...},
+ ...
+}
+
+MultiplexEntrySendRelease ::= SEQUENCE {
+ multiplexTableEntryNumber SET SIZE (1..15) OF MultiplexTableEntryNumber,
+ ...
+}
+
+RequestMultiplexEntry ::= SEQUENCE {
+ entryNumbers SET SIZE (1..15) OF MultiplexTableEntryNumber,
+ ...
+}
+
+RequestMultiplexEntryAck ::= SEQUENCE {
+ entryNumbers SET SIZE (1..15) OF MultiplexTableEntryNumber,
+ ...
+}
+
+RequestMultiplexEntryReject ::= SEQUENCE {
+ entryNumbers SET SIZE (1..15) OF MultiplexTableEntryNumber,
+ rejectionDescriptions
+ SET SIZE (1..15) OF RequestMultiplexEntryRejectionDescriptions,
+ ...
+}
+
+RequestMultiplexEntryRejectionDescriptions ::= SEQUENCE {
+ multiplexTableEntryNumber MultiplexTableEntryNumber,
+ cause CHOICE {unspecifiedCause NULL,
+ ...},
+ ...
+}
+
+RequestMultiplexEntryRelease ::= SEQUENCE {
+ entryNumbers SET SIZE (1..15) OF MultiplexTableEntryNumber,
+ ...
+}
+
+-- =============================================================================
+-- Request mode definitions
+-- =============================================================================
+-- RequestMode is a list, in order or preference, of modes that a terminal would
+-- like to have transmitted to it.
+RequestMode ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ requestedModes SEQUENCE SIZE (1..256) OF ModeDescription,
+ ...
+}
+
+RequestModeAck ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ response
+ CHOICE {willTransmitMostPreferredMode NULL,
+ willTransmitLessPreferredMode NULL,
+ ...},
+ ...
+}
+
+RequestModeReject ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ cause
+ CHOICE {modeUnavailable NULL,
+ multipointConstraint NULL,
+ requestDenied NULL,
+ ...},
+ ...
+}
+
+RequestModeRelease ::= SEQUENCE {...
+}
+
+-- =============================================================================
+-- Request mode definitions: Mode description
+-- =============================================================================
+ModeDescription ::= SET SIZE (1..256) OF ModeElement
+
+ModeElementType ::= CHOICE {
+ nonStandard NonStandardParameter,
+ videoMode VideoMode,
+ audioMode AudioMode,
+ dataMode DataMode,
+ encryptionMode EncryptionMode,
+ ...,
+ h235Mode H235Mode,
+ multiplexedStreamMode MultiplexedStreamParameter,
+ redundancyEncodingDTMode RedundancyEncodingDTMode,
+ multiplePayloadStreamMode MultiplePayloadStreamMode,
+ depFecMode DepFECMode, -- deprecated, do not use
+ fecMode FECMode
+}
+
+ModeElement ::= SEQUENCE {
+ type ModeElementType,
+ h223ModeParameters H223ModeParameters OPTIONAL,
+ ...,
+ v76ModeParameters V76ModeParameters OPTIONAL,
+ h2250ModeParameters H2250ModeParameters OPTIONAL,
+ genericModeParameters GenericCapability OPTIONAL,
+ multiplexedStreamModeParameters MultiplexedStreamModeParameters OPTIONAL,
+ logicalChannelNumber LogicalChannelNumber OPTIONAL
+}
+
+H235Mode ::= SEQUENCE {
+ encryptionAuthenticationAndIntegrity EncryptionAuthenticationAndIntegrity,
+ mediaMode
+ CHOICE {nonStandard NonStandardParameter,
+ videoMode VideoMode,
+ audioMode AudioMode,
+ dataMode DataMode,
+ ...},
+ ...
+}
+
+MultiplexedStreamModeParameters ::= SEQUENCE {
+ logicalChannelNumber LogicalChannelNumber,
+ ...
+}
+
+RedundancyEncodingDTMode ::= SEQUENCE {
+ redundancyEncodingMethod RedundancyEncodingMethod,
+ primary RedundancyEncodingDTModeElement,
+ secondary SEQUENCE OF RedundancyEncodingDTModeElement,
+ ...
+}
+
+RedundancyEncodingDTModeElement ::= SEQUENCE {
+ type
+ CHOICE {nonStandard NonStandardParameter,
+ videoMode VideoMode,
+ audioMode AudioMode,
+ dataMode DataMode,
+ encryptionMode EncryptionMode,
+ h235Mode H235Mode,
+ ...,
+ fecMode FECMode},
+ ...
+}
+
+MultiplePayloadStreamMode ::= SEQUENCE {
+ elements SEQUENCE OF MultiplePayloadStreamElementMode,
+ ...
+}
+
+MultiplePayloadStreamElementMode ::= SEQUENCE {type ModeElementType,
+ ...
+}
+
+DepFECMode ::= CHOICE -- deprecated, do not use
+ {
+ rfc2733Mode
+ SEQUENCE {mode
+ CHOICE {redundancyEncoding NULL,
+ separateStream
+ CHOICE {differentPort
+ SEQUENCE {protectedSessionID
+ INTEGER(1..255),
+ protectedPayloadType
+ INTEGER(0..127) OPTIONAL,
+ ...},
+ samePort
+ SEQUENCE {protectedType ModeElementType,
+ ...},
+ ...},
+ ...},
+ ...},
+ ...
+}
+
+FECMode ::= SEQUENCE {
+ protectedElement ModeElementType,
+ fecScheme -- identifies encoding scheme -- OBJECT IDENTIFIER OPTIONAL,
+ rfc2733Format
+ CHOICE {rfc2733rfc2198 -- RFC 2198 redundancy -- MaxRedundancy,
+ rfc2733sameport -- separate packet, same port -- MaxRedundancy,
+ rfc2733diffport -- separate packet and port -- MaxRedundancy
+ } OPTIONAL,
+ ...
+}
+
+H223ModeParameters ::= SEQUENCE {
+ adaptationLayerType
+ CHOICE {nonStandard NonStandardParameter,
+ al1Framed NULL,
+ al1NotFramed NULL,
+ al2WithoutSequenceNumbers NULL,
+ al2WithSequenceNumbers NULL,
+ al3
+ SEQUENCE {controlFieldOctets INTEGER(0..2),
+ sendBufferSize
+ -- units octets -- INTEGER(0..16777215)},
+ ...,
+ al1M H223AL1MParameters,
+ al2M H223AL2MParameters,
+ al3M H223AL3MParameters},
+ segmentableFlag BOOLEAN,
+ ...
+}
+
+V76ModeParameters ::= CHOICE {
+ suspendResumewAddress NULL,
+ suspendResumewoAddress NULL,
+ ...
+}
+
+H2250ModeParameters ::= SEQUENCE {
+ redundancyEncodingMode RedundancyEncodingMode OPTIONAL,
+ ...
+}
+
+RedundancyEncodingMode ::= SEQUENCE {
+ redundancyEncodingMethod RedundancyEncodingMethod,
+ secondaryEncoding
+ CHOICE {nonStandard NonStandardParameter,
+ audioData AudioMode,
+ ...} OPTIONAL,
+ ...
+}
+
+-- =============================================================================
+-- Request mode definitions: Video modes
+-- =============================================================================
+VideoMode ::= CHOICE {
+ nonStandard NonStandardParameter,
+ h261VideoMode H261VideoMode,
+ h262VideoMode H262VideoMode,
+ h263VideoMode H263VideoMode,
+ is11172VideoMode IS11172VideoMode,
+ ...,
+ genericVideoMode GenericCapability
+}
+
+H261VideoMode ::= SEQUENCE {
+ resolution CHOICE {qcif NULL,
+ cif NULL},
+ bitRate INTEGER(1..19200), -- units 100 bit/s
+ stillImageTransmission BOOLEAN,
+ ...
+}
+
+H262VideoMode ::= SEQUENCE {
+ profileAndLevel
+ CHOICE {profileAndLevel-SPatML NULL,
+ profileAndLevel-MPatLL NULL,
+ profileAndLevel-MPatML NULL,
+ profileAndLevel-MPatH-14 NULL,
+ profileAndLevel-MPatHL NULL,
+ profileAndLevel-SNRatLL NULL,
+ profileAndLevel-SNRatML NULL,
+ profileAndLevel-SpatialatH-14 NULL,
+ profileAndLevel-HPatML NULL,
+ profileAndLevel-HPatH-14 NULL,
+ profileAndLevel-HPatHL NULL,
+ ...},
+ videoBitRate INTEGER(0..1073741823) OPTIONAL, -- units 400 bit/s
+ vbvBufferSize INTEGER(0..262143) OPTIONAL, -- units 16 384 bits
+ samplesPerLine INTEGER(0..16383) OPTIONAL, -- units samples/line
+ linesPerFrame INTEGER(0..16383) OPTIONAL, -- units lines/frame
+ framesPerSecond INTEGER(0..15) OPTIONAL, -- frame_rate_code
+ luminanceSampleRate INTEGER(0..4294967295) OPTIONAL, -- units samples/s
+ ...
+}
+
+H263VideoMode ::= SEQUENCE {
+ resolution
+ CHOICE {sqcif NULL,
+ qcif NULL,
+ cif NULL,
+ cif4 NULL,
+ cif16 NULL,
+ ...,
+ custom NULL},
+ bitRate INTEGER(1..19200), -- units 100 bit/s
+ unrestrictedVector BOOLEAN,
+ arithmeticCoding BOOLEAN,
+ advancedPrediction BOOLEAN,
+ pbFrames BOOLEAN,
+ ...,
+ errorCompensation BOOLEAN,
+ enhancementLayerInfo EnhancementLayerInfo OPTIONAL,
+ h263Options H263Options OPTIONAL
+}
+
+IS11172VideoMode ::= SEQUENCE {
+ constrainedBitstream BOOLEAN,
+ videoBitRate INTEGER(0..1073741823) OPTIONAL, -- units
+
+ -- 400 bit/s
+ vbvBufferSize INTEGER(0..262143) OPTIONAL, -- units
+
+ -- 16 384 bits
+ samplesPerLine INTEGER(0..16383) OPTIONAL, -- units
+
+ -- samples/line
+ linesPerFrame INTEGER(0..16383) OPTIONAL, -- units
+
+ -- lines/frame
+ pictureRate INTEGER(0..15) OPTIONAL,
+ luminanceSampleRate INTEGER(0..4294967295) OPTIONAL, -- units
+
+ -- samples/s
+ ...
+}
+
+-- =============================================================================
+-- Request mode definitions: Audio modes
+-- =============================================================================
+AudioMode ::= CHOICE {
+ nonStandard NonStandardParameter,
+ g711Alaw64k NULL,
+ g711Alaw56k NULL,
+ g711Ulaw64k NULL,
+ g711Ulaw56k NULL,
+ g722-64k NULL,
+ g722-56k NULL,
+ g722-48k NULL,
+ g728 NULL,
+ g729 NULL,
+ g729AnnexA NULL,
+ g7231
+ CHOICE {noSilenceSuppressionLowRate NULL,
+ noSilenceSuppressionHighRate NULL,
+ silenceSuppressionLowRate NULL,
+ silenceSuppressionHighRate NULL},
+ is11172AudioMode IS11172AudioMode,
+ is13818AudioMode IS13818AudioMode,
+ ...,
+ g729wAnnexB INTEGER(1..256),
+ g729AnnexAwAnnexB INTEGER(1..256),
+ g7231AnnexCMode G7231AnnexCMode,
+ gsmFullRate GSMAudioCapability,
+ gsmHalfRate GSMAudioCapability,
+ gsmEnhancedFullRate GSMAudioCapability,
+ genericAudioMode GenericCapability,
+ g729Extensions G729Extensions,
+ vbd VBDMode
+}
+
+IS11172AudioMode ::= SEQUENCE {
+ audioLayer
+ CHOICE {audioLayer1 NULL,
+ audioLayer2 NULL,
+ audioLayer3 NULL},
+ audioSampling
+ CHOICE {audioSampling32k NULL,
+ audioSampling44k1 NULL,
+ audioSampling48k NULL},
+ multichannelType
+ CHOICE {singleChannel NULL,
+ twoChannelStereo NULL,
+ twoChannelDual NULL},
+ bitRate INTEGER(1..448), -- units kbit/s
+ ...
+}
+
+IS13818AudioMode ::= SEQUENCE {
+ audioLayer
+ CHOICE {audioLayer1 NULL,
+ audioLayer2 NULL,
+ audioLayer3 NULL},
+ audioSampling
+ CHOICE {audioSampling16k NULL,
+ audioSampling22k05 NULL,
+ audioSampling24k NULL,
+ audioSampling32k NULL,
+ audioSampling44k1 NULL,
+ audioSampling48k NULL},
+ multichannelType
+ CHOICE {singleChannel NULL,
+ twoChannelStereo NULL,
+ twoChannelDual NULL,
+ threeChannels2-1 NULL,
+ threeChannels3-0 NULL,
+ fourChannels2-0-2-0 NULL,
+ fourChannels2-2 NULL,
+ fourChannels3-1 NULL,
+ fiveChannels3-0-2-0 NULL,
+ fiveChannels3-2 NULL},
+ lowFrequencyEnhancement BOOLEAN,
+ multilingual BOOLEAN,
+ bitRate INTEGER(1..1130), -- units kbit/s
+ ...
+}
+
+G7231AnnexCMode ::= SEQUENCE {
+ maxAl-sduAudioFrames INTEGER(1..256),
+ silenceSuppression BOOLEAN,
+ g723AnnexCAudioMode
+ SEQUENCE {highRateMode0 INTEGER(27..78), -- units octets--
+ highRateMode1 INTEGER(27..78), -- units octets--
+ lowRateMode0 INTEGER(23..66), -- units octets--
+ lowRateMode1 INTEGER(23..66), -- units octets--
+ sidMode0 INTEGER(6..17), -- units octets--
+ sidMode1 INTEGER(6..17), -- units octets--
+ ...},
+ ...
+}
+
+VBDMode ::= SEQUENCE {type AudioMode, -- shall not be "vbd"
+ ...
+}
+
+-- =============================================================================
+-- Request mode definitions: Data modes
+-- =============================================================================
+DataMode ::= SEQUENCE {
+ application
+ CHOICE {nonStandard NonStandardParameter,
+ t120 DataProtocolCapability,
+ dsm-cc DataProtocolCapability,
+ userData DataProtocolCapability,
+ t84 DataProtocolCapability,
+ t434 DataProtocolCapability,
+ h224 DataProtocolCapability,
+ nlpid
+ SEQUENCE {nlpidProtocol DataProtocolCapability,
+ nlpidData OCTET STRING},
+ dsvdControl NULL,
+ h222DataPartitioning DataProtocolCapability,
+ ...,
+ t30fax DataProtocolCapability,
+ t140 DataProtocolCapability,
+ t38fax
+ SEQUENCE {t38FaxProtocol DataProtocolCapability,
+ t38FaxProfile T38FaxProfile},
+ genericDataMode GenericCapability},
+ bitRate INTEGER(0..4294967295), -- units 100 bit/s
+ ...
+}
+
+-- =============================================================================
+-- Request mode definitions: Encryption modes
+-- =============================================================================
+EncryptionMode ::= CHOICE {
+ nonStandard NonStandardParameter,
+ h233Encryption NULL,
+ ...
+}
+
+-- =============================================================================
+-- Round Trip Delay definitions
+-- =============================================================================
+RoundTripDelayRequest ::= SEQUENCE {sequenceNumber SequenceNumber,
+ ...
+}
+
+RoundTripDelayResponse ::= SEQUENCE {sequenceNumber SequenceNumber,
+ ...
+}
+
+-- =============================================================================
+-- Maintenance Loop definitions
+-- =============================================================================
+MaintenanceLoopRequest ::= SEQUENCE {
+ type
+ CHOICE {systemLoop NULL,
+ mediaLoop LogicalChannelNumber,
+ logicalChannelLoop LogicalChannelNumber,
+ ...},
+ ...
+}
+
+MaintenanceLoopAck ::= SEQUENCE {
+ type
+ CHOICE {systemLoop NULL,
+ mediaLoop LogicalChannelNumber,
+ logicalChannelLoop LogicalChannelNumber,
+ ...},
+ ...
+}
+
+MaintenanceLoopReject ::= SEQUENCE {
+ type
+ CHOICE {systemLoop NULL,
+ mediaLoop LogicalChannelNumber,
+ logicalChannelLoop LogicalChannelNumber,
+ ...},
+ cause CHOICE {canNotPerformLoop NULL,
+ ...},
+ ...
+}
+
+MaintenanceLoopOffCommand ::= SEQUENCE {...
+}
+
+-- =============================================================================
+-- Communication Mode definitions
+-- =============================================================================
+CommunicationModeCommand ::= SEQUENCE {
+ communicationModeTable SET SIZE (1..256) OF CommunicationModeTableEntry,
+ ...
+}
+
+CommunicationModeRequest ::= SEQUENCE {...
+}
+
+CommunicationModeResponse ::= CHOICE {
+ communicationModeTable SET SIZE (1..256) OF CommunicationModeTableEntry,
+ ...
+}
+
+CommunicationModeTableEntry ::= SEQUENCE {
+ nonStandard SEQUENCE OF NonStandardParameter OPTIONAL,
+ sessionID INTEGER(1..255),
+ associatedSessionID INTEGER(1..255) OPTIONAL,
+ terminalLabel TerminalLabel OPTIONAL, -- if not present,
+
+ -- it refers to
+ -- all
+ -- participants in
+ -- the conference
+ sessionDescription BMPString(SIZE (1..128)),
+ -- Basic ISO/IEC 10646 (Unicode)
+ dataType
+ CHOICE {videoData VideoCapability,
+ audioData AudioCapability,
+ data DataApplicationCapability,
+ ...},
+ mediaChannel TransportAddress OPTIONAL,
+ mediaGuaranteedDelivery BOOLEAN OPTIONAL,
+ mediaControlChannel TransportAddress OPTIONAL,
+ -- reverse RTCP channel
+ mediaControlGuaranteedDelivery BOOLEAN OPTIONAL,
+ ...,
+ redundancyEncoding RedundancyEncoding OPTIONAL,
+ sessionDependency INTEGER(1..255) OPTIONAL,
+ destination TerminalLabel OPTIONAL
+}
+
+-- =============================================================================
+-- Conference Request definitions
+-- =============================================================================
+ConferenceRequest ::= CHOICE {
+ terminalListRequest NULL, -- same as H.230 TCU (term->MC)
+ makeMeChair NULL, -- same as H.230 CCA (term->MC)
+ cancelMakeMeChair NULL, -- same as H.230 CIS (term->MC)
+ dropTerminal TerminalLabel, -- same as H.230 CCD(term->MC)
+ requestTerminalID TerminalLabel, -- same as TCP (term->MC)
+ enterH243Password NULL, -- same as H.230 TCS1(MC->term)
+ enterH243TerminalID NULL, -- same as H.230 TCS2/TCI
+
+ -- (MC->term)
+ enterH243ConferenceID NULL, -- same as H.230 TCS3 (MC->term)
+ ...,
+ enterExtensionAddress NULL, -- same as H.230 TCS4 (GW->term)
+ requestChairTokenOwner NULL, -- same as H.230 TCA (term->MC)
+ requestTerminalCertificate
+ SEQUENCE {terminalLabel TerminalLabel OPTIONAL,
+ certSelectionCriteria CertSelectionCriteria OPTIONAL,
+ sRandom INTEGER(1..4294967295) OPTIONAL,
+ -- this is the requester's challenge
+ ...},
+ broadcastMyLogicalChannel LogicalChannelNumber, -- similar to H.230 MCV
+ makeTerminalBroadcaster TerminalLabel, -- similar to H.230 VCB
+ sendThisSource TerminalLabel, -- similar to H.230 VCS
+ requestAllTerminalIDs NULL,
+ remoteMCRequest RemoteMCRequest
+}
+
+CertSelectionCriteria ::= SEQUENCE SIZE (1..16) OF Criteria
+
+Criteria ::= SEQUENCE {
+ field OBJECT IDENTIFIER, -- may include
+
+ -- certificate type
+ value OCTET STRING(SIZE (1..65535)),
+ ...
+}
+
+TerminalLabel ::= SEQUENCE {
+ mcuNumber McuNumber,
+ terminalNumber TerminalNumber,
+ ...
+}
+
+McuNumber ::= INTEGER(0..192)
+
+TerminalNumber ::= INTEGER(0..192)
+
+-- =============================================================================
+-- Conference Response definitions
+-- =============================================================================
+ConferenceResponse ::= CHOICE {
+ mCTerminalIDResponse
+ SEQUENCE-- response to TCP --
+ -- (same as TIP)
+ {-- sent by MC only--terminalLabel TerminalLabel,
+ terminalID TerminalID,
+ ...},
+ terminalIDResponse
+ SEQUENCE-- response to TCS2 or TCI-- {-- same as IIS--terminalLabel
+ TerminalLabel, -- (term->MC)--
+ terminalID
+ TerminalID,
+ ...},
+ conferenceIDResponse
+ SEQUENCE-- response to TCS3-- {-- same as IIS--terminalLabel TerminalLabel, -- (term->MC)--
+ conferenceID ConferenceID,
+ ...},
+ passwordResponse
+ SEQUENCE-- response to TCS1-- {-- same as IIS--terminalLabel TerminalLabel, -- (term->MC)--
+ password Password,
+ ...},
+ terminalListResponse SET SIZE (1..256) OF TerminalLabel,
+ videoCommandReject NULL, -- same as H.230 VCR
+ terminalDropReject NULL, -- same as H.230 CIR
+ makeMeChairResponse
+ CHOICE-- same as H.230 CCR-- {grantedChairToken NULL, -- same as H.230 CIT--
+ deniedChairToken NULL, -- same as H.230 CCR--
+ ...},
+ ...,
+ extensionAddressResponse
+ SEQUENCE-- response to TCS4-- {extensionAddress TerminalID, -- same as IIS (term->GW)--
+ ...},
+ chairTokenOwnerResponse
+ SEQUENCE-- response to TCA (same as TIR) --
+ -- sent by MC only
+ {terminalLabel TerminalLabel,
+ terminalID TerminalID,
+ ...},
+ terminalCertificateResponse
+ SEQUENCE {terminalLabel TerminalLabel OPTIONAL,
+ certificateResponse OCTET STRING(SIZE (1..65535)) OPTIONAL,
+ ...},
+ broadcastMyLogicalChannelResponse
+ CHOICE {grantedBroadcastMyLogicalChannel NULL, -- similar to H.230 MVA--
+ deniedBroadcastMyLogicalChannel NULL, -- similar to H.230 MVR--
+ ...},
+ makeTerminalBroadcasterResponse
+ CHOICE {grantedMakeTerminalBroadcaster NULL,
+ deniedMakeTerminalBroadcaster NULL,
+ ...},
+ sendThisSourceResponse
+ CHOICE {grantedSendThisSource NULL,
+ deniedSendThisSource NULL,
+ ...},
+ requestAllTerminalIDsResponse RequestAllTerminalIDsResponse,
+ remoteMCResponse RemoteMCResponse
+}
+
+TerminalID ::= OCTET STRING(SIZE (1..128)) -- as per H.230
+
+
+ConferenceID ::= OCTET STRING(SIZE (1..32))
+
+Password ::= OCTET STRING(SIZE (1..32))
+
+RequestAllTerminalIDsResponse ::= SEQUENCE {
+ terminalInformation SEQUENCE OF TerminalInformation,
+ ...
+}
+
+TerminalInformation ::= SEQUENCE {
+ terminalLabel TerminalLabel,
+ terminalID TerminalID,
+ ...
+}
+
+-- =============================================================================
+-- Remote MC Request definitions
+-- =============================================================================
+RemoteMCRequest ::= CHOICE {
+ masterActivate NULL,
+ slaveActivate NULL,
+ deActivate NULL,
+ ...
+}
+
+RemoteMCResponse ::= CHOICE {
+ accept NULL,
+ reject CHOICE {unspecified NULL,
+ functionNotSupported NULL,
+ ...},
+ ...
+}
+
+-- =============================================================================
+-- Multilink definitions
+-- =============================================================================
+MultilinkRequest ::= CHOICE {
+ nonStandard NonStandardMessage,
+ callInformation
+ SEQUENCE {maxNumberOfAdditionalConnections INTEGER(1..65535),
+ ...},
+ addConnection
+ SEQUENCE {sequenceNumber SequenceNumber, -- Unique ID of request--
+ dialingInformation DialingInformation,
+ ...},
+ removeConnection
+ SEQUENCE {connectionIdentifier ConnectionIdentifier,
+ ...},
+ maximumHeaderInterval
+ SEQUENCE {requestType
+ CHOICE {currentIntervalInformation NULL,
+ requestedInterval INTEGER(0..65535), -- Max Header --
+ -- Interval,
+ -- milliseconds
+ ...},
+ ...},
+ ...
+}
+
+MultilinkResponse ::= CHOICE {
+ nonStandard NonStandardMessage,
+ callInformation
+ SEQUENCE {dialingInformation DialingInformation,
+ callAssociationNumber INTEGER(0..4294967295),
+ ...},
+ addConnection
+ SEQUENCE {sequenceNumber SequenceNumber, -- Equal to value in request--
+ responseCode
+ CHOICE {accepted NULL,
+ rejected
+ CHOICE {connectionsNotAvailable NULL, -- due to any technical reason--
+ userRejected NULL,
+ ...},
+ ...},
+ ...},
+ removeConnection
+ SEQUENCE {connectionIdentifier ConnectionIdentifier,
+ ...},
+ maximumHeaderInterval
+ SEQUENCE {currentInterval INTEGER(0..65535), -- Max Header --
+ -- Interval,
+ -- milliseconds
+ ...},
+ ...
+}
+
+MultilinkIndication ::= CHOICE {
+ nonStandard NonStandardMessage,
+ crcDesired SEQUENCE {...},
+ excessiveError SEQUENCE {connectionIdentifier ConnectionIdentifier,
+ ...},
+ ...
+}
+
+DialingInformation ::= CHOICE {
+ nonStandard NonStandardMessage,
+ differential SET SIZE (1..65535) OF DialingInformationNumber,
+ -- list of numbers for all additional
+ -- channels; only least significant digits
+ -- different from initial channel's number
+ infoNotAvailable INTEGER(1..65535), -- maximum No. of
+
+ -- additional channels
+ ...
+}
+
+DialingInformationNumber ::= SEQUENCE {
+ networkAddress NumericString(SIZE (0..40)),
+ subAddress IA5String(SIZE (1..40)) OPTIONAL,
+ networkType SET SIZE (1..255) OF DialingInformationNetworkType,
+ ...
+}
+
+DialingInformationNetworkType ::= CHOICE {
+ nonStandard NonStandardMessage,
+ n-isdn NULL,
+ gstn NULL,
+ ...,
+ mobile NULL
+}
+
+ConnectionIdentifier ::= SEQUENCE {
+ channelTag INTEGER(0..4294967295), -- from H.226
+ sequenceNumber INTEGER(0..4294967295), -- from H.226
+ ...
+}
+
+-- =============================================================================
+-- Logical channel bit-rate change definitions
+-- =============================================================================
+MaximumBitRate ::= INTEGER(0..4294967295) -- units of 100 bit/s
+
+
+LogicalChannelRateRequest ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ logicalChannelNumber LogicalChannelNumber,
+ maximumBitRate MaximumBitRate,
+ ...
+}
+
+LogicalChannelRateAcknowledge ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ logicalChannelNumber LogicalChannelNumber,
+ maximumBitRate MaximumBitRate,
+ ...
+}
+
+LogicalChannelRateReject ::= SEQUENCE {
+ sequenceNumber SequenceNumber,
+ logicalChannelNumber LogicalChannelNumber,
+ rejectReason LogicalChannelRateRejectReason,
+ currentMaximumBitRate MaximumBitRate OPTIONAL,
+ ...
+}
+
+LogicalChannelRateRejectReason ::= CHOICE {
+ undefinedReason NULL,
+ insufficientResources NULL,
+ ...
+}
+
+LogicalChannelRateRelease ::= SEQUENCE {...
+}
+
+-- =============================================================================
+-- Command Message definitions
+-- =============================================================================
+-- =============================================================================
+-- Command Message: Send Terminal Capability Set
+-- =============================================================================
+SendTerminalCapabilitySet ::= CHOICE {
+ specificRequest
+ SEQUENCE {multiplexCapability BOOLEAN,
+ capabilityTableEntryNumbers
+ SET SIZE (1..65535) OF CapabilityTableEntryNumber OPTIONAL,
+ capabilityDescriptorNumbers
+ SET SIZE (1..256) OF CapabilityDescriptorNumber OPTIONAL,
+ ...},
+ genericRequest NULL,
+ ...
+}
+
+-- =============================================================================
+-- Command Message: Encryption
+-- =============================================================================
+EncryptionCommand ::= CHOICE {
+ encryptionSE OCTET STRING, -- per H.233, but no
+
+ -- error protection
+ encryptionIVRequest NULL, -- requests new IV
+ encryptionAlgorithmID
+ SEQUENCE {h233AlgorithmIdentifier SequenceNumber,
+ associatedAlgorithm NonStandardParameter},
+ ...
+}
+
+-- =============================================================================
+-- Command Message: Flow Control
+-- =============================================================================
+FlowControlCommand ::= SEQUENCE {
+ scope
+ CHOICE {logicalChannelNumber LogicalChannelNumber,
+ resourceID INTEGER(0..65535),
+ wholeMultiplex NULL},
+ restriction
+ CHOICE {maximumBitRate INTEGER(0..16777215), -- units 100 bit/s --
+ noRestriction NULL},
+ ...
+}
+
+-- =============================================================================
+-- Command Message: Change or End Session
+-- =============================================================================
+EndSessionCommand ::= CHOICE {
+ nonStandard NonStandardParameter,
+ disconnect NULL,
+ gstnOptions
+ CHOICE {telephonyMode NULL,
+ v8bis NULL,
+ v34DSVD NULL,
+ v34DuplexFAX NULL,
+ v34H324 NULL,
+ ...},
+ ...,
+ isdnOptions
+ CHOICE {telephonyMode NULL,
+ v140 NULL,
+ terminalOnHold NULL,
+ ...},
+ genericInformation SEQUENCE OF GenericInformation
+}
+
+-- generic information associated
+-- with the message
+-- =============================================================================
+-- Command Message: Conference Commands
+-- =============================================================================
+ConferenceCommand ::= CHOICE {
+ broadcastMyLogicalChannel LogicalChannelNumber, -- similar to H.230 MCV
+ cancelBroadcastMyLogicalChannel LogicalChannelNumber, -- similar to
+
+ -- H.230 Cancel-MCV
+ makeTerminalBroadcaster TerminalLabel, -- same as H.230 VCB
+ cancelMakeTerminalBroadcaster NULL, -- same as H.230
+
+ -- Cancel-VCB
+ sendThisSource TerminalLabel, -- same as H.230 VCS
+ cancelSendThisSource NULL, -- same as H.230
+
+ -- cancel VCS
+ dropConference NULL, -- same as H.230 CCK
+ ...,
+ substituteConferenceIDCommand SubstituteConferenceIDCommand
+}
+
+SubstituteConferenceIDCommand ::= SEQUENCE {
+ conferenceIdentifier OCTET STRING(SIZE (16)),
+ ...
+}
+
+-- =============================================================================
+-- Command Message: Miscellaneous H.230-like commands
+-- =============================================================================
+EncryptionUpdateDirection ::= CHOICE {
+ masterToSlave NULL,
+ slaveToMaster NULL,
+ ...
+}
+
+MiscellaneousCommand ::= SEQUENCE {
+ logicalChannelNumber LogicalChannelNumber,
+ type
+ CHOICE {equaliseDelay NULL, -- same as H.230 ACE--
+ zeroDelay NULL, -- same as H.230 ACZ--
+ multipointModeCommand NULL,
+ cancelMultipointModeCommand NULL,
+ videoFreezePicture NULL,
+ videoFastUpdatePicture NULL,
+ videoFastUpdateGOB
+ SEQUENCE {firstGOB INTEGER(0..17),
+ numberOfGOBs INTEGER(1..18)},
+ videoTemporalSpatialTradeOff INTEGER(0..31), -- commands a trade-off value--
+ videoSendSyncEveryGOB NULL,
+ videoSendSyncEveryGOBCancel NULL,
+ ...,
+ videoFastUpdateMB
+ SEQUENCE {firstGOB INTEGER(0..255) OPTIONAL,
+ firstMB INTEGER(1..8192) OPTIONAL,
+ numberOfMBs INTEGER(1..8192),
+ ...},
+ maxH223MUXPDUsize INTEGER(1..65535), -- units octets--
+ encryptionUpdate EncryptionSync,
+ encryptionUpdateRequest EncryptionUpdateRequest,
+ switchReceiveMediaOff NULL,
+ switchReceiveMediaOn NULL,
+ progressiveRefinementStart
+ SEQUENCE {repeatCount
+ CHOICE {doOneProgression NULL,
+ doContinuousProgressions NULL,
+ doOneIndependentProgression NULL,
+ doContinuousIndependentProgressions NULL,
+ ...},
+ ...},
+ progressiveRefinementAbortOne NULL,
+ progressiveRefinementAbortContinuous NULL,
+ videoBadMBs
+ SEQUENCE {firstMB INTEGER(1..9216),
+ numberOfMBs INTEGER(1..9216),
+ temporalReference INTEGER(0..1023),
+ ...},
+ lostPicture SEQUENCE OF PictureReference,
+ lostPartialPicture
+ SEQUENCE {pictureReference PictureReference,
+ firstMB INTEGER(1..9216),
+ numberOfMBs INTEGER(1..9216),
+ ...},
+ recoveryReferencePicture SEQUENCE OF PictureReference,
+ encryptionUpdateCommand
+ SEQUENCE-- for ack'ed key update in H.235V3-- {encryptionSync
+
+ EncryptionSync,
+ multiplePayloadStream
+
+ MultiplePayloadStream
+ OPTIONAL,
+ ...},
+ encryptionUpdateAck
+ SEQUENCE {synchFlag INTEGER(0..255),
+ ...}},
+ ...,
+ direction EncryptionUpdateDirection OPTIONAL
+}
+
+KeyProtectionMethod ::=
+ SEQUENCE -- specify how the new
+
+ -- key is to be protected
+ {
+ secureChannel BOOLEAN,
+ sharedSecret BOOLEAN,
+ certProtectedKey BOOLEAN,
+ ...
+}
+
+EncryptionUpdateRequest ::= SEQUENCE {
+ keyProtectionMethod KeyProtectionMethod OPTIONAL,
+ ...,
+ synchFlag INTEGER(0..255) OPTIONAL
+}
+
+PictureReference ::= CHOICE {
+ pictureNumber INTEGER(0..1023),
+ longTermPictureIndex INTEGER(0..255),
+ ...
+}
+
+-- =============================================================================
+-- Command Message: H.223 Multiplex Reconfiguration
+-- =============================================================================
+H223MultiplexReconfiguration ::= CHOICE {
+ h223ModeChange
+ CHOICE {toLevel0 NULL,
+ toLevel1 NULL,
+ toLevel2 NULL,
+ toLevel2withOptionalHeader NULL,
+ ...},
+ h223AnnexADoubleFlag CHOICE {start NULL,
+ stop NULL,
+ ...},
+ ...
+}
+
+-- =============================================================================
+-- Command Message: New ATM virtual channel command
+-- =============================================================================
+NewATMVCCommand ::= SEQUENCE {
+ resourceID INTEGER(0..65535),
+ bitRate INTEGER(1..65535), -- units 64 kbit/s
+ bitRateLockedToPCRClock BOOLEAN,
+ bitRateLockedToNetworkClock BOOLEAN,
+ aal
+ CHOICE {aal1
+ SEQUENCE {clockRecovery
+ CHOICE {nullClockRecovery NULL,
+ srtsClockRecovery NULL,
+ adaptiveClockRecovery NULL,
+ ...},
+ errorCorrection
+ CHOICE {nullErrorCorrection NULL,
+ longInterleaver NULL,
+ shortInterleaver NULL,
+ errorCorrectionOnly NULL,
+ ...},
+ structuredDataTransfer BOOLEAN,
+ partiallyFilledCells BOOLEAN,
+ ...},
+ aal5
+ SEQUENCE {forwardMaximumSDUSize INTEGER(0..65535), -- units octets--
+ backwardMaximumSDUSize INTEGER(0..65535), -- units octets--
+ ...},
+ ...},
+ multiplex
+ CHOICE {noMultiplex NULL,
+ transportStream NULL,
+ programStream NULL,
+ ...},
+ reverseParameters
+ SEQUENCE {bitRate INTEGER(1..65535), -- units 64 kbit/s--
+ bitRateLockedToPCRClock BOOLEAN,
+ bitRateLockedToNetworkClock BOOLEAN,
+ multiplex
+ CHOICE {noMultiplex NULL,
+ transportStream NULL,
+ programStream NULL,
+ ...},
+ ...},
+ ...
+}
+
+-- =============================================================================
+-- Command Message: Mobile Multilink Reconfiguration command
+-- =============================================================================
+MobileMultilinkReconfigurationCommand ::= SEQUENCE {
+ sampleSize INTEGER(1..255),
+ samplesPerFrame INTEGER(1..255),
+ status CHOICE {synchronized NULL,
+ reconfiguration NULL,
+ ...},
+ ...
+}
+
+-- =============================================================================
+-- Indication Message definitions
+-- =============================================================================
+-- =============================================================================
+-- Indication Message: Function not understood
+-- =============================================================================
+-- This is used to return a request, response or command that is not understood
+FunctionNotUnderstood ::= CHOICE {
+ request RequestMessage,
+ response ResponseMessage,
+ command CommandMessage
+}
+
+-- =============================================================================
+-- Indication Message: Function not Supported
+-- =============================================================================
+-- This is used to return a complete request, response or command that is not
+-- recognized
+FunctionNotSupported ::= SEQUENCE {
+ cause
+ CHOICE {syntaxError NULL,
+ semanticError NULL,
+ unknownFunction NULL,
+ ...},
+ returnedFunction OCTET STRING OPTIONAL,
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: Conference
+-- =============================================================================
+ConferenceIndication ::= CHOICE {
+ sbeNumber INTEGER(0..9), -- same as H.230 SBE Number
+ terminalNumberAssign TerminalLabel, -- same as H.230 TIA
+ terminalJoinedConference TerminalLabel, -- same as H.230 TIN
+ terminalLeftConference TerminalLabel, -- same as H.230 TID
+ seenByAtLeastOneOther NULL, -- same as H.230 MIV
+ cancelSeenByAtLeastOneOther NULL, -- same as H.230 cancel MIV
+ seenByAll NULL, -- like H.230 MIV
+ cancelSeenByAll NULL, -- like H.230 MIV
+ terminalYouAreSeeing TerminalLabel, -- same as H.230 VIN
+ requestForFloor NULL, -- same as H.230 TIF
+ ...,
+ withdrawChairToken NULL, -- same as H.230 CCR MC-> chair
+ floorRequested TerminalLabel, -- same as H.230 TIF MC-> chair
+ terminalYouAreSeeingInSubPictureNumber
+ TerminalYouAreSeeingInSubPictureNumber,
+ videoIndicateCompose VideoIndicateCompose,
+ masterMCU NULL, -- same as H.230 MIM
+ cancelMasterMCU -- same as H.230 cancel MIM -- NULL
+}
+
+TerminalYouAreSeeingInSubPictureNumber ::= SEQUENCE {
+ terminalNumber TerminalNumber,
+ subPictureNumber INTEGER(0..255),
+ ...,
+ mcuNumber McuNumber
+}
+
+VideoIndicateCompose ::= SEQUENCE {compositionNumber INTEGER(0..255),
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: Miscellaneous H.230-like indication
+-- =============================================================================
+MiscellaneousIndication ::= SEQUENCE {
+ logicalChannelNumber LogicalChannelNumber,
+ type
+ CHOICE {logicalChannelActive NULL, -- same as H.230 AIA and VIA--
+ logicalChannelInactive NULL, -- same as H.230 AIM and VIS--
+ multipointConference NULL,
+ cancelMultipointConference NULL,
+ multipointZeroComm NULL, -- same as H.230 MIZ--
+ cancelMultipointZeroComm NULL, -- same as H.230 cancel MIZ--
+ multipointSecondaryStatus NULL, -- same as H.230 MIS--
+ cancelMultipointSecondaryStatus NULL, -- same as H.230 cancel MIS--
+ videoIndicateReadyToActivate NULL, -- same as H.230 VIR--
+ videoTemporalSpatialTradeOff INTEGER(0..31), -- indicates current --
+ -- trade-off
+ ...,
+ videoNotDecodedMBs
+ SEQUENCE {firstMB INTEGER(1..8192),
+ numberOfMBs INTEGER(1..8192),
+ temporalReference INTEGER(0..255),
+ ...},
+ transportCapability TransportCapability},
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: Jitter Indication
+-- =============================================================================
+JitterIndication ::= SEQUENCE {
+ scope
+ CHOICE {logicalChannelNumber LogicalChannelNumber,
+ resourceID INTEGER(0..65535),
+ wholeMultiplex NULL},
+ estimatedReceivedJitterMantissa INTEGER(0..3),
+ estimatedReceivedJitterExponent INTEGER(0..7),
+ skippedFrameCount INTEGER(0..15) OPTIONAL,
+ additionalDecoderBuffer INTEGER(0..262143) OPTIONAL,
+ -- 262143 is 2^18 - 1
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: H.223 logical channel skew
+-- =============================================================================
+H223SkewIndication ::= SEQUENCE {
+ logicalChannelNumber1 LogicalChannelNumber,
+ logicalChannelNumber2 LogicalChannelNumber,
+ skew INTEGER(0..4095), -- units milliseconds
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: H.225.0 maximum logical channel skew
+-- =============================================================================
+H2250MaximumSkewIndication ::= SEQUENCE {
+ logicalChannelNumber1 LogicalChannelNumber,
+ logicalChannelNumber2 LogicalChannelNumber,
+ maximumSkew INTEGER(0..4095), -- units milliseconds
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: MC Location Indication
+-- =============================================================================
+MCLocationIndication ::= SEQUENCE {
+ signalAddress TransportAddress, -- this is the
+
+ -- H.323 Call Signalling
+ -- address of the entity
+ -- which contains the MC
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: Vendor Identification
+-- =============================================================================
+VendorIdentification ::= SEQUENCE {
+ vendor NonStandardIdentifier,
+ productNumber OCTET STRING(SIZE (1..256)) OPTIONAL,
+ -- per vendor
+ versionNumber OCTET STRING(SIZE (1..256)) OPTIONAL,
+ -- per productNumber
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: New ATM virtual channel indication
+-- =============================================================================
+NewATMVCIndication ::= SEQUENCE {
+ resourceID INTEGER(0..65535),
+ bitRate INTEGER(1..65535), -- units 64 kbit/s
+ bitRateLockedToPCRClock BOOLEAN,
+ bitRateLockedToNetworkClock BOOLEAN,
+ aal
+ CHOICE {aal1
+ SEQUENCE {clockRecovery
+ CHOICE {nullClockRecovery NULL,
+ srtsClockRecovery NULL,
+ adaptiveClockRecovery NULL,
+ ...},
+ errorCorrection
+ CHOICE {nullErrorCorrection NULL,
+ longInterleaver NULL,
+ shortInterleaver NULL,
+ errorCorrectionOnly NULL,
+ ...},
+ structuredDataTransfer BOOLEAN,
+ partiallyFilledCells BOOLEAN,
+ ...},
+ aal5
+ SEQUENCE {forwardMaximumSDUSize INTEGER(0..65535), -- units octets--
+ backwardMaximumSDUSize INTEGER(0..65535), -- units octets--
+ ...},
+ ...},
+ multiplex
+ CHOICE {noMultiplex NULL,
+ transportStream NULL,
+ programStream NULL,
+ ...},
+ ...,
+ reverseParameters
+ SEQUENCE {bitRate INTEGER(1..65535), -- units 64 kbit/s--
+ bitRateLockedToPCRClock BOOLEAN,
+ bitRateLockedToNetworkClock BOOLEAN,
+ multiplex
+ CHOICE {noMultiplex NULL,
+ transportStream NULL,
+ programStream NULL,
+ ...},
+ ...}
+}
+
+-- =============================================================================
+-- Indication Message: User input
+-- =============================================================================
+IV8 ::= OCTET STRING(SIZE (8))
+
+-- initial value for
+-- 64-bit block ciphers
+IV16 ::= OCTET STRING(SIZE (16))
+
+-- initial value for
+-- 128-bit block ciphers
+Params ::= SEQUENCE {
+ iv8 IV8 OPTIONAL, -- 8-octet initialization vector
+ iv16 IV16 OPTIONAL, -- 16-octet initialization vector
+ iv OCTET STRING OPTIONAL, -- arbitrary length
+
+ -- initialization vector
+ ...
+}
+
+UserInputIndication ::= CHOICE {
+ nonStandard NonStandardParameter,
+ alphanumeric GeneralString,
+ ...,
+ userInputSupportIndication
+ CHOICE {nonStandard NonStandardParameter,
+ basicString NULL, -- indicates unsecured basic string--
+ iA5String NULL, -- indicates unsecured IA5 string--
+ generalString NULL, -- indicates unsecured general string--
+ ...,
+ encryptedBasicString NULL, -- indicates encrypted Basic string--
+ encryptedIA5String NULL, -- indicates encrypted IA5 string--
+ encryptedGeneralString NULL -- indicates encrypted general string
+ },
+ signal
+ SEQUENCE {signalType
+ IA5String(SIZE (1) ^ FROM ("0123456789#*ABCD!")),
+ -- holds dummy "!" if encryptedSignalType
+ -- is being used
+ duration INTEGER(1..65535) OPTIONAL,
+ -- milliseconds
+ rtp
+ SEQUENCE {timestamp INTEGER(0..4294967295) OPTIONAL,
+ expirationTime INTEGER(0..4294967295) OPTIONAL,
+ logicalChannelNumber LogicalChannelNumber,
+ ...} OPTIONAL,
+ ...,
+ rtpPayloadIndication NULL OPTIONAL,
+ paramS Params OPTIONAL, -- any "runtime" parameters--
+ encryptedSignalType OCTET STRING(SIZE (1)) OPTIONAL,
+ -- encrypted signalType
+ algorithmOID OBJECT IDENTIFIER OPTIONAL},
+ signalUpdate
+ SEQUENCE {duration INTEGER(1..65535), -- milliseconds--
+ rtp
+ SEQUENCE {logicalChannelNumber LogicalChannelNumber,
+ ...} OPTIONAL,
+ ...},
+ extendedAlphanumeric
+ SEQUENCE {alphanumeric GeneralString, -- holds empty string if--
+ -- encryptedAlphanumeric is
+ -- being used
+ rtpPayloadIndication NULL OPTIONAL,
+ ...,
+ encryptedAlphanumeric
+ SEQUENCE {algorithmOID OBJECT IDENTIFIER,
+ paramS Params OPTIONAL, -- any "runtime" parameters--
+ encrypted OCTET STRING, -- general string encrypted--
+ ...} OPTIONAL},
+ encryptedAlphanumeric
+ SEQUENCE {algorithmOID OBJECT IDENTIFIER,
+ paramS Params OPTIONAL, -- any "runtime" parameters--
+ encrypted OCTET STRING, -- basic string encrypted--
+ ...},
+ genericInformation SEQUENCE OF GenericInformation
+}
+
+-- generic information associated
+-- with the message
+-- =============================================================================
+-- Indication Message: Flow Control
+-- =============================================================================
+FlowControlIndication ::= SEQUENCE {
+ scope
+ CHOICE {logicalChannelNumber LogicalChannelNumber,
+ resourceID INTEGER(0..65535),
+ wholeMultiplex NULL},
+ restriction
+ CHOICE {maximumBitRate INTEGER(0..16777215), -- units 100 bit/s--
+ noRestriction NULL},
+ ...
+}
+
+-- =============================================================================
+-- Indication Message: Mobile Multilink Reconfiguration indication
+-- =============================================================================
+MobileMultilinkReconfigurationIndication ::= SEQUENCE {
+ sampleSize INTEGER(1..255),
+ samplesPerFrame INTEGER(1..255),
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/h245/h245.cnf b/epan/dissectors/asn1/h245/h245.cnf
new file mode 100644
index 00000000..1610861d
--- /dev/null
+++ b/epan/dissectors/asn1/h245/h245.cnf
@@ -0,0 +1,1425 @@
+# H.245 conformation file
+# Copyright 2005 Anders Broman anders.broman[at]ericsson.com
+#----------------------------------------------------------------------------------------
+
+#.OPT
+PER
+ALIGNED
+#.END
+
+#.MODULE_EXPORTS
+T38FaxProfile
+DataProtocolCapability NO_PROT_PREFIX
+OpenLogicalChannel
+QOSCapability
+H223Capability EXTERN WS_DLL
+H223LogicalChannelParameters
+TransportAddress
+UnicastAddress
+MulticastAddress
+Capability
+#.END
+
+#.PDU
+OpenLogicalChannel
+
+#.MAKE_ENUM
+RequestMessage TYPE_PREFIX
+ResponseMessage TYPE_PREFIX
+CommandMessage TYPE_PREFIX
+IndicationMessage TYPE_PREFIX
+
+AudioCapability TYPE_PREFIX
+#.END
+
+#----------------------------------------------------------------------------------------
+
+#.VIRTUAL_ASSGN
+G723AnnexCAudioMode G7231AnnexCCapability/g723AnnexCAudioMode G7231AnnexCMode/g723AnnexCAudioMode
+Application DataApplicationCapability/application
+Nlpid Application/nlpid DataMode/application/nlpid
+Al3 H223LogicalChannelParameters/adaptationLayerType/al3 H223ModeParameters/adaptationLayerType/al3
+ArqType H223AL1MParameters/arqType H223AL3MParameters/arqType
+Restriction FlowControlCommand/restriction FlowControlIndication/restriction
+Scope FlowControlCommand/scope FlowControlIndication/scope JitterIndication/scope
+EncryptedAlphanumeric UserInputIndication/extendedAlphanumeric/encryptedAlphanumeric UserInputIndication/encryptedAlphanumeric
+
+DepSeparateStream DepFECData/rfc2733/mode/separateStream DepFECMode/rfc2733Mode/mode/separateStream
+
+Rfc2733Format FECCapability/rfc2733Format FECMode/rfc2733Format
+
+#----------------------------------------------------------------------------------------
+#.FN_BODY MultiplexEntryDescriptor
+ /*MultiplexEntryDescriptor*/
+ h223_me = NULL;
+ h223_mc = 0;
+%(DEFAULT_BODY)s
+ if(h223_set_mc_handle)
+ (*h223_set_mc_handle)(%(ACTX)s->pinfo, h223_mc, h223_me);
+ /* stuff */
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS MultiplexTableEntryNumber
+ VAL_PTR = &value
+#.FN_BODY MultiplexTableEntryNumber
+ guint32 value;
+%(DEFAULT_BODY)s
+ h223_mc = value & 0xf;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY MultiplexEntryDescriptor/elementList
+ /* create a h223_mux_element to hold onto the head of the list, since
+ * h223_me will track the tail */
+ h223_mux_element dummy_me;
+ memset (&dummy_me, 0, sizeof (h223_mux_element));
+ h223_me = &dummy_me;
+%(DEFAULT_BODY)s
+ /* set h223_me to the head of the list for MEDescriptor to pick up */
+ h223_me = dummy_me.next;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR MultiplexElement
+ /*MultiplexElement*/
+ h223_mux_element* me = wmem_new(wmem_file_scope(), h223_mux_element);
+ h223_me->next = me;
+ h223_me = me;
+ h223_me->next = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS MultiplexElement/type/logicalChannelNumber
+ VAL_PTR = &value
+#.FN_BODY MultiplexElement/type/logicalChannelNumber
+ /*MultiplexElement/type/logicalChannelNumber*/
+ guint32 value;
+%(DEFAULT_BODY)s
+ h223_me->sublist = NULL;
+ h223_me->vc = value & 0xffff;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY MultiplexElement/type/subElementList
+ h223_mux_element dummy_me, *parent_me = h223_me;
+ memset (&dummy_me, 0, sizeof (h223_mux_element));
+ h223_me = &dummy_me;
+%(DEFAULT_BODY)s
+ parent_me->sublist = dummy_me.next;
+ h223_me = parent_me;
+ h223_me->vc = 0;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR MultiplexElement/repeatCount/untilClosingFlag
+ h223_me->repeat_count = 0;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS MultiplexElement/repeatCount/finite
+ VAL_PTR = &value
+#.FN_BODY MultiplexElement/repeatCount/finite
+ guint32 value;
+%(DEFAULT_BODY)s
+ h223_me->repeat_count = value & 0xffff;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY LogicalChannelNumber VAL_PTR = &value
+ guint32 value;
+%(DEFAULT_BODY)s
+ h245_lc_temp = value & 0xfff;
+#.END
+
+#=== OpenLogicalChannel =================================================================
+#.FN_BODY OpenLogicalChannel
+ gint32 temp;
+
+ upcoming_olc = (!actx->pinfo->fd->visited) ? wmem_new0(wmem_file_scope(), olc_info_t) : NULL;
+
+ h223_fw_lc_num = 0;
+ h223_lc_params_temp = NULL;
+
+%(DEFAULT_BODY)s
+
+ if(h223_fw_lc_num != 0 && h223_fw_lc_params) {
+ h223_pending_olc *pending = wmem_new(wmem_file_scope(), h223_pending_olc);
+ pending->fw_channel_params = h223_fw_lc_params;
+ pending->rev_channel_params = h223_rev_lc_params;
+ temp = h223_fw_lc_num;
+ if (%(ACTX)s->pinfo->p2p_dir > -1)
+ wmem_map_insert(h223_pending_olc_reqs[%(ACTX)s->pinfo->p2p_dir], GINT_TO_POINTER(temp), pending);
+ }
+
+ if (upcoming_olc) {
+ if (fast_start) {
+ h245_setup_channels(actx->pinfo, &upcoming_olc->rev_lc);
+ } else {
+ wmem_map_insert(h245_pending_olc_reqs,
+ wmem_strdup(wmem_file_scope(), gen_olc_key(upcoming_olc->fwd_lc_num, &%(ACTX)s->pinfo->dst, &%(ACTX)s->pinfo->src, actx->pinfo->pool)),
+ upcoming_olc);
+ }
+ }
+ upcoming_olc = NULL;
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_OpenLogChn;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR OpenLogicalChannel/forwardLogicalChannelNumber
+ if (upcoming_olc) upcoming_olc->fwd_lc_num = h245_lc_temp;
+ h223_fw_lc_num = h245_lc_temp;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY OpenLogicalChannel/forwardLogicalChannelParameters
+
+ upcoming_channel = (upcoming_olc) ? &upcoming_olc->fwd_lc : NULL;
+
+ h245_lc_dissector = NULL;
+%(DEFAULT_BODY)s
+ if(h223_lc_params_temp && h245_lc_dissector)
+ h223_lc_params_temp->subdissector = h245_lc_dissector;
+ else if(h223_lc_params_temp)
+ h223_lc_params_temp->subdissector = data_handle;
+
+ if (upcoming_channel && codec_type) {
+ (void) g_strlcpy(upcoming_channel->data_type_str, codec_type, sizeof(upcoming_channel->data_type_str));
+ }
+ upcoming_channel = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR OpenLogicalChannel/forwardLogicalChannelParameters/multiplexParameters/h223LogicalChannelParameters
+ h223_fw_lc_params = wmem_new(wmem_file_scope(), h223_lc_params);
+ h223_fw_lc_params->al_type = al_nonStandard;
+ h223_fw_lc_params->al_params = NULL;
+ h223_fw_lc_params->segmentable = 0;
+ h223_fw_lc_params->subdissector = NULL;
+ h223_lc_params_temp = h223_fw_lc_params;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY OpenLogicalChannel/reverseLogicalChannelParameters
+
+ upcoming_channel = (upcoming_olc) ? &upcoming_olc->rev_lc : NULL;
+
+%(DEFAULT_BODY)s
+
+ if (upcoming_channel && codec_type) {
+ (void) g_strlcpy(upcoming_channel->data_type_str, codec_type, sizeof(upcoming_channel->data_type_str));
+ }
+ upcoming_channel = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR OpenLogicalChannel/reverseLogicalChannelParameters/multiplexParameters/h223LogicalChannelParameters
+ h223_rev_lc_params = wmem_new(wmem_file_scope(), h223_lc_params);
+ h223_rev_lc_params->al_type = al_nonStandard;
+ h223_rev_lc_params->al_params = NULL;
+ h223_rev_lc_params->segmentable = 0;
+ h223_rev_lc_params->subdissector = NULL;
+ h223_lc_params_temp = h223_rev_lc_params;
+#.END
+#========================================================================================
+
+
+#=== OpenLogicalChannelAck ==============================================================
+#.FN_BODY OpenLogicalChannelAck
+ guint32 temp;
+ int p2p_dir;
+ h223_pending_olc *pend;
+ const gchar *olc_key;
+ olc_info_t *olc_req;
+
+ upcoming_olc = (!actx->pinfo->fd->visited) ? wmem_new0(actx->pinfo->pool, olc_info_t) : NULL;
+
+ h223_fw_lc_num = 0;
+ h223_rev_lc_num = 0;
+
+%(DEFAULT_BODY)s
+
+ temp = h223_fw_lc_num;
+ p2p_dir = %(ACTX)s->pinfo->p2p_dir;
+
+ if(%(ACTX)s->pinfo->p2p_dir == P2P_DIR_SENT)
+ %(ACTX)s->pinfo->p2p_dir = P2P_DIR_RECV;
+ else
+ %(ACTX)s->pinfo->p2p_dir = P2P_DIR_SENT;
+ pend = (h223_pending_olc *)wmem_map_lookup( h223_pending_olc_reqs[%(ACTX)s->pinfo->p2p_dir], GINT_TO_POINTER(temp) );
+ if (pend) {
+ DISSECTOR_ASSERT( ( h223_rev_lc_num && pend->rev_channel_params)
+ || (!h223_rev_lc_num && !pend->rev_channel_params) );
+ if(h223_add_lc_handle) {
+ (*h223_add_lc_handle)( %(ACTX)s->pinfo, h223_fw_lc_num, pend->fw_channel_params);
+ if(h223_rev_lc_num)
+ (*h223_add_lc_handle)( %(ACTX)s->pinfo, h223_rev_lc_num, pend->rev_channel_params);
+ }
+ } else {
+ /* we missed the OpenLogicalChannel packet */
+ }
+ %(ACTX)s->pinfo->p2p_dir = p2p_dir;
+
+ if (upcoming_olc) {
+ olc_key = gen_olc_key(upcoming_olc->fwd_lc_num, &%(ACTX)s->pinfo->src, &%(ACTX)s->pinfo->dst, actx->pinfo->pool);
+ olc_req = (olc_info_t *)wmem_map_lookup(h245_pending_olc_reqs, olc_key);
+ if (olc_req) {
+ update_unicast_addr(&olc_req->fwd_lc.media_addr, &upcoming_olc->fwd_lc.media_addr);
+ update_unicast_addr(&olc_req->fwd_lc.media_control_addr, &upcoming_olc->fwd_lc.media_control_addr);
+ update_unicast_addr(&olc_req->rev_lc.media_addr, &upcoming_olc->rev_lc.media_addr);
+ update_unicast_addr(&olc_req->rev_lc.media_control_addr, &upcoming_olc->rev_lc.media_control_addr);
+ h245_setup_channels(actx->pinfo, &olc_req->fwd_lc);
+ h245_setup_channels(actx->pinfo, &olc_req->rev_lc);
+ wmem_map_remove(h245_pending_olc_reqs, olc_key);
+ } else {
+ h245_setup_channels(actx->pinfo, &upcoming_olc->fwd_lc);
+ }
+ }
+ upcoming_olc = NULL;
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_OpenLogChnAck;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR OpenLogicalChannelAck/forwardLogicalChannelNumber
+ if (upcoming_olc) upcoming_olc->fwd_lc_num = h245_lc_temp;
+ h223_fw_lc_num = h245_lc_temp;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY OpenLogicalChannelAck/forwardMultiplexAckParameters
+
+ upcoming_channel = (upcoming_olc) ? &upcoming_olc->fwd_lc : NULL;
+
+%(DEFAULT_BODY)s
+
+ upcoming_channel = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR OpenLogicalChannelAck/reverseLogicalChannelParameters/reverseLogicalChannelNumber
+ h223_rev_lc_num = h245_lc_temp;
+#.END
+#========================================================================================
+
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al1Framed
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al1Framed;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al1NotFramed
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al1NotFramed;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al2WithoutSequenceNumbers
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al2WithoutSequenceNumbers;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al2WithSequenceNumbers
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al2WithSequenceNumbers;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al3
+ if(h223_lc_params_temp) {
+ h223_lc_params_temp->al_type = al3;
+ h223_lc_params_temp->al_params = wmem_new(wmem_file_scope(), h223_al3_params);
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS Al3/controlFieldOctets
+ VAL_PTR = &value
+#.FN_BODY Al3/controlFieldOctets
+ guint32 value;
+%(DEFAULT_BODY)s
+ if(h223_lc_params_temp && h223_lc_params_temp->al_params)
+ ((h223_al3_params*)h223_lc_params_temp->al_params)->control_field_octets = value & 3 ;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS Al3/sendBufferSize
+ VAL_PTR = &value
+#.FN_BODY Al3/sendBufferSize
+ guint32 value;
+%(DEFAULT_BODY)s
+ if(h223_lc_params_temp && h223_lc_params_temp->al_params)
+ ((h223_al3_params*)h223_lc_params_temp->al_params)->send_buffer_size = value & 0xfffff;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al1M
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al1M;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al2M
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al2M;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H223LogicalChannelParameters/adaptationLayerType/al3M
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->al_type = al3M;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_PARS H223LogicalChannelParameters/segmentableFlag
+ VAL_PTR = &value
+#.FN_BODY H223LogicalChannelParameters/segmentableFlag
+ gboolean value;
+%(DEFAULT_BODY)s
+ if(h223_lc_params_temp)
+ h223_lc_params_temp->segmentable = value;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR H263VideoCapability
+ h245_lc_dissector = h263_handle;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY RequestMessage VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ print_info_column(%(ACTX)s->pinfo->cinfo, &value, h245_RequestMessage_vals, h245_RequestMessage_short_vals);
+
+ if (( codec_type != NULL ) && ( value == RequestMessage_openLogicalChannel) ){
+ col_append_fstr(%(ACTX)s->pinfo->cinfo, COL_INFO, "(%%s) ", codec_type );
+ }
+
+ col_set_fence(%(ACTX)s->pinfo->cinfo,COL_INFO);
+
+ /* Add to packet info */
+ if (h245_pi == NULL)
+ return offset;
+
+ if (strlen(h245_pi->frame_label) == 0)
+ {
+ snprintf(h245_pi->frame_label, 50, "%%s", val_to_str(value, h245_RequestMessage_short_vals, "UKN"));
+
+ /* if it is OLC or RM*/
+ if ((codec_type != NULL) && (( value == RequestMessage_openLogicalChannel) || ( value == RequestMessage_requestMode)))
+ {
+ (void) g_strlcat(h245_pi->frame_label, " (", 50);
+ (void) g_strlcat(h245_pi->frame_label, codec_type, 50);
+ (void) g_strlcat(h245_pi->frame_label, ")", 50);
+ }
+ }
+ (void) g_strlcat(h245_pi->comment, val_to_str(value, h245_RequestMessage_vals, "<unknown>"), 50);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY ResponseMessage VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ print_info_column(%(ACTX)s->pinfo->cinfo, &value, h245_ResponseMessage_vals, h245_ResponseMessage_short_vals);
+ col_set_fence(%(ACTX)s->pinfo->cinfo,COL_INFO);
+
+ if (h245_pi != NULL){
+ /* Add to packet info */
+ if ( strlen(h245_pi->frame_label) == 0 ){
+ snprintf(h245_pi->frame_label, 50, "%%s", val_to_str(value, h245_ResponseMessage_short_vals, "UKN"));
+ }
+ (void) g_strlcat(h245_pi->comment, val_to_str(value, h245_ResponseMessage_vals, "<unknown>"), 50);
+ }
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY IndicationMessage VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ print_info_column(%(ACTX)s->pinfo->cinfo, &value, h245_IndicationMessage_vals, h245_IndicationMessage_short_vals);
+ col_set_fence(%(ACTX)s->pinfo->cinfo,COL_INFO);
+
+ /* Add to packet info */
+ if (h245_pi !=NULL){
+ if ( strlen(h245_pi->frame_label) == 0 ){
+ snprintf(h245_pi->frame_label, 50, "%%s", val_to_str(value, h245_IndicationMessage_short_vals, "UKN"));
+ }
+ (void) g_strlcat(h245_pi->comment, val_to_str(value, h245_IndicationMessage_vals, "<unknown>"), 50);
+
+ }
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY CommandMessage VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ print_info_column(%(ACTX)s->pinfo->cinfo, &value, h245_CommandMessage_vals, h245_CommandMessage_short_vals);
+ col_set_fence(%(ACTX)s->pinfo->cinfo,COL_INFO);
+
+ /* Add to packet info */
+ if (h245_pi != NULL){
+ if ( strlen(h245_pi->frame_label) == 0 ){
+ snprintf(h245_pi->frame_label, 50, "%%s", val_to_str(value, h245_CommandMessage_short_vals, "UKN"));
+ }
+ (void) g_strlcat(h245_pi->comment, val_to_str(value, h245_CommandMessage_vals, "<unknown>"), 50);
+ }
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY AudioCapability VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ codec_type = val_to_str(value, h245_AudioCapability_short_vals, "<unknown>");
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY VideoCapability VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ codec_type = val_to_str(value, h245_VideoCapability_vals, "<unknown>");
+
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY Application VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ codec_type = val_to_str(value, h245_Application_vals, "<unknown>");
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY AudioMode VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ codec_type = val_to_str(value, h245_AudioMode_vals, "<unknown>");
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY VideoMode VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ codec_type = val_to_str(value, h245_VideoMode_vals, "<unknown>");
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY DataMode/application VAL_PTR = &value
+ gint32 value;
+
+%(DEFAULT_BODY)s
+ codec_type = val_to_str(value, h245_DataModeApplication_vals, "<unknown>");
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR MasterSlaveDeterminationAck
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_MastSlvDetAck;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR MasterSlaveDeterminationReject
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_MastSlvDetRjc;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR OpenLogicalChannelReject
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_OpenLogChnRjc;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR CloseLogicalChannel
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_CloseLogChn;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR CloseLogicalChannelAck
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_CloseLogChnAck;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR OpenLogicalChannelConfirm
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_OpenLogChnCnf;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR TerminalCapabilitySetAck
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_TermCapSetAck;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR MasterSlaveDetermination
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_MastSlvDet;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR TerminalCapabilitySetReject
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_TermCapSetRjc;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR MasterSlaveDeterminationRelease
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_MastSlvDetRls;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR TerminalCapabilitySet
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_TermCapSet;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_FTR TerminalCapabilitySetRelease
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_TermCapSetRls;
+#.END
+#----------------------------------------------------------------------------------------
+
+#=== Generic Extensible Framework =======================================================
+
+#.FN_HDR GenericMessage
+ void *priv_data = actx->private_data;
+ gef_ctx_t *gefx;
+
+ /* check if not inherited from GenericInformation */
+ gefx = gef_ctx_get(actx->private_data);
+ if (!gefx) {
+ gefx = gef_ctx_alloc(actx->pinfo->pool, NULL, "GenericMessage");
+ actx->private_data = gefx;
+ }
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+
+#.FN_BODY GenericMessage/subMessageIdentifier VAL_PTR = &subMessageIdentifier
+ guint32 subMessageIdentifier;
+ gef_ctx_t *gefx;
+
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ /* If this is a standard generic message use hf_h245_subMessageIdentifier_standard to get
+ * the value translated and make it fileterable.
+ */
+ if (strcmp("GenericMessage/0.0.8.239.2", gefx->key) == 0) {
+ hf_index = hf_h245_subMessageIdentifier_standard;
+ }
+ }
+
+%(DEFAULT_BODY)s
+ if (gefx) {
+ gefx->subid = wmem_strdup_printf(actx->pinfo->pool, "%%u", subMessageIdentifier);
+ gef_ctx_update_key(actx->pinfo->pool, gef_ctx_get(actx->private_data));
+ }
+ if (hf_index == hf_h245_subMessageIdentifier_standard)
+ {
+ col_append_str(actx->pinfo->cinfo, COL_INFO, val_to_str(subMessageIdentifier, h245_h239subMessageIdentifier_vals, "<unknown>") );
+ snprintf(h245_pi->frame_label, 50, "%%s", val_to_str(subMessageIdentifier, h245_h239subMessageIdentifier_vals, "<unknown>"));
+ }
+#.END
+
+#.FN_HDR GenericMessage/messageContent/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, parent_gefx, NULL);
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
+#----------------------------------------------------------------------------------------
+#.FN_HDR GenericInformation
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, NULL, "GenericInformation");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+
+#--- GenericCapability ------------------------------------------------------------------
+#.FN_HDR GenericCapability
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, NULL, "GenericCapability");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+
+#.FN_HDR GenericCapability/collapsing/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, parent_gefx, "collapsing");
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
+#.FN_HDR GenericCapability/nonCollapsing/_item
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, parent_gefx, "nonCollapsing");
+#.FN_FTR
+ actx->private_data = parent_gefx;
+#.END
+
+#.FN_BODY GenericCapability/nonCollapsingRaw VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+ gef_ctx_t *parent_gefx;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, parent_gefx, "nonCollapsingRaw");
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+ actx->private_data = parent_gefx;
+#.END
+
+#--- EncryptionSync ---------------------------------------------------------------------
+#.FN_HDR EncryptionSync
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, NULL, "EncryptionSync");
+#.FN_FTR
+ actx->private_data = priv_data;
+#.END
+#----------------------------------------------------------------------------------------
+
+#.FN_HDR CapabilityIdentifier
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+#.FN_FTR
+ gef_ctx_update_key(actx->pinfo->pool, gef_ctx_get(actx->private_data));
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ dissector_try_string(gef_name_dissector_table, gefx->key, tvb_new_subset_length_caplen(tvb, offset>>3, 0, 0), actx->pinfo, tree, actx);
+ }
+ actx->private_data = gefx; /* subdissector could overwrite it */
+#.END
+
+#.FN_BODY CapabilityIdentifier/standard FN_VARIANT = _str VAL_PTR = &standard_oid_str
+ const gchar *standard_oid_str = NULL;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = standard_oid_str;
+
+ if(strcmp(standard_oid_str,"0.0.8.235.0.3.76") == 0) { /* MIKEY */
+ if (upcoming_channel)
+ upcoming_channel->srtp_flag = TRUE;
+ }
+
+ if(!h245_lc_dissector && strcmp(standard_oid_str,"0.0.8.245.1.1.1") == 0)
+ h245_lc_dissector = amr_handle;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR ParameterIdentifier
+ gef_ctx_t *gefx;
+ proto_item* ti;
+#.FN_FTR
+ gef_ctx_update_key(actx->pinfo->pool, gef_ctx_get(actx->private_data));
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ dissector_try_string_new(gef_name_dissector_table, gefx->key, tvb_new_subset_length_caplen(tvb, offset>>3, 0, 0), actx->pinfo, tree, FALSE, actx);
+ }
+ actx->private_data = gefx; /* subdissector could overwrite it */
+#.END
+
+#.FN_BODY ParameterIdentifier/standard VAL_PTR = &value_int
+ guint32 value_int = (guint32)-1;
+ gef_ctx_t *gefx;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = wmem_strdup_printf(actx->pinfo->pool, "%%d", value_int);
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY ParameterValue/booleanArray VAL_PTR = &value
+ guint32 value;
+ guint8 *buf;
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ buf = wmem_new(actx->pinfo->pool, guint8);
+ buf[0] = value;
+ value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint8), sizeof(guint8));
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ add_new_data_source(%(ACTX)s->pinfo, value_tvb, "booleanArray");
+ dissector_try_string_new(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, FALSE, %(ACTX)s);
+ }
+#.END
+#.FN_BODY ParameterValue/unsignedMin VAL_PTR = &value
+ guint32 value;
+ guint8 *buf;
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ buf = (guint8 *)wmem_new(actx->pinfo->pool, guint16);
+ phton16(buf, value);
+ value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint16), sizeof(guint16));
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsignedMin");
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+#.END
+#.FN_BODY ParameterValue/unsignedMax VAL_PTR = &value
+ guint32 value;
+ guint8 *buf;
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ buf = (guint8 *)wmem_new(actx->pinfo->pool, guint16);
+ phton16(buf, value);
+ value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint16), sizeof(guint16));
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsignedMax");
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+#.END
+#.FN_BODY ParameterValue/unsigned32Min VAL_PTR = &value
+ guint32 value;
+ guint8 *buf;
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ buf = (guint8 *)wmem_new(actx->pinfo->pool, guint32);
+ phton32(buf, value);
+ value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint32), sizeof(guint32));
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsigned32Min");
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+#.END
+#.FN_BODY ParameterValue/unsigned32Max VAL_PTR = &value
+ guint32 value;
+ guint8 *buf;
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ buf = (guint8 *)wmem_new(actx->pinfo->pool, guint32);
+ phton32(buf, value);
+ value_tvb = tvb_new_child_real_data(tvb, buf, sizeof(guint32), sizeof(guint32));
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ add_new_data_source(%(ACTX)s->pinfo, value_tvb, "unsigned32Max");
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+#.END
+#.FN_BODY ParameterValue/octetString VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+%(DEFAULT_BODY)s
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h245_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, %(ACTX)s->pinfo, %(TREE)s, %(ACTX)s);
+ }
+#.END
+
+#=== end of GEF =========================================================================
+
+#----------------------------------------------------------------------------------------
+#.FN_BODY UnicastAddress/iPAddress/network VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (upcoming_channel && upcoming_channel->upcoming_addr) {
+ tvb_memcpy(value_tvb, upcoming_channel->upcoming_addr->addr_buf, 0, 4);
+ set_address(&upcoming_channel->upcoming_addr->addr, AT_IPv4, 4, upcoming_channel->upcoming_addr->addr_buf);
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY UnicastAddress/iPAddress/tsapIdentifier VAL_PTR = &tsapIdentifier
+ guint32 tsapIdentifier;
+
+%(DEFAULT_BODY)s
+
+ if (upcoming_channel && upcoming_channel->upcoming_addr) {
+ upcoming_channel->upcoming_addr->port = tsapIdentifier;
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY UnicastAddress/iP6Address/network VAL_PTR = &value_tvb
+ tvbuff_t *value_tvb;
+
+%(DEFAULT_BODY)s
+
+ if (upcoming_channel && upcoming_channel->upcoming_addr) {
+ tvb_memcpy(value_tvb, upcoming_channel->upcoming_addr->addr_buf, 0, 16);
+ set_address(&upcoming_channel->upcoming_addr->addr, AT_IPv6, 16, upcoming_channel->upcoming_addr->addr_buf);
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_BODY UnicastAddress/iP6Address/tsapIdentifier VAL_PTR = &tsapIdentifier
+ guint32 tsapIdentifier;
+
+%(DEFAULT_BODY)s
+
+ if (upcoming_channel && upcoming_channel->upcoming_addr) {
+ upcoming_channel->upcoming_addr->port = tsapIdentifier;
+ }
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H2250LogicalChannelAckParameters/mediaChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = &upcoming_channel->media_addr;
+#.END
+#.FN_FTR H2250LogicalChannelAckParameters/mediaChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H2250LogicalChannelParameters/mediaChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = &upcoming_channel->media_addr;
+#.END
+#.FN_FTR H2250LogicalChannelParameters/mediaChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H2250LogicalChannelAckParameters/mediaControlChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = &upcoming_channel->media_control_addr;
+#.END
+#.FN_FTR H2250LogicalChannelAckParameters/mediaControlChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = NULL;
+#.END
+#----------------------------------------------------------------------------------------
+#.FN_HDR H2250LogicalChannelParameters/mediaControlChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = &upcoming_channel->media_control_addr;
+#.END
+#.FN_FTR H2250LogicalChannelParameters/mediaControlChannel
+ if (upcoming_channel)
+ upcoming_channel->upcoming_addr = NULL;
+#.END
+
+#--- RTPPayloadType ---------------------------------------------------------------------
+#.FN_HDR RTPPayloadType
+ rfc_number = 0;
+#.END
+
+#.FN_PARS RTPPayloadType/payloadDescriptor/rfc-number
+ VAL_PTR = &rfc_number
+#.END
+
+#.FN_BODY RTPPayloadType/payloadType VAL_PTR = &pt
+ unsigned int pt;
+
+%(DEFAULT_BODY)s
+
+ if ((rfc_number == 2198) && upcoming_channel) {
+ upcoming_channel->rfc2198 = pt;
+ }
+#.END
+
+#--- NonStandardParameter ---------------------------------------------------------------
+
+#.FN_PARS
+NonStandardIdentifier/object FN_VARIANT = _str VAL_PTR = &nsiOID
+#.END
+#.FN_BODY NonStandardIdentifier VAL_PTR = &value
+ gint32 value;
+
+ nsiOID = "";
+ h221NonStandard = 0;
+
+%(DEFAULT_BODY)s
+ switch (value) {
+ case 0 : /* object */
+ nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, nsiOID);
+ break;
+ case 1 : /* h221NonStandard */
+ nsp_handle = dissector_get_uint_handle(nsp_h221_dissector_table, h221NonStandard);
+ break;
+ default :
+ nsp_handle = NULL;
+ }
+#.END
+
+#.FN_HDR NonStandardIdentifier/h221NonStandard
+ t35CountryCode = 0;
+ t35Extension = 0;
+ manufacturerCode = 0;
+#.FN_FTR NonStandardIdentifier/h221NonStandard
+ h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
+ proto_tree_add_uint(tree, hf_h245Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
+#.FN_PARS
+NonStandardIdentifier/h221NonStandard/t35CountryCode VAL_PTR = &t35CountryCode
+NonStandardIdentifier/h221NonStandard/t35Extension VAL_PTR = &t35Extension
+NonStandardIdentifier/h221NonStandard/manufacturerCode VAL_PTR = &manufacturerCode
+#.END
+
+#.FN_HDR NonStandardParameter
+ nsp_handle = NULL;
+#.FN_BODY NonStandardParameter/data VAL_PTR = &next_tvb
+ tvbuff_t *next_tvb = NULL;
+
+%(DEFAULT_BODY)s
+ if (next_tvb && tvb_reported_length(next_tvb)) {
+ call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, %(ACTX)s->pinfo, tree);
+ }
+#.END
+
+#.FN_BODY FunctionNotSupported/returnedFunction VAL_PTR = &next_tvb
+ tvbuff_t *next_tvb = NULL;
+ proto_item *item;
+ proto_tree *subtree;
+ h245_packet_info *saved_h245_pi;
+
+%(DEFAULT_BODY)s
+
+ if (next_tvb && tvb_reported_length(next_tvb)) {
+ saved_h245_pi = h245_pi;
+ h245_pi = NULL;
+ subtree = proto_tree_add_subtree(tree, next_tvb, 0, -1, ett_h245_returnedFunction, &item, "The returned function");
+ proto_item_set_generated(item);
+ dissect_h245_MultimediaSystemControlMessage(next_tvb, 0, actx, subtree, hf_h245_pdu_type);
+ h245_pi = saved_h245_pi;
+ }
+
+#.FN_BODY DataType VAL_PTR = &choice_index
+gint choice_index;
+
+%(DEFAULT_BODY)s
+
+if (upcoming_channel){
+ if (choice_index==2){
+ upcoming_channel->is_video=TRUE;
+ }else{
+ upcoming_channel->is_video=FALSE;
+ }
+}
+
+#----------------------------------------------------------------------------------------
+#.TYPE_RENAME
+
+NewATMVCCommand/aal Cmd_aal
+NewATMVCCommand/aal/aal1 Cmd_aal1
+NewATMVCCommand/aal/aal5 Cmd_aal5
+NewATMVCCommand/aal/aal1/clockRecovery Cmd_clockRecovery
+NewATMVCCommand/aal/aal1/errorCorrection Cmd_errorCorrection
+NewATMVCCommand/multiplex Cmd_multiplex
+NewATMVCCommand/reverseParameters Cmd_reverseParameters
+NewATMVCCommand/reverseParameters/multiplex CmdR_multiplex
+
+NewATMVCIndication/aal Ind_aal
+NewATMVCIndication/aal/aal1 Ind_aal1
+NewATMVCIndication/aal/aal5 Ind_aal5
+NewATMVCIndication/aal/aal1/clockRecovery Ind_clockRecovery
+NewATMVCIndication/aal/aal1/errorCorrection Ind_errorCorrection
+NewATMVCIndication/multiplex Ind_multiplex
+NewATMVCIndication/reverseParameters Ind_reverseParameters
+NewATMVCIndication/reverseParameters/multiplex IndR_multiplex
+
+MultilinkRequest/callInformation CallInformationReq
+MultilinkRequest/addConnection AddConnectionReq
+MultilinkRequest/removeConnection RemoveConnectionReq
+MultilinkRequest/maximumHeaderInterval MaximumHeaderIntervalReq
+
+MultilinkResponse/callInformation CallInformationResp
+MultilinkResponse/addConnection AddConnectionResp
+MultilinkResponse/removeConnection RemoveConnectionResp
+MultilinkResponse/maximumHeaderInterval MaximumHeaderIntervalResp
+
+MasterSlaveDeterminationReject/cause MasterSlaveDeterminationRejectCause
+TerminalCapabilitySetReject/cause TerminalCapabilitySetRejectCause
+OpenLogicalChannelReject/cause OpenLogicalChannelRejectCause
+RequestChannelCloseReject/cause RequestChannelCloseRejectCause
+MultiplexEntryRejectionDescriptions/cause MultiplexEntryRejectionDescriptionsCause
+RequestMultiplexEntryRejectionDescriptions/cause RequestMultiplexEntryRejectionDescriptionsCause
+RequestModeReject/cause RequestModeRejectCause
+MaintenanceLoopReject/cause MaintenanceLoopRejectCause
+FunctionNotSupported/cause FunctionNotSupportedCause
+
+AudioMode/g7231 Mode_g7231
+
+DataMode/application DataModeApplication
+DataMode/application/t38fax T38faxApp
+
+DepFECData/rfc2733 RFC2733Data
+
+IS13818AudioMode/audioLayer IS13818AudioLayer
+IS13818AudioMode/audioSampling IS13818AudioSampling
+IS13818AudioMode/multichannelType IS13818MultichannelType
+
+H223ModeParameters/adaptationLayerType AdaptationLayerType
+
+H223AL1MParameters/headerFEC AL1HeaderFEC
+H223AL1MParameters/crcLength AL1CrcLength
+H223AL2MParameters/headerFEC AL2HeaderFEC
+H223AL3MParameters/crcLength AL3CrcLength
+
+H261VideoMode/resolution H261Resolution
+H263VideoMode/resolution H263Resolution
+
+UnicastAddress/iPAddress/network Ipv4_network
+MulticastAddress/iPAddress MIPAddress
+MulticastAddress/iP6Address MIP6Address
+
+NonStandardIdentifier/h221NonStandard H221NonStandardID
+OpenLogicalChannel/forwardLogicalChannelNumber OLC_fw_lcn
+OpenLogicalChannelAck/forwardLogicalChannelNumber OLC_ack_fw_lcn
+OpenLogicalChannel/forwardLogicalChannelParameters/multiplexParameters OLC_forw_multiplexParameters
+OpenLogicalChannel/reverseLogicalChannelParameters/multiplexParameters OLC_rev_multiplexParameters
+OpenLogicalChannel/reverseLogicalChannelParameters OLC_reverseLogicalChannelParameters
+OpenLogicalChannel/forwardLogicalChannelParameters/multiplexParameters/h223LogicalChannelParameters OLC_fw_h223_params
+OpenLogicalChannel/reverseLogicalChannelParameters/multiplexParameters/h223LogicalChannelParameters OLC_rev_h223_params
+OpenLogicalChannelAck/reverseLogicalChannelParameters OLC_ack_reverseLogicalChannelParameters
+CloseLogicalChannel/reason Clc_reason
+VCCapability/availableBitRates/type Avb_type
+MultiplexElement/type Me_type
+RedundancyEncodingDTModeElement/type Re_type
+MaintenanceLoopRequest/type Mlr_type
+MaintenanceLoopAck/type Mla_type
+MaintenanceLoopReject/type Mlrej_type
+MiscellaneousCommand/type Mc_type
+MiscellaneousIndication/type Mi_type
+V76LogicalChannelParameters/mode V76LCP_mode
+DepFECData/rfc2733/mode FECdata_mode
+DepFECMode/rfc2733Mode/mode FEC_mode
+IS11172AudioMode/multichannelType IS11172_multichannelType
+MultiplexElement/repeatCount/finite ME_finiteRepeatCount
+MultiplexElement/repeatCount ME_repeatCount
+DepFECCapability/rfc2733 FECC_rfc2733
+RequestModeAck/response Req_mode_ack_response
+UserInputIndication/signalUpdate/rtp Si_rtp
+UnicastAddress/iPAddress/tsapIdentifier TsapIdentifier
+H2250LogicalChannelAckParameters/mediaChannel Ack_mediaChannel
+H2250LogicalChannelAckParameters/mediaControlChannel Ack_mediaControlChannel
+CommunicationModeTableEntry/mediaChannel Cm_mediaChannel
+#----------------------------------------------------------------------------------------
+#.FIELD_RENAME
+#----------------------------------------------------------------------------------------
+
+NewATMVCCommand/aal cmd_aal
+NewATMVCCommand/aal/aal1 cmd_aal1
+NewATMVCCommand/aal/aal5 cmd_aal5
+NewATMVCCommand/aal/aal1/clockRecovery cmd_clockRecovery
+NewATMVCCommand/aal/aal1/errorCorrection cmd_errorCorrection
+NewATMVCCommand/multiplex cmd_multiplex
+NewATMVCCommand/reverseParameters cmd_reverseParameters
+NewATMVCCommand/reverseParameters/multiplex cmdr_multiplex
+
+NewATMVCIndication/aal ind_aal
+NewATMVCIndication/aal/aal1 ind_aal1
+NewATMVCIndication/aal/aal5 ind_aal5
+NewATMVCIndication/aal/aal1/clockRecovery ind_clockRecovery
+NewATMVCIndication/aal/aal1/errorCorrection ind_errorCorrection
+NewATMVCIndication/multiplex ind_multiplex
+NewATMVCIndication/reverseParameters ind_reverseParameters
+NewATMVCIndication/reverseParameters/multiplex indr_multiplex
+
+MultilinkRequest/callInformation callInformationReq
+MultilinkRequest/addConnection addConnectionReq
+MultilinkRequest/removeConnection removeConnectionReq
+MultilinkRequest/maximumHeaderInterval maximumHeaderIntervalReq
+
+MultilinkResponse/callInformation callInformationResp
+MultilinkResponse/addConnection addConnectionResp
+MultilinkResponse/removeConnection removeConnectionResp
+MultilinkResponse/maximumHeaderInterval maximumHeaderIntervalResp
+
+MultiplexElement/type/logicalChannelNumber logicalChannelNum
+ConnectionIdentifier/sequenceNumber sequenceNum
+
+RequestMessage/nonStandard nonStandardMsg
+ResponseMessage/nonStandard nonStandardMsg
+CommandMessage/nonStandard nonStandardMsg
+IndicationMessage/nonStandard nonStandardMsg
+MultilinkRequest/nonStandard nonStandardMsg
+MultilinkResponse/nonStandard nonStandardMsg
+MultilinkIndication/nonStandard nonStandardMsg
+DialingInformation/nonStandard nonStandardMsg
+DialingInformationNetworkType/nonStandard nonStandardMsg
+
+UserInputCapability/nonStandard ui_nonStandard
+H2250LogicalChannelParameters/nonStandard nonStandardParams
+H2250LogicalChannelAckParameters/nonStandard nonStandardParams
+CommunicationModeTableEntry/nonStandard nonStandardParams
+ConferenceCapability/nonStandardData nonStandardParams
+
+UnicastAddress/iPXAddress/tsapIdentifier ipx_tsapIdentifier
+
+NonStandardParameter/data nsd_data
+NonStandardIdentifier/h221NonStandard h221NonStandardID
+
+AudioMode/g711Alaw64k g711Alaw64k_mode
+AudioMode/g711Alaw56k g711Alaw56k_mode
+AudioMode/g711Ulaw64k g711Ulaw64k_mode
+AudioMode/g711Ulaw56k g711Ulaw56k_mode
+AudioMode/g722-64k g722_64k_mode
+AudioMode/g722-56k g722_56k_mode
+AudioMode/g722-48k g722_48k_mode
+AudioMode/g728 g728_mode
+AudioMode/g729 g729_mode
+AudioMode/g729AnnexA g729AnnexA_mode
+AudioMode/g7231 g7231_mode
+AudioMode/vbd vbd_mode
+
+IS11172AudioMode/audioLayer/audioLayer1 audioLayer1Mode
+IS11172AudioMode/audioLayer/audioLayer2 audioLayer2Mode
+IS11172AudioMode/audioLayer/audioLayer3 audioLayer3Mode
+IS11172AudioMode/audioSampling/audioSampling32k audioSampling32kMode
+IS11172AudioMode/audioSampling/audioSampling44k1 audioSampling44k1Mode
+IS11172AudioMode/audioSampling/audioSampling48k audioSampling48kMode
+IS11172AudioMode/multichannelType/singleChannel singleChannelMode
+
+IS13818AudioMode/audioLayer audioLayerMode
+IS13818AudioMode/audioLayer/audioLayer1 audioLayer1Mode
+IS13818AudioMode/audioLayer/audioLayer2 audioLayer2Mode
+IS13818AudioMode/audioLayer/audioLayer3 audioLayer3Mode
+IS13818AudioMode/audioSampling audioSamplingMode
+IS13818AudioMode/audioSampling/audioSampling16k audioSampling16kMode
+IS13818AudioMode/audioSampling/audioSampling22k05 audioSampling22k05Mode
+IS13818AudioMode/audioSampling/audioSampling24k audioSampling24kMode
+IS13818AudioMode/audioSampling/audioSampling32k audioSampling32kMode
+IS13818AudioMode/audioSampling/audioSampling44k1 audioSampling44k1Mode
+IS13818AudioMode/audioSampling/audioSampling48k audioSampling48kMode
+IS13818AudioMode/multichannelType/singleChannel singleChannelMode
+IS13818AudioMode/multichannelType/threeChannels2-1 threeChannels2_1Mode
+IS13818AudioMode/multichannelType/threeChannels3-0 threeChannels3_0Mode
+IS13818AudioMode/multichannelType/fourChannels2-0-2-0 fourChannels2_0_2_0Mode
+IS13818AudioMode/multichannelType/fourChannels2-2 fourChannels2_2Mode
+IS13818AudioMode/multichannelType/fourChannels3-1 fourChannels3_1Mode
+IS13818AudioMode/multichannelType/fiveChannels3-0-2-0 fiveChannels3_0_2_0Mode
+IS13818AudioMode/multichannelType/fiveChannels3-2 fiveChannels3_2Mode
+
+H262VideoMode/profileAndLevel/profileAndLevel-SPatML profileAndLevel_SPatMLMode
+H262VideoMode/profileAndLevel/profileAndLevel-MPatLL profileAndLevel_MPatLLMode
+H262VideoMode/profileAndLevel/profileAndLevel-MPatML profileAndLevel_MPatMLMode
+H262VideoMode/profileAndLevel/profileAndLevel-MPatH-14 profileAndLevel_MPatH-14Mode
+H262VideoMode/profileAndLevel/profileAndLevel-MPatHL profileAndLevel_MPatHLMode
+H262VideoMode/profileAndLevel/profileAndLevel-SNRatLL profileAndLevel_SNRatLLMode
+H262VideoMode/profileAndLevel/profileAndLevel-SNRatML profileAndLevel_SNRatMLMode
+H262VideoMode/profileAndLevel/profileAndLevel-SpatialatH-14 profileAndLevel_SpatialatH-14Mode
+H262VideoMode/profileAndLevel/profileAndLevel-HPatML profileAndLevel_HPatMLMode
+H262VideoMode/profileAndLevel/profileAndLevel-HPatH-14 profileAndLevel_HPatH-14Mode
+H262VideoMode/profileAndLevel/profileAndLevel-HPatHL profileAndLevel_HPatHLMode
+
+RedundancyEncodingMode/secondaryEncoding/audioData audioMode
+RedundancyEncodingMode/secondaryEncoding secondaryEncodingMode
+RedundancyEncodingCapability/secondaryEncoding secondaryEncodingCapability
+
+UnicastAddress/iPAddress/network ip4_network
+UnicastAddress/iP6Address/network ip6_network
+MulticastAddress/iP6Address/network mip6_network
+MulticastAddress/iPAddress mIPAddress
+MulticastAddress/iP6Address mIP6Address
+MulticastAddress/iPAddress/network mip4_network
+
+RTPPayloadType/payloadType rtpPayloadType
+RTPPayloadType/payloadDescriptor/nonStandardIdentifier nonStandard
+MediaPacketizationCapability/rtpPayloadType rtpPayloadTypes
+T84Profile/t84Restricted/cif cif_bool
+T84Profile/t84Restricted/qcif qcif_bool
+H223ModeParameters/adaptationLayerType adaptationLayer
+H261VideoMode/resolution h261_resolution
+H263VideoMode/resolution h263_resolution
+H263VideoMode/resolution/custom custom_res
+CommunicationModeTableEntry/dataType entryDataType
+VCCapability/transportStream transportStream_bool
+MultiplePayloadStreamMode/elements mpsmElements
+RedundancyEncodingDTMode/secondary secondaryDTM
+MultiplexEntrySendReject/rejectionDescriptions sendRejectionDescriptions
+
+MultiplexEntrySendAck/multiplexTableEntryNumber multiplexTableEntryNumbers
+MultiplexEntrySendRelease/multiplexTableEntryNumber multiplexTableEntryNumbers
+CapabilityIdentifier/standard standardOid
+MiscellaneousIndication/type/videoNotDecodedMBs/temporalReference temporalReference_0_255
+CloseLogicalChannel/source cLC_source
+DepFECCapability/rfc2733/separateStream separateStreamBool
+DepFECCapability/rfc2733/separateStream/samePort samePortBool
+VCCapability/aal1/srtsClockRecovery srtsClockRecovery_bool
+VCCapability/aal1ViaGateway/srtsClockRecovery srtsClockRecoveryflag
+DataMode/application/t84 t84DataProtocolCapability
+DataMode/application/t38fax t38faxDataProtocolCapability
+H2250LogicalChannelParameters/sessionID sessionID_0_255
+H223Capability/mobileOperationTransmitCapability/h223AnnexADoubleFlag h223AnnexADoubleFlagFlag
+SendTerminalCapabilitySet/genericRequest genericRequestFlag
+H2250LogicalChannelParameters/mediaPacketization/h261aVideoPacketization h261aVideoPacketizationFlag
+RemoteMCResponse/reject/functionNotSupported functionNotSupportedFlag
+NewATMVCCommand/aal/aal1/errorCorrection/longInterleaver longInterleaverFlag
+NewATMVCIndication/aal/aal1/errorCorrection/longInterleaver longInterleaverFlag
+MiscellaneousCommand/type/videoFastUpdateMB/firstGOB firstGOB_0_255
+H263VideoCapability/sqcifMPI sqcifMPI_1_32
+EnhancementOptions/sqcifMPI sqcifMPI_1_32
+NewATMVCCommand/aal/aal1/errorCorrection/shortInterleaver shortInterleaverFlag
+NewATMVCIndication/aal/aal1/errorCorrection/shortInterleaver shortInterleaverFlag
+NewATMVCCommand/multiplex/programStream programStreamFlag
+NewATMVCCommand/reverseParameters/multiplex/programStream programStreamFlag
+NewATMVCIndication/multiplex/programStream programStreamFlag
+NewATMVCIndication/reverseParameters/multiplex/programStream programStreamFlag
+H263ModeComboFlags/enhancedReferencePicSelect enhancedReferencePicSelectBool
+NewATMVCCommand/aal/aal1/errorCorrection/errorCorrectionOnly errorCorrectionOnlyFlag
+NewATMVCIndication/aal/aal1/errorCorrection/errorCorrectionOnly errorCorrectionOnlyFlag
+UserInputCapability/extendedAlphanumeric extendedAlphanumericFlag
+MultiplexElement/repeatCount/finite me_repeatCount_finite
+MiscellaneousCommand/type/videoFastUpdateMB/firstMB firstMB_1_8192
+MiscellaneousIndication/type/videoNotDecodedMBs/firstMB firstMB_1_8192
+H261VideoCapability/cifMPI cifMPI_1_4
+CustomPictureClockFrequency/cifMPI cifMPI2_1_2048
+H263VideoCapability/cif16MPI cif16MPI_1_32
+EnhancementOptions/cif16MPI cif16MPI_1_32
+H263VideoCapability/cif4MPI cif4MPI_1_32
+EnhancementOptions/cif4MPI cif4MPI_1_32
+H263Version3Options/pictureNumber pictureNumberBoolean
+MiscellaneousCommand/type/videoBadMBs/numberOfMBs numberOfMBs1_1_9216
+MiscellaneousCommand/type/lostPartialPicture/numberOfMBs numberOfMBs1_1_9216
+DataApplicationCapability/maxBitRate maxBitRate2_0_4294967295
+GenericCapability/maxBitRate maxBitRate2_0_4294967295
+H261VideoCapability/maxBitRate maxBitRate_1_19200
+IS13818AudioCapability/bitRate bitRate2_1_1130
+IS13818AudioMode/bitRate bitRate2_1_1130
+IS11172AudioCapability/bitRate bitRate_1_448
+IS11172AudioMode/bitRate bitRate_1_448
+DataMode/bitRate bitRate_0_4294967295
+H223Capability/bitRate bitRate_1_19200
+H261VideoMode/bitRate bitRate_1_19200
+H263VideoMode/bitRate bitRate_1_19200
+DialingInformationNumber/networkAddress din_networkAddress
+NewATMVCCommand/aal/aal1/clockRecovery/adaptiveClockRecovery adaptiveClockRecoveryFlag
+NewATMVCIndication/aal/aal1/clockRecovery/adaptiveClockRecovery adaptiveClockRecoveryFlag
+NewATMVCCommand/aal/aal1/clockRecovery/nullClockRecovery nullClockRecoveryflag
+NewATMVCIndication/aal/aal1/clockRecovery/nullClockRecovery nullClockRecoveryflag
+NewATMVCCommand/aal/aal1/errorCorrection/nullErrorCorrection nullErrorCorrectionFlag
+NewATMVCIndication/aal/aal1/errorCorrection/nullErrorCorrection nullErrorCorrectionFlag
+H223AL2MParameters/headerFEC aL2HeaderFEC
+H223AL1MParameters/headerFEC aL1HeaderFEC
+H223AL1MParameters/crcLength crcLength2
+H223AL3MParameters/crcLength crlength2
+SendTerminalCapabilitySet/specificRequest/multiplexCapability multiplexCapabilityBool
+DepFECCapability/rfc2733/redundancyEncoding redundancyEncodingBool
+DepFECData/rfc2733/mode/redundancyEncoding redundancyEncodingFlag
+DepFECMode/rfc2733Mode/mode/redundancyEncoding redundancyEncodingFlag
+ParameterValue/genericParameter genericParameters
+
+H261VideoCapability/qcifMPI qcifMPI_1_4
+CustomPictureClockFrequency/qcifMPI qcifMPI_1_2048
+DataMode/application datamodeapplication
+MasterSlaveDeterminationReject/cause msd_rej_cause
+
+OpenLogicalChannelReject/cause olc_rej_cause
+RequestMultiplexEntryRejectionDescriptions/cause req_mux_rej_cause
+RequestModeReject/cause req_rej_cause
+MultiplexEntryRejectionDescriptions/cause mux_rej_cause
+RequestChannelCloseReject/cause req_chan_clos_rej_cause
+TerminalCapabilitySetReject/cause tcs_rej_cause
+MaintenanceLoopReject/cause maintloop_rej_cause
+FunctionNotSupported/cause fns_cause
+Restriction/maximumBitRate res_maximumBitRate
+RedundancyEncodingDTMode/primary prmary_dtmode
+RedundancyEncoding/rtpRedundancyEncoding/primary primary
+DepFECData/rfc2733 dep_rfc2733
+DepFECMode/rfc2733Mode/mode fec_mode
+DepFECData/rfc2733/mode fec_data_mode
+FECData/rfc2733/pktMode/rfc2733sameport mode_rfc2733sameport
+FECData/rfc2733/pktMode/rfc2733diffport mode_rfc2733diffport
+V76LogicalChannelParameters/mode v76_mode
+OpenLogicalChannelAck/reverseLogicalChannelParameters/multiplexParameters olc_ack_multiplexParameters
+OpenLogicalChannel/forwardLogicalChannelNumber olc_fw_lcn
+OpenLogicalChannelAck/forwardLogicalChannelNumber olc_ack_fw_lcn
+OpenLogicalChannel/forwardLogicalChannelParameters/multiplexParameters olc_forw_multiplexParameters
+OpenLogicalChannel/reverseLogicalChannelParameters/multiplexParameters olc_rev_multiplexParameter
+IS11172AudioMode/multichannelType is11172multichannelType
+IS13818AudioMode/multichannelType is13818MultichannelType
+CloseLogicalChannel/reason clc_reason
+MultiplexElement/repeatCount me_repeatCount
+DepFECCapability/rfc2733 fecc_rfc2733
+RequestModeAck/response req_mode_ack_response
+UserInputIndication/signalUpdate/rtp si_rtp
+VCCapability/availableBitRates/type avb_type
+MultiplexElement/type me_type
+RedundancyEncodingDTModeElement/type re_type
+MaintenanceLoopRequest/type mlr_type
+MaintenanceLoopAck/type mla_type
+MaintenanceLoopReject/type mlrej_type
+MiscellaneousCommand/type mc_type
+MiscellaneousIndication/type mi_type
+VBDMode/type vbd_type
+VBDCapability/type vbd_cap_type
+OpenLogicalChannelAck/reverseLogicalChannelParameters olc_ack_reverseLogicalChannelParameters
+H2250LogicalChannelAckParameters/mediaChannel ack_mediaChannel
+H2250LogicalChannelAckParameters/mediaControlChannel ack_mediaControlChannel
+UnicastAddress/iP6Address/tsapIdentifier ipv6_tsapIdentifier
+UnicastAddress/iPSourceRouteAddress/tsapIdentifier iPSrcRoute_tsapIdentifier
+MulticastAddress/iPAddress/tsapIdentifier multicast_tsapIdentifier
+MulticastAddress/iP6Address/tsapIdentifier multicast_IPv6_tsapIdentifier
+CommunicationModeTableEntry/mediaChannel cm_mediaChannel
+CommunicationModeTableEntry/mediaControlChannel cm_mediaControlChannel
+Criteria/value criteriaValue
+
+OpenLogicalChannel/reverseLogicalChannelParameters/multiplexParameters/h223LogicalChannelParameters olc_rev_h223_params
+OpenLogicalChannel/forwardLogicalChannelParameters/multiplexParameters/h223LogicalChannelParameters olc_fw_h223_params
+
+H223LogicalChannelParameters/adaptationLayerType/al1Framed h223_al_type_al1Framed
+H223LogicalChannelParameters/adaptationLayerType/al1NotFramed h223_al_type_al1NotFramed
+H223LogicalChannelParameters/adaptationLayerType/al2WithoutSequenceNumbers h223_al_type_al2WithoutSequenceNumbers
+H223LogicalChannelParameters/adaptationLayerType/al2WithSequenceNumbers h223_al_type_al2WithSequenceNumbers
+H223LogicalChannelParameters/adaptationLayerType/al3 h223_al_type_al3
+Al3/sendBufferSize al3_sendBufferSize
+H223LogicalChannelParameters/adaptationLayerType/al1M h223_al_type_al1M
+H223LogicalChannelParameters/adaptationLayerType/al2M h223_al_type_al2M
+H223LogicalChannelParameters/adaptationLayerType/al3M h223_al_type_al3M
+H223LogicalChannelParameters/segmentableFlag h223_lc_segmentableFlag
+
+#----------------------------------------------------------------------------------------
+#.TYPE_ATTR
+UnicastAddress/iPAddress/network TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
+UnicastAddress/iP6Address/network TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
+MulticastAddress/iPAddress/network TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL
+MulticastAddress/iP6Address/network TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL
+RTPPayloadType/payloadDescriptor/rfc-number TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(h245_RFC_number_vals)
+NonStandardIdentifier/h221NonStandard/t35CountryCode TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(T35CountryCode_vals)
+VendorIdentification/productNumber TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
+VendorIdentification/versionNumber TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL
+ParameterValue/octetString TYPE = FT_UINT32 DISPLAY = BASE_DEC
+
+#----------------------------------------------------------------------------------------
+#.FIELD_ATTR
+AlternativeCapabilitySet/_item NAME = "alternativeCapability"
+CapabilityIdentifier/standard ABBREV=standardOid
+UnicastAddress/iPXAddress/tsapIdentifier ABBREV=ipx.tsapIdentifier
+UnicastAddress/iP6Address/tsapIdentifier ABBREV=ipv6.tsapIdentifier
+UnicastAddress/iPSourceRouteAddress/tsapIdentifier ABBREV=iPSrcRoute.tsapIdentifier
+MulticastAddress/iPAddress/tsapIdentifier ABBREV=multicast.tsapIdentifier
+MulticastAddress/iP6Address/tsapIdentifier ABBREV=multicast_IPv6.tsapIdentifier
+UnicastAddress/iPAddress/network ABBREV=ip4_network
+UnicastAddress/iP6Address/network ABBREV=ip6_network
+MulticastAddress/iP6Address/network ABBREV=mip6_network
+MulticastAddress/iPAddress ABBREV=mIPAddress
+MulticastAddress/iP6Address ABBREV=mIP6Address
+MulticastAddress/iPAddress/network ABBREV=mip4_network
+Criteria/value ABBREV=criteriaValue
+DialingInformationNumber/networkAddress ABBREV=din_networkAddress
+SendTerminalCapabilitySet/specificRequest/multiplexCapability ABBREV=multiplexCapabilityBool
+H263Version3Options/pictureNumber ABBREV=pictureNumberBoolean
+H223Capability/mobileOperationTransmitCapability/h223AnnexADoubleFlag ABBREV=h223AnnexADoubleFlagFlag
+
+#----------------------------------------------------------------------------------------
+# vim:set ts=4 sts=2 sw=2:
diff --git a/epan/dissectors/asn1/h245/packet-h245-template.c b/epan/dissectors/asn1/h245/packet-h245-template.c
new file mode 100644
index 00000000..7950ca14
--- /dev/null
+++ b/epan/dissectors/asn1/h245/packet-h245-template.c
@@ -0,0 +1,598 @@
+/* packet-h245_asn1.c
+ * Routines for h245 packet dissection
+ * Copyright 2004, Anders Broman <anders.broman@ericsson.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * To quote the author of the previous H245 dissector:
+ * "This is a complete replacement of the previous limitied dissector
+ * that Ronnie was crazy enough to write by hand. It was a lot of time
+ * to hack it by hand, but it is incomplete and buggy and it is good when
+ * it will go away."
+ * Ronnie did a great job and all the VoIP users had made good use of it!
+ * Credit to Tomas Kukosa for developing the asn2wrs compiler.
+ *
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/exceptions.h>
+#include <epan/strutil.h>
+#include <epan/addr_resolv.h>
+#include <epan/prefs.h>
+#include <epan/t35.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+#include <epan/proto_data.h>
+#include <epan/tap.h>
+#include <wsutil/pint.h>
+#include "packet-tpkt.h"
+#include "packet-per.h"
+#include "packet-h323.h"
+#include "packet-h245.h"
+#include "packet-rtp.h"
+#include "packet-rtcp.h"
+#include "packet-t38.h"
+
+#define PNAME "MULTIMEDIA-SYSTEM-CONTROL"
+#define PSNAME "H.245"
+#define PFNAME "h245"
+
+void proto_register_h245(void);
+void proto_reg_handoff_h245(void);
+
+static dissector_handle_t rtcp_handle=NULL;
+static dissector_table_t nsp_object_dissector_table;
+static dissector_table_t nsp_h221_dissector_table;
+static dissector_table_t gef_name_dissector_table;
+static dissector_table_t gef_content_dissector_table;
+static dissector_handle_t h245_handle;
+static dissector_handle_t nsp_handle;
+static dissector_handle_t data_handle;
+static dissector_handle_t MultimediaSystemControlMessage_handle;
+static dissector_handle_t h263_handle = NULL;
+static dissector_handle_t amr_handle = NULL;
+
+static void init_h245_packet_info(h245_packet_info *pi);
+static int hf_h245_pdu_type = -1;
+static int hf_h245Manufacturer = -1;
+static int hf_h245_subMessageIdentifier_standard = -1;
+static int h245_tap = -1;
+static int h245dg_tap = -1;
+static int hf_h245_debug_dissector_try_string = -1;
+
+h245_packet_info *h245_pi=NULL;
+
+static gboolean h245_reassembly = TRUE;
+static gboolean h245_shorttypes = FALSE;
+static gboolean info_col_fmt_prepend = FALSE;
+
+#include "packet-h245-val.h"
+
+static const value_string h245_RequestMessage_short_vals[] = {
+ { RequestMessage_nonStandard , "NSM" },
+ { RequestMessage_masterSlaveDetermination , "MSD" },
+ { RequestMessage_terminalCapabilitySet , "TCS" },
+ { RequestMessage_openLogicalChannel , "OLC" },
+ { RequestMessage_closeLogicalChannel , "CLC" },
+ { RequestMessage_requestChannelClose , "RCC" },
+ { RequestMessage_multiplexEntrySend , "MES" },
+ { RequestMessage_requestMultiplexEntry , "RME" },
+ { RequestMessage_requestMode , "RM" },
+ { RequestMessage_roundTripDelayRequest , "RTDR" },
+ { RequestMessage_maintenanceLoopRequest , "MLR" },
+ { RequestMessage_communicationModeRequest , "CMR" },
+ { RequestMessage_conferenceRequest , "CR" },
+ { RequestMessage_multilinkRequest , "MR" },
+ { RequestMessage_logicalChannelRateRequest, "LCRR" },
+ { RequestMessage_genericRequest , "GR" },
+ { 0, NULL }
+};
+static const value_string h245_ResponseMessage_short_vals[] = {
+ { ResponseMessage_nonStandard , "NSM" },
+ { ResponseMessage_masterSlaveDeterminationAck , "MSDAck" },
+ { ResponseMessage_masterSlaveDeterminationReject, "MSDReject" },
+ { ResponseMessage_terminalCapabilitySetAck , "TCSAck" },
+ { ResponseMessage_terminalCapabilitySetReject , "TCSReject" },
+ { ResponseMessage_openLogicalChannelAck , "OLCAck" },
+ { ResponseMessage_openLogicalChannelReject , "OLCReject" },
+ { ResponseMessage_closeLogicalChannelAck , "CLCAck" },
+ { ResponseMessage_requestChannelCloseAck , "RCCAck" },
+ { ResponseMessage_requestChannelCloseReject , "RCCReject" },
+ { ResponseMessage_multiplexEntrySendAck , "MESAck" },
+ { ResponseMessage_multiplexEntrySendReject , "MESReject" },
+ { ResponseMessage_requestMultiplexEntryAck , "RMEAck" },
+ { ResponseMessage_requestMultiplexEntryReject , "RMEReject" },
+ { ResponseMessage_requestModeAck , "RMAck" },
+ { ResponseMessage_requestModeReject , "RMReject" },
+ { ResponseMessage_roundTripDelayResponse , "RTDResponse" },
+ { ResponseMessage_maintenanceLoopAck , "MLAck" },
+ { ResponseMessage_maintenanceLoopReject , "MLReject" },
+ { ResponseMessage_communicationModeResponse , "CMResponse" },
+ { ResponseMessage_conferenceResponse , "CResponse" },
+ { ResponseMessage_multilinkResponse , "MResponse" },
+ { ResponseMessage_logicalChannelRateAcknowledge , "LCRAck" },
+ { ResponseMessage_logicalChannelRateReject , "LCRReject" },
+ { ResponseMessage_genericResponse , "GR" },
+ { 0, NULL }
+};
+static const value_string h245_IndicationMessage_short_vals[] = {
+ { IndicationMessage_nonStandard , "NSM" },
+ { IndicationMessage_functionNotUnderstood , "FNU" },
+ { IndicationMessage_masterSlaveDeterminationRelease , "MSDRelease" },
+ { IndicationMessage_terminalCapabilitySetRelease , "TCSRelease" },
+ { IndicationMessage_openLogicalChannelConfirm , "OLCConfirm" },
+ { IndicationMessage_requestChannelCloseRelease , "RCCRelease" },
+ { IndicationMessage_multiplexEntrySendRelease , "MESRelease" },
+ { IndicationMessage_requestMultiplexEntryRelease , "RMERelease" },
+ { IndicationMessage_requestModeRelease , "RMRelease" },
+ { IndicationMessage_miscellaneousIndication , "MI" },
+ { IndicationMessage_jitterIndication , "JI" },
+ { IndicationMessage_h223SkewIndication , "H223SI" },
+ { IndicationMessage_newATMVCIndication , "NATMVCI" },
+ { IndicationMessage_userInput , "UII" },
+ { IndicationMessage_h2250MaximumSkewIndication , "H2250MSI" },
+ { IndicationMessage_mcLocationIndication , "MCLI" },
+ { IndicationMessage_conferenceIndication , "CI" },
+ { IndicationMessage_vendorIdentification , "VI" },
+ { IndicationMessage_functionNotSupported , "FNS" },
+ { IndicationMessage_multilinkIndication , "MultilinkIndication" },
+ { IndicationMessage_logicalChannelRateRelease , "LCRRelease" },
+ { IndicationMessage_flowControlIndication , "FCIndication" },
+ { IndicationMessage_mobileMultilinkReconfigurationIndication, "MMRI" },
+ { IndicationMessage_genericIndication , "GI" },
+ { 0, NULL }
+};
+static const value_string h245_CommandMessage_short_vals[] = {
+ { CommandMessage_nonStandard , "NSM" },
+ { CommandMessage_maintenanceLoopOffCommand , "MLOC" },
+ { CommandMessage_sendTerminalCapabilitySet , "STCS" },
+ { CommandMessage_encryptionCommand , "EC" },
+ { CommandMessage_flowControlCommand , "FCC" },
+ { CommandMessage_endSessionCommand , "ESC" },
+ { CommandMessage_miscellaneousCommand , "MC" },
+ { CommandMessage_communicationModeCommand , "CMC" },
+ { CommandMessage_conferenceCommand , "CC" },
+ { CommandMessage_h223MultiplexReconfiguration , "H223MR" },
+ { CommandMessage_newATMVCCommand , "NATMVCC" },
+ { CommandMessage_mobileMultilinkReconfigurationCommand, "MMRC" },
+ { CommandMessage_genericCommand , "GC" },
+ { 0, NULL }
+};
+
+static const value_string h245_AudioCapability_short_vals[] = {
+ { AudioCapability_nonStandard , "nonStd" },
+ { AudioCapability_g711Alaw64k , "g711A" },
+ { AudioCapability_g711Alaw56k , "g711A56k" },
+ { AudioCapability_g711Ulaw64k , "g711U" },
+ { AudioCapability_g711Ulaw56k , "g711U56k" },
+ { AudioCapability_g722_64k , "g722-64k" },
+ { AudioCapability_g722_56k , "g722-56k" },
+ { AudioCapability_g722_48k , "g722-48k" },
+ { AudioCapability_g7231 , "g7231" },
+ { AudioCapability_g728 , "g728" },
+ { AudioCapability_g729 , "g729" },
+ { AudioCapability_g729AnnexA , "g729A" },
+ { AudioCapability_is11172AudioCapability, "is11172" },
+ { AudioCapability_is13818AudioCapability, "is13818" },
+ { AudioCapability_g729wAnnexB , "g729B" },
+ { AudioCapability_g729AnnexAwAnnexB , "g729AB" },
+ { AudioCapability_g7231AnnexCCapability , "g7231C" },
+ { AudioCapability_gsmFullRate , "gsmFR" },
+ { AudioCapability_gsmHalfRate , "gsmHR" },
+ { AudioCapability_gsmEnhancedFullRate , "gsmEFR" },
+ { AudioCapability_genericAudioCapability, "generic" },
+ { AudioCapability_g729Extensions , "g729Ext" },
+ { AudioCapability_vbd , "vbd" },
+ { AudioCapability_audioTelephonyEvent , "audioTelEvent" },
+ { AudioCapability_audioTone , "audioTone" },
+ { 0, NULL }
+};
+
+/* To put the codec type only in COL_INFO when
+ an OLC is read */
+const char* codec_type = NULL;
+static guint32 rfc_number;
+
+typedef struct _unicast_addr_t {
+ address addr;
+ guint8 addr_buf[16];
+ guint32 port;
+} unicast_addr_t;
+
+typedef struct _channel_info_t {
+ gchar data_type_str[32];
+ unicast_addr_t *upcoming_addr;
+ unicast_addr_t media_addr;
+ unicast_addr_t media_control_addr;
+ unsigned int rfc2198;
+ gboolean srtp_flag;
+ gboolean is_video;
+} channel_info_t;
+
+typedef struct _olc_info_t {
+ guint16 fwd_lc_num;
+ channel_info_t fwd_lc;
+ channel_info_t rev_lc;
+} olc_info_t;
+
+static wmem_map_t* h245_pending_olc_reqs = NULL;
+static gboolean fast_start = FALSE;
+static olc_info_t *upcoming_olc = NULL;
+static channel_info_t *upcoming_channel = NULL;
+
+/* NonStandardParameter */
+static const char *nsiOID;
+static guint32 h221NonStandard;
+static guint32 t35CountryCode;
+static guint32 t35Extension;
+static guint32 manufacturerCode;
+
+static const value_string h245_RFC_number_vals[] = {
+ { 2190, "RFC 2190 - H.263 Video Streams" },
+ { 2198, "RFC 2198 - RTP Payload for Redundant Audio Data" },
+ { 2429, "RFC 2429 - 1998 Version of ITU-T Rec. H.263 Video (H.263+)" },
+ { 3016, "RFC 3016 - RTP Payload Format for MPEG-4 Audio/Visual Streams" },
+ { 3267, "RFC 3267 - Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB)" },
+ { 3984, "RFC 3984 - RTP Payload Format for H.264 Video" },
+ { 0, NULL }
+};
+
+/* Table 7/H.239 subMessageIdentifier values */
+static const value_string h245_h239subMessageIdentifier_vals[] = {
+ { 1, "flowControlReleaseRequest" },
+ { 2, "flowControlReleaseResponse" },
+ { 3, "presentationTokenRequest" },
+ { 4, "presentationTokenResponse" },
+ { 5, "presentationTokenRelease" },
+ { 6, "presentationTokenIndicateOwner" },
+ { 0, NULL }
+};
+
+
+/* h223 multiplex codes */
+static h223_set_mc_handle_t h223_set_mc_handle = NULL;
+h223_mux_element *h223_me=NULL;
+guint8 h223_mc=0;
+void h245_set_h223_set_mc_handle( h223_set_mc_handle_t handle )
+{
+ h223_set_mc_handle = handle;
+}
+
+/* h223 logical channels */
+typedef struct {
+ h223_lc_params *fw_channel_params;
+ h223_lc_params *rev_channel_params;
+} h223_pending_olc;
+
+static wmem_map_t* h223_pending_olc_reqs[] = { NULL, NULL };
+static dissector_handle_t h245_lc_dissector;
+static guint16 h245_lc_temp;
+static guint16 h223_fw_lc_num;
+static guint16 h223_rev_lc_num;
+static h223_lc_params *h223_lc_params_temp;
+static h223_lc_params *h223_fw_lc_params;
+static h223_lc_params *h223_rev_lc_params;
+static h223_add_lc_handle_t h223_add_lc_handle = NULL;
+
+static void h223_lc_init( void )
+{
+ h223_lc_params_temp = NULL;
+ h245_lc_dissector = NULL;
+ h223_fw_lc_num = 0;
+}
+
+void h245_set_h223_add_lc_handle( h223_add_lc_handle_t handle )
+{
+ h223_add_lc_handle = handle;
+}
+
+static const gchar *gen_olc_key(guint16 lc_num, address *dst_addr, address *src_addr, wmem_allocator_t *scope)
+{
+ return wmem_strdup_printf(scope, "%s/%s/%u",
+ address_to_str(scope, dst_addr),
+ address_to_str(scope, src_addr),
+ lc_num);
+}
+
+static void update_unicast_addr(unicast_addr_t *req_addr, unicast_addr_t *ack_addr)
+{
+ if (ack_addr->addr.type!=AT_NONE && ack_addr->port!=0) {
+ memcpy(req_addr->addr_buf, ack_addr->addr_buf, sizeof(req_addr->addr_buf));
+ set_address(&req_addr->addr, ack_addr->addr.type, ack_addr->addr.len, req_addr->addr_buf);
+ req_addr->port = ack_addr->port;
+ }
+}
+
+static void h245_setup_channels(packet_info *pinfo, channel_info_t *upcoming_channel_lcl)
+{
+ rtp_dyn_payload_t *rtp_dyn_payload = NULL;
+ struct srtp_info *dummy_srtp_info = NULL;
+
+ if (!upcoming_channel_lcl) return;
+
+ /* T.38 */
+ if (!strcmp(upcoming_channel_lcl->data_type_str, "t38fax")) {
+ if (upcoming_channel_lcl->media_addr.addr.type!=AT_NONE && upcoming_channel_lcl->media_addr.port!=0) {
+ t38_add_address(pinfo, &upcoming_channel_lcl->media_addr.addr,
+ upcoming_channel_lcl->media_addr.port, 0,
+ "H245", pinfo->num);
+ }
+ return;
+ }
+
+ /* (S)RTP, (S)RTCP */
+ if (upcoming_channel_lcl->rfc2198 > 0) {
+ rtp_dyn_payload = rtp_dyn_payload_new();
+ rtp_dyn_payload_insert(rtp_dyn_payload, upcoming_channel_lcl->rfc2198, "red", 8000, 1);
+ }
+
+ if (upcoming_channel_lcl->srtp_flag) {
+ dummy_srtp_info = wmem_new0(wmem_file_scope(), struct srtp_info);
+ }
+
+ /* DEBUG ws_warning("h245_setup_channels media_addr.addr.type %u port %u",upcoming_channel_lcl->media_addr.addr.type, upcoming_channel_lcl->media_addr.port );
+ */
+ if (upcoming_channel_lcl->media_addr.addr.type!=AT_NONE && upcoming_channel_lcl->media_addr.port!=0) {
+ srtp_add_address(pinfo, PT_UDP, &upcoming_channel_lcl->media_addr.addr,
+ upcoming_channel_lcl->media_addr.port, 0,
+ "H245", pinfo->num, upcoming_channel_lcl->is_video , rtp_dyn_payload, dummy_srtp_info, NULL);
+ }
+ if (upcoming_channel_lcl->media_control_addr.addr.type!=AT_NONE && upcoming_channel_lcl->media_control_addr.port!=0 && rtcp_handle) {
+ srtcp_add_address(pinfo, &upcoming_channel_lcl->media_control_addr.addr,
+ upcoming_channel_lcl->media_control_addr.port, 0,
+ "H245", pinfo->num, dummy_srtp_info);
+ }
+}
+
+/* Prints formated information column of h245 messages. Note that global variables
+ * "h245_shorttypes" and "info_col_fmt_prepend" are used to decide formating preferences */
+static void print_info_column(column_info *cinfo, const gint32 *value,
+ const value_string *msg_vals, const value_string *short_msg_vals)
+{
+ const value_string *vals;
+
+ if (h245_shorttypes == FALSE || short_msg_vals == NULL) {
+ vals = msg_vals;
+ } else {
+ vals = short_msg_vals;
+ }
+
+ if (info_col_fmt_prepend == FALSE) {
+ col_append_fstr(cinfo, COL_INFO, "%s ", val_to_str_const(*value, vals, "<unknown>"));
+ } else {
+ col_prepend_fstr(cinfo, COL_INFO, "%s ", val_to_str_const(*value, vals, "<unknown>"));
+ }
+}
+
+/* Initialize the protocol and registered fields */
+static int proto_h245 = -1;
+#include "packet-h245-hf.c"
+
+/* Initialize the subtree pointers */
+static int ett_h245 = -1;
+static int ett_h245_returnedFunction = -1;
+#include "packet-h245-ett.c"
+
+/* Forward declarations */
+static int dissect_h245_MultimediaSystemControlMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+static void reset_h245_pi(void *dummy _U_)
+{
+ h245_pi = NULL; /* Make sure we don't leave pinfo->pool memory lying around */
+}
+
+#include "packet-h245-fn.c"
+
+static int
+dissect_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_)
+{
+ /*
+ * MultimediaSystemControlMessage_handle is the handle for
+ * dissect_h245_h245, so we don't want to do any h245_pi or tap stuff here.
+ */
+ dissect_tpkt_encap(tvb, pinfo, parent_tree, h245_reassembly, MultimediaSystemControlMessage_handle);
+ return tvb_captured_length(tvb);
+}
+
+
+static int
+dissect_h245_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_)
+{
+ proto_item *it;
+ proto_tree *tr;
+ guint32 offset=0;
+ asn1_ctx_t asn1_ctx;
+
+ fast_start = FALSE;
+ /* Clean up from any previous packet dissection */
+ upcoming_olc = NULL;
+ upcoming_channel = NULL;
+ codec_type = NULL;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+
+ it=proto_tree_add_protocol_format(parent_tree, proto_h245, tvb, 0, -1, PSNAME);
+ tr=proto_item_add_subtree(it, ett_h245);
+
+ /* assume that whilst there is more tvb data, there are more h245 commands */
+ while ( tvb_reported_length_remaining( tvb, offset>>3 )>0 ){
+ CLEANUP_PUSH(reset_h245_pi, NULL);
+ h245_pi=wmem_new(pinfo->pool, h245_packet_info);
+ init_h245_packet_info(h245_pi);
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_h245_MultimediaSystemControlMessage(tvb, offset, &asn1_ctx, tr, hf_h245_pdu_type);
+ tap_queue_packet(h245dg_tap, pinfo, h245_pi);
+ offset = (offset+0x07) & 0xfffffff8;
+ CLEANUP_CALL_AND_POP;
+ }
+ return tvb_captured_length(tvb);
+}
+
+void
+dissect_h245_FastStart_OLC(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, char *codec_str) {
+
+ fast_start = TRUE;
+ /* Clean up from any previous packet dissection */
+ upcoming_olc = NULL;
+ upcoming_channel = NULL;
+ codec_type = NULL;
+
+ dissect_OpenLogicalChannel_PDU(tvb, pinfo, tree, NULL);
+
+ if (h245_pi != NULL)
+ h245_pi->msg_type = H245_OpenLogChn;
+
+ if (codec_str && codec_type){
+ (void) g_strlcpy(codec_str, codec_type, 50);
+ }
+
+}
+
+/*--- proto_register_h245 -------------------------------------------*/
+void proto_register_h245(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+ { &hf_h245_pdu_type,
+ { "PDU Type", "h245.pdu_type", FT_UINT32, BASE_DEC,
+ VALS(h245_MultimediaSystemControlMessage_vals), 0, "Type of H.245 PDU", HFILL }},
+ { &hf_h245Manufacturer,
+ { "H.245 Manufacturer", "h245.Manufacturer", FT_UINT32, BASE_HEX,
+ VALS(H221ManufacturerCode_vals), 0, "h245.H.221 Manufacturer", HFILL }},
+ { &hf_h245_subMessageIdentifier_standard,
+ { "subMessageIdentifier", "h245.subMessageIdentifier.standard",
+ FT_UINT32, BASE_DEC, VALS(h245_h239subMessageIdentifier_vals), 0,
+ NULL, HFILL }},
+ { &hf_h245_debug_dissector_try_string,
+ { "*** DEBUG dissector_try_string", "h245.debug.dissector_try_string", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+#include "packet-h245-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_h245,
+ &ett_h245_returnedFunction,
+#include "packet-h245-ettarr.c"
+ };
+ module_t *h245_module;
+
+ /* Register protocol */
+ proto_h245 = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ h223_pending_olc_reqs[P2P_DIR_SENT] = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal );
+ h223_pending_olc_reqs[P2P_DIR_RECV] = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal );
+ h245_pending_olc_reqs = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), wmem_str_hash, g_str_equal);
+
+ register_init_routine(h223_lc_init);
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_h245, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* From Ronnie Sahlbergs original H245 dissector */
+
+ h245_module = prefs_register_protocol(proto_h245, NULL);
+ prefs_register_bool_preference(h245_module, "reassembly",
+ "Reassemble H.245 messages spanning multiple TCP segments",
+ "Whether the H.245 dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &h245_reassembly);
+ prefs_register_bool_preference(h245_module, "shorttypes",
+ "Show short message types",
+ "Whether the dissector should show short names or the long names from the standard",
+ &h245_shorttypes);
+ prefs_register_bool_preference(h245_module, "prepand",
+ "Show h245 info in reversed order",
+ "Whether the dissector should print items of h245 Info column in reversed order",
+ &info_col_fmt_prepend);
+ MultimediaSystemControlMessage_handle = register_dissector("h245dg", dissect_h245_h245, proto_h245);
+ h245_handle = register_dissector("h245", dissect_h245, proto_h245);
+
+ nsp_object_dissector_table = register_dissector_table("h245.nsp.object", "H.245 NonStandardParameter (object)", proto_h245, FT_STRING, STRING_CASE_SENSITIVE);
+ nsp_h221_dissector_table = register_dissector_table("h245.nsp.h221", "H.245 NonStandardParameter (h221)", proto_h245, FT_UINT32, BASE_HEX);
+ gef_name_dissector_table = register_dissector_table("h245.gef.name", "H.245 Generic Extensible Framework Name", proto_h245, FT_STRING, STRING_CASE_SENSITIVE);
+ gef_content_dissector_table = register_dissector_table("h245.gef.content", "H.245 Generic Extensible Framework Content", proto_h245, FT_STRING, STRING_CASE_SENSITIVE);
+
+ h245_tap = register_tap("h245");
+ h245dg_tap = register_tap("h245dg");
+
+ oid_add_from_string("h239ControlCapability","0.0.8.239.1.1");
+ oid_add_from_string("h239ExtendedVideoCapability","0.0.8.239.1.2");
+ oid_add_from_string("generic-message","0.0.8.239.2");
+ oid_add_from_string("h245 version 3","0.0.8.245.0.3");
+ oid_add_from_string("h245 version 4","0.0.8.245.0.4");
+ oid_add_from_string("h245 version 5","0.0.8.245.0.5");
+ oid_add_from_string("h245 version 6","0.0.8.245.0.6");
+ oid_add_from_string("h245 version 7","0.0.8.245.0.7");
+ oid_add_from_string("h245 version 8","0.0.8.245.0.8");
+ oid_add_from_string("h245 version 9","0.0.8.245.0.9");
+ oid_add_from_string("h245 version 10","0.0.8.245.0.10");
+ oid_add_from_string("h245 version 11","0.0.8.245.0.11");
+ oid_add_from_string("h245 version 12","0.0.8.245.0.12");
+ oid_add_from_string("h245 version 13","0.0.8.245.0.13");
+ /* This capability is defined in Annex E. */
+ oid_add_from_string("ISO/IEC 14496-2 MPEG-4 video","0.0.8.245.1.0.0");
+ /* This capability is defined in Annex H. */
+ oid_add_from_string("ISO/IEC 14496-3 MPEG-4 audio","0.0.8.245.1.1.0");
+ /* This capability is defined in Annex I. */
+ oid_add_from_string("AMR","0.0.8.245.1.1.1");
+ /* This capability is defined in Annex J. */
+ oid_add_from_string("acelp","0.0.8.245.1.1.2");
+ /* This capability is defined in Annex K. */
+ oid_add_from_string("us1","0.0.8.245.1.1.3");
+ /* This capability is defined in Annex L. */
+ oid_add_from_string("is127evrc","0.0.8.245.1.1.4");
+ /* This capability is defined in Annex M. */
+ oid_add_from_string("ISO/IEC 13818-7","0.0.8.245.1.1.5");
+ /* This capability is defined in Annex N. */
+ oid_add_from_string("rfc3389","0.0.8.245.1.1.6");
+ /* This capability is defined in Annex O. */
+ oid_add_from_string("L-16","0.0.8.245.1.1.7");
+ /* This capability is defined in Annex P. */
+ oid_add_from_string("bounded-audio-stream","0.0.8.245.1.1.8");
+ /* This capability is defined in Annex R. */
+ oid_add_from_string("AMR-NB","0.0.8.245.1.1.9");
+ /* This capability is defined in Annex R. */
+ oid_add_from_string("AMR-WB","0.0.8.245.1.1.10");
+ /* This capability is defined in Annex S. */
+ oid_add_from_string("ilbc","0.0.8.245.1.1.11");
+
+ oid_add_from_string("ISO/IEC 14496-1","0.0.8.245.1.2.0");
+ oid_add_from_string("Nx64","0.0.8.245.1.2.1");
+ oid_add_from_string("logical-channel-bit-ratemanagement","0.0.8.245.1.3.0");
+
+ oid_add_from_string("h264 generic-capabilities","0.0.8.241.0.0.1");
+ oid_add_from_string("iPpacketization_h241AnnexA(single NAL unit mode)","0.0.8.241.0.0.0.0");
+ oid_add_from_string("iPpacketization_RFC3984NonInterleaved","0.0.8.241.0.0.0.1");
+ oid_add_from_string("iPpacketization_RFC3984Interleaved","0.0.8.241.0.0.0.2");
+}
+
+
+/*--- proto_reg_handoff_h245 ---------------------------------------*/
+void proto_reg_handoff_h245(void) {
+ rtcp_handle = find_dissector("rtcp");
+ data_handle = find_dissector("data");
+ h263_handle = find_dissector("h263data");
+ amr_handle = find_dissector("amr_if2_nb");
+
+
+ dissector_add_for_decode_as_with_preference("tcp.port", h245_handle);
+ dissector_add_for_decode_as_with_preference("udp.port", MultimediaSystemControlMessage_handle);
+}
+
+static void init_h245_packet_info(h245_packet_info *pi)
+{
+ if(pi == NULL) {
+ return;
+ }
+
+ pi->msg_type = H245_OTHER;
+ pi->frame_label[0] = '\0';
+ snprintf(pi->comment, sizeof(pi->comment), "H245 ");
+}
+
diff --git a/epan/dissectors/asn1/h245/packet-h245-template.h b/epan/dissectors/asn1/h245/packet-h245-template.h
new file mode 100644
index 00000000..9edd1159
--- /dev/null
+++ b/epan/dissectors/asn1/h245/packet-h245-template.h
@@ -0,0 +1,119 @@
+/* packet-h245.h
+ * Routines for h245 packet dissection
+ * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef PACKET_H245_H
+#define PACKET_H245_H
+
+#include "ws_symbol_export.h"
+
+typedef enum _h245_msg_type {
+ H245_TermCapSet,
+ H245_TermCapSetAck,
+ H245_TermCapSetRjc,
+ H245_TermCapSetRls,
+ H245_OpenLogChn,
+ H245_OpenLogChnCnf,
+ H245_OpenLogChnAck,
+ H245_OpenLogChnRjc,
+ H245_CloseLogChn,
+ H245_CloseLogChnAck,
+ H245_MastSlvDet,
+ H245_MastSlvDetAck,
+ H245_MastSlvDetRjc,
+ H245_MastSlvDetRls,
+ H245_OTHER
+} h245_msg_type;
+
+typedef struct _h245_packet_info {
+ h245_msg_type msg_type; /* type of message */
+ gchar frame_label[50]; /* the Frame label used by graph_analysis, what is a abreviation of cinfo */
+ gchar comment[50]; /* the Frame Comment used by graph_analysis, what is a message desc */
+} h245_packet_info;
+
+/*
+ * h223 LC info
+ */
+
+typedef enum {
+ al_nonStandard,
+ al1Framed,
+ al1NotFramed,
+ al2WithoutSequenceNumbers,
+ al2WithSequenceNumbers,
+ al3,
+ /*...*/
+ /* al?M: unimplemented annex C adaptation layers */
+ al1M,
+ al2M,
+ al3M
+} h223_al_type;
+
+typedef struct {
+ guint8 control_field_octets;
+ guint32 send_buffer_size;
+} h223_al3_params;
+
+typedef struct {
+ h223_al_type al_type;
+ gpointer al_params;
+ gboolean segmentable;
+ dissector_handle_t subdissector;
+} h223_lc_params;
+
+typedef enum {
+ H245_nonStandardDataType,
+ H245_nullData,
+ H245_videoData,
+ H245_audioData,
+ H245_data,
+ H245_encryptionData,
+ /*...,*/
+ H245_h235Control,
+ H245_h235Media,
+ H245_multiplexedStream,
+ H245_redundancyEncoding,
+ H245_multiplePayloadStream,
+ H245_fec
+} h245_lc_data_type_enum;
+
+typedef struct {
+ h245_lc_data_type_enum data_type;
+ gpointer params;
+} h245_lc_data_type;
+
+/*
+ * h223 MUX info
+ */
+
+typedef struct _h223_mux_element h223_mux_element;
+struct _h223_mux_element {
+ h223_mux_element* sublist; /* if NULL, use vc instead */
+ guint16 vc;
+ guint16 repeat_count; /* 0 == untilClosingFlag */
+ h223_mux_element* next;
+};
+
+#include <epan/packet_info.h>
+#include "packet-per.h"
+
+typedef void (*h223_set_mc_handle_t) ( packet_info* pinfo, guint8 mc, h223_mux_element* me);
+WS_DLL_PUBLIC void h245_set_h223_set_mc_handle( h223_set_mc_handle_t handle );
+
+typedef void (*h223_add_lc_handle_t) ( packet_info* pinfo, guint16 lc, h223_lc_params* params);
+WS_DLL_PUBLIC void h245_set_h223_add_lc_handle( h223_add_lc_handle_t handle );
+
+#include "packet-h245-exp.h"
+void dissect_h245_FastStart_OLC(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, char *codec_str);
+
+
+#endif /* PACKET_H245_H */
+
+