Change log directory to /var/log (FHS).
[kopensolaris-gnu/glibc.git] / nscd / nscd.h
index bc8150a..36fd1b3 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (c) 1998 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    This file is part of the GNU C Library.
-   Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
+   Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
 
    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
 
    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
 #include <time.h>
 #include <sys/uio.h>
 
 #include <time.h>
 #include <sys/uio.h>
 
-
-/* Version number of the daemon interface */
-#define NSCD_VERSION 2
-
-/* Path of the file where the PID of the running system is stored.  */
-#define _PATH_NSCDPID   "/var/run/nscd.pid"
-
-/* Path for the Unix domain socket.  */
-#define _PATH_NSCDSOCKET "/var/run/.nscd_socket"
-
-/* Path for the configuration file.  */
-#define _PATH_NSCDCONF  "/etc/nscd.conf"
+/* The declarations for the request and response types are in the file
+   "nscd-client.h", which should contain everything needed by client
+   functions.  */
+#include "nscd-client.h"
 
 
 /* Handle databases.  */
 
 
 /* Handle databases.  */
@@ -48,30 +40,13 @@ typedef enum
 } dbtype;
 
 
 } dbtype;
 
 
-/* Available services.  */
-typedef enum
-{
-  GETPWBYNAME,
-  GETPWBYUID,
-  GETGRBYNAME,
-  GETGRBYGID,
-  GETHOSTBYNAME,
-  GETHOSTBYNAMEv6,
-  GETHOSTBYADDR,
-  GETHOSTBYADDRv6,
-  LASTDBREQ = GETHOSTBYADDRv6,
-  SHUTDOWN,            /* Shut the server down.  */
-  GETSTAT,             /* Get the server statistic.  */
-  LASTREQ,
-} request_type;
-
-
 /* Structure for one hash table entry.  */
 struct hashentry
 {
   request_type type;           /* Which type of dataset.  */
   size_t len;                  /* Length of key.  */
   void *key;                   /* Pointer to key.  */
 /* Structure for one hash table entry.  */
 struct hashentry
 {
   request_type type;           /* Which type of dataset.  */
   size_t len;                  /* Length of key.  */
   void *key;                   /* Pointer to key.  */
+  uid_t owner;                  /* If secure table, this is the owner.  */
   struct hashentry *next;      /* Next entry in this hash bucket list.  */
   time_t timeout;              /* Time when this entry becomes invalid.  */
   ssize_t total;               /* Number of bytes in PACKET.  */
   struct hashentry *next;      /* Next entry in this hash bucket list.  */
   time_t timeout;              /* Time when this entry becomes invalid.  */
   ssize_t total;               /* Number of bytes in PACKET.  */
@@ -106,58 +81,6 @@ struct database
 };
 
 
 };
 
 
-/* Header common to all requests */
-typedef struct
-{
-  int version;         /* Version number of the daemon interface.  */
-  request_type type;   /* Service requested.  */
-  ssize_t key_len;     /* Key length.  */
-} request_header;
-
-
-/* Structure sent in reply to password query.  Note that this struct is
-   sent also if the service is disabled or there is no record found.  */
-typedef struct
-{
-  int version;
-  int found;
-  ssize_t pw_name_len;
-  ssize_t pw_passwd_len;
-  uid_t pw_uid;
-  gid_t pw_gid;
-  ssize_t pw_gecos_len;
-  ssize_t pw_dir_len;
-  ssize_t pw_shell_len;
-} pw_response_header;
-
-
-/* Structure sent in reply to group query.  Note that this struct is
-   sent also if the service is disabled or there is no record found.  */
-typedef struct
-{
-  int version;
-  int found;
-  ssize_t gr_name_len;
-  ssize_t gr_passwd_len;
-  gid_t gr_gid;
-  ssize_t gr_mem_cnt;
-} gr_response_header;
-
-
-/* Structure sent in reply to host query.  Note that this struct is
-   sent also if the service is disabled or there is no record found.  */
-typedef struct
-{
-  int version;
-  int found;
-  ssize_t h_name_len;
-  ssize_t h_aliases_cnt;
-  int h_addrtype;
-  int h_length;
-  ssize_t h_addr_list_cnt;
-  int error;
-} hst_response_header;
-
 /* Global variables.  */
 extern const char *dbnames[lastdb];
 extern const char *serv2str[LASTREQ];
 /* Global variables.  */
 extern const char *dbnames[lastdb];
 extern const char *serv2str[LASTREQ];
@@ -169,6 +92,9 @@ extern const struct iovec hst_iov_disabled;
 /* Number of threads to run.  */
 extern int nthreads;
 
 /* Number of threads to run.  */
 extern int nthreads;
 
+/* Tables for which we cache data with uid */
+extern int secure[lastdb];
+extern int secure_in_use; /* Is one of the above 1 ? */
 
 /* Prototypes for global functions.  */
 
 
 /* Prototypes for global functions.  */
 
@@ -190,32 +116,34 @@ extern int receive_print_stats (void);
 
 /* cache.c */
 extern struct hashentry *cache_search (int type, void *key, size_t len,
 
 /* cache.c */
 extern struct hashentry *cache_search (int type, void *key, size_t len,
-                                      struct database *table);
+                                      struct database *table, uid_t owner);
 extern void cache_add (int type, void *key, size_t len,
                       const void *packet, size_t iovtotal, void *data,
 extern void cache_add (int type, void *key, size_t len,
                       const void *packet, size_t iovtotal, void *data,
-                      int last, time_t t, struct database *table);
+                      int last, time_t t, struct database *table,
+                      uid_t owner);
 extern void prune_cache (struct database *table, time_t now);
 
 /* pwdcache.c */
 extern void addpwbyname (struct database *db, int fd, request_header *req,
 extern void prune_cache (struct database *table, time_t now);
 
 /* pwdcache.c */
 extern void addpwbyname (struct database *db, int fd, request_header *req,
-                        void *key);
+                        void *key, uid_t uid);
 extern void addpwbyuid (struct database *db, int fd, request_header *req,
 extern void addpwbyuid (struct database *db, int fd, request_header *req,
-                       void *key);
+                       void *key, uid_t uid);
 
 /* grpcache.c */
 extern void addgrbyname (struct database *db, int fd, request_header *req,
 
 /* grpcache.c */
 extern void addgrbyname (struct database *db, int fd, request_header *req,
-                        void *key);
+                        void *key, uid_t uid);
 extern void addgrbygid (struct database *db, int fd, request_header *req,
 extern void addgrbygid (struct database *db, int fd, request_header *req,
-                       void *key);
+                       void *key, uid_t uid);
 
 /* hstcache.c */
 extern void addhstbyname (struct database *db, int fd, request_header *req,
 
 /* hstcache.c */
 extern void addhstbyname (struct database *db, int fd, request_header *req,
-                         void *key);
+                         void *key, uid_t uid);
 extern void addhstbyaddr (struct database *db, int fd, request_header *req,
 extern void addhstbyaddr (struct database *db, int fd, request_header *req,
-                         void *key);
+                         void *key, uid_t uid);
 extern void addhstbynamev6 (struct database *db, int fd, request_header *req,
 extern void addhstbynamev6 (struct database *db, int fd, request_header *req,
-                           void *key);
+                           void *key, uid_t uid);
 extern void addhstbyaddrv6 (struct database *db, int fd, request_header *req,
 extern void addhstbyaddrv6 (struct database *db, int fd, request_header *req,
-                           void *key);
+                           void *key, uid_t uid);
+
 
 #endif /* nscd.h */
 
 #endif /* nscd.h */