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