summaryrefslogtreecommitdiff
path: root/src/providers/ldap
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-06-19 19:06:14 +0300
committerJakub Hrozek <jhrozek@redhat.com>2013-06-28 22:22:20 +0200
commit7ed4988618decf0a8efa0dedd722a84d748bf868 (patch)
treedc9b7cf122917f9683d54d4cf51ae60f3463685a /src/providers/ldap
parent0249e8d37920f59fd70bdafa4f6706a05ae523c1 (diff)
downloadsssd-7ed4988618decf0a8efa0dedd722a84d748bf868.tar.gz
sssd-7ed4988618decf0a8efa0dedd722a84d748bf868.tar.bz2
sssd-7ed4988618decf0a8efa0dedd722a84d748bf868.zip
LDAP: Add utility function sdap_copy_map
The AD subdomains will only use default options values. This patch introduces a new utility function sdap_copy_map() that copies the default options map. Subtask of: https://fedorahosted.org/sssd/ticket/1962
Diffstat (limited to 'src/providers/ldap')
-rw-r--r--src/providers/ldap/sdap.c40
-rw-r--r--src/providers/ldap/sdap.h5
2 files changed, 45 insertions, 0 deletions
diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c
index 0492be05..5497d943 100644
--- a/src/providers/ldap/sdap.c
+++ b/src/providers/ldap/sdap.c
@@ -28,6 +28,46 @@
/* =Retrieve-Options====================================================== */
+int sdap_copy_map(TALLOC_CTX *memctx,
+ struct sdap_attr_map *src_map,
+ int num_entries,
+ struct sdap_attr_map **_map)
+{
+ struct sdap_attr_map *map;
+ int i;
+
+ map = talloc_array(memctx, struct sdap_attr_map, num_entries);
+ if (!map) {
+ return ENOMEM;
+ }
+
+ for (i = 0; i < num_entries; i++) {
+ map[i].opt_name = talloc_strdup(map, src_map[i].opt_name);
+ map[i].sys_name = talloc_strdup(map, src_map[i].sys_name);
+ if (map[i].opt_name == NULL || map[i].sys_name == NULL) {
+ return ENOMEM;
+ }
+
+ if (src_map[i].def_name != NULL) {
+ map[i].def_name = talloc_strdup(map, src_map[i].def_name);
+ map[i].name = talloc_strdup(map, src_map[i].def_name);
+ if (map[i].def_name == NULL || map[i].name == NULL) {
+ return ENOMEM;
+ }
+ } else {
+ map[i].def_name = NULL;
+ map[i].name = NULL;
+ }
+
+ DEBUG(SSSDBG_TRACE_FUNC, ("Option %s has%s value %s\n",
+ map[i].opt_name, map[i].name ? "" : " no",
+ map[i].name ? map[i].name : ""));
+ }
+
+ *_map = map;
+ return EOK;
+}
+
int sdap_get_map(TALLOC_CTX *memctx,
struct confdb_ctx *cdb,
const char *conf_path,
diff --git a/src/providers/ldap/sdap.h b/src/providers/ldap/sdap.h
index 9fbe04b6..24d208a2 100644
--- a/src/providers/ldap/sdap.h
+++ b/src/providers/ldap/sdap.h
@@ -438,6 +438,11 @@ struct sdap_deref_attrs {
struct sysdb_attrs *attrs;
};
+int sdap_copy_map(TALLOC_CTX *memctx,
+ struct sdap_attr_map *src_map,
+ int num_entries,
+ struct sdap_attr_map **_map);
+
int sdap_get_map(TALLOC_CTX *memctx,
struct confdb_ctx *cdb,
const char *conf_path,