Subject: [Megaco] Descriptor grammar issue

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

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: Aleksandr Ryabin <[email-masked]>
Date: Thu, 30 May 2002 11:04:09 -0400

Hi,

         Or (for consistency) it could follow digitMapDescriptor (and 
eventsDescriptor) approach.
That is do not include {} at all:

streamDescriptor = StreamToken EQUAL StreamID [ LBRKT streamParm *(COMMA 
streamParm) RBRKT ]

Which will result in:

MODIFY = myRTPTerm {
     Media {
         Stream = 1
         }
     }
}

BTW I'm not sure if  "Events could be an empty eventsDescriptor OR an 
auditItem" problem
was ever followed through. If not, than it might be a good time to do it as 
was suggested before
by Troy Cauble to make it right.

Thanks
         Aleks

---

From: Aleksandr Ryabin <[email-masked]>
Date: Thu, 30 May 2002 11:04:09 -0400

Hi,

Which will result in:

MODIFY = myRTPTerm {
     Media {
         Stream = 1
         }
     }
}

Thanks
         Aleks