[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