H.248网关控制协议二进制编码

时间:2009-01-16 来源:未知 作者:小远 点击:
A.1 通配符编码 本协议允许使用通配符ALL和CHOOSE。通过这些通配符,媒体网关控制器可以部分指定 终结点标识符 (TerminationID),指示媒体网关从满足匹配条件的终结点中选择一个终结点。终结点标识 符可采用分级方式进行编码。分级命名方式可以预先设定。例如,终结点
  

A.1 通配符编码
本协议允许使用通配符“ALL”和“CHOOSE”。通过这些通配符,媒体网关控制器可以部分指定
终结点标识符 (TerminationID),指示媒体网关从满足匹配条件的终结点中选择一个终结点。终结点标识
符可采用分级方式进行编码。分级命名方式可以预先设定。例如,终结点标识符可以由中继群号、中继
号和电路号组成。每一级命名都允许使用通配符。以下各段将详细描述通配符的应用。
当使用ASN.1进行编码时,终结点标识符的最大长度为8个字节。即最多不超过64个比特。一个完全
指定的终结点标识符可使用一个通配字段来作为其前缀。通配字段的长度为1个字节。其中,通配字段的
第7比特(最高位)用于标识使用的通配类型:当该比特值等于“1”时表示通配值“ALL”,该比特值
等于“0”时表示通配值“CHOOSE”。通配字段的第6比特用于标识通配适用于终结点标识符分级命名
中的某一级:当该比特等于“0”时,通配只作用于通配字段所标识的终结点标识符中命名的那一级,当
该比特等于“1”时,通配将作用于通配字段所标识的终结点标识符中命名的级以及下一级。通配字段的
第5比特至第0比特定义了终结点标识符中通配开始的起始位置。
通配字段使用方法如下所示。其中,表示字符串的最高位将位于左侧。
假定终结点标识符为3个字节长度,每一个字节标识一级命名。该终结点标识符如下所示:
00000001 00011110 01010101。
假定需要指定前缀为00000001 00011110的所有终结点,则通配字段应描述如下:
通配字段:10000111
终结点标识符:00000001 00011110 xxxxxxxx。
终结点标识符中标为“x”的比特是无关的,接收方必须忽略该部分内容。
假定接收方必须选择通配符为“CHOOSE”的终结点满足第二个字节为0001110,则通配描述如下:
通配字段:00010111 之后为00000111
终结点标识符:xxxxxxxx 00011110 xxxxxxxx。
第一个通配字段表示该“CHOOSE”通配是从最高位(第23比特)开始的单级通配。第二个通配字
段表示该“CHOOSE”通配是从最低位(第7比特)开始的单级通配。
最后,假定通配符为“CHOOSE”的第一字节为00000001,则通配描述如下:
通配字段:01001111
终结点标识符:0000001 xxxxxxxx xxxxxxxx。

第6比特为“1”之表明该通配将作用于通配字段所标识的那一级以及以下各级。
关联标识符也可以使用通配符。然而,关联标识符不允许使用局部通配。关联标识符“0x0”表示空
关联; 关联标识符为“ 0xFFFFFFFE ” 表示通配值为“ CHOOSE ” 的关联; 关联标识符为
“0xFFFFFFFF”于表示通配值为“ALL”的关联。
终结点标识符等于“0xFFFFFFFFFFFFFFFFF”, 用于表示根终结点。
A.2 ASN.1句法规范
A.2 ASN.1 句法定义
本节定义了H.248.1建议书协议句法的ASN.1规范。
注1 — 当采用支持ALF的传送机制时,以下事务的定义将有所不同。具体内容参见本建议书附件或H.248.x 分支系列建议书
中定义传送机制的其他建议书。
注2 — 以下句法规范并不强制支持所有对信息单元和参数值的限制条件。某些附加的限制条件可以包含在后面的注释中,
或者其他限制条件可出现在本建议书中。即使本建议书未强制规定必须实现附加的限制条件,然而附加的限制条件仍然是
本协议的一个组成部分。
注3 — ASN.1句法使用8比特长字节对特性参数、信号参数、事件参数和统计进行编码。参数值的实际数值类型可以不同,
不同特性值的编码可参见本建议书附件C和其他相关的包定义。
作为首选,参数值应根据参数类型和下表进行BER编码。BER编码的结果将被编码为一个ASN.1字符
串,且参数值被双重封装。参照下表,对特性参数进行BER编码参见本建议书附件C或其他包定义:

包定义的类型 ASN.1 BER 类型
字串 IA5String或UTF8String (注 4)
整数 (4字节) INTEGER
双精度   (8字节有符号整数) INTEGER (注 3)
字符 (UTF-8) (注1) IA5String
枚举 ENUMERATED
布尔型 BOOLEAN
无符号整数 (注2) INTEGER (注3)
八位组(字串) OCTET STRING
注1 — 长度可大于1字节。
注2 — 无符号整数参见本建议书附件C。
注 3 — INTEGER的BER编码不意味着使用4字节。
注 4 — 当内容全部为ASCII字符时,字串应该被编码成IA5String,当内容不全
部为ASCII字符时,应编码成UTF-8字串。

 
 
   
 

 

 

 

 

 

 

 

 

1字节字串值的编码见8.7/X.690。
MEDIA-GATEWAY-CONTROL {itu-t(0) recommendation(0) h(8) h248(248) modules(0)
media-gateway-control(0) version3(3)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
MegacoMessage ::= SEQUENCE
{
authHeader AuthenticationHeader OPTIONAL,
mess Message

1字节字串值的编码见8.7/X.690。
MEDIA-GATEWAY-CONTROL {itu-t(0) recommendation(0) h(8) h248(248) modules(0)
media-gateway-control(0) version3(3)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
MegacoMessage ::= SEQUENCE
{
authHeader 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),
-- 此处规定协议版本等于3。
mId Mid, -- 消息发起者的名称/地址
messageBody CHOICE
{
messageError ErrorDescriptor,
transactions SEQUENCE OF Transaction
},
...
}
Mid ::= CHOICE
{
ip4Address IP4Address,
ip6Address IP6Address,
domainName DomainName,
deviceName PathName,
mtpAddress OCTET STRING(SIZE(2..4)),
-- mtpAddress 地址结构如下:
-- 25 - 15 0
-- | PC | NI |
-- 24 - 14 比特 2 比特
-- 注 — 14 比特为国际规范使用。
-- 有两个国家的点码是16 或24 比特。
-- 与mtpAddress 并列的MSB 应编码必须为0。
...
}
DomainName ::= SEQUENCE
{
name IA5String,
-- 名称始以字母开始的字符序列
-- 包含字母数字、连字符(-)、句号(.)。
-- 然而,不允许包含两个连续的句号。
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))
-- 见A.3
Transaction ::= CHOICE
{
transactionRequest TransactionRequest,
transactionPending TransactionPending,
transactionReply TransactionReply,
transactionResponseAck TransactionResponseAck,
-- 响应证实与低层传送协议有关
...,
segmentReply SegmentReply
}
TransactionId ::= INTEGER(0..4294967295) -- 32 比特无符号整数
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
},
...,
segmentNumber SegmentNumber OPTIONAL,
segmentationComplete NULL OPTIONAL
}
SegmentReply ::= SEQUENCE
{
transactionId TransactionId,
segmentNumber SegmentNumber,
segmentationComplete NULL OPTIONAL,
...
}
SegmentNumber ::= INTEGER(0..65535)
TransactionResponseAck ::= SEQUENCE OF TransactionAck
TransactionAck ::= SEQUENCE
{
firstAck TransactionId,
lastAck TransactionId OPTIONAL
}
ErrorDescriptor ::= SEQUENCE

74 ITU-T H.248.1建议书(09/2005)
{
errorCode ErrorCode,
errorText ErrorText OPTIONAL
}
ErrorCode ::= INTEGER(0..65535)
-- 参见第14 节中与差错代码相关地IANA 注意事项
ErrorText ::= IA5String
ContextID ::= INTEGER(0..4294967295)
-- 关联“NULL”的标识符: 0
-- 关联“CHOOSE”的标识符: 4294967294 (0xFFFFFFFE)
-- 关联“ALL”的标识符: 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,
...,
iepscallind BOOLEAN OPTIONAL,
contextProp SEQUENCE OF PropertyParm OPTIONAL,
contextList SEQUENCE OF ContextID OPTIONAL
}
-- 当返回“contextList”参数时,ActionReply 数据结构中的contextId 将返回所关联的
-- ActionRequest 中的contextId。
ContextAttrAuditRequest ::= SEQUENCE
{
topology NULL OPTIONAL,
emergency NULL OPTIONAL,
priority NULL OPTIONAL,
...,
iepscallind NULL OPTIONAL,
contextPropAud SEQUENCE OF IndAudPropertyParm OPTIONAL,
selectpriority INTEGER(0..15) OPTIONAL,
-- 用于选择指定的优先
selectemergency BOOLEAN OPTIONAL,
-- 用于选择“emergency”参数是否设置 (T/F)
selectiepscallind BOOLEAN OPTIONAL,
-- 用于选择“IEPS”参数是否设置 (T/F)
selectLogic SelectLogic OPTIONAL -- 默认值为“AND”
}

SelectLogic ::= CHOICE
{
andAUDITSelect NULL, -- 所有过滤条件满足
orAUDITSelect NULL, -- 至少一个过滤条件满足
...
}
CommandRequest ::= SEQUENCE
{
command Command,
optional NULL OPTIONAL,
wildcardReturn NULL OPTIONAL,
...
}
Command ::= CHOICE
{
addReq AmmRequest,
moveReq AmmRequest,
modReq AmmRequest,
-- Add、Move、Modify 参数使用相同的输入参数
subtractReq SubtractRequest,
auditCapRequest AuditRequest,
auditValueRequest AuditRequest,
notifyReq NotifyRequest,
serviceChangeReq ServiceChangeRequest,
...
}
CommandReply ::= CHOICE
{
addReply AmmsReply,
moveReply AmmsReply,
modReply AmmsReply,
subtractReply AmmsReply,
-- Add、Move、Modify、Subtract 参数使用相同的输入参数
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,
topologyDirectionExtension ENUMERATED
{
onewayexternal(0),
onewayboth(1),
...
}
}
AmmRequest ::= SEQUENCE

TerminationIDList,
descriptors SEQUENCE OF AmmDescriptor,
-- 每一个类型最多一个描述符(参见 AmmDescriptor)
-- 允许以序列方式出现。
...
}
AmmDescriptor ::= CHOICE
{
mediaDescriptor MediaDescriptor,
modemDescriptor ModemDescriptor,
muxDescriptor MuxDescriptor,
eventsDescriptor EventsDescriptor,
eventBufferDescriptor EventBufferDescriptor,
signalsDescriptor SignalsDescriptor,
digitMapDescriptor DigitMapDescriptor,
auditDescriptor AuditDescriptor,
...,
statisticsDescriptor StatisticsDescriptor
}
AmmsReply ::= SEQUENCE
{
terminationID TerminationIDList,
terminationAudit TerminationAudit OPTIONAL,
...
}
SubtractRequest ::= SEQUENCE
{
terminationID TerminationIDList,
auditDescriptor AuditDescriptor OPTIONAL,
...
}
AuditRequest ::= SEQUENCE
{
terminationID TerminationID,
auditDescriptor AuditDescriptor,
...,
terminationIDList TerminationIDList OPTIONAL
}
-- 当AuditRequest 包含terminationIDList 数据结构时,terminationID 应包含
-- 该列表中的第一个终结点
AuditReply ::= CHOICE
{
contextAuditResult TerminationIDList,
error ErrorDescriptor,
auditResult AuditResult,
...,
auditResultTermList TermListAuditResult
}
AuditResult ::= SEQUENCE
{
terminationID TerminationID,
terminationAuditResult TerminationAudit
}
TermListAuditResult ::= SEQUENCE
{
terminationIDList 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,
...,
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,
...,
statisticsDescriptor IndAudStatisticsDescriptor OPTIONAL
}
IndAudLocalControlDescriptor ::= SEQUENCE
{
streamMode NULL OPTIONAL,
reserveValue NULL OPTIONAL,
reserveGroup NULL OPTIONAL,
propertyParms SEQUENCE OF IndAudPropertyParm OPTIONAL,
...,
streamModeSel StreamMode OPTIONAL
}
-- 不允许同时包含streamMode 和streamModeSel
-- 如果同时包含streamMode 和streamModeSel,则只有streamModeSel 被处理
IndAudPropertyParm ::= SEQUENCE
{
name PkgdName,
...,
propertyParms PropertyParm OPTIONAL
}
-- 基于属性参数值进行选择
-- AND 或OR 选择逻辑由关联进行指定
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,
...,
serviceStateSel ServiceState OPTIONAL
}
-- 不允许同时包含serviceState 和 serviceStateSel
-- 同时包含serviceState 和 serviceStateSel,则只有serviceStateSel 被处理
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,
...,
signalRequestID RequestID 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,
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,
-- 关于extraInfos 的使用,见与PropertyParm 有关的说明
extraInfo CHOICE
{
relation Relation,
range BOOLEAN,
sublist BOOLEAN
} OPTIONAL,
...
}
ServiceChangeRequest ::= SEQUENCE
{
terminationID TerminationIDList,
serviceChangeParms ServiceChangeParm,
...
}
ServiceChangeReply ::= SEQUENCE
{
terminationID TerminationIDList,
serviceChangeResult ServiceChangeResult,
...
}
-- ServiceChangeResult参数无必选参数项。
-- 因此必须区分ServiceChangeParm和ServiceChangeResParm
ServiceChangeResult ::= CHOICE
{
errorDescriptor ErrorDescriptor,
serviceChangeResParms ServiceChangeResParm
}
WildcardField ::= OCTET STRING(SIZE(1))
TerminationID ::= SEQUENCE
{
wildcard SEQUENCE OF WildcardField,
id OCTET STRING(SIZE(1..8)),
...
}
-- 参见A.1对于通配机制的描述。
-- TerminationID为“0xFFFFFFFFFFFFFFFF”表示ROOT终结点。

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,
...,
statisticsDescriptor StatisticsDescriptor 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),
...
}
-- PropertyParm参数值是8字节字串序列。当该参数由MGC发送时,应采用以下方式进行解析:
-- 空序列表示CHOOSE
-- 一个序列指定参数值。
-- 如果子序列字段未选择,则更长的序列表示应选择一个参数值(例如,参数值1或参数值2,或)
-- 如果子序列字段被选择,则单元数目大于1的序列应对一个使用列表值的特性进行编码(例如参数值1和
-- 参数值2,和)
-- 如果参数值序列的长度为1,则只有与该字段最近的字段可以被选择。MG必须选择为特性选择一个参数
-- 值。例如,x > 3指示MG必须为属性X选择大于3的参数值。
-- 如果参数序列的长度为2,则只有范围字段可以被选择。指示MG必须选择一个包含在规定包含边界范围内

由MG发送时,只有AuditCapability请求响应消息中可以包含多个参数值,范围或
-- 一个关联字段。
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))
-- 用于标识包名(2字节)、属性、事件、信号名和统计值标识符(2个字节)。
-- 如果对包使用通配符,则前两个字符必须为0xFFFF,不允许使用通配符CHOOSE。
-- 参考本建议书附件C定义的特性标签,前两个字符应为0x0000。
-- 为了对特性、事件、信号和统计标识符使用通配符,后两个字节应为0xFFFF,不允许使用通配符
-- CHOOSE。
-- 只有当特性、事件、信号和统计标识符被通配时,包名才允许使用通配符。
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 比特无符号整数
EventsDescriptor ::= SEQUENCE
{
requestID RequestID OPTIONAL,
-- 如果eventList 为非空,
-- 则包含必须RequestID
eventList SEQUENCE OF RequestedEvent,
...
}
RequestedEvent ::= SEQUENCE
{
pkgdName PkgdName,
streamID StreamID OPTIONAL,
eventAction RequestedActions OPTIONAL,
evParList SEQUENCE OF EventParameter,
...
}
RegulatedEmbeddedDescriptor ::= SEQUENCE
{
secondEvent SecondEventsDescriptor OPTIONAL,
signalsDescriptor SignalsDescriptor OPTIONAL,
...
}
NotifyBehaviour ::= CHOICE
{
notifyImmediate NULL,
notifyRegulated RegulatedEmbeddedDescriptor,
neverNotify NULL,
...
}
RequestedActions ::= SEQUENCE
{
keepActive BOOLEAN OPTIONAL,
eventDM EventDM OPTIONAL,
secondEvent SecondEventsDescriptor OPTIONAL,
signalsDescriptor SignalsDescriptor OPTIONAL,
...,

NULL 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,
...,
notifyBehaviour NotifyBehaviour OPTIONAL,
resetEventsDescriptor NULL 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,

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,
-- 起始定时器、长定时器和短定时器的单位为秒,定时器时长单位为毫秒。
-- 因而,起始定时器、长定时器和短定时器的范围为1至99秒,
-- 时长为100 ms至9.9 s。
-- digitmap 句法定义参见本A.3。
...,
durationTimer INTEGER (0..99) OPTIONAL
}
ServiceChangeParm ::= SEQUENCE
{
serviceChangeMethod ServiceChangeMethod,
serviceChangeAddress ServiceChangeAddress OPTIONAL,
serviceChangeVersion INTEGER(0..99) OPTIONAL,
serviceChangeProfile ServiceChangeProfile OPTIONAL,
serviceChangeReason Value,
-- serviceChangeReason参数包含一个数字原因值和可选的文本描述。
-- serviceChangeReason 参数必须是一个由十进制原因码组成的字符,
-- 可选地后面可包含一个空格字符和文本描述字符。
-- 字符采用BER 规则编码成IA5String 字符
-- BER 编码地结果随后被编码成
-- ASN.1 字节字串类型,且进行“双重封装”。
serviceChangeDelay INTEGER(0..4294967295) OPTIONAL,
-- 32 位无符号整数
serviceChangeMgcId Mid OPTIONAL,
timeStamp TimeNotation OPTIONAL,
nonStandardData NonStandardData OPTIONAL,
...,
serviceChangeInfo AuditDescriptor OPTIONAL,
serviceChangeIncompleteFlag NULL OPTIONAL
}
ServiceChangeAddress ::= CHOICE
{
portNumber INTEGER(0..65535), -- TCP/UDP 端口号

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 字符,1 表示 "/", 2 表示与ABNF 匹配的版本
}
PackagesDescriptor ::= SEQUENCE OF PackagesItem
PackagesItem ::= SEQUENCE
{
packageName Name,
packageVersion INTEGER(0..99),
...
}
StatisticsDescriptor ::= SEQUENCE OF StatisticsParameter
StatisticsParameter ::= SEQUENCE
{
statName PkgdName,
statValue Value OPTIONAL
}
-- 如果统计值由一个子列表组成,则statValue
-- 参数可以多于一个字串。
NonStandardData ::= SEQUENCE
{
nonStandardIdentifier NonStandardIdentifier,
data OCTET STRING
}

NonStandardIdentifier ::= CHOICE
{
object OBJECT IDENTIFIER,
h221NonStandard H221NonStandard,
experimental IA5String(SIZE(8)),
-- 前两个字符应该为"X-" 或 "X+"
...
}
H221NonStandard ::= SEQUENCE
{ t35CountryCode1 INTEGER(0..255),
t35CountryCode2 INTEGER(0..255), -- T.35 定义的国家码
t35Extension INTEGER(0..255), -- 国家分配
manufacturerCode INTEGER(0..65535), -- 国家分配
...
}
TimeNotation ::= SEQUENCE
{
date IA5String(SIZE(8)), -- yyyymmdd 格式
time IA5String(SIZE(8)) -- hhmmssss 格式
-- 按照ISO 8601:2004
}
Value ::= SEQUENCE OF OCTET STRING
END
A.3 DigitMap和路径名称
从句法角度来讲,数字映射是具备句法约束的一组字串。数字映射的合法句法参见RFC 2234。本节
下面列举的部分数字映射仅是描述性的。它与本建议书附件B中定义的数字映射有一定的差异。
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 ;Basic event symbols
/ %x41-4B / %x61-6B ; a-k, A-K
/ "L" / "S" / "T" ;Inter-event timers
; (long, short, start)
/ "Z" ;Long duration modifier
DOT = %x2E ; "."
SP = %x20 ; space
HTAB = %x09 ; horizontal tab
CR = %x0D ; Carriage return

*(WSP / COMMENT / EOL)
EOL = (CR [LF] / LF)
WSP = SP / HTAB ; white space
SafeChar = DIGIT / ALPHA / "+" / "-" / "&" /
"!" / "_" / "/" / "'" / "?" / "@" /
"^" / "`" / "~" / "*" / "$" / "\" /
"(" / ")" / "%" / "|" / "."
RestChar = ";" / "[" / "]" / "{" / "}" / ":" / "," / "#" /
"<" / ">" / "="
DIGIT = %x30-39 ; 0-9
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
路径名称是具有句法格式要求的字串。其ABNF定义方式参数本建议书附件B。
; 路径名称的总长度务必不允许超过64字符。
pathname = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" )
["@" pathDomainName ]
; ABNF 允许使用两个或多个连续的”.”字符。
; 尽管此用法在路径名称中是毫无意义的。
pathDomainName = (ALPHA / DIGIT / "*" ) *63(ALPHA / DIGIT / "-" / "*" / ".")
NAME = ALPHA *63(ALPHA / DIGIT / )

------分隔线----------------------------
顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容