- dbd (whois_rip)
The "master" daemon of the database system. All access
to the underlying database engine goes through this process.
It is implemented as a multi-threaded process,
and written in C.
The dbd daemon:
- answers to queries made with whois;
- receives update requests from dbupdate and the networkupdate
daemon with the update protocol
(single-object updates);
- does referral integrity checks for the updates;
- keeps in-memory the primary keys of routes, inetnums,
in-addr.arpa domains to answer specific queries
very efficiently;
- takes care of locking issues which are not handled by the
underlying database automatically;
- is the only "clean" entry-point to the underlying storage
system;
- answers to near-real-time mirrors on a specific port
(different than port 43), supplying them with
serials;
- has a special "admin port", to which the administrators
can connect (with telnet) and change some configuration
parameters on-the-fly.
- dbupdate
The front-end process for incoming updates. It starts
from .forward: the incoming update mail messages are
piped to dbupdate. It can also be invoked from command-line,
using a file as an argument. It is written in C, and C++ for the
object parser.
The dbupdate process:
- parses the headers of incoming mail and extracts the
relevant bits of information (like the from
address)
- does MIME decoding if needed;
- decodes PGP parts and verifies signatures if needed;
- parses the objects, verifies the syntax and reports syntax
errors;
- passes the objects to dbd with authentication information
with the update protocol, i.e. sending one object
at a time with the ADD, DEL or UPD instruction;
- sends acknowledgements and notifications.
Must pay extra attention in using the right exit codes
(should probably return 75 for ALL fatal errors and other
non-successful situations and report them to the database
management through some channel instead of sending ugly
bounces to senders).
- networkupdate
A dumb program which just reads an update from STDIN
and sends it to the networkupdate daemon. Written in Perl.
- networkupdate daemon
Started from inetd every time an update is sent from
networkupdate. It is actually the same binary as dbupdate,
invoked with a flag (namely, -n).