The network database consists of files describing machines known
to the local installation and machines known publicly. The files
comprise multi-line tuples made up of attribute/value pairs of
the form attr=value or sometimes just attr. Each line starting
without white space starts a new tuple. Lines starting with #
The file /lib/ndb/local is the root of the database. Other files
are included in the database if a tuple with an attribute-value
pair of attribute database and no value exists in /lib/ndb/local.
Within the database tuple, each pair with attribute file identifies
a file to be included in the database. The files are searched
in the order they appear.
declares the database to be composed of the three files /lib/ndb/common,
/lib/ndb/local, and /lib/ndb/global. By default, /lib/ndb/local
is searched before the others. However, /lib/ndb/local may be
included in the database to redefine its ordering.
Within tuples, pairs on the same line bind tighter than pairs
on different lines.
Programs search the database directly using the routines in ndb(3).
The routine ndbipinfo imposes structure on the otherwise flat
database by using knowledge specific to the network. The internet
is made up of networks which can be subnetted multiple times.
A network must have an ipnet attribute and is uniquely identified
by the values of its ip
and ipmask attributes. If the ipmask is missing, the relevant
Class A, B or C one is used.
A search for an attribute associated with a network or host starts
at the lowest level, the entry for the host or network itself,
and works its way up, bit by bit, looking at entries for nets/subnets
that include the network or host. The search ends when the attribute
is found. For example, consider at the following entries:
Here anna is on the subnet plan9 which is in turn on the class
B net murray−hill. Assume that we’re searching for anna’s NTP
and SMTP servers. The search starts by looking for an entry with
sys=anna. We find the anna entry. Since it has an smtp=smtp2.cs.bell−labs.com
pair, we’re done looking for that attribute. To fulfill the NTP
request, we continue by looking for networks that include anna’s
IP address. We lop off the right most one bit from anna’s address
and look for an ipnet= entry with ip=184.108.40.206. Not finding
one, we drop another bit and look for an ipnet= entry with ip=220.127.116.11.
There is such an entry and it has the pair,
ntp=oncore.cs.bell−labs.com, ending our search.
A number of attributes are meaningful to programs and thus reserved.
ipnet=murray−hill ip=18.104.22.168 ipmask=255.255.0.0|
ipnet=plan9 ip=22.214.171.124 ipmask=255.255.255.0
ip=126.96.36.199 sys=anna dom=anna.cs.bell−labs.com
sys system name
dom Internet domain name
ip Internet address
ether Ethernet address
bootf file to download for initial bootstrap
ipnet Internet network name
ipmask Internet network mask
ipgw Internet gateway
auth authentication server to be used
authdom authentication domain. Plan 9 supports multiple authentication
domains. To specify an authentication server for a particular
domain, add a tuple containing both auth and authdom attributes
fs file server to be used
tcp a TCP service name
udp a UDP service name
il an IL service name
port a TCP, UDP, or IL port number
restricted a TCP service that can be called only by ports numbered
less that 1024
proto a protocol supported by a host.
dnsdomain a domain name that ndb/dns adds onto any unrooted names
when doing a search There may be multiple dnsdomain pairs.
dns a DNS server to use (for DNS and DHCP)
ntp an NTP server to use (for DHCP)
smtp an SMTP server to use (for DHCP)
time a time server to use (for DHCP)
wins a Windows name server (for DHCP)
mx mail exchanger (for DNS and DHCP)
soa start of area (for DNS)
A tuple for the CPU server, spindle.
sys = spindle|
Entries for the network mh−astro−net and its subnets.
ipnet=mh−astro−net ip=188.8.131.52 ipmask=255.255.255.0
Mappings between TCP service names and port numbers.
tcp=rexec port=512 restricted