diff options
author | Yassir Elley <yelley@redhat.com> | 2014-07-22 14:19:35 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-07-31 18:59:07 +0200 |
commit | ff4b603cc14ea6ea15caaf89a03e927920124af4 (patch) | |
tree | c1de7116876fba1489dc49fb7eb234382ff02a18 /src/db/sysdb_gpo.c | |
parent | 5490fa3ea4f6a4118a5188acb0e05daa302ed9d6 (diff) | |
download | sssd-ff4b603cc14ea6ea15caaf89a03e927920124af4.tar.gz sssd-ff4b603cc14ea6ea15caaf89a03e927920124af4.tar.xz sssd-ff4b603cc14ea6ea15caaf89a03e927920124af4.zip |
AD-GPO: add ad_gpo_cache_timeout option
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/db/sysdb_gpo.c')
-rw-r--r-- | src/db/sysdb_gpo.c | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/src/db/sysdb_gpo.c b/src/db/sysdb_gpo.c index 3c23c5b8f..228f131ac 100644 --- a/src/db/sysdb_gpo.c +++ b/src/db/sysdb_gpo.c @@ -49,7 +49,9 @@ sysdb_gpo_dn(TALLOC_CTX *mem_ctx, struct sss_domain_info *domain, errno_t sysdb_gpo_store_gpo(struct sss_domain_info *domain, const char *gpo_guid, - int gpo_version) + int gpo_version, + int cache_timeout, + time_t now) { errno_t ret, sret; int lret; @@ -81,6 +83,10 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain, goto done; } + if (!now) { + now = time(NULL); + } + in_transaction = true; /* Check for an existing gpo_guid entry */ @@ -140,6 +146,21 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain, goto done; } + /* Add the Policy File Timeout */ + lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_TIMEOUT_ATTR, + LDB_FLAG_MOD_ADD, NULL); + if (lret != LDB_SUCCESS) { + ret = sysdb_error_to_errno(lret); + goto done; + } + + lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%lu", + ((cache_timeout) ? (now + cache_timeout) : 0)); + if (lret != LDB_SUCCESS) { + ret = sysdb_error_to_errno(lret); + goto done; + } + lret = ldb_add(domain->sysdb->ldb, update_msg); if (lret != LDB_SUCCESS) { DEBUG(SSSDBG_MINOR_FAILURE, @@ -170,6 +191,21 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain, goto done; } + /* Add the Policy File Timeout */ + lret = ldb_msg_add_empty(update_msg, SYSDB_GPO_TIMEOUT_ATTR, + LDB_FLAG_MOD_REPLACE, NULL); + if (lret != LDB_SUCCESS) { + ret = sysdb_error_to_errno(lret); + goto done; + } + + lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%lu", + ((cache_timeout) ? (now + cache_timeout) : 0)); + if (lret != LDB_SUCCESS) { + ret = sysdb_error_to_errno(lret); + goto done; + } + lret = ldb_modify(domain->sysdb->ldb, update_msg); if (lret != LDB_SUCCESS) { DEBUG(SSSDBG_MINOR_FAILURE, @@ -202,10 +238,10 @@ done: } errno_t -sysdb_gpo_get_gpo(TALLOC_CTX *mem_ctx, - struct sss_domain_info *domain, - const char *gpo_guid, - struct ldb_result **_result) +sysdb_gpo_get_gpo_by_guid(TALLOC_CTX *mem_ctx, + struct sss_domain_info *domain, + const char *gpo_guid, + struct ldb_result **_result) { errno_t ret; int lret; |