|
Consider
an MG that has terminations C1, C2 and C3. C1 is in context 1, C2 is in
context 2, and C3 is in the null context. What is the correct reply to
this transaction? !/1 [192.168.59.1]:2944 T=2629{ C=*{O-AV=C1{AT{M}}, O-AV=C2{AT{M}},
O-AV=C3{AT{M}}}} Answer
1: MEGACO/1 [192.168.59.2]:2944 Reply=2629{ Context=1{ AuditValue=C1{Media{LocalControl{Mode=SendReceive},TerminationState{ServiceStates=InService,
Buffer=OFF}}}, AuditValue=C2{Error=435{"Termination
not in specified context"}}, AuditValue=C3{Error=435{"Termination
not in specified context"}} },
Context=2{ AuditValue=C1{Error=435{"Termination
not in specified context"}}, AuditValue=C2{Media{LocalControl{Mode=SendReceive},TerminationState{ServiceStates=InService,
Buffer=OFF}}}, AuditValue=C3{Error=435{"Termination
not in specified context"}} } } Answer
2: MEGACO/1 [192.168.59.2]:2944 Reply=2629{ Context=1{ AuditValue=C1{Media{LocalControl{Mode=SendReceive},TerminationState{ServiceStates=InService,
Buffer=OFF}}}, },
Context=2{ AuditValue=C2{Media{LocalControl{Mode=SendReceive},TerminationState{ServiceStates=InService,
Buffer=OFF}}} } } Answer
3: MEGACO/1 [192.168.59.2]:2944 Reply=2629{ Context=1{ AuditValue=C1{Media{LocalControl{Mode=SendReceive},TerminationState{ServiceStates=InService,
Buffer=OFF}}}, AuditValue=C3{Error=431{"No
TerminationID matched a wildcard"}} },
Context=2{ AuditValue=C2{Media{LocalControl{Mode=SendReceive},TerminationState{ServiceStates=InService,
Buffer=OFF}}}, AuditValue=C3{Error=431{"No
TerminationID matched a wildcard"}} } } Why
should it be Answer 1? Although section 7.2.5 says that "the command
Context=*{AuditValue=t2/*{Audit{Packages}}} returns Context=1{AuditValue=t2/1{Packages{ccc,ddd}}},
Context=2{AuditValue=t2/2{Packages{ccc,ddd}}}", this case is different,
because the terminations are enumerated explicitly, and so a reply is expected
for each termination listed, for each context that exists. Why
should it be Answer 2? Because of 6.3.2, "ContextID wildcarded (ALL)
with TerminationID specific: In the case where the ContextID is wildcarded (i.e.
ContextID = ALL) and the TerminationID is fully specified, the effect is
identical to a command specifying the non-NULL context that contains the
specified termination. Thus a search must be made to find the context and
only one instance of the command is executed. No errors are reported for
contexts that do not contain the specified termination". Why should it be Answer 3? Because
6.3.2 continues, "If the termination is not contained in any (non-NULL)
context then Error Code 431 (“No TerminationID matched a wildcard”)
is returned". Answer
2 seems to be the most manageable and useful, but that doesn't count for much
if an MGC is expecting a different format and will draw wrong conclusions if it
doesn’t get it. So, if anyone can see the right answer clearly, I
would appreciate it. Raphael
Tryster |