11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* $NetBSD: nsswitch.h,v 1.18 2005/11/29 03:12:58 christos Exp $ */ 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*- 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc. 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * All rights reserved. 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * This code is derived from software contributed to The NetBSD Foundation 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * by Luke Mewburn. 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Redistribution and use in source and binary forms, with or without 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * modification, are permitted provided that the following conditions 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * are met: 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * notice, this list of conditions and the following disclaimer. 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * documentation and/or other materials provided with the distribution. 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 3. All advertising materials mentioning features or use of this software 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * must display the following acknowledgement: 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * This product includes software developed by the NetBSD 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Foundation, Inc. and its contributors. 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 4. Neither the name of The NetBSD Foundation nor the names of its 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * contributors may be used to endorse or promote products derived 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * from this software without specific prior written permission. 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * POSSIBILITY OF SUCH DAMAGE. 371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _NSSWITCH_H 401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _NSSWITCH_H 1 411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/types.h> 431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <stdarg.h> 441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSS_MODULE_INTERFACE_VERSION 0 461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _PATH_NS_CONF 481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _PATH_NS_CONF "/etc/nsswitch.conf" 491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_CONTINUE 0 521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_RETURN 1 531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Layout of: 561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * uint32_t ns_src.flags 571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* nsswitch.conf status codes and nsdispatch(3) return values */ 591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_SUCCESS (1<<0) /* entry was found */ 601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_UNAVAIL (1<<1) /* source not responding, or corrupt */ 611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_NOTFOUND (1<<2) /* source responded 'no such entry' */ 621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_TRYAGAIN (1<<3) /* source busy, may respond to retrys */ 631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_STATUSMASK 0x000000ff /* bitmask to get the status flags */ 641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* internal nsdispatch(3) flags; not settable in nsswitch.conf(5) */ 661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_FORCEALL (1<<8) /* force all methods to be invoked; */ 671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Currently implemented sources. 701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSSRC_FILES "files" /* local files */ 721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSSRC_DNS "dns" /* DNS; IN for hosts, HS for others */ 731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSSRC_NIS "nis" /* YP/NIS */ 741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSSRC_COMPAT "compat" /* passwd,group in YP compat mode */ 751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Currently implemented databases. 781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_HOSTS "hosts" 801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_GROUP "group" 811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_GROUP_COMPAT "group_compat" 821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_NETGROUP "netgroup" 831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_NETWORKS "networks" 841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_PASSWD "passwd" 851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_PASSWD_COMPAT "passwd_compat" 861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_SHELLS "shells" 871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Suggested databases to implement. 901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_ALIASES "aliases" 921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_AUTH "auth" 931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_AUTOMOUNT "automount" 941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_BOOTPARAMS "bootparams" 951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_ETHERS "ethers" 961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_EXPORTS "exports" 971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_NETMASKS "netmasks" 981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_PHONES "phones" 991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_PRINTCAP "printcap" 1001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_PROTOCOLS "protocols" 1011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_REMOTE "remote" 1021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_RPC "rpc" 1031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_SENDMAILVARS "sendmailvars" 1041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_SERVICES "services" 1051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_TERMCAP "termcap" 1061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NSDB_TTYS "ttys" 1071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_dtab `callback' function signature. 1101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef int (*nss_method)(void *, void *, va_list); 1121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_dtab - `nsswitch dispatch table' 1151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Contains an entry for each source and the appropriate function to call. 1161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct { 1181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *src; 1191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project nss_method callback; 1201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void *cb_data; 1211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ns_dtab; 1221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Macros to help build an ns_dtab[] 1251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_FILES_CB(F,C) { NSSRC_FILES, F, __UNCONST(C) }, 1271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define NS_COMPAT_CB(F,C) { NSSRC_COMPAT, F, __UNCONST(C) }, 1281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef HESIOD 1301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define NS_DNS_CB(F,C) { NSSRC_DNS, F, __UNCONST(C) }, 1311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else 1321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define NS_DNS_CB(F,C) 1331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef YP 1361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define NS_NIS_CB(F,C) { NSSRC_NIS, F, __UNCONST(C) }, 1371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else 1381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define NS_NIS_CB(F,C) 1391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_src - `nsswitch source' 1431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Used by the nsparser routines to store a mapping between a source 1441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * and its dispatch control flags for a given database. 1451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct { 1471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *name; 1481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project uint32_t flags; 1491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ns_src; 1501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#if 0 1531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Default sourcelists (if nsswitch.conf is missing, corrupt, 1551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * or the requested database doesn't have an entry) 1561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultsrc[]; 1581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultcompat[]; 1591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultcompat_forceall[]; 1601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultfiles[]; 1611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultfiles_forceall[]; 1621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultnis[]; 1631dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectextern const ns_src __nsdefaultnis_forceall[]; 1641dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 1651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1661dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1671dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_mtab - `nsswitch method table' 1681dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * An nsswitch module provides a mapping from (database name, method name) 1691dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * tuples to the nss_method and associated callback data. Effectively, 1701dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_dtab, but used for dynamically loaded modules. 1711dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1721dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct { 1731dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *database; 1741dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *name; 1751dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project nss_method method; 1761dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void *mdata; 1771dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ns_mtab; 1781dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1791dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1801dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * nss_module_register_fn - module registration function 1811dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * called at module load 1821dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * nss_module_unregister_fn - module un-registration function 1831dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * called at module unload 1841dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1851dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef void (*nss_module_unregister_fn)(ns_mtab *, u_int); 1861dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef ns_mtab *(*nss_module_register_fn)(const char *, u_int *, 1871dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project nss_module_unregister_fn *); 1881dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1891dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef _NS_PRIVATE 1901dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1911dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1921dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Private data structures for back-end nsswitch implementation. 1931dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 1941dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 1951dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 1961dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_dbt - `nsswitch database thang' 1971dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * For each database in /etc/nsswitch.conf there is a ns_dbt, with its 1981dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * name and a list of ns_src's containing the source information. 1991dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 2001dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct { 2011dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *name; /* name of database */ 2021dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ns_src *srclist; /* list of sources */ 2031dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int srclistsize; /* size of srclist */ 2041dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ns_dbt; 2051dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2061dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/* 2071dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ns_mod - `nsswitch module' 2081dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */ 2091dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projecttypedef struct { 2101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *name; /* module name */ 2111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project void *handle; /* handle from dlopen() */ 2121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ns_mtab *mtab; /* method table */ 2131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project u_int mtabsize; /* size of mtab */ 2141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project /* called to unload module */ 2151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project nss_module_unregister_fn unregister; 2161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project} ns_mod; 2171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* _NS_PRIVATE */ 2191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/cdefs.h> 2221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__BEGIN_DECLS 2241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint nsdispatch(void *, const ns_dtab [], const char *, 2251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project const char *, const ns_src [], ...); 2261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef _NS_PRIVATE 2281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint _nsdbtaddsrc(ns_dbt *, const ns_src *); 2291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid _nsdbtdump(const ns_dbt *); 2301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint _nsdbtput(const ns_dbt *); 2311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectvoid _nsyyerror(const char *); 2321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Projectint _nsyylex(void); 2331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* _NS_PRIVATE */ 2341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS 2361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 2371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif /* !_NSSWITCH_H */ 238