xref: /dflybsd-src/lib/libc/net/nsdispatch.3 (revision 25c75583712e943b0cb3cb138b4702a2bcdec3f4)
1ed5d5720SPeter Avalos.\"	$NetBSD: nsdispatch.3,v 1.8 1999/03/22 19:44:53 garbled Exp $
2ed5d5720SPeter Avalos.\"
3ed5d5720SPeter Avalos.\" Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
4ed5d5720SPeter Avalos.\" All rights reserved.
5ed5d5720SPeter Avalos.\"
6ed5d5720SPeter Avalos.\" This code is derived from software contributed to The NetBSD Foundation
7ed5d5720SPeter Avalos.\" by Luke Mewburn.
8ed5d5720SPeter Avalos.\"
9ed5d5720SPeter Avalos.\" Redistribution and use in source and binary forms, with or without
10ed5d5720SPeter Avalos.\" modification, are permitted provided that the following conditions
11ed5d5720SPeter Avalos.\" are met:
12ed5d5720SPeter Avalos.\" 1. Redistributions of source code must retain the above copyright
13ed5d5720SPeter Avalos.\"    notice, this list of conditions and the following disclaimer.
14ed5d5720SPeter Avalos.\" 2. Redistributions in binary form must reproduce the above copyright
15ed5d5720SPeter Avalos.\"    notice, this list of conditions and the following disclaimer in the
16ed5d5720SPeter Avalos.\"    documentation and/or other materials provided with the distribution.
17ed5d5720SPeter Avalos.\" 4. Neither the name of The NetBSD Foundation nor the names of its
18ed5d5720SPeter Avalos.\"    contributors may be used to endorse or promote products derived
19ed5d5720SPeter Avalos.\"    from this software without specific prior written permission.
20ed5d5720SPeter Avalos.\"
21ed5d5720SPeter Avalos.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
22ed5d5720SPeter Avalos.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23ed5d5720SPeter Avalos.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24ed5d5720SPeter Avalos.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
25ed5d5720SPeter Avalos.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26ed5d5720SPeter Avalos.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27ed5d5720SPeter Avalos.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28ed5d5720SPeter Avalos.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29ed5d5720SPeter Avalos.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30ed5d5720SPeter Avalos.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31ed5d5720SPeter Avalos.\" POSSIBILITY OF SUCH DAMAGE.
32ed5d5720SPeter Avalos.\"
33ed5d5720SPeter Avalos.\" $FreeBSD: src/lib/libc/net/nsdispatch.3,v 1.14 2007/01/22 11:45:25 bms Exp $
34ed5d5720SPeter Avalos.\"
35ed5d5720SPeter Avalos.Dd January 22, 2007
36ed5d5720SPeter Avalos.Dt NSDISPATCH 3
37ed5d5720SPeter Avalos.Os
38ed5d5720SPeter Avalos.Sh NAME
39ed5d5720SPeter Avalos.Nm nsdispatch
40ed5d5720SPeter Avalos.Nd name-service switch dispatcher routine
41ed5d5720SPeter Avalos.Sh LIBRARY
42ed5d5720SPeter Avalos.Lb libc
43ed5d5720SPeter Avalos.Sh SYNOPSIS
44ed5d5720SPeter Avalos.In sys/types.h
45ed5d5720SPeter Avalos.In stdarg.h
46ed5d5720SPeter Avalos.In nsswitch.h
47ed5d5720SPeter Avalos.Ft int
48ed5d5720SPeter Avalos.Fo nsdispatch
49ed5d5720SPeter Avalos.Fa "void *retval"
50ed5d5720SPeter Avalos.Fa "const ns_dtab dtab[]"
51ed5d5720SPeter Avalos.Fa "const char *database"
52ed5d5720SPeter Avalos.Fa "const char *method_name"
53ed5d5720SPeter Avalos.Fa "const ns_src defaults[]"
54ed5d5720SPeter Avalos.Fa "..."
55ed5d5720SPeter Avalos.Fc
56ed5d5720SPeter Avalos.Sh DESCRIPTION
57ed5d5720SPeter AvalosThe
58ed5d5720SPeter Avalos.Fn nsdispatch
59ed5d5720SPeter Avalosfunction invokes the methods specified in
601e5a5a20SSascha Wildner.Fa dtab
61ed5d5720SPeter Avalosin the order given by
62ed5d5720SPeter Avalos.Xr nsswitch.conf 5
63ed5d5720SPeter Avalosfor the database
641e5a5a20SSascha Wildner.Fa database
65ed5d5720SPeter Avalosuntil a successful entry is found.
66ed5d5720SPeter Avalos.Pp
671e5a5a20SSascha Wildner.Fa retval
68ed5d5720SPeter Avalosis passed to each method to modify as necessary, to pass back results to
69ed5d5720SPeter Avalosthe caller of
70ed5d5720SPeter Avalos.Fn nsdispatch .
71ed5d5720SPeter Avalos.Pp
72ed5d5720SPeter AvalosEach method has the function signature described by the typedef:
73ed5d5720SPeter Avalos.Pp
74ed5d5720SPeter Avalos.Ft typedef int
75*25c75583SFranco Fichtner.Fn (*nss_method) "void *retval" "void *mdata" "va_list *ap" ;
761e5a5a20SSascha Wildner.Bl -item
771e5a5a20SSascha Wildner.It
781e5a5a20SSascha Wildner.Fa dtab
79ed5d5720SPeter Avalosis an array of
801e5a5a20SSascha Wildner.Vt ns_dtab
81ed5d5720SPeter Avalosstructures, which have the following format:
821e5a5a20SSascha Wildner.Bl -item -offset indent
831e5a5a20SSascha Wildner.It
841e5a5a20SSascha Wildner.Bd -literal
85ed5d5720SPeter Avalostypedef struct _ns_dtab {
86ed5d5720SPeter Avalos	const char	*src;
87ed5d5720SPeter Avalos	nss_method	 method;
88ed5d5720SPeter Avalos	void		*mdata;
89ed5d5720SPeter Avalos} ns_dtab;
90ed5d5720SPeter Avalos.Ed
911e5a5a20SSascha Wildner.It
92ed5d5720SPeter AvalosThe
93ed5d5720SPeter Avalos.Fa dtab
94ed5d5720SPeter Avalosarray should consist of one entry for each source type that is
95ed5d5720SPeter Avalosimplemented, with
961e5a5a20SSascha Wildner.Fa src
97ed5d5720SPeter Avalosas the name of the source,
981e5a5a20SSascha Wildner.Fa method
99ed5d5720SPeter Avalosas a function which handles that source, and
1001e5a5a20SSascha Wildner.Fa mdata
101ed5d5720SPeter Avalosas a handle on arbitrary data to be passed to the method.
102ed5d5720SPeter AvalosThe last entry in
1031e5a5a20SSascha Wildner.Fa dtab
104ed5d5720SPeter Avalosshould contain
105ed5d5720SPeter Avalos.Dv NULL
106ed5d5720SPeter Avalosvalues for
1071e5a5a20SSascha Wildner.Fa src ,
1081e5a5a20SSascha Wildner.Fa method ,
109ed5d5720SPeter Avalosand
1101e5a5a20SSascha Wildner.Fa mdata .
1111e5a5a20SSascha Wildner.El
112ed5d5720SPeter Avalos.Pp
113ed5d5720SPeter AvalosAdditionally, methods may be implemented in NSS modules, in
114ed5d5720SPeter Avaloswhich case they are selected using the
115ed5d5720SPeter Avalos.Fa database
116ed5d5720SPeter Avalosand
117ed5d5720SPeter Avalos.Fa method_name
118ed5d5720SPeter Avalosarguments along with the configured source.
119ed5d5720SPeter Avalos(The methods supplied via
120ed5d5720SPeter Avalos.Fa dtab
121ed5d5720SPeter Avalostake priority over those implemented in NSS modules in the event
122ed5d5720SPeter Avalosof a conflict.)
1231e5a5a20SSascha Wildner.It
1241e5a5a20SSascha Wildner.Fa defaults
125ed5d5720SPeter Avaloscontains a list of default sources to try if
126ed5d5720SPeter Avalos.Xr nsswitch.conf 5
127ed5d5720SPeter Avalosis missing or corrupted, or if there is no relevant entry for
1281e5a5a20SSascha Wildner.Fa database .
129ed5d5720SPeter AvalosIt is an array of
1301e5a5a20SSascha Wildner.Vt ns_src
131ed5d5720SPeter Avalosstructures, which have the following format:
1321e5a5a20SSascha Wildner.Bl -item -offset indent
1331e5a5a20SSascha Wildner.It
1341e5a5a20SSascha Wildner.Bd -literal
135ed5d5720SPeter Avalostypedef struct _ns_src {
136ed5d5720SPeter Avalos	const char	*src;
137ed5d5720SPeter Avalos	u_int32_t	 flags;
138ed5d5720SPeter Avalos} ns_src;
139ed5d5720SPeter Avalos.Ed
1401e5a5a20SSascha Wildner.It
141ed5d5720SPeter AvalosThe
142ed5d5720SPeter Avalos.Fa defaults
143ed5d5720SPeter Avalosarray should consist of one entry for each source to be configured by
144ed5d5720SPeter Avalosdefault indicated by
1451e5a5a20SSascha Wildner.Fa src ,
146ed5d5720SPeter Avalosand
1471e5a5a20SSascha Wildner.Fa flags
148ed5d5720SPeter Avalosset to the criterion desired
149ed5d5720SPeter Avalos(usually
150ed5d5720SPeter Avalos.Dv NS_SUCCESS ;
151ed5d5720SPeter Avalosrefer to
152ed5d5720SPeter Avalos.Sx Method return values
153ed5d5720SPeter Avalosfor more information).
154ed5d5720SPeter AvalosThe last entry in
1551e5a5a20SSascha Wildner.Fa defaults
156ed5d5720SPeter Avalosshould have
1571e5a5a20SSascha Wildner.Fa src
158ed5d5720SPeter Avalosset to
159ed5d5720SPeter Avalos.Dv NULL
160ed5d5720SPeter Avalosand
1611e5a5a20SSascha Wildner.Fa flags
162ed5d5720SPeter Avalosset to 0.
1631e5a5a20SSascha Wildner.It
164ed5d5720SPeter AvalosFor convenience, a global variable defined as:
165ed5d5720SPeter Avalos.Dl extern const ns_src __nsdefaultsrc[];
166ed5d5720SPeter Avalosexists which contains a single default entry for the source
167ed5d5720SPeter Avalos.Sq files
168ed5d5720SPeter Avalosthat may be used by callers which do not require complicated default
169ed5d5720SPeter Avalosrules.
1701e5a5a20SSascha Wildner.El
1711e5a5a20SSascha Wildner.It
1721e5a5a20SSascha Wildner.Sq Fa ...
173ed5d5720SPeter Avalosare optional extra arguments, which are passed to the appropriate method
174ed5d5720SPeter Avalosas a variable argument list of the type
175ed5d5720SPeter Avalos.Vt va_list .
1761e5a5a20SSascha Wildner.El
177ed5d5720SPeter Avalos.Ss Valid source types
178ed5d5720SPeter AvalosWhile there is support for arbitrary sources, the following
179ed5d5720SPeter Avalos#defines for commonly implemented sources are available:
180ed5d5720SPeter Avalos.Bl -column NSSRC_COMPAT compat -offset indent
181ed5d5720SPeter Avalos.It Sy "#define	value"
182a29672a5SSascha Wildner.It Dv NSSRC_FILES Ta \&"files"
183a29672a5SSascha Wildner.It Dv NSSRC_DNS Ta \&"dns"
184a29672a5SSascha Wildner.It Dv NSSRC_NIS Ta \&"nis"
185a29672a5SSascha Wildner.It Dv NSSRC_COMPAT Ta \&"compat"
186ed5d5720SPeter Avalos.El
187ed5d5720SPeter Avalos.Pp
188ed5d5720SPeter AvalosRefer to
189ed5d5720SPeter Avalos.Xr nsswitch.conf 5
190ed5d5720SPeter Avalosfor a complete description of what each source type is.
191ed5d5720SPeter Avalos.Ss Method return values
192ed5d5720SPeter AvalosThe
193ed5d5720SPeter Avalos.Vt nss_method
194ed5d5720SPeter Avalosfunctions must return one of the following values depending upon status
195ed5d5720SPeter Avalosof the lookup:
196ed5d5720SPeter Avalos.Bl -column "Return value" "Status code"
197ed5d5720SPeter Avalos.It Sy "Return value	Status code"
198ed5d5720SPeter Avalos.It Dv NS_SUCCESS Ta success
199ed5d5720SPeter Avalos.It Dv NS_NOTFOUND Ta notfound
200ed5d5720SPeter Avalos.It Dv NS_UNAVAIL Ta unavail
201ed5d5720SPeter Avalos.It Dv NS_TRYAGAIN Ta tryagain
202ed5d5720SPeter Avalos.It Dv NS_RETURN Ta -none-
203ed5d5720SPeter Avalos.El
204ed5d5720SPeter Avalos.Pp
205ed5d5720SPeter AvalosRefer to
206ed5d5720SPeter Avalos.Xr nsswitch.conf 5
207ed5d5720SPeter Avalosfor a complete description of each status code.
208ed5d5720SPeter Avalos.Pp
209ed5d5720SPeter AvalosThe
210ed5d5720SPeter Avalos.Fn nsdispatch
211ed5d5720SPeter Avalosfunction returns the value of the method that caused the dispatcher to
212ed5d5720SPeter Avalosterminate, or
213ed5d5720SPeter Avalos.Dv NS_NOTFOUND
214ed5d5720SPeter Avalosotherwise.
215ed5d5720SPeter Avalos.Sh NOTES
216ed5d5720SPeter Avalos.Dx Ns 's
217ed5d5720SPeter Avalos.Lb libc
218ed5d5720SPeter Avalosprovides stubs for compatibility with NSS modules
219ed5d5720SPeter Avaloswritten for the
220ed5d5720SPeter Avalos.Tn GNU
221ed5d5720SPeter AvalosC Library
222ed5d5720SPeter Avalos.Nm nsswitch
223ed5d5720SPeter Avalosinterface.
224ed5d5720SPeter AvalosHowever, these stubs only support the use of the
225ed5d5720SPeter Avalos.Dq Li passwd
226ed5d5720SPeter Avalosand
227ed5d5720SPeter Avalos.Dq Li group
228ed5d5720SPeter Avalosdatabases.
229ed5d5720SPeter Avalos.Sh SEE ALSO
230ed5d5720SPeter Avalos.Xr hesiod 3 ,
231ed5d5720SPeter Avalos.Xr stdarg 3 ,
232ed5d5720SPeter Avalos.Xr nsswitch.conf 5 ,
233ed5d5720SPeter Avalos.Xr yp 8
234ed5d5720SPeter Avalos.Sh HISTORY
235ed5d5720SPeter AvalosThe
236ed5d5720SPeter Avalos.Fn nsdispatch
237ed5d5720SPeter Avalosfunction first appeared in
238ed5d5720SPeter Avalos.Dx 2.1 .
239ed5d5720SPeter AvalosIt was imported from the
240ed5d5720SPeter Avalos.Fx
241ed5d5720SPeter AvalosProject,
242ed5d5720SPeter Avaloswhere it appeared first in
243ed5d5720SPeter Avalos.Fx 5.0 .
244ed5d5720SPeter Avalos.Sh AUTHORS
24598b3d9adSFranco Fichtner.An Luke Mewburn Aq Mt lukem@netbsd.org
246ed5d5720SPeter Avaloswrote this freely-distributable name-service switch implementation,
247ed5d5720SPeter Avalosusing ideas from the
248ed5d5720SPeter Avalos.Tn ULTRIX
249ed5d5720SPeter Avalossvc.conf(5)
250ed5d5720SPeter Avalosand
251ed5d5720SPeter Avalos.Tn Solaris
252ed5d5720SPeter Avalosnsswitch.conf(4)
253ed5d5720SPeter Avalosmanual pages.
254ed5d5720SPeter AvalosThe
255ed5d5720SPeter Avalos.Fx
256ed5d5720SPeter AvalosProject
257ed5d5720SPeter Avalosadded the support for threads and NSS modules, and normalized the uses
258ed5d5720SPeter Avalosof
259ed5d5720SPeter Avalos.Fn nsdispatch
260ed5d5720SPeter Avaloswithin the standard C library.
261