Subject: #1047 Path header - proposed resolution

From: Harald Alvestrand <[email-masked]>
Date: Tue, 11 Apr 2006 14:51:52 +0200

reviewing the thread, here is what I think we have for section 3.1.6.

I have incorporated some of Charles' comments from March 16, but not 
all. Of particular note is that I added the [FWS] he asked for, which 
allows the header to be folded before any ! except the one that
is part of the "diag-match".

I also reformatted the IPv6 warning into a "NOTE".

Are we done with this now?

==============================================================

3.1.6.  Path

   The Path header field indicates the route taken by an article since
   its injection into the Netnews system.  Each agent that processes an
   article is required to prepend at least one <path-identity> to this
   header field body.  This is primarily to enable news servers to avoid
   sending articles to sites already known to have them, in particular
   the site they came from, and additionally to permit tracing the route
   articles take in moving over the network, and for gathering
   statistics.

path = "Path:" SP *WSP path-list tail-entry *WSP CRLF

path-list = *( path-identity [FWS] [path-diagnostic] "!" )

path-diagnostic = diag-match / diag-other / diag-deprecated

diag-match = "!" ; another "!"

diag-other = "!." diag-keyword [ "." diag-identity ] [FWS]

diag-deprecated = "!" IPv4address [FWS]

diag-keyword = 1*ALPHA ; see USEPRO

diag-identity = path-identity / IPv4address / IPv6address

tail-entry = path-nodot
   ; may be the string "not-for-mail"

path-identity = ( 1*( label "." ) toplabel ) / path-nodot

path-nodot = 1*( alphanum / "-" / "_" ) ; legacy names

label = alphanum [ *( alphanum / "-" ) alphanum ]

toplabel = ( [ label *( "-" ) ] ALPHA *( "-" ) label ) /
( label *( "-" ) ALPHA [ *( "-" ) label ] ) /
( label 1*( "-" ) label )

alphanum = ALPHA / DIGIT ; compare RFC3696

   A <path-identity> is a name identifying a site.  It takes the form of
   a domain name having two or more components separated by dots,
   or a single name with no dots (<path-nodot>).

   Each <path-identity> in the <path-list> (which does not include  the
   <tail-entry>) indicates, from right to left, the successive agents
   through which the article has passed.   The use
   of the <diag-match>, which appears as "!!", indicates that the agent 
to its left
   verified the identity of the agent to its right before accepting the
   article (whereas the <path-delimiter> "!" implies no such claim).

      NOTE: Historically, the <tail-entry> indicated the name of the
      sender.  If not used for this purpose, the string "not-for-mail"
      is often used instead (since at one time the whole path could be
      used as a mail address for the sender).

      NOTE: Although case-insensitive, it is intended that the <path-
      keyword>s should be in upper case, to
      distinguish them from the <path-identity>s which are traditionally
      in lower case.

   A <path-diagnostic> is an item inserted into the Path header for
   purposes other than to indicate the name of a site. The use of these 
is described
   in [USEPRO].

      NOTE: One usage of a path-diagnostic is to record an IP address.
     The fact that IPv6 addresses
     are allowed means that the colon (:) is permitted; note that
     this will cause interoperability problems at older sites that regard
     ":" as a <path-delimiter> and have neighbors whose names have 4 or
     fewer characters, and where all the characters are valid HEX digits.

---

From: "Charles Lindsey" <[email-masked]>
Date: Fri, 14 Apr 2006 19:06:08 GMT

>Are we done with this now?

We are pretty nearly there.

>path-nodot = 1*( alphanum / "-" / "_" ) ; legacy names
                                         ^^^^^^^^^^^^^^

I really dislike that. If these things are legal, then they may well
continue to arise in future. This is USEPRO territory, and there is
already wording there pointing out that this is a less-preferred
alternative to be used only when there is good reason, and by people who
know what they are about and who understand (and have accepted) certain
risks. We can review this wording when we come to USEPRO if people do not
feel it is strong/clear enough, but let us not preempt that discussion by
including a non-normative comment here.

>   of the <diag-match>, which appears as "!!", indicates that the agent 

Still not entirely clear. How about:

The use of the <diag-match> which, since it follows a <path-delimiter>,
appears as "!!", indicates that the agent to its left ...

 verified the identity of the agent to its right before
>   the article (whereas the <path-delimiter> "!" implies no such claim).
                         ^
                       single

>     fewer characters, and where all the characters are valid HEX digits.

You have removed the NOTE explaining why the <diag-deprecated> has been
included.  In years to come, people are going to wonder what it is all
about. I think it needs some explanation (though the explanation could go
in USEPRO).

-- 
Charles H. Lindsey ---------At Home, doing my own thing------------------------
Tel: +44 161 436 6131 Fax: +44 161 436 6133   Web: http://www.cs.man.ac.uk/~chl
Email: [email-masked]      Snail: 5 Clerewood Ave, CHEADLE, SK8 3JU, U.K.
PGP: 2C15F1A9      Fingerprint: 73 6D C2 51 93 A0 01 E7 65 E8 64 7E 14 A4 AB A5

---

From: Harald Alvestrand <[email-masked]>
Date: Mon, 17 Apr 2006 10:41:32 +0200

> We are pretty nearly there.
And I like that - these things have to be legal for acceptance, and they 
even have to be legal for generation by new systems (those that replace 
old systems which use those names). I think "legacy" is just about 
exactly right - the discussion is over, all that's left is the codification.
>  verified the identity of the agent to its right before
actually the <diag-match> precedes a <path-delimiter>. People can read 
the grammar.
>>   the article (whereas the <path-delimiter> "!" implies no such claim).
In the grammar, !! is not a double <path-delimiter>. So this change is 
actually not consistent with grammar.
I'd support removing the parenthesis.
> about. I think it needs some explanation (though the explanation could go
Send text, or leave it to USEPRO.

---

From: "Charles Lindsey" <[email-masked]>
Date: Tue, 18 Apr 2006 16:47:01 GMT

In <[email-masked]> Harald Alvestrand <[email-masked]> writes:

>> I really dislike that. ...
>>   

I think you misunderstand my point. Your view is based on two premises:

1. They have to be legal for acceptance because they currently occur.

2. They have to be legal for new systems which replace old system which
need to continue to use existing names.

But you omit the third premise:

3. They have to be legal for new systems which may introduce new names
(but only where there is good reason).

My whole point is that I do not want to forbid case #3. Yes, new names are
only to be introduced by those who know what they are doing and have good
reasons, and for that sort of situation "SHOULD NOT" language is
appropriate (and there is such language in USEPRO).

No, I have not got any such reasons in mind at the moment (except perhaps
for the specialized case of a private network using UUCP), but that is not
to say that such reason may not appear. USEPRO contains the necessary
warnings.

>>>     The fact that IPv6 addresses
                      ^^^^^^^^^^^^^^
                      <IPv6address>es
>Send text, or leave it to USEPRO.

      NOTE: Although , <IPv4address>es have occasionally been used in
      the past (usually with a diagnostic intent), their continued use
      is deprecated (though it is still acceptable in the form of the
      <diag-deprecated>).