summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap
diff options
context:
space:
mode:
authorCove Schneider <cove@ilm.com>2013-05-31 23:56:48 -0700
committerJakub Hrozek <jhrozek@redhat.com>2013-11-12 10:50:46 +0100
commit407123c67114bf010cdad4418f291f9fb3762f4a (patch)
tree7b2e1ee6226c1447479dda04d67db517a410ded3 /src/providers/ldap
parent41402c003fef1e6768f5468dd7ea2e20e16bfa19 (diff)
downloadsssd-407123c67114bf010cdad4418f291f9fb3762f4a.tar.gz
sssd-407123c67114bf010cdad4418f291f9fb3762f4a.tar.xz
sssd-407123c67114bf010cdad4418f291f9fb3762f4a.zip
Add ldap_autofs_map_master_name option
Diffstat (limited to 'src/providers/ldap')
-rw-r--r--src/providers/ldap/ldap_common.c1
-rw-r--r--src/providers/ldap/ldap_opts.h1
-rw-r--r--src/providers/ldap/sdap.h1
-rw-r--r--src/providers/ldap/sdap_autofs.c12
4 files changed, 15 insertions, 0 deletions
diff --git a/src/providers/ldap/ldap_common.c b/src/providers/ldap/ldap_common.c
index 83f901c74..cd38ac35a 100644
--- a/src/providers/ldap/ldap_common.c
+++ b/src/providers/ldap/ldap_common.c
@@ -571,6 +571,7 @@ int ldap_get_autofs_options(TALLOC_CTX *memctx,
struct sdap_options *opts)
{
const char *search_base;
+ const char *master_map;
struct sdap_attr_map *default_entry_map;
struct sdap_attr_map *default_mobject_map;
int ret;
diff --git a/src/providers/ldap/ldap_opts.h b/src/providers/ldap/ldap_opts.h
index a6c821f3a..d6a2fc501 100644
--- a/src/providers/ldap/ldap_opts.h
+++ b/src/providers/ldap/ldap_opts.h
@@ -56,6 +56,7 @@ struct dp_option default_basic_opts[] = {
{ "ldap_sudo_include_netgroups", DP_OPT_BOOL, BOOL_TRUE, BOOL_TRUE },
{ "ldap_sudo_include_regexp", DP_OPT_BOOL, BOOL_TRUE, BOOL_TRUE },
{ "ldap_autofs_search_base", DP_OPT_STRING, NULL_STRING, NULL_STRING },
+ { "ldap_autofs_map_master_name", DP_OPT_STRING, { "auto.master" }, NULL_STRING },
{ "ldap_schema", DP_OPT_STRING, { "rfc2307" }, NULL_STRING },
{ "ldap_offline_timeout", DP_OPT_NUMBER, { .number = 60 }, NULL_NUMBER },
{ "ldap_force_upper_case_realm", DP_OPT_BOOL, BOOL_FALSE, BOOL_FALSE },
diff --git a/src/providers/ldap/sdap.h b/src/providers/ldap/sdap.h
index c53471b9b..92ff6673e 100644
--- a/src/providers/ldap/sdap.h
+++ b/src/providers/ldap/sdap.h
@@ -164,6 +164,7 @@ enum sdap_basic_opt {
SDAP_SUDO_INCLUDE_NETGROUPS,
SDAP_SUDO_INCLUDE_REGEXP,
SDAP_AUTOFS_SEARCH_BASE,
+ SDAP_AUTOFS_MAP_MASTER_NAME,
SDAP_SCHEMA,
SDAP_OFFLINE_TIMEOUT,
SDAP_FORCE_UPPER_CASE_REALM,
diff --git a/src/providers/ldap/sdap_autofs.c b/src/providers/ldap/sdap_autofs.c
index e7947c9b2..c0bf3b689 100644
--- a/src/providers/ldap/sdap_autofs.c
+++ b/src/providers/ldap/sdap_autofs.c
@@ -30,6 +30,7 @@
#include "providers/ldap/sdap.h"
#include "providers/ldap/sdap_async.h"
#include "providers/dp_backend.h"
+#include "providers/data_provider.h"
#include "db/sysdb_autofs.h"
#include "util/util.h"
@@ -82,6 +83,7 @@ void sdap_autofs_handler(struct be_req *be_req)
struct sdap_id_ctx *id_ctx;
struct be_autofs_req *autofs_req;
struct tevent_req *req;
+ const char *master_map;
int ret = EOK;
DEBUG(SSSDBG_TRACE_INTERNAL, ("sdap autofs handler called\n"));
@@ -98,6 +100,16 @@ void sdap_autofs_handler(struct be_req *be_req)
DEBUG(SSSDBG_FUNC_DATA, ("Requested refresh for: %s\n",
autofs_req->mapname ? autofs_req->mapname : "<ALL>\n"));
+ if (autofs_req->mapname != NULL) {
+ master_map = dp_opt_get_string(id_ctx->opts->basic,
+ SDAP_AUTOFS_MAP_MASTER_NAME);
+ if (strcmp(master_map, autofs_req->mapname) == 0) {
+ autofs_req->invalidate = true;
+ DEBUG(SSSDBG_FUNC_DATA, ("Refresh of automount master map triggered: %s\n",
+ autofs_req->mapname));
+ }
+ }
+
if (autofs_req->invalidate) {
ret = sysdb_invalidate_autofs_maps(id_ctx->be->domain->sysdb,
id_ctx->be->domain);