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