H.248 ASN.1 HTML
Version 2
-- -- Abstract Syntax Notion (ASN.1) file for H.248 Version 2 -- -- File provided by Packetizer, Inc. <hhttps://www.packetizer.com> -- Last Updated: May 27, 2003 -- -- NOTE: This file was intended to be used only for hyperlinking -- betweeen fields and structures. Developers should not use this file -- in implementations. Rather, use the file found here: -- https://www.packetizer.com/voip/h248/h248v2.asn -- MEDIA-GATEWAY-CONTROL DEFINITIONS AUTOMATIC TAGS ::= BEGIN MegacoMessage ::= SEQUENCE { authHeader AuthenticationHeader OPTIONAL, mess Message} AuthenticationHeader ::= SEQUENCE { secParmIndex SecurityParmIndex, seqNum SequenceNum, ad AuthData} SecurityParmIndex ::= OCTET STRING(SIZE (4)) SequenceNum ::= OCTET STRING(SIZE (4)) AuthData ::= OCTET STRING(SIZE (12..32)) Message ::= SEQUENCE { version INTEGER(0..99), -- The version of the protocol defined here is equal to 2. mId MId, -- Name/address of message originator messageBody CHOICE {messageError ErrorDescriptor, transactions SEQUENCE OF Transaction}, ...} MId ::= CHOICE { ip4Address IP4Address, ip6Address IP6Address, domainName DomainName, deviceName PathName, mtpAddress OCTET STRING(SIZE (2..4)), -- Addressing structure of mtpAddress: -- 25-15 0 -- | PC | NI | -- 24 - 14 bits 2 bits -- Note: 14 bits are defined for international use. -- Two national options exist where the point code is 16 or 24 -- bits. -- To octet align the mtpAddress the MSBs shall be encoded as 0s. ...} DomainName ::= SEQUENCE { name IA5String, -- The name starts with an alphanumeric digit followed by a -- sequence of alphanumeric digits, hyphens and dots. No two -- dots shall occur consecutively. portNumber INTEGER(0..65535) OPTIONAL} IP4Address ::= SEQUENCE { address OCTET STRING(SIZE (4)), portNumber INTEGER(0..65535) OPTIONAL} IP6Address ::= SEQUENCE { address OCTET STRING(SIZE (16)), portNumber INTEGER(0..65535) OPTIONAL} PathName ::= IA5String(SIZE (1..64)) -- See section A.3 Transaction ::= CHOICE { transactionRequest TransactionRequest, transactionPending TransactionPending, transactionReply TransactionReply, transactionResponseAck TransactionResponseAck, -- use of response acks is dependent on underlying transport ...} TransactionId ::= INTEGER(0..4294967295) -- 32 bit unsigned integer TransactionRequest ::= SEQUENCE { transactionId TransactionId, actions SEQUENCE OF ActionRequest, ...} TransactionPending ::= SEQUENCE {transactionId TransactionId, ...} TransactionReply ::= SEQUENCE { transactionId TransactionId, immAckRequired NULL OPTIONAL, transactionResult CHOICE {transactionError ErrorDescriptor, actionReplies SEQUENCE OF ActionReply}, ...} TransactionResponseAck ::= SEQUENCE OF TransactionAck TransactionAck ::= SEQUENCE { firstAck TransactionId, lastAck TransactionId OPTIONAL} ErrorDescriptor ::= SEQUENCE { errorCode ErrorCode, errorText ErrorText OPTIONAL} ErrorCode ::= INTEGER(0..65535) -- See section 13 for IANA considerations with respect to error codes ErrorText ::= IA5String ContextID ::= INTEGER(0..4294967295) -- Context NULL Value: 0 -- Context CHOOSE Value: 4294967294 (0xFFFFFFFE) -- Context ALL Value: 4294967295 (0xFFFFFFFF) ActionRequest ::= SEQUENCE { contextId ContextID, contextRequest ContextRequest OPTIONAL, contextAttrAuditReq ContextAttrAuditRequest OPTIONAL, commandRequests SEQUENCE OF CommandRequest} ActionReply ::= SEQUENCE { contextId ContextID, errorDescriptor ErrorDescriptor OPTIONAL, contextReply ContextRequest OPTIONAL, commandReply SEQUENCE OF CommandReply} ContextRequest ::= SEQUENCE { priority INTEGER(0..15) OPTIONAL, emergency BOOLEAN OPTIONAL, topologyReq SEQUENCE OF TopologyRequest OPTIONAL, ...} ContextAttrAuditRequest ::= SEQUENCE { topology NULL OPTIONAL, emergency NULL OPTIONAL, priority NULL OPTIONAL, ...} CommandRequest ::= SEQUENCE { command Command, optional NULL OPTIONAL, wildcardReturn NULL OPTIONAL, ...} Command ::= CHOICE { addReq AmmRequest, moveReq AmmRequest, modReq AmmRequest, -- Add, Move, Modify requests have the same parameters subtractReq SubtractRequest, auditCapRequest AuditRequest, auditValueRequest AuditRequest, notifyReq NotifyRequest, serviceChangeReq ServiceChangeRequest, ...} CommandReply ::= CHOICE { addReply AmmsReply, moveReply AmmsReply, modReply AmmsReply, subtractReply AmmsReply, -- Add, Move, Modify, Subtract replies have the same parameters auditCapReply AuditReply, auditValueReply AuditReply, notifyReply NotifyReply, serviceChangeReply ServiceChangeReply, ...} TopologyRequest ::= SEQUENCE { terminationFrom TerminationID, terminationTo TerminationID, topologyDirection ENUMERATED {bothway(0), isolate(1), oneway(2)}, ..., streamID StreamID OPTIONAL} AmmRequest ::= SEQUENCE { terminationID TerminationIDList, descriptors SEQUENCE OF AmmDescriptor, -- At most one descriptor of each type (see AmmDescriptor) -- allowed in the sequence. ...} AmmDescriptor ::= CHOICE { mediaDescriptor MediaDescriptor, modemDescriptor ModemDescriptor, muxDescriptor MuxDescriptor, eventsDescriptor EventsDescriptor, eventBufferDescriptor EventBufferDescriptor, signalsDescriptor SignalsDescriptor, digitMapDescriptor DigitMapDescriptor, auditDescriptor AuditDescriptor, ...} AmmsReply ::= SEQUENCE { terminationID TerminationIDList, terminationAudit TerminationAudit OPTIONAL, ...} SubtractRequest ::= SEQUENCE { terminationID TerminationIDList, auditDescriptor AuditDescriptor OPTIONAL, ...} AuditRequest ::= SEQUENCE { terminationID TerminationID, auditDescriptor AuditDescriptor, ...} AuditReply ::= CHOICE { contextAuditResult TerminationIDList, error ErrorDescriptor, auditResult AuditResult, ...} AuditResult ::= SEQUENCE { terminationID TerminationID, terminationAuditResult TerminationAudit} TerminationAudit ::= SEQUENCE OF AuditReturnParameter AuditReturnParameter ::= CHOICE { errorDescriptor ErrorDescriptor, mediaDescriptor MediaDescriptor, modemDescriptor ModemDescriptor, muxDescriptor MuxDescriptor, eventsDescriptor EventsDescriptor, eventBufferDescriptor EventBufferDescriptor, signalsDescriptor SignalsDescriptor, digitMapDescriptor DigitMapDescriptor, observedEventsDescriptor ObservedEventsDescriptor, statisticsDescriptor StatisticsDescriptor, packagesDescriptor PackagesDescriptor, emptyDescriptors AuditDescriptor, ...} AuditDescriptor ::= SEQUENCE { auditToken BIT STRING {muxToken(0), modemToken(1), mediaToken(2), eventsToken(3), signalsToken(4), digitMapToken(5), statsToken(6), observedEventsToken(7), packagesToken(8), eventBufferToken(9)} OPTIONAL, ..., auditPropertyToken SEQUENCE OF IndAuditParameter OPTIONAL} IndAuditParameter ::= CHOICE { indaudmediaDescriptor IndAudMediaDescriptor, indaudeventsDescriptor IndAudEventsDescriptor, indaudeventBufferDescriptor IndAudEventBufferDescriptor, indaudsignalsDescriptor IndAudSignalsDescriptor, indauddigitMapDescriptor IndAudDigitMapDescriptor, indaudstatisticsDescriptor IndAudStatisticsDescriptor, indaudpackagesDescriptor IndAudPackagesDescriptor, ...} IndAudMediaDescriptor ::= SEQUENCE { termStateDescr IndAudTerminationStateDescriptor OPTIONAL, streams CHOICE {oneStream IndAudStreamParms, multiStream SEQUENCE OF IndAudStreamDescriptor} OPTIONAL, ...} IndAudStreamDescriptor ::= SEQUENCE { streamID StreamID, streamParms IndAudStreamParms} IndAudStreamParms ::= SEQUENCE { localControlDescriptor IndAudLocalControlDescriptor OPTIONAL, localDescriptor IndAudLocalRemoteDescriptor OPTIONAL, remoteDescriptor IndAudLocalRemoteDescriptor OPTIONAL, ...} IndAudLocalControlDescriptor ::= SEQUENCE { streamMode NULL OPTIONAL, reserveValue NULL OPTIONAL, reserveGroup NULL OPTIONAL, propertyParms SEQUENCE OF IndAudPropertyParm OPTIONAL, ...} IndAudPropertyParm ::= SEQUENCE {name PkgdName, ...} IndAudLocalRemoteDescriptor ::= SEQUENCE { propGroupID INTEGER(0..65535) OPTIONAL, propGrps IndAudPropertyGroup, ...} IndAudPropertyGroup ::= SEQUENCE OF IndAudPropertyParm IndAudTerminationStateDescriptor ::= SEQUENCE { propertyParms SEQUENCE OF IndAudPropertyParm, eventBufferControl NULL OPTIONAL, serviceState NULL OPTIONAL, ...} IndAudEventsDescriptor ::= SEQUENCE { requestID RequestID OPTIONAL, pkgdName PkgdName, streamID StreamID OPTIONAL, ...} IndAudEventBufferDescriptor ::= SEQUENCE { eventName PkgdName, streamID StreamID OPTIONAL, ...} IndAudSignalsDescriptor ::= CHOICE { signal IndAudSignal, seqSigList IndAudSeqSigList, ...} IndAudSeqSigList ::= SEQUENCE { id INTEGER(0..65535), signalList IndAudSignal OPTIONAL} IndAudSignal ::= SEQUENCE { signalName PkgdName, streamID StreamID OPTIONAL, ...} IndAudDigitMapDescriptor ::= SEQUENCE {digitMapName DigitMapName OPTIONAL} IndAudStatisticsDescriptor ::= SEQUENCE {statName PkgdName} IndAudPackagesDescriptor ::= SEQUENCE { packageName Name, packageVersion INTEGER(0..99), ...} NotifyRequest ::= SEQUENCE { terminationID TerminationIDList, observedEventsDescriptor ObservedEventsDescriptor, errorDescriptor ErrorDescriptor OPTIONAL, ...} NotifyReply ::= SEQUENCE { terminationID TerminationIDList, errorDescriptor ErrorDescriptor OPTIONAL, ...} ObservedEventsDescriptor ::= SEQUENCE { requestId RequestID, observedEventLst SEQUENCE OF ObservedEvent} ObservedEvent ::= SEQUENCE { eventName EventName, streamID StreamID OPTIONAL, eventParList SEQUENCE OF EventParameter, timeNotation TimeNotation OPTIONAL, ...} EventName ::= PkgdName EventParameter ::= SEQUENCE { eventParameterName Name, value Value, -- For use of extraInfo see the comment related to PropertyParm extraInfo CHOICE {relation Relation, range BOOLEAN, sublist BOOLEAN} OPTIONAL, ...} ServiceChangeRequest ::= SEQUENCE { terminationID TerminationIDList, serviceChangeParms ServiceChangeParm, ...} ServiceChangeReply ::= SEQUENCE { terminationID TerminationIDList, serviceChangeResult ServiceChangeResult, ...} -- For ServiceChangeResult, no parameters are mandatory. Hence the -- distinction between ServiceChangeParm and ServiceChangeResParm. ServiceChangeResult ::= CHOICE { errorDescriptor ErrorDescriptor, serviceChangeResParms ServiceChangeResParm} WildcardField ::= OCTET STRING(SIZE (1)) TerminationID ::= SEQUENCE { wildcard SEQUENCE OF WildcardField, id OCTET STRING(SIZE (1..8)), ...} -- See Section A.1 for explanation of wildcarding mechanism. -- Termination ID 0xFFFFFFFFFFFFFFFF indicates the ROOT Termination. TerminationIDList ::= SEQUENCE OF TerminationID MediaDescriptor ::= SEQUENCE { termStateDescr TerminationStateDescriptor OPTIONAL, streams CHOICE {oneStream StreamParms, multiStream SEQUENCE OF StreamDescriptor} OPTIONAL, ...} StreamDescriptor ::= SEQUENCE {streamID StreamID, streamParms StreamParms} StreamParms ::= SEQUENCE { localControlDescriptor LocalControlDescriptor OPTIONAL, localDescriptor LocalRemoteDescriptor OPTIONAL, remoteDescriptor LocalRemoteDescriptor OPTIONAL, ...} LocalControlDescriptor ::= SEQUENCE { streamMode StreamMode OPTIONAL, reserveValue BOOLEAN OPTIONAL, reserveGroup BOOLEAN OPTIONAL, propertyParms SEQUENCE OF PropertyParm, ...} StreamMode ::= ENUMERATED { sendOnly(0), recvOnly(1), sendRecv(2), inactive(3), loopBack(4), ... } -- In PropertyParm, value is a SEQUENCE OF octet string. When sent -- by an MGC the interpretation is as follows: -- empty sequence means CHOOSE -- one element sequence specifies value -- If the sublist field is not selected, a longer sequence means -- "choose one of the values" (i.e. value1 OR value2 OR ...) -- If the sublist field is selected, -- a sequence with more than one element encodes the value of a -- list-valued property (i.e. value1 AND value2 AND ...). -- The relation field may only be selected if the value sequence -- has length 1. It indicates that the MG has to choose a value -- for the property. E.g., x > 3 (using the greaterThan -- value for relation) instructs the MG to choose any value larger -- than 3 for property x. -- The range field may only be selected if the value sequence -- has length 2. It indicates that the MG has to choose a value -- in the range between the first octet in the value sequence and -- the trailing octet in the value sequence, including the -- boundary values. -- When sent by the MG, only responses to an AuditCapability request -- may contain multiple values, a range, or a relation field. PropertyParm ::= SEQUENCE { name PkgdName, value SEQUENCE OF OCTET STRING, extraInfo CHOICE {relation Relation, range BOOLEAN, sublist BOOLEAN} OPTIONAL, ...} Name ::= OCTET STRING(SIZE (2)) PkgdName ::= OCTET STRING(SIZE (4)) -- represents Package Name (2 octets) plus Property, Event, -- Signal Names or Statistics ID. (2 octets) -- To wildcard a package use 0xFFFF for first two octets, choose -- is not allowed. To reference native property tag specified in -- Annex C, use 0x0000 as first two octets. -- To wildcard a Property, Event, Signal, or Statistics ID, use -- 0xFFFF for last two octets, choose is not allowed. -- Wildcarding of Package Name is permitted only if Property, --Event, Signal, or Statistics ID is -- also wildcarded. Relation ::= ENUMERATED {greaterThan(0), smallerThan(1), unequalTo(2), ... } LocalRemoteDescriptor ::= SEQUENCE {propGrps SEQUENCE OF PropertyGroup, ...} PropertyGroup ::= SEQUENCE OF PropertyParm TerminationStateDescriptor ::= SEQUENCE { propertyParms SEQUENCE OF PropertyParm, eventBufferControl EventBufferControl OPTIONAL, serviceState ServiceState OPTIONAL, ...} EventBufferControl ::= ENUMERATED {off(0), lockStep(1), ... } ServiceState ::= ENUMERATED {test(0), outOfSvc(1), inSvc(2), ... } MuxDescriptor ::= SEQUENCE { muxType MuxType, termList SEQUENCE OF TerminationID, nonStandardData NonStandardData OPTIONAL, ...} MuxType ::= ENUMERATED {h221(0), h223(1), h226(2), v76(3), ..., nx64k(4)} StreamID ::= INTEGER(0..65535) -- 16 bit unsigned integer EventsDescriptor ::= SEQUENCE { requestID RequestID OPTIONAL, -- RequestID must be present if eventList -- is non empty, eventList SEQUENCE OF RequestedEvent, ...} RequestedEvent ::= SEQUENCE { pkgdName PkgdName, streamID StreamID OPTIONAL, eventAction RequestedActions OPTIONAL, evParList SEQUENCE OF EventParameter, ...} RequestedActions ::= SEQUENCE { keepActive BOOLEAN OPTIONAL, eventDM EventDM OPTIONAL, secondEvent SecondEventsDescriptor OPTIONAL, signalsDescriptor SignalsDescriptor OPTIONAL, ...} EventDM ::= CHOICE {digitMapName DigitMapName, digitMapValue DigitMapValue} SecondEventsDescriptor ::= SEQUENCE { requestID RequestID OPTIONAL, eventList SEQUENCE OF SecondRequestedEvent, ...} SecondRequestedEvent ::= SEQUENCE { pkgdName PkgdName, streamID StreamID OPTIONAL, eventAction SecondRequestedActions OPTIONAL, evParList SEQUENCE OF EventParameter, ...} SecondRequestedActions ::= SEQUENCE { keepActive BOOLEAN OPTIONAL, eventDM EventDM OPTIONAL, signalsDescriptor SignalsDescriptor OPTIONAL, ...} EventBufferDescriptor ::= SEQUENCE OF EventSpec EventSpec ::= SEQUENCE { eventName EventName, streamID StreamID OPTIONAL, eventParList SEQUENCE OF EventParameter, ...} SignalsDescriptor ::= SEQUENCE OF SignalRequest SignalRequest ::= CHOICE {signal Signal, seqSigList SeqSigList, ...} SeqSigList ::= SEQUENCE { id INTEGER(0..65535), signalList SEQUENCE OF Signal} Signal ::= SEQUENCE { signalName SignalName, streamID StreamID OPTIONAL, sigType SignalType OPTIONAL, duration INTEGER(0..65535) OPTIONAL, notifyCompletion NotifyCompletion OPTIONAL, keepActive BOOLEAN OPTIONAL, sigParList SEQUENCE OF SigParameter, ...} SignalType ::= ENUMERATED {brief(0), onOff(1), timeOut(2), ... } SignalName ::= PkgdName NotifyCompletion ::= BIT STRING { onTimeOut(0), onInterruptByEvent(1), onInterruptByNewSignalDescr(2), otherReason(3)} SigParameter ::= SEQUENCE { sigParameterName Name, value Value, -- For use of extraInfo see the comment related to PropertyParm extraInfo CHOICE {relation Relation, range BOOLEAN, sublist BOOLEAN} OPTIONAL, ...} -- For an AuditCapReply with all events, the RequestID SHALL be ALL. -- ALL is represented by 0xffffffff. RequestID ::= INTEGER(0..4294967295) -- 32 bit unsigned integer ModemDescriptor ::= SEQUENCE { mtl SEQUENCE OF ModemType, mpl SEQUENCE OF PropertyParm, nonStandardData NonStandardData OPTIONAL} ModemType ::= ENUMERATED { v18(0), v22(1), v22bis(2), v32(3), v32bis(4), v34(5), v90(6), v91(7), synchISDN(8), ... } DigitMapDescriptor ::= SEQUENCE { digitMapName DigitMapName OPTIONAL, digitMapValue DigitMapValue OPTIONAL} DigitMapName ::= Name DigitMapValue ::= SEQUENCE { startTimer INTEGER(0..99) OPTIONAL, shortTimer INTEGER(0..99) OPTIONAL, longTimer INTEGER(0..99) OPTIONAL, digitMapBody IA5String, -- Units are seconds for start, short and long timers, and -- hundreds of milliseconds for duration timer. Thus start, -- short, and long range from 1 to 99 seconds and duration -- from 100 ms to 9.9 s -- See Section A.3 for explanation of digit map syntax ..., durationTimer INTEGER(0..99) OPTIONAL} ServiceChangeParm ::= SEQUENCE { serviceChangeMethod ServiceChangeMethod, serviceChangeAddress ServiceChangeAddress OPTIONAL, serviceChangeVersion INTEGER(0..99) OPTIONAL, serviceChangeProfile ServiceChangeProfile OPTIONAL, serviceChangeReason Value, -- A serviceChangeReason consists of a numeric reason code -- and an optional text description. -- The serviceChangeReason SHALL be a string consisting of -- a decimal reason code, optionally followed by a single -- space character and a textual description string. -- This string is first BER-encoded as an IA5String. -- The result of this BER-encoding is then encoded as -- an ASN.1 OCTET STRING type, "double wrapping" the --value -- as was done for package elements. serviceChangeDelay INTEGER(0..4294967295) OPTIONAL, -- 32 bit unsigned integer serviceChangeMgcId MId OPTIONAL, timeStamp TimeNotation OPTIONAL, nonStandardData NonStandardData OPTIONAL, ..., serviceChangeInfo AuditDescriptor OPTIONAL} ServiceChangeAddress ::= CHOICE { portNumber INTEGER(0..65535), -- TCP/UDP port number ip4Address IP4Address, ip6Address IP6Address, domainName DomainName, deviceName PathName, mtpAddress OCTET STRING(SIZE (2..4)), ...} ServiceChangeResParm ::= SEQUENCE { serviceChangeMgcId MId OPTIONAL, serviceChangeAddress ServiceChangeAddress OPTIONAL, serviceChangeVersion INTEGER(0..99) OPTIONAL, serviceChangeProfile ServiceChangeProfile OPTIONAL, timestamp TimeNotation OPTIONAL, ...} ServiceChangeMethod ::= ENUMERATED { failover(0), forced(1), graceful(2), restart(3), disconnected(4), handOff(5), ... } ServiceChangeProfile ::= SEQUENCE { profileName IA5String(SIZE (1..67)) -- 64 characters for name, 1 for "/", 2 for version to match ABNF--} PackagesDescriptor ::= SEQUENCE OF PackagesItem PackagesItem ::= SEQUENCE { packageName Name, packageVersion INTEGER(0..99), ...} StatisticsDescriptor ::= SEQUENCE OF StatisticsParameter StatisticsParameter ::= SEQUENCE { statName PkgdName, statValue Value OPTIONAL} NonStandardData ::= SEQUENCE { nonStandardIdentifier NonStandardIdentifier, data OCTET STRING} NonStandardIdentifier ::= CHOICE { object OBJECT IDENTIFIER, h221NonStandard H221NonStandard, experimental IA5String(SIZE (8)), -- first two characters should be "X-" or "X+" ...} H221NonStandard ::= SEQUENCE { t35CountryCode1 INTEGER(0..255), t35CountryCode2 INTEGER(0..255), -- country, as per T.35 t35Extension INTEGER(0..255), -- assigned nationally manufacturerCode INTEGER(0..65535), -- assigned nationally ...} TimeNotation ::= SEQUENCE { date IA5String(SIZE (8)), -- yyyymmdd format time IA5String(SIZE (8))-- hhmmssss format-- -- per ISO 8601:1988--} Value ::= SEQUENCE OF OCTET STRING END
-- Pretty-printed by Asnp, the pretty-printer of France Telecom R&D