Subject: Re: [Megaco] Descriptor grammar issue

From: Christer Holmberg <[email-masked]>
Date: Thu, 30 May 2002 15:41:33 +0300

Hi David,

> Could you not get around this by including Mode=inactive as a
> parameter in LocalControl?

Perhaps. But,  do we want to have a protocol where we have to "get
around" things just because the grammar forces us to do so?

I mean, is there a reason why these descriptors MUST contain at least
one parmaeter?

Regards,

Christer Holmberg
Ericsson Finland

>
>
> Dave
> Nortel Networks
>
> > -----Original Message-----
> > From: Christer Holmberg [mailto:[email-masked]]
> > Sent: Thursday, May 30, 2002 8:12 AM
> > To: [email-masked]
> > Subject: [Megaco] Descriptor grammar issue
> >
> >
> >
> > Hi,
> >
> > I have an issues related to the text grammar (to my understanding
> it's
> > not an issue for ASN.1 encoding):
> >
> >
> > Assume I want to remove a stream.
> >
> > According to chapter 7.1.6 I shall send:
> >
> > So, according to 7.1.6 I should send:
> >
> >     MODIFY = myRTPTerm {
> >         Media {
> >             Stream = 1 {
> >                 LocalControl {
> >                        ReserveValue = OFF
> >                        ReserveGroup = OFF
> >                 }
> >             }
> >         }
> >     }
> >
> > Now, since the default values for ReserveValue and ReserveGroup are
> > "OFF", I don't have to send them. So, I could send:
> >
> >    MODIFY = myRTPTerm {
> >         Media {
> >             Stream = 1 {
> >                 LocalControl {
> >                 }
> >             }
> >         }
> >     }
> >
> > However, this is against the grammar, which says that the
> LocalControl
> > descriptor MUST contain at least ONE localParm:
> >
> >         localControlDescriptor = LocalControlToken LBRKT localParm
> > *(COMMA localParm) RBRKT
> >
> >         localParm = ( streamMode / propertyParm / reservedValueMode
> /
> > reservedGroupMode )
> >
> > So, now I would have to include the ReserveXxx propertied just to
> make
> > the receiving parser happy.
> >
> > To fix this, the grammar should be:
> >
> >         localControlDescriptor = LocalControlToken LBRKT *(COMMA
> > localParm) RBRKT
> >
> > Of  course, I could leave the LocalControl descriptor, and send:
> >
> >     MODIFY = myRTPTerm {
> >         Media {
> >             Stream = 1 {
> >                 }
> >             }
> >         }
> >     }
> >
> > However, this would also be against the H.248 grammar, which says
> that
> > the Stream descriptor MUST at least contain one streamParm (Local-,
> > Remote- or LocalControl descriptor):
> >
> >     streamDescriptor  =  StreamToken EQUAL StreamID LBRKT streamParm
>
> > *(COMMA streamParm) RBRKT
> >
> >     streamParm = ( localDescriptor / remoteDescriptor /
> > localControlDescriptor )
> >
> > To fix this, the grammar should be:
> >
> >     streamDescriptor  =  StreamToken EQUAL StreamID LBRKT *(COMMA
> > streamParm) RBRKT
> >
> >
> > Comments?
> >
> >
> > Regards,
> >
> > Christer Holmberg
> > Ericsson Finland
> >
> >
> >
> >
> > _______________________________________________
> > Megaco mailing list
> > [email-masked]
> > https://www1.ietf.org/mailman/listinfo/megaco
> >

---

From: Christer Holmberg <[email-masked]>
Date: Thu, 30 May 2002 15:41:33 +0300

Hi David,

Regards,

Christer Holmberg
Ericsson Finland

---

From: "David Stonehouse" <[email-masked]>
Date: Thu, 30 May 2002 08:38:42 -0400

Could you not get around this by including Mode=inactive as a parameter in
LocalControl?  

Dave
Nortel Networks

> I have an issues related to the text grammar (to my understanding it's
> However, this is against the grammar, which says that the LocalControl
>         localParm = ( streamMode / propertyParm / reservedValueMode /
> reservedGroupMode )
> 
> So, now I would have to include the ReserveXxx propertied just to make
> However, this would also be against the H.248 grammar, which says that

---

From: Terry L Anderson <[email-masked]>
Date: Thu, 30 May 2002 11:13:36 -0400

I would have interpretted 7.1.6 ("setting empty Local and Remote 
descriptors for the stream") as implying that the descriptor should be
Stream = 1 {
    Local{},
    Remote{},
    LocalControl{ReserveGroup=off, ReserveValue=off}
}
I believe that the Local{} and Remote{} is useful since descriptors that 
are not included maintain their current value - sending empty ones 
removes the old definitions.  Omitting LocalControl completely has the 
same problem that any current parameters that are not default, are not 
reset, but including any LocalControl descriptor resets all unmentioned 
parameters to their default values so David is correct that 
LocalControl{Mode=inactive} would also set ReserveGroup and ReserveValue 
to off.  The question is whether the statement is intended to state that 
the transaction must explicitly set ReserveGroup and ReserveValue to 
off, or whether they merely must be set to off in all terminations, 
meaning that if they are already off LocalControl may be omitted.  I 
would have interpretted it this last way meaning that

Stream = 1 {
    Local{},
    Remote{}
}

would be sufficient, if ReserveGroup and ReserveValue are already off. 
 With this interpretation one does not need an empty LocalControl 
descriptor except as a shorter way to set all parameters to default when 
several are not.

-- 

------------------------------------------------------------
Terry L Anderson              mailto:[email-masked]
Tel:732.949.5628   Fax:732.949.7016
Lucent Technologies/INS/Voice Over IP Access Networks
Rm 2G-219A, 101 Crawfords Corner Rd, Holmdel, NJ 07733-3030
http://its.lucent.com/~tla (Lucent internal) http://www.gti.net/tla

---

From: Terry L Anderson <[email-masked]>
Date: Thu, 30 May 2002 11:13:36 -0400

Stream = 1 {
    Local{},
    Remote{}
}

--

---

From: Christer Holmberg <[email-masked]>
Date: Fri, 31 May 2002 12:47:41 +0300

Hi,

> removes the old definitions.

True. But, one could argue (depending on how the definition for octetString is
understood) empty Local- and Remote descriptors aren't allowed either. The
grammar says:

localDescriptor      = LocalToken LBRKT octetString RBRKT

remoteDescriptor     = RemoteToken LBRKT octetString RBRKT

octetString is used to describe SDP defined in RFC2327.

Omitting LocalControl completely has the same problem that any current
parameters that are not default, are not

> to off.

I assume not only ReserveXxx, but also whatever other extension properties,
with defined default values, that is used in the descriptor.

>  The question is whether the statement is intended to state that

Ok, this now means that the stream is removed.

Then, assume I want to add a stream, but for whatever reason I want to do it
before I have the Local- and/or Remote descriptors.

Assuming I would use all the default values for LocalControl I would send:

Stream = 1 {}

Again, this would against the grammar...

Regards,

Christer Holmberg
Ericsson Finland

---

From: Christer Holmberg <[email-masked]>
Date: Fri, 31 May 2002 12:47:41 +0300

Hi,

Stream = 1 {}

Regards,

Christer Holmberg
Ericsson Finland

---

From: Terry L Anderson <[email-masked]>
Date: Fri, 31 May 2002 10:22:52 -0400

see below.

>octetString is used to describe SDP defined in RFC2327.
octetString is defined in H.248 as:
octetString = *(nonEscapeChar)
which clearly allows 0 characters.  The comment discusses some issues 
when using it for SDP but that has nothing to do with whether an empty 
string is allowed.

>parameters that are not default, are not
True but an active termination is much more likely to have all 
LocalControl parameters in their default state than Local or Remote is. 
 LocalControl certainly must be included to set parameters to default if 
they are not, but there will be more cases where it can be omitted than 
Local or Remote.

>with defined default values, that is used in the descriptor.
Correct.

>Again, this would against the grammar...
I am not sure how useful it is to do an add a stream with no descriptors 
specified, but you are correct that this is not allowed.  What would the 
stream do, before you had specified something non-default?

--

---

From: Terry L Anderson <[email-masked]>
Date: Fri, 31 May 2002 10:22:52 -0400

see below.

Correct.

--

---

From: Christer Holmberg <[email-masked]>
Date: Sat, 01 Jun 2002 00:46:19 +0300

Hi,

> when using it for SDP but that has nothing to do with whether an empty

True. Sorry, I had a look in the previous version of the draft.

> stream do, before you had specified something non-default?

I may want to add a stream, especially to a physical (TDM etc) termination, which
in some cases/never doesn't even "need" a Local- or Remote descriptor.

Regards,

Christer Holmberg
Ericsson Finland

---

From: Christer Holmberg <[email-masked]>
Date: Sat, 01 Jun 2002 00:46:19 +0300

Hi,

Regards,

Christer Holmberg
Ericsson Finland