source: rtems-libbsd/freebsd-userspace/include/nsswitch.h @ bf4a338

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since bf4a338 was 1b13f69, checked in by Joel Sherrill <joel.sherrill@…>, on 07/11/12 at 18:23:45

FreeBSD user space support - First additions

This requires a full checkout of the FreeBSD 8.2 source code.
The checkout we have been using is missing at least the libc,
include, and sys directories. The script to copy files in is
crude.

This eventually needs to separate the manually written .h files
out and add the RTEMS specific network initialization support
with functionality to program the IP addresses and gateways as
the old stack did.

  • Property mode set to 100644
File size: 7.5 KB
Line 
1/*      $NetBSD: nsswitch.h,v 1.6 1999/01/26 01:04:07 lukem Exp $       */
2/*      $FreeBSD$ */
3
4/*-
5 * Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
6 * All rights reserved.
7 *
8 * This code is derived from software contributed to The NetBSD Foundation
9 * by Luke Mewburn.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 *    notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 *    notice, this list of conditions and the following disclaimer in the
18 *    documentation and/or other materials provided with the distribution.
19 * 3. All advertising materials mentioning features or use of this software
20 *    must display the following acknowledgement:
21 *        This product includes software developed by the NetBSD
22 *        Foundation, Inc. and its contributors.
23 * 4. Neither the name of The NetBSD Foundation nor the names of its
24 *    contributors may be used to endorse or promote products derived
25 *    from this software without specific prior written permission.
26 *
27 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
28 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
31 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 * POSSIBILITY OF SUCH DAMAGE.
38 */
39
40#ifndef _NSSWITCH_H
41#define _NSSWITCH_H     1
42
43#include <sys/types.h>
44#include <stdarg.h>
45
46#define NSS_MODULE_INTERFACE_VERSION 1
47
48#ifndef _PATH_NS_CONF
49#define _PATH_NS_CONF   "/etc/nsswitch.conf"
50#endif
51
52/* NSS source actions */
53#define NS_ACTION_CONTINUE      0       /* try the next source */
54#define NS_ACTION_RETURN        1       /* look no further */
55
56#define NS_SUCCESS      (1<<0)          /* entry was found */
57#define NS_UNAVAIL      (1<<1)          /* source not responding, or corrupt */
58#define NS_NOTFOUND     (1<<2)          /* source responded 'no such entry' */
59#define NS_TRYAGAIN     (1<<3)          /* source busy, may respond to retry */
60#define NS_RETURN       (1<<4)          /* stop search, e.g. for ERANGE */
61#define NS_TERMINATE    (NS_SUCCESS|NS_RETURN) /* flags that end search */
62#define NS_STATUSMASK   0x000000ff      /* bitmask to get the status flags */
63
64/*
65 * currently implemented sources
66 */
67#define NSSRC_FILES     "files"         /* local files */
68#define NSSRC_DB        "db"            /* database */
69#define NSSRC_DNS       "dns"           /* DNS; IN for hosts, HS for others */
70#define NSSRC_NIS       "nis"           /* YP/NIS */
71#define NSSRC_COMPAT    "compat"        /* passwd,group in YP compat mode */
72#define NSSRC_CACHE     "cache"         /* nscd daemon */
73#define NSSRC_FALLBACK  "__fallback"    /* internal fallback source */
74
75/*
76 * currently implemented databases
77 */
78#define NSDB_HOSTS              "hosts"
79#define NSDB_GROUP              "group"
80#define NSDB_GROUP_COMPAT       "group_compat"
81#define NSDB_NETGROUP           "netgroup"
82#define NSDB_NETWORKS           "networks"
83#define NSDB_PASSWD             "passwd"
84#define NSDB_PASSWD_COMPAT      "passwd_compat"
85#define NSDB_SHELLS             "shells"
86#define NSDB_SERVICES           "services"
87#define NSDB_SERVICES_COMPAT    "services_compat"
88#define NSDB_SSH_HOSTKEYS       "ssh_hostkeys"
89#define NSDB_PROTOCOLS          "protocols"
90#define NSDB_RPC                "rpc"
91
92/*
93 * suggested databases to implement
94 */
95#define NSDB_ALIASES            "aliases"
96#define NSDB_AUTH               "auth"
97#define NSDB_AUTOMOUNT          "automount"
98#define NSDB_BOOTPARAMS         "bootparams"
99#define NSDB_ETHERS             "ethers"
100#define NSDB_EXPORTS            "exports"
101#define NSDB_NETMASKS           "netmasks"
102#define NSDB_PHONES             "phones"
103#define NSDB_PRINTCAP           "printcap"
104#define NSDB_REMOTE             "remote"
105#define NSDB_SENDMAILVARS       "sendmailvars"
106#define NSDB_TERMCAP            "termcap"
107#define NSDB_TTYS               "ttys"
108
109/*
110 * ns_dtab `method' function signature.
111 */
112typedef int (*nss_method)(void *_retval, void *_mdata, va_list _ap);
113
114/*
115 * Macro for generating method prototypes.
116 */
117#define NSS_METHOD_PROTOTYPE(method) \
118        int method(void *, void *, va_list)
119
120/*
121 * ns_dtab - `nsswitch dispatch table'
122 * Contains an entry for each source and the appropriate function to
123 * call.  ns_dtabs are used in the nsdispatch() API in order to allow
124 * the application to override built-in actions.
125 */
126typedef struct _ns_dtab {
127        const char       *src;          /* Source this entry implements */
128        nss_method        method;       /* Method to be called */
129        void             *mdata;        /* Data passed to method */
130} ns_dtab;
131
132/*
133 * macros to help build an ns_dtab[]
134 */
135#define NS_FILES_CB(F,C)        { NSSRC_FILES,  F,      C },
136#define NS_COMPAT_CB(F,C)       { NSSRC_COMPAT, F,      C },
137#define NS_FALLBACK_CB(F)       { NSSRC_FALLBACK, F,    NULL },
138 
139#ifdef HESIOD
140#   define NS_DNS_CB(F,C)       { NSSRC_DNS,    F,      C },
141#else
142#   define NS_DNS_CB(F,C)
143#endif
144
145#ifdef YP
146#   define NS_NIS_CB(F,C)       { NSSRC_NIS,    F,      C },
147#else
148#   define NS_NIS_CB(F,C)
149#endif
150
151/*
152 * ns_src - `nsswitch source'
153 * used by the nsparser routines to store a mapping between a source
154 * and its dispatch control flags for a given database.
155 */
156typedef struct _ns_src {
157        const char      *name;
158        u_int32_t        flags;
159} ns_src;
160
161
162/*
163 * default sourcelist (if nsswitch.conf is missing, corrupt,
164 * or the requested database doesn't have an entry.
165 */
166extern const ns_src __nsdefaultsrc[];
167
168/*
169 * ns_mtab - NSS method table
170 * An NSS module provides a mapping from (database name, method name)
171 * tuples to the nss_method and associated data.
172 */
173typedef struct _ns_mtab {
174        const char      *database;
175        const char      *name;
176        nss_method       method;
177        void            *mdata;
178} ns_mtab;
179
180/*
181 * NSS module de-registration, called at module unload.
182 */
183typedef void     (*nss_module_unregister_fn)(ns_mtab *, unsigned int);
184
185/*
186 * NSS module registration, called at module load.
187 */
188typedef ns_mtab *(*nss_module_register_fn)(const char *, unsigned int *,
189                       nss_module_unregister_fn *);
190
191/*
192 * Many NSS interfaces follow the getXXnam, getXXid, getXXent pattern.
193 * Developers are encouraged to use nss_lookup_type where approriate.
194 */
195enum nss_lookup_type {
196        nss_lt_name = 1,
197        nss_lt_id   = 2,
198        nss_lt_all  = 3
199};
200
201#ifdef _NS_PRIVATE
202/*
203 * private data structures for back-end nsswitch implementation
204 */
205
206/*
207 * ns_dbt - `nsswitch database thang'
208 * for each database in /etc/nsswitch.conf there is a ns_dbt, with its
209 * name and a list of ns_src's containing the source information.
210 */
211typedef struct _ns_dbt {
212        const char      *name;          /* name of database */
213        ns_src          *srclist;       /* list of sources */
214        int              srclistsize;   /* size of srclist */
215} ns_dbt;
216
217/*
218 * ns_mod - NSS module
219 */
220typedef struct _ns_mod {
221        char            *name;          /* module name */
222        void            *handle;        /* handle from dlopen */
223        ns_mtab         *mtab;          /* method table */
224        unsigned int     mtabsize;      /* count of entries in method table */
225        nss_module_unregister_fn unregister; /* called to unload module */
226} ns_mod;
227
228#endif /* _NS_PRIVATE */
229
230
231#include <sys/cdefs.h>
232
233__BEGIN_DECLS
234extern  int     nsdispatch(void *, const ns_dtab [], const char *,
235                           const char *, const ns_src [], ...);
236
237#ifdef _NS_PRIVATE
238extern  void             _nsdbtaddsrc(ns_dbt *, const ns_src *);
239extern  void             _nsdbtput(const ns_dbt *);
240extern  void             _nsyyerror(const char *);
241extern  int              _nsyylex(void);
242extern  int              _nsyyparse(void);
243extern  int              _nsyylineno;
244#ifdef _NSS_DEBUG
245extern  void             _nsdbtdump(const ns_dbt *);
246#endif
247#endif /* _NS_PRIVATE */
248
249__END_DECLS
250
251#endif /* !_NSSWITCH_H */
Note: See TracBrowser for help on using the repository browser.