[rbldnsd] Rbldnsd-0.81pre1 release: RFC.

Michael Tokarev rbldnsd@corpit.ru
Thu, 03 Apr 2003 01:04:27 +0400


Experimental, but it seems to be stable so far.
Except of newly introduced duplicate entry elimination
(that may be disabled at compile time), 0.81pre1 is
more accurate than 0.80, that is, less surprizes and
more intuitive behaviour when there are multiple files
with different defaults in a single data set.

 From the change log:

2003-04-03 0.81pre1

  - revisited default A/TXT values handling when reading multiple files.
    Now, ip4set and dnset will get A/TXT from the FIRST file, :A:TXT in
    subsequent files will be ignored; ip4vset and dnvset will not assign
    A/TXT from previous file if a given file has no :A:TXT line.

  - corrected a typo in ip4cidr.c: reversed error return.  Does not
    affect rbldnsd (happened only when ip4cidr was called with zero
    last argument)

  - added code to remove duplicates from zones.  Enabled by default,
    may be disabled by adding DEFS=-DNOREMOVEDUPS when compiling (maybe
    made this runtime-configurable? But not per-zone, please!..;).
    Tested on concatenation of list.dsbl.org (192796 entries) and
    unconfirmed.dsbl.org (209198 entries, list.dsbl.org is completely
    included into unconfirmed): On PII-233 machine, using ip4vset,
    load time is
      0m5.910s when not removing dups, and
      0m6.030s when removing dups
    so the difference is almost unnotiseable.

Note: duplicate removal will not work across records of different
"weight".  I.e. if there is a record 127.0.0/24 (that covers 256
IP addresses), AND all 256 records in 127.0.0.0-127.0.0.255 range,
those 256 will not be detected as duplicates and removed.

(Note about implementation: IP addresses are keept in 4 arrays,
one for /32 addresses, another for /24 ranges, another for /16
ranges and another for /8 ranges (if there will be such blocklists...).
So, e.g. one /25 entry will result in 128 entries in last /32 array,
one /24 entry will be placed as is into /24 array, one /23 is treated
the same as two /24, ..., one /17 entry will result in 128 entries
being added into /24 array, and one /16 will be added to /16 array.
So, duplication removal works on every array at a time, not looking
into upper-level arrays.  This is unlikely to change, since in ip4vset,
there may be exclusions that should be taken care of, and this will
require quite some processing).

Please let me know how all this behaves together:

  - new 0.80 style with multiple data sets and multiple files,
    and with ugly command line ;).  Note that it seems one have
    to experiment with all possible combinations to understand
    how all this works.

  - duplicate removals

  - 0.80 `generic' type.

It seems rbldnsd is almost complete now (modulo the TODO items in
rbldnsd.c file (revisited, please look and find your favorite feature! ;),
most important is AXFR), and I want some comments about it's defects
etc.

Thank you.

/mjt