[SURBL-Discuss] RFC: consensus list?

Frank Ellermann nobody at xyzzy.claranet.de
Sun Nov 14 01:37:26 CET 2004


Jeff Chan wrote:

>> (35 + 35 + 21 + 7 + 1 = 99, is that correct ?)

It is, 128 -1 -7 -( 6+5+4+3+2+1 ) = 99.  Where -1 is "not no
bit", -7 is "not only one bit", and the rest "not two bits".

> Actually it may be necessary to create some new lists,
> partly depending on whether the application can combine
> individual lists by itself.

Yes, bit 0 could replace only one "new list", not several.

But as long as you can express the condition for the "new
list" by a single boolean expression of the 7 multi bits,
one bit is good enough.  Excl. the special case "no bits",
because that would result in 127.0.0.1.

> And I just realized a major flaw in my suggestion to try
> 127.0.0.84 as a single list

84 = 64+16+4 (you said JP+OB+WS, I don't check it).  Let's
say that you want any combo where these 3 bits are set.

Then you have 3 fixed bits, and 4 free bits (at the moment
only 3 free bits, but you may want to add the 7th bit later).
2 ** 4 = 16, you need 16 result codes to identify all combos
with JP+OB+WS:

84,86, 92,94, 116,118, 124,126, (= 8 without the 7th bit,
for the remaining 8 combos just add 128, from 212 to 254)

> it will NOT have any JP + OB + WS + SC

That's 86 = 84 + 2.

> That kind of combination needs to be done by creating a
> new list on the data side, or special processing in the
> application.

Or by adding bit 0 on your side for THE one "optimal rule":
85,87, 93,95, 117,119, 125,127 (= same 8, now bit 0 is set)

> I will create some temporary test lists in the second or
> third octet of multi to test on corpora instead.

Yes, post a real complex boolean expression, it's fun stuff,
SURBL would set a new standard (impressing ISIPP and OPM ;-)

But don't touch the zeros in 127.0.0.? without warning, it
would break my poor <http://purl.net/xyzzy/src/rxwhois.cmd> :

| if SockGetHostByName( arg(1) || arg(2), 'P.' ) then do
|    if abbrev( P.ADDR, '127.0.0.' ) | abbrev( P.ADDR, '127.1.0.' )
|       then say arg(3) '(' || substr( P.ADDR, 9 ) || '):' arg(2)
|       else say 'erroneous result' P.ADDR 'for' arg(1) || arg(2)
|    return 1
| end      /* 127.1.0.1 .. 127.1.0.7 for .opm.blitzed.org(1+2+4) */
| return 0
              Bye, Frank




More information about the Discuss mailing list