summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config/etc/sssd.api.d/sssd-ipa.conf1
-rw-r--r--src/config/etc/sssd.api.d/sssd-ldap.conf1
-rw-r--r--src/db/sysdb_autofs.h4
-rw-r--r--src/man/sssd-ldap.5.xml13
-rw-r--r--src/providers/ad/ad_opts.h1
-rw-r--r--src/providers/data_provider_be.c7
-rw-r--r--src/providers/ipa/ipa_opts.h1
-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
11 files changed, 34 insertions, 9 deletions
diff --git a/src/config/etc/sssd.api.d/sssd-ipa.conf b/src/config/etc/sssd.api.d/sssd-ipa.conf
index bc14fbe3d..72b36c0b5 100644
--- a/src/config/etc/sssd.api.d/sssd-ipa.conf
+++ b/src/config/etc/sssd.api.d/sssd-ipa.conf
@@ -164,6 +164,7 @@ ipa_hostgroup_uuid = str, None, false
[provider/ipa/autofs]
ipa_automount_location = str, None, false
+ldap_autofs_map_master_name = str, None, false
ldap_autofs_map_object_class = str, None, false
ldap_autofs_map_name = str, None, false
ldap_autofs_entry_object_class = str, None, false
diff --git a/src/config/etc/sssd.api.d/sssd-ldap.conf b/src/config/etc/sssd.api.d/sssd-ldap.conf
index eb239664c..441390b0c 100644
--- a/src/config/etc/sssd.api.d/sssd-ldap.conf
+++ b/src/config/etc/sssd.api.d/sssd-ldap.conf
@@ -156,6 +156,7 @@ ldap_sudorule_notafter = str, None, false
ldap_sudorule_order = str, None, false
[provider/ldap/autofs]
+ldap_autofs_map_master_name = str, None, false
ldap_autofs_map_object_class = str, None, false
ldap_autofs_map_name = str, None, false
ldap_autofs_entry_object_class = str, None, false
diff --git a/src/db/sysdb_autofs.h b/src/db/sysdb_autofs.h
index e3528ce4e..1c334cf79 100644
--- a/src/db/sysdb_autofs.h
+++ b/src/db/sysdb_autofs.h
@@ -28,8 +28,8 @@
#define AUTOFS_MAP_SUBDIR "autofsmaps"
#define AUTOFS_ENTRY_SUBDIR "autofsentries"
-#define SYSDB_AUTOFS_MAP_OC "automountMap"
-#define SYSDB_AUTOFS_MAP_NAME "automountMapName"
+#define SYSDB_AUTOFS_MAP_OC "automountMap"
+#define SYSDB_AUTOFS_MAP_NAME "automountMapName"
#define SYSDB_AUTOFS_ENTRY_OC "automount"
#define SYSDB_AUTOFS_ENTRY_KEY "automountKey"
diff --git a/src/man/sssd-ldap.5.xml b/src/man/sssd-ldap.5.xml
index 98b0349e5..72586fb1d 100644
--- a/src/man/sssd-ldap.5.xml
+++ b/src/man/sssd-ldap.5.xml
@@ -2244,6 +2244,19 @@ ldap_access_filter = memberOf=cn=allowedusers,ou=Groups,dc=example,dc=com
<para>
<variablelist>
<varlistentry>
+ <term>ldap_autofs_map_master_name (string)</term>
+ <listitem>
+ <para>
+ The name of the automount master map in LDAP.
+ </para>
+ <para>
+ Default: auto.master
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <variablelist>
+ <varlistentry>
<term>ldap_autofs_map_object_class (string)</term>
<listitem>
<para>
diff --git a/src/providers/ad/ad_opts.h b/src/providers/ad/ad_opts.h
index 8022a1627..9055b4516 100644
--- a/src/providers/ad/ad_opts.h
+++ b/src/providers/ad/ad_opts.h
@@ -66,6 +66,7 @@ struct dp_option ad_def_ldap_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, { "ad" }, NULL_STRING },
{ "ldap_offline_timeout", DP_OPT_NUMBER, { .number = 60 }, NULL_NUMBER },
{ "ldap_force_upper_case_realm", DP_OPT_BOOL, BOOL_TRUE, BOOL_TRUE },
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index db73d81a6..d0d47f49a 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -1857,13 +1857,6 @@ static int be_autofs_handler(DBusMessage *message, struct sbus_connection *conn)
goto done;
}
- /* If a request for auto.master comes in, the automounter deamon
- * has been reloaded. Expire all autofs maps to force reload
- */
- if (strcmp(be_autofs_req->mapname, "auto.master") == 0) {
- be_autofs_req->invalidate = true;
- }
-
be_req->req_data = be_autofs_req;
if (!be_cli->bectx->bet_info[BET_AUTOFS].bet_ops) {
diff --git a/src/providers/ipa/ipa_opts.h b/src/providers/ipa/ipa_opts.h
index 5ec36c550..b3eef456c 100644
--- a/src/providers/ipa/ipa_opts.h
+++ b/src/providers/ipa/ipa_opts.h
@@ -90,6 +90,7 @@ struct dp_option ipa_def_ldap_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, { "ipa_v1" }, NULL_STRING },
{ "ldap_offline_timeout", DP_OPT_NUMBER, { .number = 60 }, NULL_NUMBER },
{ "ldap_force_upper_case_realm", DP_OPT_BOOL, BOOL_TRUE, BOOL_TRUE },
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);