- dbd
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 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 C.
- networkupdate daemon
Started from inetd every time an update is sent from
networkupdate. It has exactly the same function as dbupdate,
and it could actually be the same binary invoked
with a different option.