Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2X) — Plan9 1st Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ndb(6)

ndb(8)

NDB(2X)

NAME

ndbopen, ndbclose, ndbreopen, ndbsearch, ndbsnext, ndbgetval, ndbfree, ipattr, ipinfo, ndbhash, ndbseek, ndbparse − network database

SYNOPSIS

­#include <bio.h>
­#include <ndb.h>

Ndb∗ndbopen(char ∗file);

intndbreopen(Ndb ∗db);

voidndbclose(Ndb ∗db);

Ndbtuple∗ndbsearch(Ndb ∗db, Ndbs ∗s, char ∗attr, char ∗val);

Ndbtuple∗ndbsnext(Ndbs ∗s, char ∗attr, char ∗val);

Ndbtuple∗ndbgetval(Ndb ∗db, Ndbs ∗s, char ∗attr, char ∗val,
char ∗rattr, char ∗buf);

voidndbfree(Ndbtuple ∗db);

char∗ipattr(char ∗name);

intipinfo(Ndb ∗db, char ∗ether, char ∗ip, char ∗name,
­Ipinfo ∗iip);

ulongndbhash(char ∗val, int hlen);

longndbseek(Ndb ∗db, long off, int whence);

Ndbtuple∗ndbparse(Ndb ∗db);

DESCRIPTION

These routines are used by network administrative programs to search the network database.  They operate on the database files described in ndb(6).

­Ndbopen opens the database ­file and calls malloc(2) to allocate a buffer for it. If ­file is zero, all network database files are opened. 

­Ndbreopen checks if the database files associated with ­db have changed and if so throws out any cached information and reopens the files. 

­Ndbclose closes any database files associated with ­db and frees all storage associated with them. 

­Ndbsearch and ­ndbsnext search a database for an entry containing the attribute/value pair, attr=val. ­Ndbsearch is used to find the first match and ­ndbsnext is used to find each successive match.  On a successful search both return a linked list of ­Ndbtuple structures acquired by malloc(2) that represent the attribute/value pairs in the entry. On failure they return zero.

typedef struct Ndbtuple Ndbtuple;
struct Ndbtuple {
        char      attr[Ndbalen];
        char      val[Ndbvlen];
        Ndbtuple  ∗entry;
        Ndbtuple  ∗line;
};

The ­entry pointers chain together all pairs in the entry in a null terminated list.  The ­line pointers chain together all pairs on the same line in a circular list.  Thus, a program can implement 2 levels of binding for pairs in an entry.  In general, pairs on the same line are bound tighter than pairs on different lines. 

The structure ­Ndbs is used to link successive searches. 

typedef struct Ndbs Ndbs;
struct Ndbs {
        Ndb      ∗db;   /∗ data base file being searched ∗/
        ...
        Ndbtuple ∗t;    /∗ last attribute value pair found ∗/
};

The ­t field points to the pair within the entry matched by the ­ndbsearch or ndbsnext.

­Ndbgetval searches the database for an entry containing not only an attribute/value pair, attr=val, but also a pair with the attribute rattr. If successful, it copies the value associated with ­rattr into ­buf.  ­Buf must point to an area at least ­Ndbvlen long. 

­Ndbfree frees a list of tuples returned by one of the other routines. 

­Ipattr takes the name of an IP system and returns the attribute it corresponds to:

­dom domain name

­ip Internet number

­sys system name

­Ipinfo searches the database for Internet Protocol information about a system and returns it in the structure addressed by iip.  The arguments ­ether (textual Ethernet address), ­ip (textual IP address), and ­name identify the system.  At least one must be non-zero.  ­Ipinfo returns 0 if successful, −1 otherwise.  Both bootp(8) and ipconfig(8) use ­ipinfo to search the database. 

The last three calls are used by programs that create the hash tables and database files.  ­Ndbhash computes a hash offset into a table of length ­hlen for the string val. ­Ndbseek causes a subsequent read, write, or ­ndbparse of the database file to start at the position specified by the last two arguments.  These arguments have the same meaning as the last two arguments of seek(2). ­Ndbseek returns a negative number on error.  ­Ndbparse reads and parses the next entry from the database file.  Multiple ndbparse’s without intervening ndbseek’s parse sequential entries in the database file. A zero is returned at end of file.

SEE ALSO

ndb(6) ndb(8)

Plan 9  —  January 03, 1993

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026