]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - nss/nsswitch.h
Update copyright notices with scripts/update-copyrights
[thirdparty/glibc.git] / nss / nsswitch.h
index 369e64a46665a66c7d2453436ba71a4fdbfcb3be..90a0c62f7732a386fa255962855e34329e372fc0 100644 (file)
@@ -1,20 +1,19 @@
-/* Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2014 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
    The GNU C Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
 
 #ifndef _NSSWITCH_H
 #define _NSSWITCH_H    1
@@ -27,6 +26,7 @@
 #include <resolv.h>
 #include <search.h>
 #include <dlfcn.h>
+#include <stdbool.h>
 
 /* Actions performed after lookup finished.  */
 typedef enum
@@ -66,7 +66,7 @@ typedef struct service_user
   /* Link to the underlying library object.  */
   service_library *library;
   /* Collection of known functions.  */
-  struct entry *known;
+  void *known;
   /* Name of the service (`files', `dns', `nis', ...).  */
   char name[0];
 } service_user;
@@ -95,20 +95,44 @@ typedef struct name_database
 } name_database;
 
 
+/* Indices into DATABASES in nsswitch.c and __NSS_DATABASE_CUSTOM.  */
+enum
+  {
+#define DEFINE_DATABASE(arg) NSS_DBSIDX_##arg,
+#include "databases.def"
+#undef DEFINE_DATABASE
+    NSS_DBSIDX_max
+  };
+
+/* Flags whether custom rules for database is set.  */
+extern bool __nss_database_custom[NSS_DBSIDX_max];
+
+/* Warning for NSS functions, which don't require dlopen if glibc
+   was built with --enable-static-nss.  */
+#ifdef DO_STATIC_NSS
+# define nss_interface_function(name)
+#else
+# define nss_interface_function(name) static_link_warning (name)
+#endif
+
+
 /* Interface functions for NSS.  */
 
 /* Get the data structure representing the specified database.
    If there is no configuration for this database in the file,
    parse a service list from DEFCONFIG and use that.  More
    than one function can use the database.  */
-int __nss_database_lookup (const char *database, const char *alternative_name,
-                          const char *defconfig, service_user **ni);
-
+extern int __nss_database_lookup (const char *database,
+                                 const char *alternative_name,
+                                 const char *defconfig, service_user **ni);
+libc_hidden_proto (__nss_database_lookup)
 
 /* Put first function with name FCT_NAME for SERVICE in FCTP.  The
    position is remembered in NI.  The function returns a value < 0 if
    an error occurred or no such function exists.  */
-int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
+extern int __nss_lookup (service_user **ni, const char *fct_name,
+                        const char *fct2_name, void **fctp);
+libc_hidden_proto (__nss_lookup)
 
 /* Determine the next step in the lookup process according to the
    result STATUS of the call to the last function returned by
@@ -123,15 +147,28 @@ int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
    services.  In other words, only if all four lookup results have
    the action RETURN associated the lookup process stops before the
    natural end.  */
-int __nss_next (service_user **ni, const char *fct_name, void **fctp,
-               int status, int all_values);
+extern int __nss_next2 (service_user **ni, const char *fct_name,
+                       const char *fct2_name, void **fctp, int status,
+                       int all_values) attribute_hidden;
+libc_hidden_proto (__nss_next2)
+extern int __nss_next (service_user **ni, const char *fct_name, void **fctp,
+                      int status, int all_values);
 
 /* Search for the service described in NI for a function named FCT_NAME
    and return a pointer to this function if successful.  */
-void *__nss_lookup_function (service_user *ni, const char *fct_name);
+extern void *__nss_lookup_function (service_user *ni, const char *fct_name);
+libc_hidden_proto (__nss_lookup_function)
+
 
+/* Called by NSCD to disable recursive calls and enable special handling
+   when used in nscd.  */
+struct traced_file;
+extern void __nss_disable_nscd (void (*) (size_t, struct traced_file *));
 
-typedef int (*db_lookup_function) (service_user **, const char *, void **);
+
+typedef int (*db_lookup_function) (service_user **, const char *, const char *,
+                                  void **)
+     internal_function;
 typedef enum nss_status (*setent_function) (int);
 typedef enum nss_status (*endent_function) (void);
 typedef enum nss_status (*getent_function) (void *, char *, size_t,
@@ -164,7 +201,12 @@ extern int __nss_hostname_digits_dots (const char *name,
                                       struct hostent *resbuf, char **buffer,
                                       size_t *buffer_size, size_t buflen,
                                       struct hostent **result,
-                                      enum nss_status *status, int *typep,
-                                      int flags, int *afp, int *h_errnop);
+                                      enum nss_status *status, int af,
+                                      int *h_errnop);
+libc_hidden_proto (__nss_hostname_digits_dots)
+
+/* Maximum number of aliases we allow.  */
+#define MAX_NR_ALIASES  48
+#define MAX_NR_ADDRS    48
 
 #endif /* nsswitch.h */