16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* $NetBSD: nsswitch.h,v 1.18 2005/11/29 03:12:58 christos Exp $ */ 26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/*- 46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc. 56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * All rights reserved. 66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * This code is derived from software contributed to The NetBSD Foundation 86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * by Luke Mewburn. 96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Redistribution and use in source and binary forms, with or without 116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * modification, are permitted provided that the following conditions 126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * are met: 136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 1. Redistributions of source code must retain the above copyright 146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * notice, this list of conditions and the following disclaimer. 156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 2. Redistributions in binary form must reproduce the above copyright 166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * notice, this list of conditions and the following disclaimer in the 176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * documentation and/or other materials provided with the distribution. 186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 3. All advertising materials mentioning features or use of this software 196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * must display the following acknowledgement: 206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * This product includes software developed by the NetBSD 216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Foundation, Inc. and its contributors. 226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 4. Neither the name of The NetBSD Foundation nor the names of its 236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * contributors may be used to endorse or promote products derived 246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * from this software without specific prior written permission. 256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * 266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * POSSIBILITY OF SUCH DAMAGE. 376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _NSSWITCH_H 406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _NSSWITCH_H 1 416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <sys/types.h> 436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <stdarg.h> 446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSS_MODULE_INTERFACE_VERSION 0 466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _PATH_NS_CONF 486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _PATH_NS_CONF "/etc/nsswitch.conf" 496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif 506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_CONTINUE 0 526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_RETURN 1 536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Layout of: 566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * uint32_t ns_src.flags 576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh /* nsswitch.conf status codes and nsdispatch(3) return values */ 596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_SUCCESS (1<<0) /* entry was found */ 606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_UNAVAIL (1<<1) /* source not responding, or corrupt */ 616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_NOTFOUND (1<<2) /* source responded 'no such entry' */ 626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_TRYAGAIN (1<<3) /* source busy, may respond to retrys */ 636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_STATUSMASK 0x000000ff /* bitmask to get the status flags */ 646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 656ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh /* internal nsdispatch(3) flags; not settable in nsswitch.conf(5) */ 666ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_FORCEALL (1<<8) /* force all methods to be invoked; */ 676ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 686ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 696ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Currently implemented sources. 706ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 716ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSSRC_FILES "files" /* local files */ 726ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSSRC_DNS "dns" /* DNS; IN for hosts, HS for others */ 736ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSSRC_NIS "nis" /* YP/NIS */ 746ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSSRC_COMPAT "compat" /* passwd,group in YP compat mode */ 756ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 766ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 776ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Currently implemented databases. 786ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 796ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_HOSTS "hosts" 806ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_GROUP "group" 816ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_GROUP_COMPAT "group_compat" 826ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_NETGROUP "netgroup" 836ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_NETWORKS "networks" 846ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_PASSWD "passwd" 856ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_PASSWD_COMPAT "passwd_compat" 866ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_SHELLS "shells" 876ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 886ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 896ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Suggested databases to implement. 906ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 916ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_ALIASES "aliases" 926ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_AUTH "auth" 936ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_AUTOMOUNT "automount" 946ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_BOOTPARAMS "bootparams" 956ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_ETHERS "ethers" 966ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_EXPORTS "exports" 976ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_NETMASKS "netmasks" 986ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_PHONES "phones" 996ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_PRINTCAP "printcap" 1006ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_PROTOCOLS "protocols" 1016ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_REMOTE "remote" 1026ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_RPC "rpc" 1036ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_SENDMAILVARS "sendmailvars" 1046ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_SERVICES "services" 1056ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_TERMCAP "termcap" 1066ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NSDB_TTYS "ttys" 1076ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1086ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1096ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_dtab `callback' function signature. 1106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef int (*nss_method)(void *, void *, va_list); 1126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_dtab - `nsswitch dispatch table' 1156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Contains an entry for each source and the appropriate function to call. 1166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct { 1186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *src; 1196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh nss_method callback; 1206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *cb_data; 1216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} ns_dtab; 1226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Macros to help build an ns_dtab[] 1256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_FILES_CB(F,C) { NSSRC_FILES, F, __UNCONST(C) }, 1276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define NS_COMPAT_CB(F,C) { NSSRC_COMPAT, F, __UNCONST(C) }, 1286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifdef HESIOD 1306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh# define NS_DNS_CB(F,C) { NSSRC_DNS, F, __UNCONST(C) }, 1316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#else 1326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh# define NS_DNS_CB(F,C) 1336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif 1346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifdef YP 1366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh# define NS_NIS_CB(F,C) { NSSRC_NIS, F, __UNCONST(C) }, 1376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#else 1386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh# define NS_NIS_CB(F,C) 1396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif 1406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_src - `nsswitch source' 1436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Used by the nsparser routines to store a mapping between a source 1446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * and its dispatch control flags for a given database. 1456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct { 1476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *name; 1486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh uint32_t flags; 1496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} ns_src; 1506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Default sourcelists (if nsswitch.conf is missing, corrupt, 1546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * or the requested database doesn't have an entry) 1556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#if 0 /* MISSING FROM BIONIC */ 1576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultsrc[]; 1586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultcompat[]; 1596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultcompat_forceall[]; 1606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultfiles[]; 1616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultfiles_forceall[]; 1626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultnis[]; 1636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehextern const ns_src __nsdefaultnis_forceall[]; 1646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif /* MISSING */ 1656ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1666ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1676ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_mtab - `nsswitch method table' 1686ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * An nsswitch module provides a mapping from (database name, method name) 1696ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * tuples to the nss_method and associated callback data. Effectively, 1706ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_dtab, but used for dynamically loaded modules. 1716ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1726ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct { 1736ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *database; 1746ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *name; 1756ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh nss_method method; 1766ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *mdata; 1776ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} ns_mtab; 1786ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1796ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1806ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * nss_module_register_fn - module registration function 1816ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * called at module load 1826ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * nss_module_unregister_fn - module un-registration function 1836ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * called at module unload 1846ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1856ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef void (*nss_module_unregister_fn)(ns_mtab *, u_int); 1866ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef ns_mtab *(*nss_module_register_fn)(const char *, u_int *, 1876ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh nss_module_unregister_fn *); 1886ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1896ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifdef _NS_PRIVATE 1906ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1916ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1926ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * Private data structures for back-end nsswitch implementation. 1936ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 1946ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 1956ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 1966ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_dbt - `nsswitch database thang' 1976ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * For each database in /etc/nsswitch.conf there is a ns_dbt, with its 1986ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * name and a list of ns_src's containing the source information. 1996ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 2006ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct { 2016ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *name; /* name of database */ 2026ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ns_src *srclist; /* list of sources */ 2036ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh u_int srclistsize; /* size of srclist */ 2046ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} ns_dbt; 2056ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2066ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/* 2076ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh * ns_mod - `nsswitch module' 2086ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh */ 2096ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct { 2106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *name; /* module name */ 2116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void *handle; /* handle from dlopen() */ 2126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ns_mtab *mtab; /* method table */ 2136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh u_int mtabsize; /* size of mtab */ 2146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh /* called to unload module */ 2156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh nss_module_unregister_fn unregister; 2166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh} ns_mod; 2176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif /* _NS_PRIVATE */ 2196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <sys/cdefs.h> 2226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh__BEGIN_DECLS 2246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehint nsdispatch(void *, const ns_dtab [], const char *, 2256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh const char *, const ns_src [], ...); 2266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifdef _NS_PRIVATE 2286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehint _nsdbtaddsrc(ns_dbt *, const ns_src *); 2296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehvoid _nsdbtdump(const ns_dbt *); 2306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehint _nsdbtput(const ns_dbt *); 2316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehvoid _nsyyerror(const char *); 2326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehint _nsyylex(void); 2336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif /* _NS_PRIVATE */ 2346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh__END_DECLS 2366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 2376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif /* !_NSSWITCH_H */ 238