
************************************************************************
************************************************************************
**  THIS FILE IS FROM THE ORIGINAL SOURCES. IT IS NOT VALID FOR THIS  **
**  PORT OF THE LIBRARY.                                              **
**                        Thorsten Kukuk <kukuk@vt.uni-paderborn.de>  **
************************************************************************
************************************************************************

This is a preliminary release of an NIS+ database backend library which,
with a little luck and elbow grease, should ultimately become part of
a complete NIS+ client and server implementation for FreeBSD 2.x. All
the functions specified in the nis_db(3n) man page have been implemented.
This code is being released mainly just so that others can have a look
at it and perhaps offer comments, cricitisms or improvements. The odds
are very good this code will undergo more changes before it is finally
merged into the FreeBSD source tree.

This release contains both source code and precompiled libraries for
FreeBSD 2.x. Static, profiled and dynamic libraries are supplied.
If you want to build the library from the sources, you must have the 
following things available:

- An implementation of the SunRPC library, mainly for the XDR routines
  which are a part of it.

- A reasonably recent version of rpcgen. I use rpcgen.new from the
  Sun TI-RPC 2.3 distribution. If you use something other than this,
  you may need to adjust the RPCGEN= specification in Makefile.inc.
  (Older versions of rpcgen don't support the -C flag, which is used
  to force the generation of ANSI C stubs, headers and XDR filters.)

- The <sys/queue.h> header from 4.BSD. This header contains macros
  that simplify the use of various kinds of linked lists, particularly
  circular queues. (I use circular queues for db handle management.)
  You can grab this header straight out of the FreeBSD, NetBSD or
  OpenBSD source distributions, or from the 4.4BSD-Lite tape/CD.

- A BSD-style make(1) (also known as pmake). If you don't have pmake
  or a port of it for your particular OS, you will need to rework the
  Makefiles a little. This is not an especially difficult feat, so
  try not to get too bent out of shape over this, okay?

- gcc 2.6.3 or greater, or some other reasonably sane ANSI C compiler.
  I use gcc 2.6.3 in my development environment. I have verified that
  gcc 2.7.2 works as well.

- If you want to build shared libraries on a non-BSD platform, you'll
  need to work out the details yourself and modify the Makefiles as
  needed.

If you have FreeBSD-current, you should already have everything you
need. If you have FreeBSD-2.1.x, OpenBSD or NetBSD, then you should
also have everything you need, except you'll have to remove the -C
flag from the RPCGEN= command specification in Makefile.inc.

Also included with the library sources are the NIS+ RPC protocol definition
files and some related headers. These were released as part of the
TI-RPCSRC 2.3 distribution, available from playground.sun.com. I have
updated some of the headers slightly to reflect changes made in the
Solaris 2.5.x versions of these files. You can negate the changes by
rpcgen'ing or compiling with -DORIGINAL_DECLS.

The library requires the use of some of the main NIS+ XDR functions,
which are generated from nis.x. Ideally, these functions should be
in a seperate library, either librpcsvc or libc for BSD systems, or
libnsl for SYSV systems. However, at this time, only Solaris has these
functions already present in its systems libraries, therefore it is
necessary to include them with libnisdb when building it on other
platforms. Therefore, the precompiled libraries in this distribution
have the rpc_xdr.o module included. This will change once FreeBSD's
NIS+ support is completed.

Assuming you have all the necessary pre-requisites, building the library
should be as simple as typing 'make.' A small build.sh script is included
for use with FreeBSD 2.2.x which creates an object directory under the
current directory. The various object files and finished libraries will
be placed there by the build process. This helps keep the source directory
from becoming cluttered. Ideally, the files in db/rpcsvc should be installed
in /usr/include/rpcsvc, however this will not serve much purpose until
the rest of the NIS+ package is completed.

Send questions, comments or large bags of cash to:

Bill Paul <wpaul@ctr.columbia.edu>
System Manager
Center For Telecommunications Research
Columbia University, New York City

# $Id: RELEASE,v 1.1.1.1 1998/10/11 16:19:43 kukuk Exp $
