Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Apr 2003 09:11:33 -0500
From:      "Jacques A. Vidrine" <nectar@FreeBSD.org>
To:        freebsd-current@FreeBSD.org
Subject:   HEADS UP: new NSS
Message-ID:  <20030417141133.GA4155@madman.celabo.org>

next in thread | raw e-mail | index | archive | help
Hello Everyone,

[Skip to WARNINGs below if you read nothing else.]

I am about to commit a new name service switch (NSS) implementation.
The new implementation preserves the nsdispatch(3) interface, and
consumers of nsdispatch continue to work without modification.
However, now the method_name argument (in addition to the dtab
argument) is used to lookup backend implementations, which may be
built-in statically or loaded via dlopen(3).

Within libc, there are several consumers of nsdispatch.  Each use
in effect defines an interface [1].  Unfortunately, the interfaces
brought in from NetBSD leave something to be desired.  Most
importantly, they do not allow for thread safety.  Also important is
that they are inconsistent in both naming conventions and semantics.
Because of this, it is necessary rework each consumer a bit to (a) add
thread safety and (b) provide an interface that can be utilized by NSS
modules.

For the moment, in addition to the NSS core, I am committing
completely new implementations of the getpwent(3) and getgrent(3)
family of functions.  Please report any anomalies to me directly, as
well as on this list.

Other nsdispatch consumers will be updated once this has settled a
bit.  Notably, the resolver-related routines (gethostby*, getaddrinfo)
still need to be updated and required quite a bit of work.

I am also adding a nss_ldap Port which supports getpwent(3),
getgrent(3).  Similarly, I am committing a WITH_WINBIND_NSS knob to
the samba Port which will build and install nss_windbind.

WARNING: Please back up your pwd.db/spwd.db databases.  A new (but
backwards-compatible) on-disk format will be used when you next run
pwd_mkdb(8) (or when vipw(8) runs it for you).  The new format can
be moved from one architecture to another.

WARNING: The `compat' code was and is very hairy.  Users who utilize
NIS using the old `+::::::' entries in passwd(5) (or exclusion lists,
or netgroups) should be especially wary.  The new code is not bug
compatible with the old code, but I believe it is correct.

(By the way, I could use help from interested doc committers.  Please
contact me off-list.)

Cheers,
-- 
Jacques A. Vidrine <nectar@celabo.org>          http://www.celabo.org/
NTT/Verio SME          .     FreeBSD UNIX     .       Heimdal Kerberos
jvidrine@verio.net     .  nectar@FreeBSD.org  .          nectar@kth.se

[1] If you've looked at nsdispatch before, you know that it uses
variable arguments.  The number, type, and usage of these arguments,
as well as the method_name, make up the interface.  In order to
facilitate adopting existing NSS modules for FreeBSD, I am attempting
to track the interfaces used on Linux (e.g., in addition to the
obvious arguments to getpwnam_r, the NSS interface also includes
explicit handling of errno).



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030417141133.GA4155>