aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/asn1_SUITE_data/OLD-MEDIA-GATEWAY-CONTROL.asn
diff options
context:
space:
mode:
Diffstat (limited to 'lib/asn1/test/asn1_SUITE_data/OLD-MEDIA-GATEWAY-CONTROL.asn')
-rw-r--r--lib/asn1/test/asn1_SUITE_data/OLD-MEDIA-GATEWAY-CONTROL.asn950
1 files changed, 950 insertions, 0 deletions
diff --git a/lib/asn1/test/asn1_SUITE_data/OLD-MEDIA-GATEWAY-CONTROL.asn b/lib/asn1/test/asn1_SUITE_data/OLD-MEDIA-GATEWAY-CONTROL.asn
new file mode 100644
index 0000000000..35a54aaac5
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/OLD-MEDIA-GATEWAY-CONTROL.asn
@@ -0,0 +1,950 @@
+-- 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.
+-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+OLD-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 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)),
+ -- 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
+{
+ 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 ::= SEQUENCE
+{
+ terminationID TerminationID,
+ auditResult AuditResult,
+ ...
+}
+
+AuditResult ::= CHOICE
+{
+ contextAuditResult TerminationIDList,
+ 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 OPTIONAL,
+ 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
+}
+
+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
+ },
+ ...
+}
+
+StreamDescriptor ::= SEQUENCE
+{
+ streamID StreamID,
+ streamParms StreamParms
+}
+
+StreamParms ::= SEQUENCE
+{
+ localControlDescriptor LocalControlDescriptor OPTIONAL,
+ localDescriptor LocalRemoteDescriptor OPTIONAL,
+ remoteDescriptor LocalRemoteDescriptor OPTIONAL,
+ ...
+}
+
+LocalControlDescriptor ::= SEQUENCE
+{
+ streamMode StreamMode OPTIONAL,
+ reserveValue BOOLEAN,
+ reserveGroup BOOLEAN,
+ 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,
+ eventList SEQUENCE OF RequestedEvent,
+ ...
+}
+
+RequestedEvent ::= SEQUENCE
+{
+ pkgdName PkgdName,
+ streamID StreamID OPTIONAL,
+ eventAction RequestedActions OPTIONAL,
+ evParList SEQUENCE OF EventParameter,
+ ...
+}
+
+RequestedActions ::= SEQUENCE
+{
+ keepActive BOOLEAN,
+ eventDM EventDM OPTIONAL,
+ secondEvent SecondEventsDescriptor OPTIONAL,
+ signalsDescriptor SignalsDescriptor OPTIONAL,
+ ...
+}
+
+
+EventDM ::= CHOICE
+{
+ digitMapName DigitMapName,
+ digitMapValue DigitMapValue
+}
+
+SecondEventsDescriptor ::= SEQUENCE
+{
+ requestID RequestID,
+ eventList SEQUENCE OF SecondRequestedEvent,
+ ...
+}
+
+SecondRequestedEvent ::= SEQUENCE
+{
+ pkgdName PkgdName,
+ streamID StreamID OPTIONAL,
+ eventAction SecondRequestedActions OPTIONAL,
+ evParList SEQUENCE OF EventParameter,
+ ...
+}
+
+SecondRequestedActions ::= SEQUENCE
+{
+ keepActive BOOLEAN,
+ 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
+}
+
+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,
+ -- 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)),
+ ...
+}
+
+ServiceChangeResParm ::= SEQUENCE
+{
+ serviceChangeMgcId MId OPTIONAL,
+ serviceChangeAddress ServiceChangeAddress OPTIONAL,
+ serviceChangeVersion INTEGER(0..99) OPTIONAL,
+ serviceChangeProfile ServiceChangeProfile OPTIONAL,
+ ...
+}
+
+ServiceChangeMethod ::= ENUMERATED
+{
+ failover(0),
+ forced(1),
+ graceful(2),
+ restart(3),
+ disconnected(4),
+ handOff(5),
+ ...
+}
+
+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
+}
+
+-- 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 ::= OCTET STRING
+
+
+END
+