1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/* Copyright (c) 1998, 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
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 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/* This file defines everything that client code should need to
know to talk to the nscd daemon. */
#ifndef _NSCD_CLIENT_H
#define _NSCD_CLIENT_H 1
#include <nscd-types.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/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"
/* Available services. */
typedef enum
{
GETPWBYNAME,
GETPWBYUID,
GETGRBYNAME,
GETGRBYGID,
GETHOSTBYNAME,
GETHOSTBYNAMEv6,
GETHOSTBYADDR,
GETHOSTBYADDRv6,
LASTDBREQ = GETHOSTBYADDRv6,
SHUTDOWN, /* Shut the server down. */
GETSTAT, /* Get the server statistic. */
INVALIDATE, /* Invalidate one special cache. */
LASTREQ
} request_type;
/* Header common to all requests */
typedef struct
{
int32_t version; /* Version number of the daemon interface. */
request_type type; /* Service requested. */
int32_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
{
int32_t version;
int32_t found;
nscd_ssize_t pw_name_len;
nscd_ssize_t pw_passwd_len;
uid_t pw_uid;
gid_t pw_gid;
nscd_ssize_t pw_gecos_len;
nscd_ssize_t pw_dir_len;
nscd_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
{
int32_t version;
int32_t found;
nscd_ssize_t gr_name_len;
nscd_ssize_t gr_passwd_len;
gid_t gr_gid;
nscd_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
{
int32_t version;
int32_t found;
nscd_ssize_t h_name_len;
nscd_ssize_t h_aliases_cnt;
int32_t h_addrtype;
int32_t h_length;
nscd_ssize_t h_addr_list_cnt;
int32_t error;
} hst_response_header;
/* Open socket connection to nscd server. */
extern int __nscd_open_socket (const char *key, size_t keylen,
request_type type, void *response,
size_t responselen) attribute_hidden;
#endif /* nscd.h */
|