-- This ASN.1 spec has been extracted from the Megaco/H.248 spec
-- http://www.ietf.org/internet-drafts/draft-ietf-megaco-merged-01.txt
--
-- o Removed stuff named nonStandard
-- o Major enhancements of the indentation has been performed.
--
-- Hakan Mattsson <[email protected]>
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- ANNEX A: BINARY ENCODING OF THE PROTOCOL (NORMATIVE)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
-- This Annex specifies the syntax of messages using the notation
-- defined in ASN.1 [ITU-T Recommendation X.680 (1997): Information
-- Technology - Abstract Syntax Notation One (ASN.1) - Specification of
-- basic notation.]. Messages shall be encoded for transmission by
-- applying the basic encoding rules specified in [ITU-T Recommendation
-- X.690(1994) Information Technology - ASN.1 Encoding Rules:
-- Specification of Basic Encoding Rules (BER)].
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- A.1 Coding of wildcards
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
-- The use of wildcards ALL and CHOOSE is allowed in the protocol.
-- This allows a MGC to partially specify Termination IDs and let the
-- MG choose from the values that conform to the partial specification.
-- Termination IDs may encode a hierarchy of names. This hierarchy is
-- provisioned. For instance, a TerminationID may consist of a trunk
-- group, a trunk within the group and a circuit. Wildcarding must be
-- possible at all levels. The following paragraphs explain how this
-- is achieved.
--
-- The ASN.1 description uses octet strings of up to 8 octets in length
-- for Termination IDs. This means that Termination IDs consist of at
-- most 64 bits. A fully specified Termination ID may be preceded by a
-- sequence of wildcarding fields. A wildcarding field is one octet in
-- length. Bit 7 (the most significant bit) of this octet specifies
-- what type of wildcarding is invoked: if the bit value equals 1,
-- then the ALL wildcard is used; if the bit value if 0, then the
-- CHOOSE wildcard is used. Bit 6 of the wildcarding field specifies
-- whether the wildcarding pertains to one level in the hierarchical
-- naming scheme (bit value 0) or to the level of the hierarchy
-- specified in the wildcarding field plus all lower levels (bit value
-- 1). Bits 0 through 5 of the wildcarding field specify the bit
-- position in the Termination ID at which the starts.
--
-- We illustrate this scheme with some examples. In these examples,
-- the most significant bit in a string of bits appears on the left
-- hand side.
--
-- Assume that Termination IDs are three octets long and that each
-- octet represents a level in a hierarchical naming scheme. A valid
-- Termination ID is
-- 00000001 00011110 01010101.
--
-- Addressing ALL names with prefix 00000001 00011110 is done as
-- follows:
-- wildcarding field: 10000111
-- Termination ID: 00000001 00011110 xxxxxxxx.
--
-- The values of the bits labeled "x" is irrelevant and shall be
-- ignored by the receiver.
--
-- Indicating to the receiver that is must choose a name with 00011110
-- as the second octet is done as follows:
-- wildcarding fields: 00010111 followed by 00000111
-- Termination ID: xxxxxxxx 00011110 xxxxxxxx.
--
-- The first wildcard field indicates a CHOOSE wildcard for the level
-- in the naming hierarchy starting at bit 23, the highest level in our
-- assumed naming scheme. The second wildcard field indicates a CHOOSE
-- wildcard for the level in the naming hierarchy starting at bit 7,
-- the lowest level in our assumed naming scheme.
--
-- Finally, a CHOOSE-wildcarded name with the highest level of the name
-- equal to 00000001 is specified as follows:
-- wildcard field: 01001111
-- Termination ID: 0000001 xxxxxxxx xxxxxxxx .
--
-- Bit value 1 at bit position 6 of the first octet of the wildcard
-- field indicates that the wildcarding pertains to the specified level
-- in the naming hierarchy and all lower levels.
--
-- Context IDs may also be wildcarded. In the case of Context IDs,
-- however, specifying partial names is not allowed. Context ID 0x0
-- SHALL be used to indicate the NULL Context, Context ID 0xFFFFFFFE
-- SHALL be used to indicate a CHOOSE wildcard, and Context ID
-- 0xFFFFFFFF SHALL be used to indicate an ALL wildcard.
--
-- TerminationID 0xFFFFFFFFFFFFFFFF SHALL be used to indicate the ROOT
-- Termination.
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- Digit maps and path names
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
-- From a syntactic viewpoint, digit maps are strings with syntactic
-- restrictions imposed upon them. The syntax of valid digit maps is
-- specified in ABNF [RFC 2234]. The syntax for digit maps presented
-- in this section is for illustrative purposes only. The definition of
-- digitMap in Annex B takes precedence in the case of differences
-- between the two.
--
-- digitMap = (digitString / LWSP "(" LWSP digitStringList LWSP ")"
-- LWSP)
-- digitStringList = digitString *( LWSP "/" LWSP digitString )
-- digitString = 1*(digitStringElement)
-- digitStringElement = digitPosition [DOT]
-- digitPosition = digitMapLetter / digitMapRange
-- digitMapRange = ("x" / LWSP "[" LWSP digitLetter LWSP "]" LWSP)
-- digitLetter = *((DIGIT "-" DIGIT) /digitMapLetter)
-- digitMapLetter = DIGIT ;digits 0-9
-- / %x41-4B / %x61-6B ;a-k and A-K
-- / "L" / "S" ;Inter-event timers
-- ;(long, short)
-- / "Z" ;Long duration event
-- DOT = %x2E ; "."
-- LWSP = *(WSP / COMMENT / EOL)
-- WSP = SP / HTAB
-- COMMENT = ";" *(SafeChar / RestChar / WSP) EOL
-- EOL = (CR [LF]) / LF
-- SP = %x20
-- HTAB = %x09
-- CR = %x0D
-- LF = %x0A
-- SafeChar = DIGIT / ALPHA / "+" / "-" / "&" / "!" / "_" / "/" /
-- "'" / "?" / "@" / "^" / "`" / "~" / "*" / "$" / "\" /
-- "(" / ")" / "%" / "."
-- RestChar = ";" / "[" / "]" / "{" / "}" / ":" / "," / "#" /
-- "<" / ">" / "=" / %x22
-- DIGIT = %x30-39 ; digits 0 through 9
-- ALPHA = %x41-5A / %x61-7A ; A-Z, a-z
-- A path name is also a string with syntactic restrictions imposed
-- upon it. The ABNF production defining it is copied from Annex B.
--
-- PathName = NAME *(["/"] ["*"] ["@"] (ALPHA / DIGIT)) ["*"]
-- NAME = ALPHA *63(ALPHA / DIGIT / "_" )
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- A.2 ASN.1 syntax specification
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
-- This section contains the ASN.1 specification of the H.248 protocol
-- syntax.
--
-- NOTE - In case a transport mechanism is used that employs
-- application level framing, the definition of Transaction below
-- changes. Refer to the annex defining the transport mechanism for
-- the definition that applies in that case.
--
-- NOTE - The ASN.1 specification below contains a clause defining
-- TerminationIDList as a sequence of TerminationIDs. The length of
-- this sequence SHALL be one, except possibly when used in
-- contextAuditResult.
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
MEDIA-GATEWAY-CONTROL-v1
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 1.
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:
-- 15 0
-- | PC | NI |
-- 14 bits 2 bits
...
}
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 w.r.t. 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)
}
}
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,
...
}
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 Name (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.
-- Wildcarding of Package Name is permitted only if Property Name 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),
...
}
StreamID ::= INTEGER(0..65535) -- 16 bit unsigned integer
EventsDescriptor ::= SEQUENCE
{
requestID RequestID,
-- IG 6.82 was withdrawn
-- 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,
-- IG 6.82 was withdrawn
-- requestID RequestID OPTIONAL,
-- RequestID must be present if eventList is non empty
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,
...
}
RequestID ::= INTEGER(0..4294967295) -- 32 bit unsigned integer
-- Request ALL Value: 4294967295 (0xFFFFFFFF)
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,
-- See Section A.3 for explanation of digit map syntax
...
}
ServiceChangeParm ::= SEQUENCE
{
serviceChangeMethod ServiceChangeMethod,
serviceChangeAddress ServiceChangeAddress OPTIONAL,
serviceChangeVersion INTEGER(0..99) OPTIONAL,
serviceChangeProfile ServiceChangeProfile OPTIONAL,
serviceChangeReason Value,
serviceChangeDelay INTEGER(0..4294967295) OPTIONAL,
-- 32 bit unsigned integer
serviceChangeMgcId MId OPTIONAL,
timeStamp TimeNotation OPTIONAL,
nonStandardData NonStandardData 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
}
-- ServiceChangeProfile ::= SEQUENCE
-- {
-- profileName Name,
-- version INTEGER(0..99)
-- }
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
}
Value ::= SEQUENCE OF OCTET STRING
END