diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2013-06-19 19:06:14 +0300 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-06-28 22:22:20 +0200 |
commit | 7ed4988618decf0a8efa0dedd722a84d748bf868 (patch) | |
tree | dc9b7cf122917f9683d54d4cf51ae60f3463685a /src | |
parent | 0249e8d37920f59fd70bdafa4f6706a05ae523c1 (diff) | |
download | sssd-7ed4988618decf0a8efa0dedd722a84d748bf868.tar.gz sssd-7ed4988618decf0a8efa0dedd722a84d748bf868.tar.xz 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')
-rw-r--r-- | src/providers/ldap/sdap.c | 40 | ||||
-rw-r--r-- | src/providers/ldap/sdap.h | 5 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/providers/ldap/sdap.c b/src/providers/ldap/sdap.c index 0492be05d..5497d9434 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 9fbe04b6a..24d208a2e 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, |