• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/router/samba-3.5.8/source3/lib/ldb/nssldb/
1/*
2   LDB nsswitch module
3
4   Copyright (C) Simo Sorce 2006
5
6   This library is free software; you can redistribute it and/or
7   modify it under the terms of the GNU Lesser General Public
8   License as published by the Free Software Foundation; either
9   version 3 of the License, or (at your option) any later version.
10
11   This library is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   Library General Public License for more details.
15
16   You should have received a copy of the GNU Lesser General Public License
17   along with this program.  If not, see <http://www.gnu.org/licenses/>.
18*/
19
20#ifndef _LDB_NSS
21#define _LDB_NSS
22
23#include "includes.h"
24#include "ldb/include/includes.h"
25
26#include <nss.h>
27#include <pwd.h>
28#include <grp.h>
29
30#define _LDB_NSS_URL "etc/users.ldb"
31#define _LDB_NSS_BASEDN "CN=Users,CN=System"
32#define _LDB_NSS_PWENT_FILTER "(&(objectClass=posixAccount)(!(uidNumber=0))(!(gidNumber=0)))"
33#define _LDB_NSS_PWUID_FILTER "(&(objectClass=posixAccount)(uidNumber=%d)(!(gidNumber=0)))"
34#define _LDB_NSS_PWNAM_FILTER "(&(objectClass=posixAccount)(uid=%s)(!(uidNumber=0))(!(gidNumber=0)))"
35
36#define _LDB_NSS_GRENT_FILTER "(&(objectClass=posixGroup)(!(gidNumber=0)))"
37#define _LDB_NSS_GRGID_FILTER "(&(objectClass=posixGroup)(gidNumber=%d)))"
38#define _LDB_NSS_GRNAM_FILTER "(&(objectClass=posixGroup)(cn=%s)(!(gidNumber=0)))"
39
40typedef enum nss_status NSS_STATUS;
41
42struct _ldb_nss_context {
43
44	pid_t pid;
45
46	struct ldb_context *ldb;
47	const struct ldb_dn *base;
48
49	int pw_cur;
50	struct ldb_result *pw_res;
51
52	int gr_cur;
53	struct ldb_result *gr_res;
54};
55
56NSS_STATUS _ldb_nss_init(void);
57
58NSS_STATUS _ldb_nss_fill_passwd(struct passwd *result,
59				char *buffer,
60				int buflen,
61				int *errnop,
62				struct ldb_message *msg);
63
64NSS_STATUS _ldb_nss_fill_group(struct group *result,
65				char *buffer,
66				int buflen,
67				int *errnop,
68				struct ldb_message *group,
69				struct ldb_result *members);
70
71NSS_STATUS _ldb_nss_fill_initgr(gid_t group,
72				long int limit,
73				long int *start,
74				long int *size,
75				gid_t **groups,
76				int *errnop,
77				struct ldb_result *grlist);
78
79NSS_STATUS _ldb_nss_group_request(struct ldb_result **res,
80					struct ldb_dn *group_dn,
81					const char * const *attrs,
82					const char *mattr);
83
84#endif /* _LDB_NSS */
85