Re: [sipcore] draft-ietf-sipcore-location-conveyance-04

Paul Kyzivat <pkyzivat@cisco.com> Fri, 29 October 2010 13:02 UTC

Return-Path: <pkyzivat@cisco.com>
X-Original-To: sipcore@core3.amsl.com
Delivered-To: sipcore@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8A44C3A69A6 for <sipcore@core3.amsl.com>; Fri, 29 Oct 2010 06:02:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.474
X-Spam-Level:
X-Spam-Status: No, score=-110.474 tagged_above=-999 required=5 tests=[AWL=0.125, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id F22OzH06di5W for <sipcore@core3.amsl.com>; Fri, 29 Oct 2010 06:02:37 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 189A63A6944 for <sipcore@ietf.org>; Fri, 29 Oct 2010 06:02:37 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAKZiykxAZnwN/2dsb2JhbAChVHGhVZwrhUgEilODCA
X-IronPort-AV: E=Sophos;i="4.58,259,1286150400"; d="scan'208";a="176334500"
Received: from rtp-core-2.cisco.com ([64.102.124.13]) by rtp-iport-1.cisco.com with ESMTP; 29 Oct 2010 13:04:30 +0000
Received: from [161.44.174.118] (dhcp-161-44-174-118.cisco.com [161.44.174.118]) by rtp-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o9TD4UYS013697 for <sipcore@ietf.org>; Fri, 29 Oct 2010 13:04:30 GMT
Message-ID: <4CCAC65D.1030204@cisco.com>
Date: Fri, 29 Oct 2010 09:04:29 -0400
From: Paul Kyzivat <pkyzivat@cisco.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.11) Gecko/20101013 Thunderbird/3.1.5
MIME-Version: 1.0
To: sipcore@ietf.org
References: <20101025195020.1DA5A3A68E5@core3.amsl.com> <4CC78202.6090700@cisco.com> <201010271832.o9RIWAKi005558@sj-core-2.cisco.com> <4CC8BAC5.4030005@cisco.com> <201010280410.o9S4AhY6012387@sj-core-1.cisco.com> <4CC90195.2070203@cisco.com> <A444A0F8084434499206E78C106220CA023308DD8F@MCHP058A.global-ad.net> <201010290051.o9T0piCd016052@sj-core-5.cisco.com>
In-Reply-To: <201010290051.o9T0piCd016052@sj-core-5.cisco.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [sipcore] draft-ietf-sipcore-location-conveyance-04
X-BeenThere: sipcore@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: SIP Core Working Group <sipcore.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/sipcore>
List-Post: <mailto:sipcore@ietf.org>
List-Help: <mailto:sipcore-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sipcore>, <mailto:sipcore-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 29 Oct 2010 13:02:39 -0000

Its unclear to me how many people have opinions on this.
It certainly can be one of the discussion points.
If you like, I can make up some slides on the alternatives for use at 
the meeting.

But it will be good if we can reduce the number of alternatives between 
now and then. ISTM there are basically two decisions to make about the 
syntax:

- at most two URIs, or an unlimited number
- routing-param part of same header, or a separate header

The first of those is a real functionality discussion.
(Or a computer science discussion of whether there is a number bigger 
than one other than "many".)

The second is partly esthetic, and partly a technical issue for those 
writing sip parsers. Making it all one header causes it to be a one-off 
from a parser perspective.

	Thanks,
	Paul

On 10/28/2010 8:51 PM, James M. Polk wrote:
> At 05:38 AM 10/28/2010, Elwell, John wrote:
>> Yes, 4 looks good, but I could live with 1.
>
> I think this has become #1 of two major open issues to address in
> Beijing (along with the supported and unsupported URI schemes and their
> respective possible error codes, as 2a and 2b).
>
> James
>
>
>> John
>>
>> > -----Original Message-----
>> > From: sipcore-bounces@ietf.org
>> > [mailto:sipcore-bounces@ietf.org] On Behalf Of Anders Kristensen
>> > Sent: 28 October 2010 05:53
>> > To: sipcore@ietf.org
>> > Subject: Re: [sipcore] draft-ietf-sipcore-location-conveyance-04
>> >
>> > I haven't really followed the discussion closely but I'll say this
>> > anyway. Many header fields are of a form similar to Geolocation,
>> > essentially lists of URI, and allow for parameters. But I think the
>> > parameters are pretty much always associated with individual
>> > entries in
>> > the list and may be present for more than one.
>> >
>> > From what I can tell, in the case of Geolocation, the
>> > routing-allowed
>> > param is not really attached to any particular entry in the list
>> > suggesting that maybe it doesn't belong in the same header field. I
>> > think that's the thinking that lead Paul to options 4 or 5 which seem
>> > much preferable to me. That allows Geolocation to fit the text in RFC
>> > 3261 that talks about combining header fields:
>> >
>> > Specifically, any SIP
>> > header whose grammar is of the form
>> >
>> > header = "header-name" HCOLON header-value *(COMMA
>> > header-value)
>> >
>> > allows for combining header fields of the same name into a comma-
>> > separated list.
>> >
>> > Granted, there's no rule that says that header fields with
>> > comma-separated values *must* fit the above grammar but ISTM
>> > that it's a
>> > pretty established pattern which is worth observing.
>> >
>> > Thanks,
>> > Anders
>> >
>> > On 10/27/2010 9:10 PM, James M. Polk wrote:
>> > > At 06:50 PM 10/27/2010, Paul Kyzivat wrote:
>> > >> I have a bunch inline here.
>> > >
>> > > I'll say ;-)
>> > >
>> > >> This supersedes my earlier suggested ABNF change.
>> > >
>> > > ack
>> > >
>> > >
>> > >> On 10/27/2010 2:32 PM, James M. Polk wrote:
>> > >>> Paul
>> > >>>
>> > >>> in-line
>> > >>>
>> > >>> At 08:36 PM 10/26/2010, Paul Kyzivat wrote:
>> > >>>> I took a quick look at the new version, and it seems to
>> > have cleanup a
>> > >>>> lot. But there *still* seems to be a problem with the syntax.
>> > >>>> (Interplay between ABNF and text.) From the text, I find:
>> > >>>>
>> > >>>> The placement of the "routing-allowed" header field parameter,
>> > >>>> strongly encouraged by [RFC5606], is outside the
>> > locationValue, and
>> > >>>> MUST always be last in the header field value. The
>> > routing-allowed
>> > >>>> parameter MUST be present, even when no locationValue is present.
>> > >>>>
>> > >>>> This is questionably supported by the ABNF:
>> > >>>>
>> > >>>> Geolocation-header = "Geolocation" HCOLON Geolocation-value
>> > >>>> Geolocation-value = ( locationValue [ COMMA locationValue ] )
>> > >>>> / routing-param
>> > >>>
>> > >>> the above, I believe - but am open to be corrected by
>> > those better at
>> > >>> ABNF syntax that I, says
>> > >>>
>> > >>> - the Geolocation header can optionally have one or more
>> > locationValues
>> > >>> - which are where the location URIs go
>> > >>
>> > >> The above says *a* Geolocation header can have
>> > >> - one or two locationValues
>> > >> - OR one routing-param
>> > >>
>> > >> (The slash means OR)
>> > >>
>> > >> But it doesn't state that the Geolocation header itself can appear
>> > >> only once. And obviously if the goal is to have a
>> > locationValue AND a
>> > >> routing-param in the message, then with the above syntax
>> > at least TWO
>> > >> Geolocation headers will be required.
>> > >>
>> > >>> - but that the Geolocation header *will* have a routing-param
>> > >>> - which is the "routing-allowed" paramter that RFC 5606
>> > wanted included
>> > >>
>> > >> Since the slash means OR, it doesn't mean it *will*.
>> > >>
>> > >>> The text of the ID then says that only zero, one or two
>> > locationValues
>> > >>> are allowed, which we all agreed to in Maastricht (in SIPCORE and
>> > >>> ECRIT/GEOPRIV).
>> > >>>
>> > >>>> locationValue = LAQUOT locationURI RAQUOT
>> > >>>> *(SEMI geoloc-param)
>> > >>>> locationURI = sip-URI / sips-URI / pres-URI
>> > >>>> / http-URI / HTTPS-URI
>> > >>>> / cid-url ; (from RFC 2392)
>> > >>>> / absoluteURI ; (from RFC 3261)
>> > >>>> geoloc-param = generic-param; (from RFC 3261)
>> > >>>> routing-param = "routing-allowed" EQUAL "yes" / "no"
>> > >>>>
>> > >>>> It only works if you presume that there are separate
>> > occurrences of
>> > >>>> GeoLocation-header in the message, one with just
>> > locations, another
>> > >>>> with just the routing-param.
>> > >>>
>> > >>> I don't get that part of your point, but I guess Martin's
>> > next message
>> > >>> says I need to add a "COMMA" after the ']' but before the
>> > ')'. Would
>> > >>> this satisfy your issue?
>> > >>
>> > >> Adding the COMMA and removing the slash would require the
>> > >> routing-param, and would separate it from the
>> > location-value. But then
>> > >> if you only wanted the routing-param without any locationValues you
>> > >> would have to write:
>> > >>
>> > >> Geolocation:,routing-allowed=no
>> > >>
>> > >> which is at least a bit weird, which I think is what Martin meant.
>> > >>
>> > >>>> The routing-param certainly can't be "last in the header
>> > field value"
>> > >>>> except in the degenerate sense, since it must be first
>> > and only in a
>> > >>>> Geolocation-header.
>> > >>>
>> > >>> If the routing-param was intended to be first, wouldn't
>> > it appear first
>> > >>> on this line?
>> > >>
>> > >> My point was that the syntax as written only allows
>> > routing-param by
>> > >> itself in a geolocation-header. E.g.
>> > >>
>> > >> Geolocation:routing-allowed=no
>> > >>
>> > >> It can't share a single Geolocation header with a
>> > locationValue. Hence
>> > >> it is *both* first and last in that header.
>> > >>
>> > >>>> Geolocation-value = ( locationValue [ COMMA locationValue ] )
>> > >>>> / routing-param
>> > >>>
>> > >>> but it doesn't, so I'm confused.
>> > >>
>> > >> Again, the slash means OR. So you have:
>> > >>
>> > >> Geolocation-value = ( locationValue [ COMMA locationValue ] )
>> > >> OR
>> > >> Geolocation-value = routing-param
>> > >>
>> > >> (Though you can't write it that way in ABNF.
>> > >>
>> > >>>> Below are some specific cases - both valid and invalid.
>> > In each case I
>> > >>>> show some headers bracketed by "...". That is intended
>> > to mean other
>> > >>>> headers in a message, but all in the same message. (And
>> > when I show
>> > >>>> multiple headers, there could be other non-geoloc
>> > headers interleaved.)
>> > >>>>
>> > >>>> * The following are legal according to the above, and
>> > probably within
>> > >>>> expected usage:
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: cid:foo@example.com
>> > >>>> Geolocation: routing-allowed=yes
>> > >>>> ...
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: cid:foo@example.com,cid:bar@example.com
>> > >>>> Geolocation: routing-allowed=yes
>> > >>>> ...
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: routing-allowed=no
>> > >>>> ...
>> > >>>>
>> > >>>> * IIUC the following are allowed by the above both
>> > syntactically and
>> > >>>> according to the text, but is presumably not *intended*
>> > to be valid.
>> > >>>> (Its legal because the in each instance of Geolocation-header its
>> > >>>> last.)
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: routing-allowed=no
>> > >>>> Geolocation: routing-allowed=yes
>> > >>>> ...
>> > >>>>
>> > >>>> The following is also allowed - I don't know if its
>> > intended or not:
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: routing-allowed=yes
>> > >>>> Geolocation: cid:foo@example.com,cid:bar@example.com
>> > >>>> ...
>> > >>>>
>> > >>>> * The following is allowed by the ABNF though disallowed
>> > by the text:
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: cid:foo@example.com,cid:bar@example.com
>> > >>>> Geolocation: cid:baz@example.com
>> > >>>> ...
>> > >>>>
>> > >>>> * The following is *not* allowed by the ABNF. I suspect
>> > it might be
>> > >>>> intended to be valid, but I'm far from sure about it:
>> > >>>>
>> > >>>> ...
>> > >>>> Geolocation: cid:foo@example.com,routing-allowed=yes
>> > >>>> ...
>> > >>>
>> > >>> to get this above example "allowed", would I correct the
>> > existing ABNF
>> > >>> to be
>> > >>>
>> > >>>> Geolocation-value = ( locationValue [ COMMA
>> > locationValue ] COMMA )
>> > >>>> / routing-param
>> > >>>
>> > >>> ?
>> > >>
>> > >> No. *That* would allow all of the following but not the
>> > example above:
>> > >>
>> > >> Geolocation: cid:foo@example.com,
>> > >> Geolocation: cid:foo@example.com,cid:bar@example.com,
>> > >> Geolocation: routing-allowed=yes
>> > >>
>> > >>>> In addition to that, the text is very explicit that:
>> > >>>>
>> > >>>> The routing-allowed
>> > >>>> parameter MUST be present, even when no locationValue is present.
>> > >>>>
>> > >>>> but then it says:
>> > >>>>
>> > >>>> If no routing-allowed parameter
>> > >>>> is present in a SIP request, a SIP intermediary MAY insert this
>> > >>>> value with a RECOMMENDED value of "no" by default.
>> > >>>>
>> > >>>> So its required, but we have rules to follow if its
>> > missing. But I
>> > >>>> don't understand how it *can* be required, since the
>> > sender of the
>> > >>>> request may not understand/support Geolocation and so
>> > won't include it.
>> > >>>
>> > >>> What we're trying to do here is explicitly give
>> > instructions to SIP
>> > >>> intermediary implementers to include the routing-allowed
>> > parameter if
>> > >>> one isn't present, with a default value of =no.
>> > >>
>> > >> I went back and reread the section containing this text. It is in a
>> > >> section explicitly about this header. So on reflection I
>> > suppose the
>> > >> "MUST be present" was intended to imply "in the
>> > Geolocation *header".
>> > >> I took it to mean "in the request".
>> > >>
>> > >> Requiring it to be in the header only makes sense if there
>> > can be at
>> > >> most one header. And then it only makes sense if the
>> > syntax is altered
>> > >> to allow both the routing-parameter and the locationValue
>> > in the same
>> > >> header.
>> > >>
>> > >>>> ISTM that in reality its only *required* if the is a
>> > locationValue
>> > >>>> present, and is otherwise optional.
>> > >>>
>> > >>> which is how most would read it if ...
>> > >>>
>> > >>>> If no routing-allowed parameter
>> > >>>> is present in a SIP request, a SIP intermediary MAY insert this
>> > >>>> value with a RECOMMENDED value of "no" by default.
>> > >>>
>> > >>> ... weren't present in the document. But, there is no
>> > permission to
>> > >>> allow SIP intermediaries to add the routing-allowed
>> > parameter, which we
>> > >>> wanted to cover.
>> > >>
>> > >> I'm still confused. Let me state what I think you are after:
>> > >>
>> > >> - a request may or may not contain a Geolocation header
>> > >> - a request may not contain more than one Geolocation header
>> > >
>> > > of what you have, this one is one I hadn't considered
>> > important, but if
>> > > that gets everything aligned, then I'm all for adding it in.
>> > >
>> > >> - a Geolocation header MUST contain a routing-param
>> > >> - a Geolocation header Must contain zero, one, or two
>> > locationValues
>> > >> - you prefer the routing-param to be the last field in the header
>> > >> - a proxy MAY add a Geolocation header if one is not present
>> > >> (in which case it MUST include a routing-param)
>> > >> - a proxy MAY add a locationValue to an existing Geolocation header
>> > >> if it doesn't already have two locationValues. (And I guess it
>> > >> could add two if there initially were none.)
>> > >>
>> > >> And you would like ABNF that is consistent with the above.
>> > >
>> > > with the one caveat, yes.
>> > >
>> > >
>> > >> I'm going to give you some alternatives that should all be
>> > >> syntactically correct. I'll give you one that meets the above, and
>> > >> some others that may be more appealing variations. Then we can see
>> > >> which people prefer.
>> > >>
>> > >> 1) The following tries to meet the requirements I spelled
>> > out above:
>> > >>
>> > >> Geolocation-header = "Geolocation" HCOLON Geolocation-value
>> > >> Geolocation-value = locationValue [ COMMA locationValue]
>> > >> COMMA routing-param
>> > >> / routing-param
>> > >
>> > > I hadn't even thought that was possible, but seeing it, I'm amazed I
>> > > didn't try it
>> > >
>> > > (i.e., it's another classic "I could've had a v8" moment)...
>> > >
>> > > I'm not as smart as you, Paul <:-|
>> > >
>> > >> locationValue = LAQUOT locationURI RAQUOT
>> > >> *(SEMI geoloc-param)
>> > >> locationURI = sip-URI / sips-URI / pres-URI
>> > >> / http-URI / HTTPS-URI
>> > >> / cid-url ; (from RFC 2392)
>> > >> / absoluteURI ; (from RFC 3261)
>> > >> geoloc-param = generic-param; (from RFC 3261)
>> > >> routing-param = "routing-allowed" EQUAL "yes" / "no"
>> > >>
>> > >> This must be accompanied by text stating that there MUST be at most
>> > >> one Geolocation-header in a request.
>> > >
>> > > you've sold me on this one (and yes, I examined all the
>> > others before
>> > > jumping on this first one!). Do others have strong opinions
>> > about why
>> > > not #1?
>> > >
>> > > thank you for this!
>> > >
>> > > James
>> > >
>> > >
>> > >> 2) The following is similar to (1), but allows more than two
>> > >> 'locationValue's
>> > >>
>> > >> Geolocation-header = "Geolocation" HCOLON Geolocation-value
>> > >> Geolocation-value = *(locationValue COMMA) routing-param
>> > >> locationValue = LAQUOT locationURI RAQUOT
>> > >> *(SEMI geoloc-param)
>> > >> locationURI = sip-URI / sips-URI / pres-URI
>> > >> / http-URI / HTTPS-URI
>> > >> / cid-url ; (from RFC 2392)
>> > >> / absoluteURI ; (from RFC 3261)
>> > >> geoloc-param = generic-param; (from RFC 3261)
>> > >> routing-param = "routing-allowed" EQUAL "yes" / "no"
>> > >>
>> > >> The same wording is required with it
>> > >>
>> > >> 3) The following is a copy from my earlier posting:
>> > >>
>> > >> Geolocation-header = "Geolocation" HCOLON Geolocation-value
>> > >> *( COMMA Geolocation-value)
>> > >> Geolocation-value = locationValue / routing-param
>> > >> locationValue = LAQUOT locationURI RAQUOT
>> > >> *(SEMI geoloc-param)
>> > >> locationURI = sip-URI / sips-URI / pres-URI
>> > >> / http-URI / HTTPS-URI
>> > >> / cid-url ; (from RFC 2392)
>> > >> / absoluteURI ; (from RFC 3261)
>> > >> geoloc-param = generic-param; (from RFC 3261)
>> > >> routing-param = "routing-allowed" EQUAL "yes" / "no"
>> > >>
>> > >> The above is overly forgiving, in that it permits zero or more
>> > >> locationURIs and zero or more routing-params. That then needs to be
>> > >> tightened up with text. I think the text needs to say,
>> > more or less:
>> > >>
>> > >> - if there are any locationURIs in a sip request,
>> > >> then a routing-param MUST be present in the request
>> > >> - there MUST NOT be more than one routing-param present in a
>> > >> sip request.
>> > >> - there MUST NOT be more than two locationURIs in a sip request
>> > >> (if there is really a reason for such a restriction)
>> > >>
>> > >> 4) The following is a more radical change:
>> > >>
>> > >> Geolocation-header = "Geolocation" HCOLON locationValue
>> > >> [ COMMA locationValue ]
>> > >> locationValue = LAQUOT locationURI RAQUOT
>> > >> *(SEMI geoloc-param)
>> > >> locationURI = sip-URI / sips-URI / pres-URI
>> > >> / http-URI / HTTPS-URI
>> > >> / cid-url ; (from RFC 2392)
>> > >> / absoluteURI ; (from RFC 3261)
>> > >> geoloc-param = generic-param; (from RFC 3261)
>> > >>
>> > >> Georouting-header = "Geolocation-Routing" HCOLON
>> > >> ( "yes" / "no" / gen-value )
>> > >>
>> > >> This one needs to be accompanied by text stating that each of
>> > >> Geolocation-header and Georouting-header may appear at most once
>> > >> in a request, and that if Georouting-header is absent it defaults
>> > >> to "no".
>> > >>
>> > >> 5) A more lenient variant on (4):
>> > >>
>> > >> Geolocation-header = "Geolocation" HCOLON locationValue
>> > >> *( COMMA locationValue )
>> > >> locationValue = LAQUOT locationURI RAQUOT
>> > >> *(SEMI geoloc-param)
>> > >> locationURI = sip-URI / sips-URI / pres-URI
>> > >> / http-URI / HTTPS-URI
>> > >> / cid-url ; (from RFC 2392)
>> > >> / absoluteURI ; (from RFC 3261)
>> > >> geoloc-param = generic-param; (from RFC 3261)
>> > >>
>> > >> Georouting-header = "Geolocation-Routing" HCOLON
>> > >> ( "yes" / "no" / gen-value )
>> > >>
>> > >> This one needs to be accompanied by text stating that
>> > >> Georouting-header may appear at most once in a request, and that
>> > >> if Georouting-header is absent it defaults to "no".
>> > >>
>> > >> (The Geolocation-header can appear zero or more times.)
>> > >>
>> > >> This is only preferred to (4) if more than two locationValues
>> > >> are acceptable. ISTM that once we allowed two, allowing more
>> > >> makes sense, with the same limitations imposed with two - that
>> > >> its up to the recipient to figure out which to use.
>> > >>
>> > >> Of the above, I technically and esthetically prefer (5) - or (4) if
>> > >> the limitation to two URIs is important. I see no reason
>> > to *require*
>> > >> the routing-param if the default is understood to be "no".
>> > >>
>> > >> Pragmatically I think I prefer (1) - its the least
>> > variation from what
>> > >> has been recently discussed that, IMO, makes any sense.
>> > >>
>> > >>
>> > >>>> In that case, an intermediary that adds a locationValue
>> > not only MAY,
>> > >>>> but presumably MUST add a missing routing-param if it adds a
>> > >>>> locationValue.
>> > >>>
>> > >>> We can get there (i.e., allow this) without stating this
>> > is a MUST,
>> > >>> can't we?
>> > >>
>> > >>>> I have never understood why the routing-param is
>> > required to be last.
>> > >>>
>> > >>> maybe it doesn't need to be, but it certainly is easier for
>> > >>> monitoring/reading human to find if it is last when
>> > looking at a decode.
>> > >>>
>> > >>>> And as my examples show, its difficult/impossible to
>> > enforce this in
>> > >>>> ABNF.
>> > >>>>
>> > >>>> Thanks,
>> > >>>> Paul
>> > >>>
>> > >
>> > > _______________________________________________
>> > > sipcore mailing list
>> > > sipcore@ietf.org
>> > > https://www.ietf.org/mailman/listinfo/sipcore
>> > >
>> > _______________________________________________
>> > sipcore mailing list
>> > sipcore@ietf.org
>> > https://www.ietf.org/mailman/listinfo/sipcore
>> >
>> _______________________________________________
>> sipcore mailing list
>> sipcore@ietf.org
>> https://www.ietf.org/mailman/listinfo/sipcore
>
> _______________________________________________
> sipcore mailing list
> sipcore@ietf.org
> https://www.ietf.org/mailman/listinfo/sipcore
>