spf-discuss
[Top] [All Lists]

Re: "/" inside an exists: domain-spec?

2005-07-14 10:50:30
In <42D6A13F(_dot_)6050800(_at_)Sun(_dot_)Com> Marc Chametzky 
<Marc(_dot_)Chametzky(_at_)Sun(_dot_)COM> writes:

delimiter        = "." / "-" / "+" / "," / "/" / "_" / "="
 -exists:%{i}(_dot_)%{s1(_at_)}(_dot_)100/86400.rate.%{d}

The "@" in "%{s1(_at_)}" is invalid because it is not one of the valid
delimiters.  I think what you want is "%{l1}" or maybe just "%{l}".

As Marc points out, the "100/68400" label in the domain name is
perfectly valid.  It was valid in the mengwong-spf-0[01] specs,
although the ABNF was ambiguous.  It was not valid in the
lentczner-spf-00 I-D, but that was one of the things that I made sure
to change in the schlitt-spf-classic-* series.



Next question:  Is that what was intended?  Other than this type of
application, I think an implementer can depend on "/" to separate a
domain/IP from a CIDR length.  If I can't depend on that, then I need to do
some thinking....

Yes, this is very much the intention.



Well, you could search for the "/" from the end of the token, I
suppose. 

Indeed, that is basically what you have to do.  This can be done
either via regular expression matches or via a yacc/lex type grammar
parser.  libspf2 does it ad-hoc.  


         I'm going to have to double-check my implementation to see
what I'm doing since I suspect that I'm probably misinterpreting "/"
as the separator for the dual-cidr-length.

The test suite has some test cases for this stuff.


I do see something that looks suspicious for dual-cidr-length. If
you're specifying both an ip4 and ip6 length, it appears that it gets
written as "domain/32//128" (with a bonus "/"). Is that correct?

Yes, that is correct.  the initial release of libspf2 got that wrong.
bugs happen.

-wayne