summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2013-01-28 16:31:23 +0100
committerMichael Adam <obnox@samba.org>2013-02-05 17:36:32 +0100
commit1342bdd55c9759bc23f93298b34ed8d587816e6b (patch)
tree93264a4bd440357c4a8d525295543ce214fca1f8
parente7b39fba5e46f01e43250a758c69e3067400a0d3 (diff)
downloadsamba-1342bdd55c9759bc23f93298b34ed8d587816e6b.tar.gz
samba-1342bdd55c9759bc23f93298b34ed8d587816e6b.tar.bz2
samba-1342bdd55c9759bc23f93298b34ed8d587816e6b.zip
s3:param: add a utility function lp_idmap_range() to get the configured range for a given domain.
Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Christian Ambach <ambi@samba.org>
-rw-r--r--source3/include/proto.h1
-rw-r--r--source3/param/loadparm.c40
2 files changed, 41 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 6856dd7730..454ffa5721 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1083,6 +1083,7 @@ int lp_winbind_max_domain_connections(void);
const char *lp_idmap_backend(void);
int lp_idmap_cache_time(void);
int lp_idmap_negative_cache_time(void);
+bool lp_idmap_range(const char *domain_name, uint32_t *low, uint32_t *high);
int lp_keepalive(void);
bool lp_passdb_expand_explicit(void);
char *lp_ldap_suffix(TALLOC_CTX *ctx);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 2408839426..f581c8e1b6 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -2952,6 +2952,46 @@ static bool handle_idmap_gid(struct loadparm_context *unused, int snum, const ch
return true;
}
+bool lp_idmap_range(const char *domain_name, uint32_t *low, uint32_t *high)
+{
+ char *config_option = NULL;
+ const char *range = NULL;
+ bool ret = false;
+
+ SMB_ASSERT(low != NULL);
+ SMB_ASSERT(high != NULL);
+
+ if ((domain_name == NULL) || (domain_name[0] == '\0')) {
+ domain_name = "*";
+ }
+
+ config_option = talloc_asprintf(talloc_tos(), "idmap config %s",
+ domain_name);
+ if (config_option == NULL) {
+ DEBUG(0, ("out of memory\n"));
+ return false;
+ }
+
+ range = lp_parm_const_string(-1, config_option, "range", NULL);
+ if (range == NULL) {
+ DEBUG(1, ("idmap range not specified for domain '%s'\n", domain_name));
+ goto done;
+ }
+
+ if (sscanf(range, "%u - %u", low, high) != 2) {
+ DEBUG(1, ("error parsing idmap range '%s' for domain '%s'\n",
+ range, domain_name));
+ goto done;
+ }
+
+ ret = true;
+
+done:
+ talloc_free(config_option);
+ return ret;
+
+}
+
/***************************************************************************
Handle the DEBUG level list.
***************************************************************************/