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>