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