sysdb.h revision f17d26a8db285622a5cd5f21c7488b62eedc2cf8
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe System Database Header
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe Copyright (C) Simo Sorce <ssorce@redhat.com> 2008
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe This program is free software; you can redistribute it and/or modify
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe it under the terms of the GNU General Public License as published by
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe the Free Software Foundation; either version 3 of the License, or
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe (at your option) any later version.
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe This program is distributed in the hope that it will be useful,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe but WITHOUT ANY WARRANTY; without even the implied warranty of
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe GNU General Public License for more details.
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe You should have received a copy of the GNU General Public License
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe along with this program. If not, see <http://www.gnu.org/licenses/>.
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_USER_BASE SYSDB_USERS_CONTAINER",cn=%s,"SYSDB_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_GROUP_BASE SYSDB_GROUPS_CONTAINER",cn=%s,"SYSDB_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_CUSTOM_BASE SYSDB_CUSTOM_CONTAINER",cn=%s,"SYSDB_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_NETGROUP_BASE SYSDB_NETGROUP_CONTAINER",cn=%s,"SYSDB_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_RANGE_BASE SYSDB_RANGE_CONTAINER",cn=%s,"SYSDB_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TRUSTED_AD_DOMAIN_RANGE_CLASS "TrustedADDomainRange"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_FAILED_LOGIN_ATTEMPTS "failedLoginAttempts"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_ORIG_NETGROUP_MEMBER "originalMemberNisNetgroup"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_ORIG_NETGROUP_EXTERNAL_HOST "originalExternalHost"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_PWNAM_FILTER "(&("SYSDB_UC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_PWUID_FILTER "(&("SYSDB_UC")("SYSDB_UIDNUM"=%lu))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GRNAM_FILTER "(&("SYSDB_GC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GRNA2_FILTER "(&("SYSDB_UC")("SYSDB_MEMBEROF"=%s))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GRGID_FILTER "(&("SYSDB_GC")("SYSDB_GIDNUM"=%lu))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GRNAM_MPG_FILTER "(&("SYSDB_MPGC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GRGID_MPG_FILTER "(&("SYSDB_MPGC")("SYSDB_GIDNUM"=%lu))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_INITGR_FILTER "(&("SYSDB_GC")("SYSDB_GIDNUM"=*))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GETCACHED_FILTER "(&"SYSDB_UC")("SYSDB_LAST_LOGIN">=%lu))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_NETGR_FILTER "(&("SYSDB_NC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_NETGR_TRIPLES_FILTER "(|("SYSDB_NAME"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_MEMBEROF"=%s))"
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_GRENT_ATTRS {SYSDB_NAME, SYSDB_UIDNUM, SYSDB_MEMBEROF, \
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_NETGR_ATTRS {SYSDB_NAME, SYSDB_NETGROUP_TRIPLE, \
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_INITGR_ATTRS {SYSDB_GIDNUM, SYSDB_POSIX, \
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_USER SYSDB_NAME"=%s,"SYSDB_TMPL_USER_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_GROUP SYSDB_NAME"=%s,"SYSDB_TMPL_GROUP_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_NETGROUP SYSDB_NAME"=%s,"SYSDB_TMPL_NETGROUP_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_CUSTOM_SUBTREE "cn=%s,"SYSDB_TMPL_CUSTOM_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_CUSTOM SYSDB_NAME"=%s,cn=%s,"SYSDB_TMPL_CUSTOM_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe#define SYSDB_TMPL_RANGE SYSDB_NAME"=%s,"SYSDB_TMPL_RANGE_BASE
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe/* sysdb_attrs helper functions */
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct sysdb_attrs *sysdb_new_attrs(TALLOC_CTX *mem_ctx);
d7e95cd18c2c0109efb3b6f0f90cb0b344e3903cwrowe const char *realm;
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *name;
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *flat_name;
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *id;
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe/* values are copied in the structure, allocated on "attrs" */
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *name);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_get_el(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_get_el_ext(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_steal_string(struct sysdb_attrs *attrs,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_get_string(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char **string);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_get_string_array(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweerrno_t sysdb_attrs_get_bool(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_get_uint16_t(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_get_uint32_t(struct sysdb_attrs *attrs, const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_replace_name(struct sysdb_attrs *attrs, const char *oldname,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *newname);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweint sysdb_attrs_users_from_str_list(struct sysdb_attrs *attrs,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *attr_name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *domain,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *const *list);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweerrno_t sysdb_attrs_primary_name(struct sysdb_ctx *sysdb,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *ldap_attr,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char **_primary);
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *primary,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char ***_aliases);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweerrno_t sysdb_attrs_primary_name_list(struct sysdb_ctx *sysdb,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *ldap_attr,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *name,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char **_cname);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweerrno_t sysdb_msg2attrs(TALLOC_CTX *mem_ctx, size_t count,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe/* convert an ldb error into an errno error */
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe/* DNs related helper functions */
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweerrno_t sysdb_get_rdn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_user_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_group_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_netgroup_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_netgroup_base_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *domain);
d15674e194392bfaedba1fe2fccc9297e4e20da6wroweerrno_t sysdb_group_dn_name(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_domain_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *domain);
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_custom_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *subtree_name);
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowestruct ldb_dn *sysdb_custom_subtree_dn(struct sysdb_ctx *sysdb, void *mem_ctx,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *domain,
d15674e194392bfaedba1fe2fccc9297e4e20da6wrowe const char *subtree_name);
int num_subdoms,
const char *name,
const char **attrs,
const char **attrs,
const char *name,
const char *pwd,
const char *gecos,
const char *homedir,
const char *shell,
char **remove_attrs,
const char *name,
const char **attrs,
const char **attrs,
const char *name,
const char *alt_db_path,
bool allow_upgrade,
const char *db_path,
const char *domain_name,
const char *db_path,
const char *path,
const char *name,
const char *name,
struct sysdb_netgroup_ctx {
char *hostname;
char *username;
char *domainname;
} triple;
char *groupname;
} value;
const char *netgroup,
const char *name,
const char *name,
const char **attributes,
const char *netgrname,
const char **attributes,
bool ignore_not_found);
bool ignore_not_found);
int scope,
const char *filter,
const char **attrs,
const char *name,
const char **attrs,
const char **attrs,
const char *name,
const char **attrs,
const char **attrs,
const char *name,
const char **attrs,
int mod_op);
const char *name,
int mod_op);
const char *name,
int mod_op);
const char *name,
int mod_op);
const char *name,
const char *gecos,
const char *homedir,
const char *shell);
const char *name,
const char *gecos,
const char *homedir,
const char *shell,
int cache_timeout,
int cache_timeout,
const char *name,
const char *name,
const char *description,
char **missing,
int cache_timeout,
int mod_op);
const char *name,
const char *pwd,
const char *gecos,
const char *homedir,
const char *shell,
char **remove_attrs,
const char *name,
enum sysdb_member_type {
const char *group,
const char *member,
const char *group,
const char *member,
const char *member,
const char *const *add_groups,
const char *const *del_groups);
const char *netgroup,
const char *hostname,
const char *username,
const char *domainname);
const char *netgroup,
const char *hostname,
const char *username,
const char *domainname);
const char *netgroup,
const char *hostname,
const char *username,
const char *domainname,
int mod_op);
const char *netgroup,
const char *member_netgroup);
const char *netgroup,
const char *member_netgroup);
const char *netgroup,
const char *member_netgroup,
int mod_op);
const char *username,
const char *password);
const char *name,
bool just_check,
const char *object_name,
const char *subtree_name,
const char *filter,
const char *subtree_name,
const char **attrs,
const char *object_name,
const char *subtree_name,
const char **attrs,
const char *object_name,
const char *subtree_name);
const char *expression,
const char *asq_attribute,
const char **attrs,
const char *sub_filter,
const char **attrs,
const char *sub_filter,
const char **attrs,
const char *sub_filter,
const char **attrs,
const char *name);
int attr_count,
const char *attr_name,
char ***_list);
char **sanitized);
const char *attr_name,
bool *value);
const char *cn_value,
const char *attr_name,
bool value);
bool *has_enumerated);
bool enumerated);
const char *name,
char **remove_attrs);
const char *name,
char ***_direct_parents);
#define SYSDB_IDMAP_ATTRS { \
SYSDB_NAME, \
NULL }
const char *object_sid);
const char *dom_name,
const char *dom_sid,