glibc/hesiod
Ulrich Drepper f43ce637b5 Update.
1997-11-22 19:28  Ulrich Drepper  <drepper@cygnus.com>

	* iconv/gconv_simple.c: Fix lots of bugs.
	* iconv/iconv_open.c: Normalize names before passing them to
	__gconv_open.

	* libio/iolibio.h: Add prototypes for _IO_{new,old}_fclose.

	* libio/iopopen.c: Check for correct mode argument and punt otherwise.
	* stdio-common/test-popen.c: Add test for above change.

	* math/libm-test.c: Print test results also using %a format,
	specified in PRINTF_XEXPR macro.
	* math/test-double.c: Define PRINTF_XEXPR.
	* math/test-float.c: Likewise.
	* math/test-ldouble.c: Likewise.
	* math/test-idouble.c: Likewise.
	* math/test-ifloat.c: Likewise.
	* math/test-ildoubl.c: Likewise.

	* stdio-common/vfscanf.c: Recognize a in format specifier only as
	modifier if used before s, S, or [.  Otherwise it's the hexadecimal
	FP number format.

	* stdlib/strtod.c: Little code cleanup.

	* sysdeps/i386/Makefile: Define __LIBC_INTERNAL_MATH_INLINES for
	compiling in math subdir.

	* sysdeps/m68k/fpu/e_acos.c: Define __LIBC_INTERNAL_MATH_INLINES
	instead of __LIBC_M81_MATH_INLINES.
	* sysdeps/m68k/fpu/e_atan2.c: Likewise.
	* sysdeps/m68k/fpu/e_fmod.c: Likewise.
	* sysdeps/m68k/fpu/e_pow.c: Likewise.
	* sysdeps/m68k/fpu/e_scalb.c: Likewise.
	* sysdeps/m68k/fpu/k_cos.c: Likewise.
	* sysdeps/m68k/fpu/k_sin.c: Likewise.
	* sysdeps/m68k/fpu/k_tan.c: Likewise.
	* sysdeps/m68k/fpu/s_atan.c: Likewise.
	* sysdeps/m68k/fpu/s_ccos.c: Likewise.
	* sysdeps/m68k/fpu/s_ccosh.c: Likewise.
	* sysdeps/m68k/fpu/s_cexp.c: Likewise.
	* sysdeps/m68k/fpu/s_csin.c: Likewise.
	* sysdeps/m68k/fpu/s_csinh.c: Likewise.
	* sysdeps/m68k/fpu/s_frexp.c: Likewise.
	* sysdeps/m68k/fpu/s_ilogb.c: Likewise.
	* sysdeps/m68k/fpu/s_isinf.c: Likewise.
	* sysdeps/m68k/fpu/s_llrint.c: Likewise.
	* sysdeps/m68k/fpu/s_llrintf.c: Likewise.
	* sysdeps/m68k/fpu/s_llrintl.c: Likewise.
	* sysdeps/m68k/fpu/s_lrint.c: Likewise.
	* sysdeps/m68k/fpu/s_modf.c: Likewise.
	* sysdeps/m68k/fpu/s_remquo.c: Likewise.
	* sysdeps/m68k/fpu/s_scalbn.c: Likewise.
	* sysdeps/m68k/fpu/s_sincos.c: Likewise.
	* sysdeps/m68k/fpu/bits/mathinline.h: Define optimizations if
	__LIBC_INTERNAL_MATH_INLINES is defined.

	* sysdeps/i386/fpu/bits/mathinline.h: Define special i686 versions
	of compare macros from ISO C 9X.  Optimize generic versions a bit.
	Define __signbit inline functions and __ieee754_sqrt which can be
	used if the ompiler is fixed.

	* sysdeps/posix/sysv_signal.c: Define sysv_signal as weak alias.

1997-11-20  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules ($(common-objpfx)stub-$(subdir)): Look for
	sysdeps/generic in the whole dep file, not only in the first line.

1997-11-20  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/ieee754/bits/nan.h (__nan) [!__GNUC__]: Fix type.

1997-11-19  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/arith.texi (Imaginary Unit): Move @end deftypevr to right
	place.

1997-11-19  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* elf/dl-error.c (_dl_signal_error): Only print colon if OBJNAME
	is non-empty.

1997-11-20 16:51  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/malloc.c (malloc_update_mallinfo): Initialize struct for
	return value.

1997-11-19 21:36  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/getcwd.c: Free allocated buffer if
	readlink succeeds but the return value is too long.

	* stdio-common/printf_fphex.c: Determine sign of number correctly.

1997-11-19 02:45  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Export __divl, __reml, __divq, __remq, __divqu and
	__remqu for Alpha.

1997-11-18 23:08  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/sys/ucontext.h: Stub context file.

	* libio/iofprintf.c: Removed.  We use the stdio-common version.

	* manual/Makefile (distribute): Add stdio-fp.c.

	* sysdeps/powerpc/Dist: Add ppc-mcount.S.

	* db2/Makefile (distribute): Add include/os_func.h, README and
	mutex/tsl_parisc.s.

	* hesiod/Makefile (distribute): Add README.hesiod.

1997-11-18 22:14  Ulrich Drepper  <drepper@cygnus.com>

	* iconv/gconv.c: Correctly call transformation function.

	* manual/maint.texi: Document need of binutils 2.8.1.0.17.

1997-11-13  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdeps/libm-ieee754/s_remquo.c (__remquo): Fix function (gave
	wrong results for e.g. remquo (3,2, &x)).
	* sysdeps/libm-ieee754/s_remquof.c (__remquof): Likewise.
	* sysdeps/libm-ieee754/s_remquol.c (__remquol): Likewise.

1997-11-18  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* configure.in (ld --version-script): Test if the same symbol
	maybe defined in all versions (needed by recent changes to
	libc.map and supported with binutils 2.8.1.0.17) and issue warning
	if versioning is not supported/enabled.
	(bash test): Correct test case.

	* math/libm-test.c: Added counting/reporting of number of test cases.

	* elf/Makefile ($(objpfx)rtldtbl.h): gawk is not longer required,
	use awk instead.

	* sysdeps/unix/sysv/linux/net/if.h: Add __BEGIN_DECLS/__END_DECLS.

1997-11-18  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* elf/dl-load.c (_dl_init_paths): Correct __mempcpy logic.

1997-11-18 18:04  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/pty.c: Define REVOKE to use revoke function.
	Replace revoke call by use of REVOKE.
	* sysdeps/unix/sysv/linux/pty.c: New file.  Define REVOKE as
	empty and #include generic version.
	Suggested by Zack Weinberg <zack@rabi.phys.columbia.edu>.

1997-11-18 16:02  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Add socket functions with __libc_* names.
	Reported by Andreas Jaeger.

1997-11-18  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* libc.map: Tidy up (remove duplicates, sort entries).

1997-11-18  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* iconv/gconv.h: Add __BEGIN_DECLS/__END_DECLS.

1997-11-18 06:45  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/pty.c: Make thread safe.  Fix bug when calling
	again after successful call.
	Patch by Marc Lehmann <pcg@goof.com>.

1997-11-17  Paul Eggert  <eggert@twinsun.com>

	* time/mktime.c, time/strftime.c (_REENTRANT): #define,
	as some hosts need this to declare localtime_r properly.

1997-11-18 06:08  Ulrich Drepper  <drepper@cygnus.com>

	* libc.map: Add iconv_open, iconv, and iconv_close.
1997-11-22 18:49:27 +00:00
..
nss_hesiod Update. 1997-09-16 00:42:43 +00:00
hesiod_p.h Update. 1997-09-16 00:42:43 +00:00
hesiod.c Update. 1997-09-21 01:47:02 +00:00
hesiod.h Update. 1997-09-16 00:42:43 +00:00
libnss_hesiod.map Update. 1997-09-16 00:42:43 +00:00
Makefile Update. 1997-11-22 18:49:27 +00:00
README.hesiod Update. 1997-09-21 01:47:02 +00:00

The GNU C library contains an NSS module for the Hesiod name service.
Hesiod is a general name service for a variety of applications and is
based on the Berkeley Internet Name Daemon (BIND).

Introduction
============

The Hesiod NSS module implements access to all relevant standard
Hesiod types, which means that Hesiod can be used for the `group',
`passwd' and `services' databases.  There is however a restriction.
In the same way that it is impossible to use `gethostent()' to iterate
over all the data provided by DNS, it is not possible to scan the
entire Hesiod database by means of `getgrent()', `getpwent()' and
`getservent()'.  Besides, Hesiod only provides support for looking up
services by name and not for looking them up by port.  In essence this
means that the Hesiod name service is only consulted as a result of
one of the following function calls:

  * getgrname(), getgrgid()
  * getpwname(), getpwuid()
  * getservbyname()

and their reentrant counterparts.


Configuring your systems
========================

Configuring your systems to make use use the Hesiod name service
requires one or more of the following steps, depending on whether you
are already running Hesiod in your network.

Configuring NSS
---------------

First you should modify the file `/etc/nsswitch.conf' to tell
NSS for which database you want to use the Hesiod name service.  If
you want to use Hesiod for all databases it can handle your
configuration file could look like this:

  # /etc/nsswitch.conf
  #
  # Example configuration of GNU Name Service Switch functionality.
  #

  passwd:	  db files hesiod
  group:	  db files hesiod
  shadow:	  db files

  hosts:	  files dns
  networks:	  files dns

  protocols:	  db files
  services:	  db files hesiod
  ethers:	  db files
  rpc:		  db files

For more information on NSS, please refer to the `The GNU C Library
Reference Manual'.


Configuring Hesiod
------------------

Next, you will have to configure Hesiod.  If you are already running
Hesiod in your network, you probably already have a file named
`hesiod.conf' on your machines (probably as `/etc/hesiod.conf' or
`/usr/local/etc/hesiod.conf').  The Hesiod NSS module expects this
file to be found in the sysconfdir (`/usr/local/etc/hesiod.conf' by
default, see the installation notes on how to change this) or in the
location specified by the environment variable `HESIOD_CONFIG'.  If
there is no configuration file you will want to create your own.  It
should look something like:

  rhs=.your.domain
  lhs=.ns

The value of rhs can be overridden by the environment variable
HES_DOMAIN.

Configuring your name servers
-----------------------------

In addition, if you are not already running Hesiod in your network,
you need to create Hesiod information on your central name servers.
You need to run `named' from BIND 4.9 or higher on these servers, and
make them authoritative for the domain `ns.your.domain' with a line in
`/etc/named.boot' reading something like:

  primary         ns.your.domain          named.hesiod

or if you are using the new BIND 8.1 or higher add something to
`/etc/named.conf' like:

  zone "ns.your.domain" {
          type master;
          file "named.hesiod";
  };

Then in the BIND working directory (usually `/var/named') create the
file `named.hesiod' containing data that looks something like:

  ; SOA and NS records.
  @       IN      SOA     server1.your.domain admin-address.your.domain (
                  40000           ; serial - database version number
                  1800            ; refresh - sec servers
                  300             ; retry - for refresh
                  3600000         ; expire - unrefreshed data
                  7200 )          ; min
                  NS      server1.your.domain
                  NS      server2.your.domain

  ; Actual Hesiod data.
  libc.group      TXT     "libc:*:123:gnu,gnat"
  123.gid         CNAME   libc.group
  gnu.passwd      TXT     "gnu:*:4567:123:GNU:/home/gnu:/bin/bash"
  456.uid         CNAME   mark.passwd
  nss.service     TXT     "nss;tcp;789;switch sw "
  nss.service     TXT     "nss;udp;789;switch sw"

where `libc' is an example of a group, `gnu' an example of an user,
and `nss' an example of a service.  Note that the format used to
describe services differs from the format used in `/etc/services'.
For more information on `named' refer to the `Name Server Operations
Guide for BIND' that is included in the BIND distribution.


Security
========

Note that the information stored in the Hesiod database in principle
is publicly available.  Care should be taken with including vulnerable
information like encrypted passwords in the Hesiod database.  There
are some ways to improve security by using features provided by
`named' (see the discussion about `secure zones' in the BIND
documentation), but one should keep in mind that Hesiod was never
intended to distribute passwords.  In the origional design
authenticating users was the job of the Kerberos service.


More information
================

For more information on the Hesiod name service take a look at some of
the papers in ftp://athena-dist.mit.edu:/pub/ATHENA/usenix and the
documentation that accompanies the source code for the Hesiod name
service library in ftp://athena-dist.mit.edu:/pub/ATHENA/hesiod.

There is a mailing list at MIT for Hesiod users, hesiod@mit.edu.  To
get yourself on or off the list, send mail to hesiod-request@mit.edu.