sysdb.h revision 4611802d41d8954a3040f39403590adb920ca521
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher System Database Header
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher Copyright (C) Simo Sorce <ssorce@redhat.com> 2008
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher This program is free software; you can redistribute it and/or modify
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher it under the terms of the GNU General Public License as published by
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher the Free Software Foundation; either version 3 of the License, or
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher (at your option) any later version.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher This program is distributed in the hope that it will be useful,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher but WITHOUT ANY WARRANTY; without even the implied warranty of
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher GNU General Public License for more details.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher You should have received a copy of the GNU General Public License
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher along with this program. If not, see <http://www.gnu.org/licenses/>.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_CONTAINER "cn=Netgroups"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_USER_BASE SYSDB_USERS_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_GROUP_BASE SYSDB_GROUPS_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_CUSTOM_BASE SYSDB_CUSTOM_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_NETGROUP_BASE SYSDB_NETGROUP_CONTAINER","SYSDB_DOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_RANGE_BASE SYSDB_RANGE_CONTAINER","SYSDB_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SELINUX_USERMAP_CLASS "selinuxusermap"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DOMAIN_ID_RANGE_CLASS "domainIDRange"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TRUSTED_AD_DOMAIN_RANGE_CLASS "TrustedADDomainRange"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_LAST_ONLINE_AUTH "lastOnlineAuth"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_LAST_FAILED_LOGIN "lastFailedLogin"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_FAILED_LOGIN_ATTEMPTS "failedLoginAttempts"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CACHE_EXPIRE "dataExpireTimestamp"
8e5549e453558d4bebdec333a93e215d5d6ffaecSimo Sorce#define SYSDB_INITGR_EXPIRE "initgrExpireTimestamp"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_AUTHORIZED_SERVICE "authorizedService"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_AUTHORIZED_HOST "authorizedHost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_TRIPLE "netgroupTriple"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_NETGROUP_MEMBER "originalMemberNisNetgroup"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_NETGROUP_EXTERNAL_HOST "originalExternalHost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGROUP_MEMBER "memberNisNetgroup"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SERVERHOSTNAME "serverHostname"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PRIMARY_GROUP "ADPrimaryGroupID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PRIMARY_GROUP_GIDNUM "origPrimaryGroupGidNumber"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_CANONICAL_UPN "canonicalUserPrincipalName"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MODSTAMP "originalModifyTimestamp"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBEROF "originalMemberOf"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBER_USER "originalMemberUser"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_ORIG_MEMBER_HOST "originalMemberHost"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SUBDOMAIN_FOREST "memberOfForest"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SECONDARY_BASE_RID "secondaryBaseRID"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_UC "objectclass="SYSDB_USER_CLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GC "objectclass="SYSDB_GROUP_CLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NC "objectclass="SYSDB_NETGROUP_CLASS
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_MPGC "|("SYSDB_UC")("SYSDB_GC")"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWNAM_FILTER "(&("SYSDB_UC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWUID_FILTER "(&("SYSDB_UC")("SYSDB_UIDNUM"=%lu))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWSID_FILTER "(&("SYSDB_UC")("SYSDB_SID_STR"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PWUPN_FILTER "(&("SYSDB_UC")(|("SYSDB_UPN"=%s)("SYSDB_CANONICAL_UPN"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRNAM_FILTER "(&("SYSDB_GC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRGID_FILTER "(&("SYSDB_GC")("SYSDB_GIDNUM"=%lu))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRSID_FILTER "(&("SYSDB_GC")("SYSDB_SID_STR"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRNAM_MPG_FILTER "(&("SYSDB_MPGC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_GRGID_MPG_FILTER "(&("SYSDB_MPGC")("SYSDB_GIDNUM"=%lu))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRENT_MPG_FILTER "("SYSDB_MPGC")"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_INITGR_FILTER "(&("SYSDB_GC")("SYSDB_GIDNUM"=*))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGR_FILTER "(&("SYSDB_NC")(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGR_TRIPLES_FILTER "(|("SYSDB_NAME_ALIAS"=%s)("SYSDB_NAME"=%s)("SYSDB_NAME_ALIAS"=%s)("SYSDB_MEMBEROF"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_SID_FILTER "(&(|("SYSDB_UC")("SYSDB_GC"))("SYSDB_SID_STR"=%s))"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_HAS_ENUMERATED "has_enumerated"
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_DEFAULT_ATTRS SYSDB_LAST_UPDATE, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_PW_ATTRS {SYSDB_NAME, SYSDB_UIDNUM, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_GRSRC_ATTRS {SYSDB_NAME, SYSDB_GIDNUM, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_NETGR_ATTRS {SYSDB_NAME, SYSDB_NETGROUP_TRIPLE, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_INITGR_ATTRS {SYSDB_GIDNUM, SYSDB_POSIX, \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_USER SYSDB_NAME"=%s,"SYSDB_TMPL_USER_BASE
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SYSDB_TMPL_GROUP SYSDB_NAME"=%s,"SYSDB_TMPL_GROUP_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_NETGROUP SYSDB_NAME"=%s,"SYSDB_TMPL_NETGROUP_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_CUSTOM_SUBTREE "cn=%s,"SYSDB_TMPL_CUSTOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_CUSTOM SYSDB_NAME"=%s,cn=%s,"SYSDB_TMPL_CUSTOM_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_TMPL_RANGE SYSDB_NAME"=%s,"SYSDB_TMPL_RANGE_BASE
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* sysdb version check macros */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("Removing cache files in "DB_PATH" should fix the issue, " \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher "but note that removing cache files will also remove all of your " \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher "cached credentials.\n")
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_LOWER_ERROR(ret) do { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("Lower version of database is expected!\n"); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher#define SYSDB_VERSION_HIGHER_ERROR(ret) do { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("Higher version of database is expected!\n"); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher ERROR("In order to upgrade the database, you must run SSSD.\n"); \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* use this in daemons */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* use this in tools */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* sysdb_attrs helper functions */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct sysdb_attrs *sysdb_new_attrs(TALLOC_CTX *mem_ctx);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* values are copied in the structure, allocated on "attrs" */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_val(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *name, const struct ldb_val *val);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_string(struct sysdb_attrs *attrs,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_attrs_add_lower_case_string(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_mem(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_bool(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_long(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_uint32(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_time_t(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_add_lc_name_alias(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_copy_values(struct sysdb_attrs *src,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_el(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_el_ext(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool alloc, struct ldb_message_element **el);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_steal_string(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_string(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **string);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherconst char **sss_ldb_el_to_string_list(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_string_array(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher TALLOC_CTX *mem_ctx, const char ***string);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_get_bool(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_uint16_t(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_int32_t(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_get_uint32_t(struct sysdb_attrs *attrs, const char *name,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_replace_name(struct sysdb_attrs *attrs, const char *oldname,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_attrs_users_from_str_list(struct sysdb_attrs *attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *list);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_primary_name(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_get_aliases(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char ***_aliases);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_primary_name_list(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_real_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char **_cname);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_msg2attrs(TALLOC_CTX *mem_ctx, size_t count,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* convert an ldb error into an errno error */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* DNs related helper functions */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_rdn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *dn, char **_name, char **_val);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_user_dn(TALLOC_CTX *mem_ctx, struct sss_domain_info *dom,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_group_dn(TALLOC_CTX *mem_ctx, struct sss_domain_info *dom,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_netgroup_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher struct sss_domain_info *dom, const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_netgroup_base_dn(TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashoverrno_t sysdb_group_dn_name(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_domain_dn(TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_base_dn(struct sysdb_ctx *sysdb, TALLOC_CTX *mem_ctx);
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_dn *sysdb_custom_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherstruct ldb_dn *sysdb_custom_subtree_dn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherchar *sysdb_user_strdn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherchar *sysdb_group_strdn(TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovstruct ldb_context *sysdb_ctx_get_ldb(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint compare_ldb_dn_comp_num(const void *m1, const void *m2);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions to start and finish transactions */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_transaction_start(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_transaction_commit(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_transaction_cancel(struct sysdb_ctx *sysdb);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions related to subdomains */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_domain_create(struct sysdb_ctx *sysdb, const char *domain_name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_subdomain_store(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *flat_name, const char *domain_id,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher bool mpg, bool enumerate, const char *forest);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_subdomains(struct sss_domain_info *domain);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_master_domain_update(struct sss_domain_info *domain);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_master_domain_add_info(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_subdomain_delete(struct sysdb_ctx *sysdb, const char *name);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_ranges(TALLOC_CTX *mem_ctx, struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_range_create(struct sysdb_ctx *sysdb, struct range_info *range);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_ranges(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Sysdb initialization.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * call this function *only* once to initialize the database and get
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * the sysdb ctx */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* used to initialize only one domain database.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * Do NOT use if sysdb_init has already been called */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions to retrieve information from sysdb
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * These functions automatically starts an operation
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * therefore they cannot be called within a transaction */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher enum {SYSDB_NETGROUP_TRIPLE_VAL, SYSDB_NETGROUP_GROUP_VAL} type;
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_getnetgr(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_get_user_attr(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_get_netgroup_attr(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* functions that modify the databse
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * they have to be called within a transaction
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * See sysdb_transaction_send()/_recv() */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* Permissive modify */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sss_ldb_modify_permissive(struct ldb_context *ldb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Delete Entry */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_delete_entry(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_recursive(struct sysdb_ctx *sysdb,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* Search Entry */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_entry(TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov#define SSS_LDB_SEARCH(ret, ldb, mem_ctx, _result, base, scope, attrs, \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov _sls_lret = ldb_search(ldb, mem_ctx, _result, base, scope, attrs, \
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov if (ret == EOK && (*_result)->count == 0) { \
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Search User (by uid, sid or name) */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_search_user_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_user_by_uid(TALLOC_CTX *mem_ctx,
274fe6a4f8bcb23e31929430110c0b52e9ce233aJakub Hrozek const char **attrs,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_user_by_sid_str(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_user_by_upn(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Search Group (by gid, sid or name) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_group_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_group_by_gid(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_group_by_sid_str(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Search Netgroup (by name) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_netgroup_by_name(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace entry attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_entry_attr(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace user attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_user_attr(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace group attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_group_attr(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Replace netgroup attrs */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_set_netgroup_attr(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Allocate a new id */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_get_new_id(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add user (only basic attrs and w/o checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_basic_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add user (all checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_user(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov/* Add group (only basic attrs and w/o checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_basic_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add group (all checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_group(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_add_incomplete_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Add netgroup (only basic attrs and w/o checks) */
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_basic_netgroup(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashov const char *name, const char *description);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_netgroup(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* mod_op must be either LDB_FLAG_MOD_ADD or LDB_FLAG_MOD_DELETE */
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_mod_group_member(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_store_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_store_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_add_group_member(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_remove_group_member(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_members(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *add_groups,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *del_groups);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_update_members_dn(struct sss_domain_info *member_domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *add_groups,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher const char *const *del_groups);
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher/* Password caching function.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * If you are in a transaction ignore sysdb and pass in the handle.
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * If you are not in a transaction pass NULL in handle and provide sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagher * in this case a transaction will be automatically started and the
03abdaa21ecf562b714f204ca42379ff08626f75Simo Sorce * function will be completely wrapped in it's own sysdb transaction */
f7fa22da5d865221f84371d6b522444e1591164cSumit Boseint sysdb_cache_password(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t check_failed_login_attempts(struct confdb_ctx *cdb,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagherint sysdb_cache_auth(struct sss_domain_info *domain,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagherint sysdb_store_custom(struct sss_domain_info *domain,
2c59666e045b5edc1fa15049724eb20bd3a7e04aStephen Gallagherint sysdb_search_custom_by_name(TALLOC_CTX *mem_ctx,
9acfb09f7969a69f58bd45c856b01700541853caLukas Slebodnikint sysdb_delete_custom(struct sss_domain_info *domain,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashovint sysdb_search_users(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_user(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_groups(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_group(struct sss_domain_info *domain,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_search_netgroups(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallagherint sysdb_delete_netgroup(struct sss_domain_info *domain,
71829db25d6a0beb63066d912702ac1b7787dbe2Jakub Hrozekint sysdb_delete_by_sid(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_attrs_to_list(TALLOC_CTX *mem_ctx,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_netgr_to_entries(TALLOC_CTX *mem_ctx,
a3c8390d19593b1e5277d95bfb4ab206d4785150Nikolai Kondrashoverrno_t sysdb_dn_sanitize(TALLOC_CTX *mem_ctx, const char *input,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_get_bool(struct sysdb_ctx *sysdb,
2dd3faebcd3cfd00efda38ffd2585d675e696b12Stephen Gallaghererrno_t sysdb_set_bool(struct sysdb_ctx *sysdb,
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 *dom_name,
const char *dom_sid,
const char *sid_str,
const char **attrs,
#define SYSDB_GPO_ATTRS { \
SYSDB_NAME, \
NULL }
const char *gpo_guid,
int gpo_version,
int cache_timeout,
const char *gpo_guid,
const char *policy_setting_key,
const char *policy_setting_value);
const char *policy_setting_key,
const char **policy_setting_value);