Subject: Re: POSTED-1 vs. POSTED-2

From: "Charles Lindsey" <[email-masked]>
Date: Thu, 2 Feb 2006 14:27:50 GMT

In <[email-masked]> Frank Ellermann <[email-masked]> writes:

>In other words POSTED-1 is a standalone keyword, and POSTED-2
>comes with an argument <diagnostic-identity>.

>Therefore we don't need two different POSTED-1 and POSTED-2,
>one name POSTED with an optional <diagnostic-identity> will do:

>diag-match      =  "!"                           ; an additional "!"
>diag-posted     =  "!.POSTED" [ "." diag-identity ]
>diag-seen       =  "!.SEEN."        diag-identity
>diag-mismatch   =  "!.MISMATCH."    diag-identity
>diag-deprecated =  "!" 1*( path-nodot "." ) path-nodot

No. That doesn't do the whole job. Consider all the different kinds of
diagnostic one might like to write:

1. No diagnostics at all.
2. !.SEEN.foo.example!     (that's where I got the article from; I didn't
                            check it against what the incoming Path said)
3. !.MISMATCH.foo.example! (that's where I got the article from; I
                            checked, and that's NOT what the incoming
			    Path said)
4. !!                      (where I got the article from agreed with
                            what the incoming Path said)
5. !.POSTED!               (I am the injecting agent)
6. #5 plus #2
7. #5 plus #3
8. #5 plus #4

Your proposal gives !.POSTED.foo.example! for case #6, but makes no
provision for #7 and #8.

My suggestion allows:

   !.POSTED!.SEEN.foo.example!...
   !.POSTED!.MISMATCH.foo.example!...
   !.POSTED!!...

I.e., you just allow more than one diagnostic to be added by the one site.
A simple rule. It might admit some bizarre cases, but OTOH it would allow
for more extensions in the future. Yes, your grammar could be extended to
allow those, but it gets more complicated each time.

OTOH, we could decide that we don't actually need Cases #6, #7 and #8 at
all. I think that is the first decision we need to make, and then the gory
details can be fixed.

>Ideas about swapping "!.POSTED!" and "!.MATCH!" for "!!" also
>obsolete, we need some miracles to get the <path> right without
>any "!!" optimization.

The reason we have the short form "!!" for the !.MATCH! case rather than
for !.POSTED! is that there could be a dozen or more !.MATCH!es in the
header, and we are trying not to make that header unnecessarily long.

>> path = "Path" ":" SP [FWS]
>>           *( path-identity [FWS] "!" *( path-diagnostic ) )
>>           tail-entry [FWS] CRLF

>> path-diagnostic = "." keyword [ "." diagnostic-identity ] [FWS] "!"
>>                      / "!"

>One [FWS] too many.  No "!.POSTED!.SEEN.ip".  No "!.POSTED!!y".

I want [FWS] allowed in front of any "!" or "!!" (or after, or both if
people so want). KISS and all that.

My syntax allows both of "!.POSTED!.SEEN.ip" and "!.POSTED!!y", so I don't
understand your last remark.

>>> We had some "no IP" rough consensus, therefore you can't
>>> match it as ordinary <path-identity> together with FQDNs.

>> The only agents that will ever "parse" the Path header in
>> anger are relaying agents,

>Yes, with your ABNF they match IPv4 as <o-p-i>, with my latest
>ABNF they get <diag-deprecated> (= Harald's <o-p-d>), and for
>Russ' _old_ proposal they would get a <path-legacy> with dots.

It makes no difference whether naked IPv4 is classed as <o-p-i> or as
<o-p-d>, just so long as it is written that any <o-p-*> is MUST accept,
MUST NOT generate. So you write whichever syntax is easiest to write,
which is <o-p-i> AFAICS.

>Harald's <o-p-d> tries to guarantee that they'd ignore IPv4.

Any "ignoring" that happens is done by relayers, who will write the
fastest bit of C-code that will get the job done (which is likely to be to
accept them all, but just don't have any of the ignorable ones in your
'sys' file). Like I said below:

>> all they are ever going to do is to ignore any folding and
>> whitespace, and then identify the chunks that come between
>> the "!"s. If any such chunk appears in their 'sys' file, then
>> they will not forward the article to that site. So if some
>> admin is stupid enough to put ".POSTED" in his 'sys' file,
>> he will never forward any articles anywhere :-( .

-- 
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: Russ Allbery <[email-masked]>
Date: Thu, 02 Feb 2006 10:41:00 -0800

>    !.POSTED!.MISMATCH.foo.example!...

I see no reason to allow any of those things.  They don't make any sense.
The step prior to an injecting agent has no valid Path identity that the
injecting agent should be concerned with.

> I.e., you just allow more than one diagnostic to be added by the one
> site.  A simple rule. It might admit some bizarre cases, but OTOH it
> would allow for more extensions in the future. Yes, your grammar could
> be extended to allow those, but it gets more complicated each time.

I have a hard time imagining why you'd need two consecutive diagnostics
rather than just adding another diagnostic type if you really needed
something else.

> header, and we are trying not to make that header unnecessarily long.

Yeah, I still sort of agree with this.

>>> path = "Path" ":" SP [FWS]

Er, that [FWS] is right out, is it not?  I thought we already said that
you're not allowed to have a continuation before any content.

> My syntax allows both of "!.POSTED!.SEEN.ip" and "!.POSTED!!y", so I
> don't understand your last remark.

Charles's approach here doesn't bother me either.  As long as you can't
put FWS in the middle of !! and ideally the FWS comes before the !, I'm
happy.

-- 
Russ Allbery ([email-masked])             <http://www.eyrie.org/~eagle/>

---

From: Harald Tveit Alvestrand <[email-masked]>
Date: Thu, 02 Feb 2006 10:35:00 -0800

> diagnostic one might like to write:

Charles,

should I take your desire for "many different kinds of disagnostic" as a 
vote for leaving the actual set of keywords to USEPRO?

              Harald

---

From: "Charles Lindsey" <[email-masked]>
Date: Fri, 3 Feb 2006 12:14:05 GMT

In <9BF0F93F8C86F7222BA72861@B50854F0A9192E8EC6CDA126> Harald Tveit Alvestrand <[email-masked]> writes:

>--On 2. februar 2006 14:27 +0000 Charles Lindsey <[email-masked]>=20
>wrote:

>>> diag-match      =3D  "!"                           ; an additional "!"
>>> diag-posted     =3D  "!.POSTED" [ "." diag-identity ]
>>> diag-seen       =3D  "!.SEEN."        diag-identity
>>> diag-mismatch   =3D  "!.MISMATCH."    diag-identity
>>> diag-deprecated =3D  "!" 1*( path-nodot "." ) path-nodot
>>

>vote for leaving the actual set of keywords to USEPRO?

AIUI. Frank wants to hard-code the exact diagnostics into USEFOR. You
would like to leave it open in USEFOR and to deal with it in USEPRO. I
would be happy to accept either (but maybe with more MUSTard and less ABNF
that Frank). If pushed, I would express a mild preference for leaving the
details to USEPRO. I don't think anyone else has commented on this
particular issue.

The more immediate question is whether to allow more than one
<diagnostic-entry> to be inserted at one place. It does no inherent harm
(except to increase the length of the Path), but the only case known where
it might be useful is if the injecting agent wants to say that he
.POSTED it and also that the site he got it from was
SEEN/MATCHed/MISMATCHed/whatever.

There is currently provision to do that in USEPRO, but the Injection-Info
header is also available for that purpose, so no great harm would arise
from sticking with just a single diagnostic. I gather tha Russ takes that
view. I would prefer allowing several, but only mildly so.