summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-07-01 11:41:52 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-07-01 11:41:52 -0400
commitaecb9050e5d95383fea2622090691fe63f99697c (patch)
treead17ed6e3c9f5d3b32940e3f3e0f370728431747 /src
parent7272bca2238d75b7b4cf61ae457ffb31dee2ee8f (diff)
downloadslapi-nis-aecb9050e5d95383fea2622090691fe63f99697c.tar.gz
slapi-nis-aecb9050e5d95383fea2622090691fe63f99697c.tar.xz
slapi-nis-aecb9050e5d95383fea2622090691fe63f99697c.zip
- make the shared parts of the configuration actually shared so that we can
drop accessors for reading the shared parts
Diffstat (limited to 'src')
-rw-r--r--src/back-nis.c166
-rw-r--r--src/back-sch.c169
-rw-r--r--src/back-shr.c65
-rw-r--r--src/backend.h22
4 files changed, 167 insertions, 255 deletions
diff --git a/src/back-nis.c b/src/back-nis.c
index 67606f9..ced47db 100644
--- a/src/back-nis.c
+++ b/src/back-nis.c
@@ -55,11 +55,7 @@
/* The data we ask the map cache to keep, for us, for each map. */
struct backend_set_data {
- /* Common data. */
- struct plugin_state *state;
- char *domain, *map, **bases, *entry_filter;
- char **ref_attrs;
- struct format_inref_attr **inref_attrs;
+ struct backend_shr_set_data common;
/* NIS-specific data. */
char **key_formats, **keys_formats, *value_format;
int n_key_formats, n_keys_formats;
@@ -80,65 +76,30 @@ backend_read_master_name(struct plugin_state *state, char **master)
}
/* Manipulate map configuration data. */
-struct plugin_state *
-backend_set_config_get_state(struct backend_set_data *set_data)
-{
- return set_data->state;
-}
-char **
-backend_set_config_get_bases(struct backend_set_data *set_data)
-{
- return set_data->bases;
-}
-char *
-backend_set_config_get_filter(struct backend_set_data *set_data)
-{
- return set_data->entry_filter;
-}
-char *
-backend_set_config_get_group(struct backend_set_data *set_data)
-{
- return set_data->domain;
-}
-char *
-backend_set_config_get_set(struct backend_set_data *set_data)
-{
- return set_data->map;
-}
-struct format_inref_attr **
-backend_set_config_get_inref_attrs(struct backend_set_data *set_data)
-{
- return set_data->inref_attrs;
-}
-char **
-backend_set_config_get_ref_attrs(struct backend_set_data *set_data)
-{
- return set_data->ref_attrs;
-}
static void
backend_free_set_data_contents(void *data)
{
struct backend_set_data *set_data = data;
if (set_data != NULL) {
- free(set_data->domain);
- free(set_data->map);
- free(set_data->bases);
+ free(set_data->common.group);
+ free(set_data->common.set);
+ free(set_data->common.bases);
+ format_free_attr_list(set_data->common.ref_attrs);
+ format_free_inref_attrs(set_data->common.inref_attrs);
+ free(set_data->common.entry_filter);
free(set_data->disallowed_chars);
- format_free_attr_list(set_data->ref_attrs);
- format_free_inref_attrs(set_data->inref_attrs);
- free(set_data->entry_filter);
backend_shr_free_strlist(set_data->key_formats);
backend_shr_free_strlist(set_data->keys_formats);
free(set_data->value_format);
}
}
void
-backend_set_config_free_config(struct backend_set_data *data)
+backend_set_config_free_config(struct backend_shr_set_data *data)
{
- backend_free_set_data_contents(data);
+ backend_free_set_data_contents(data->self);
free(data);
}
-static struct backend_set_data *
+static struct backend_shr_set_data *
backend_copy_set_data(const struct backend_set_data *data)
{
struct backend_set_data *ret;
@@ -146,34 +107,35 @@ backend_copy_set_data(const struct backend_set_data *data)
if (ret == NULL) {
return NULL;
}
- ret->state = data->state;
- ret->domain = strdup(data->domain);
- ret->map = strdup(data->map);
- ret->bases = backend_shr_dup_strlist(data->bases);
+ ret->common.self = ret;
+ ret->common.state = data->common.state;
+ ret->common.group = strdup(data->common.group);
+ ret->common.set = strdup(data->common.set);
+ ret->common.bases = backend_shr_dup_strlist(data->common.bases);
+ ret->common.ref_attrs = data->common.ref_attrs ?
+ format_dup_attr_list(data->common.ref_attrs) :
+ NULL;
+ ret->common.inref_attrs = data->common.inref_attrs ?
+ format_dup_inref_attrs(data->common.inref_attrs) :
+ NULL;
+ ret->common.entry_filter = strdup(data->common.entry_filter);
ret->disallowed_chars = data->disallowed_chars ?
strdup(data->disallowed_chars) : NULL;
- ret->ref_attrs = data->ref_attrs ?
- format_dup_attr_list(data->ref_attrs) :
- NULL;
- ret->inref_attrs = data->inref_attrs ?
- format_dup_inref_attrs(data->inref_attrs) :
- NULL;
- ret->entry_filter = strdup(data->entry_filter);
ret->key_formats = backend_shr_dup_strlist(data->key_formats);
ret->keys_formats = backend_shr_dup_strlist(data->keys_formats);
ret->n_key_formats = data->n_key_formats;
ret->n_keys_formats = data->n_keys_formats;
ret->value_format = strdup(data->value_format);
- if ((ret->domain == NULL) ||
- (ret->map == NULL) ||
- (ret->bases == NULL) ||
- (ret->entry_filter == NULL) ||
+ if ((ret->common.group == NULL) ||
+ (ret->common.set == NULL) ||
+ (ret->common.bases == NULL) ||
+ (ret->common.entry_filter == NULL) ||
((ret->key_formats == NULL) && (ret->keys_formats == NULL)) ||
(ret->value_format == NULL)) {
- backend_set_config_free_config(ret);
+ backend_set_config_free_config(&ret->common);
return NULL;
}
- return ret;
+ return &ret->common;
}
/* Given a map-entry directory entry, determine which keys it should have,
@@ -184,7 +146,7 @@ backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
{
char **keys, ***key_sets, **all_keys, *value, *ndn, *plugin_id;
int i, j, k, n_key_sets;
- plugin_id = data->state->plugin_desc->spd_id;
+ plugin_id = data->common.state->plugin_desc->spd_id;
/* Pull out the NDN of this entry. */
ndn = slapi_entry_get_ndn(e);
/* Pull out the keys and value for the entry. */
@@ -195,12 +157,13 @@ backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
}
if (keys != NULL) {
for (i = 0, j = 0; i < data->n_key_formats; i++) {
- keys[j] = format_get_data(data->state, e,
- data->domain, data->map,
+ keys[j] = format_get_data(data->common.state, e,
+ data->common.group,
+ data->common.set,
data->key_formats[i],
data->disallowed_chars,
- &data->ref_attrs,
- &data->inref_attrs);
+ &data->common.ref_attrs,
+ &data->common.inref_attrs);
if (keys[j] != NULL) {
j++;
} else {
@@ -209,9 +172,11 @@ backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
"unsetting domain/map/id"
"\"%s\"/\"%s\"/(\"%s\")\n",
data->key_formats[i],
- data->domain, data->map, ndn);
- map_data_unset_entry_id(data->state,
- data->domain, data->map,
+ data->common.group,
+ data->common.set, ndn);
+ map_data_unset_entry_id(data->common.state,
+ data->common.group,
+ data->common.set,
ndn);
for (k = 0; k < j; k++) {
format_free_data(keys[k]);
@@ -230,13 +195,13 @@ backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
n_key_sets = 0;
if (key_sets != NULL) {
for (i = 0, j = 0; i < data->n_keys_formats; i++) {
- key_sets[j] = format_get_data_set(data->state, e,
- data->domain,
- data->map,
+ key_sets[j] = format_get_data_set(data->common.state, e,
+ data->common.group,
+ data->common.set,
data->keys_formats[i],
data->disallowed_chars,
- &data->ref_attrs,
- &data->inref_attrs);
+ &data->common.ref_attrs,
+ &data->common.inref_attrs);
if (key_sets[j] != NULL) {
j++;
}
@@ -244,9 +209,11 @@ backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
key_sets[j] = NULL;
n_key_sets = j;
}
- value = format_get_data(data->state, e, data->domain, data->map,
+ value = format_get_data(data->common.state, e,
+ data->common.group, data->common.set,
data->value_format, data->disallowed_chars,
- &data->ref_attrs, &data->inref_attrs);
+ &data->common.ref_attrs,
+ &data->common.inref_attrs);
/* Build one big list of all of the keys and key sets. */
k = 0;
if (keys != NULL) {
@@ -293,18 +260,19 @@ backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
slapi_log_error(SLAPI_LOG_PLUGIN, plugin_id,
"setting domain/map/key/value "
"\"%s\"/\"%s\"/\"%s\"(\"%s\")=\"%s\"\n",
- data->domain, data->map,
+ data->common.group, data->common.set,
all_keys[i], ndn, value);
}
- map_data_set_entry(data->state, data->domain, data->map, ndn,
+ map_data_set_entry(data->common.state,
+ data->common.group, data->common.set, ndn,
NULL, all_keys, -1, value, NULL, NULL);
} else {
slapi_log_error(SLAPI_LOG_PLUGIN, plugin_id,
"no value for %s, unsetting domain/map/id"
"\"%s\"/\"%s\"/(\"%s\")\n",
- ndn, data->domain, data->map, ndn);
- map_data_unset_entry_id(data->state,
- data->domain, data->map,
+ ndn, data->common.group, data->common.set, ndn);
+ map_data_unset_entry_id(data->common.state,
+ data->common.group, data->common.set,
ndn);
}
format_free_data(value);
@@ -394,7 +362,8 @@ backend_map_config_filter(const char *format,
void
backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
const char *domain, const char *map,
- bool_t *secure, struct backend_set_data **pret)
+ bool_t *secure,
+ struct backend_shr_set_data **pret)
{
struct backend_set_data ret;
const char *default_filter, *default_key_format, *default_keys_format;
@@ -572,20 +541,19 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
free(entry_filter);
backend_shr_free_strlist(bases);
/* Populate the returned structure. */
- ret.state = state;
- ret.domain = strdup(domain);
- ret.map = strdup(map);
- ret.bases = use_bases;
+ ret.common.state = state;
+ ret.common.group = strdup(domain);
+ ret.common.set = strdup(map);
+ ret.common.bases = use_bases;
+ ret.common.entry_filter = use_entry_filter;
+ ret.common.ref_attrs = NULL;
+ ret.common.inref_attrs = NULL;
ret.disallowed_chars = use_disallowed_chars;
- ret.entry_filter = use_entry_filter;
ret.key_formats = use_key_formats;
ret.n_key_formats = 0;
ret.keys_formats = use_keys_formats;
ret.n_keys_formats = 0;
ret.value_format = use_value_format;
- ret.ref_attrs = NULL;
- ret.inref_attrs = NULL;
- ret.n_key_formats = 0;
for (i = 0;
(use_key_formats != NULL) && (use_key_formats[i] != NULL);
i++) {
@@ -615,11 +583,11 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
ret.n_keys_formats++;
}
*pret = backend_copy_set_data(&ret);
- free(ret.domain);
- free(ret.map);
- backend_shr_free_strlist(ret.bases);
+ free(ret.common.group);
+ free(ret.common.set);
+ backend_shr_free_strlist(ret.common.bases);
free(ret.disallowed_chars);
- free(ret.entry_filter);
+ free(ret.common.entry_filter);
backend_shr_free_strlist(ret.key_formats);
backend_shr_free_strlist(ret.keys_formats);
free(ret.value_format);
diff --git a/src/back-sch.c b/src/back-sch.c
index 0459f8c..e7e582b 100644
--- a/src/back-sch.c
+++ b/src/back-sch.c
@@ -50,17 +50,12 @@
#include "plugin.h"
#include "map.h"
-#define SCH_CONTAINER_CONFIGURATION_FILTER "(&(objectClass=*)(" SCH_CONTAINER_CONFIGURATION_BASE_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_GROUP_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_FILTER_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_ENTRY_FORMAT_ATTR "=*))"
+#define SCH_CONTAINER_CONFIGURATION_FILTER "(&(objectClass=*)(" SCH_CONTAINER_CONFIGURATION_GROUP_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_CONTAINER_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_BASE_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_FILTER_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_RDN_ATTR "=*)(" SCH_CONTAINER_CONFIGURATION_ATTR_ATTR "=*))"
/* The data we ask the map cache to keep, for us, for each set. */
struct backend_set_data {
- /* Common data. */
- struct plugin_state *state;
- char *group, *container, **bases, *entry_filter;
- char **ref_attrs;
- struct format_inref_attr **inref_attrs;
+ struct backend_shr_set_data common;
/* Schema compatibility-specific data. */
- char *entry_format;
};
/* Read the name of the NIS master. A dummy function for the schema
@@ -78,62 +73,26 @@ backend_read_master_name(struct plugin_state *state, char **master)
}
/* Manipulate a backend map configuration. */
-struct plugin_state *
-backend_set_config_get_state(struct backend_set_data *set_data)
-{
- return set_data->state;
-}
-char **
-backend_set_config_get_bases(struct backend_set_data *set_data)
-{
- return set_data->bases;
-}
-char *
-backend_set_config_get_filter(struct backend_set_data *set_data)
-{
- return set_data->entry_filter;
-}
-char *
-backend_set_config_get_group(struct backend_set_data *set_data)
-{
- return set_data->group;
-}
-char *
-backend_set_config_get_set(struct backend_set_data *set_data)
-{
- return set_data->container;
-}
-struct format_inref_attr **
-backend_set_config_get_inref_attrs(struct backend_set_data *set_data)
-{
- return set_data->inref_attrs;
-}
-char **
-backend_set_config_get_ref_attrs(struct backend_set_data *set_data)
-{
- return set_data->ref_attrs;
-}
static void
backend_set_config_free_config_contents(void *data)
{
struct backend_set_data *set_data = data;
if (set_data != NULL) {
- free(set_data->group);
- free(set_data->container);
- free(set_data->bases);
- format_free_attr_list(set_data->ref_attrs);
- format_free_inref_attrs(set_data->inref_attrs);
- free(set_data->entry_filter);
- free(set_data->entry_format);
+ free(set_data->common.group);
+ free(set_data->common.set);
+ free(set_data->common.bases);
+ format_free_attr_list(set_data->common.ref_attrs);
+ format_free_inref_attrs(set_data->common.inref_attrs);
+ free(set_data->common.entry_filter);
}
}
void
-backend_set_config_free_config(struct backend_set_data *data)
+backend_set_config_free_config(struct backend_shr_set_data *data)
{
- backend_set_config_free_config_contents(data);
+ backend_set_config_free_config_contents(data->self);
free(data);
}
-static struct backend_set_data *
+static struct backend_shr_set_data *
backend_copy_set_config(const struct backend_set_data *data)
{
struct backend_set_data *ret;
@@ -141,27 +100,26 @@ backend_copy_set_config(const struct backend_set_data *data)
if (ret == NULL) {
return NULL;
}
- ret->state = data->state;
- ret->group = strdup(data->group);
- ret->container = strdup(data->container);
- ret->bases = backend_shr_dup_strlist(data->bases);
- ret->ref_attrs = data->ref_attrs ?
- format_dup_attr_list(data->ref_attrs) :
- NULL;
- ret->inref_attrs = data->inref_attrs ?
- format_dup_inref_attrs(data->inref_attrs) :
- NULL;
- ret->entry_filter = strdup(data->entry_filter);
- ret->entry_format = strdup(data->entry_format);
- if ((ret->group == NULL) ||
- (ret->container == NULL) ||
- (ret->bases == NULL) ||
- (ret->entry_filter == NULL) ||
- (ret->entry_format == NULL)) {
- backend_set_config_free_config(ret);
+ ret->common.self = ret;
+ ret->common.state = data->common.state;
+ ret->common.group = strdup(data->common.group);
+ ret->common.set = strdup(data->common.set);
+ ret->common.bases = backend_shr_dup_strlist(data->common.bases);
+ ret->common.ref_attrs = data->common.ref_attrs ?
+ format_dup_attr_list(data->common.ref_attrs) :
+ NULL;
+ ret->common.inref_attrs = data->common.inref_attrs ?
+ format_dup_inref_attrs(data->common.inref_attrs) :
+ NULL;
+ ret->common.entry_filter = strdup(data->common.entry_filter);
+ if ((ret->common.group == NULL) ||
+ (ret->common.set == NULL) ||
+ (ret->common.bases == NULL) ||
+ (ret->common.entry_filter == NULL)) {
+ backend_set_config_free_config(&ret->common);
return NULL;
}
- return ret;
+ return &ret->common;
}
/* Given a configuration entry, read the map configuration for the given group
@@ -169,9 +127,9 @@ backend_copy_set_config(const struct backend_set_data *data)
void
backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
const char *group, const char *container,
- bool_t *flag, struct backend_set_data **pret)
+ bool_t *flag, struct backend_shr_set_data **pret)
{
- char **bases, *entry_filter, *entry_format;
+ char **bases, *entry_filter;
char *actual_attr;
const char *cvalue;
int i, j, disposition, buffer_flags, count;
@@ -224,38 +182,24 @@ backend_set_config_read_config(struct plugin_state *state, Slapi_Entry *e,
}
slapi_vattr_values_free(&values, &actual_attr, buffer_flags);
}
- entry_format = NULL;
- if (slapi_vattr_values_get(e, SCH_CONTAINER_CONFIGURATION_ENTRY_FORMAT_ATTR,
- &values,
- &disposition, &actual_attr,
- 0, &buffer_flags) == 0) {
- i = slapi_valueset_first_value(values, &value);
- if (i != -1) {
- cvalue = slapi_value_get_string(value);
- entry_format = strdup(cvalue);
- }
- slapi_vattr_values_free(&values, &actual_attr, buffer_flags);
- }
/* Populate the returned structure. */
- ret.state = state;
- ret.group = strdup(group);
- ret.container = strdup(container);
- ret.bases = bases;
- ret.entry_filter = entry_filter;
- ret.entry_format = entry_format;
- ret.ref_attrs = NULL;
- ret.inref_attrs = NULL;
+ ret.common.state = state;
+ ret.common.group = strdup(group);
+ ret.common.set = strdup(container);
+ ret.common.bases = bases;
+ ret.common.entry_filter = entry_filter;
+ ret.common.ref_attrs = NULL;
+ ret.common.inref_attrs = NULL;
*pret = backend_copy_set_config(&ret);
- free(ret.group);
- free(ret.container);
- if (ret.bases != NULL) {
- for (i = 0; ret.bases[i] != NULL; i++) {
- free(ret.bases[i]);
+ free(ret.common.group);
+ free(ret.common.set);
+ if (ret.common.bases != NULL) {
+ for (i = 0; ret.common.bases[i] != NULL; i++) {
+ free(ret.common.bases[i]);
}
- free(ret.bases);
+ free(ret.common.bases);
}
- free(ret.entry_filter);
- free(ret.entry_format);
+ free(ret.common.entry_filter);
}
/* Given a map-entry directory entry, determine a key, a value, and extra data
@@ -264,33 +208,36 @@ void
backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *data)
{
char *ldif, *ndn, *plugin_id, *ndns[2];
- plugin_id = data->state->plugin_desc->spd_id;
+ plugin_id = data->common.state->plugin_desc->spd_id;
/* Pull out the NDN of this entry. */
ndn = slapi_entry_get_ndn(e);
ndns[0] = ndn;
ndns[1] = NULL;
/* Generate the LDIF for the entry. */
- ldif = format_get_data(data->state, e, data->group, data->container,
- data->entry_format, NULL,
- &data->ref_attrs, &data->inref_attrs);
+ ldif = format_get_data(data->common.state, e,
+ data->common.group, data->common.set,
+ "", NULL,
+ &data->common.ref_attrs,
+ &data->common.inref_attrs);
/* If we actually generated a new entry for this entry, then set it,
* otherwise clear it in case there was one set before. */
if (ldif == NULL) {
slapi_log_error(SLAPI_LOG_PLUGIN, plugin_id,
"setting group/container/key/value "
"\"%s\"/\"%s\"/\"%s\"(\"%s\")=\"%s\"\n",
- data->group, data->container, ndn, ndn, ldif);
- map_data_set_entry(data->state,
- data->group, data->container, ndn,
+ data->common.group, data->common.set,
+ ndn, ndn, ldif);
+ map_data_set_entry(data->common.state,
+ data->common.group, data->common.set, ndn,
NULL, ndns, -1, ldif,
NULL, NULL);
} else {
slapi_log_error(SLAPI_LOG_PLUGIN, plugin_id,
"no value for %s, unsetting domain/map/id"
"\"%s\"/\"%s\"/(\"%s\")\n",
- ndn, data->group, data->container, ndn);
- map_data_unset_entry_id(data->state,
- data->group, data->container,
+ ndn, data->common.group, data->common.set, ndn);
+ map_data_unset_entry_id(data->common.state,
+ data->common.group, data->common.set,
ndn);
}
format_free_data(ldif);
diff --git a/src/back-shr.c b/src/back-shr.c
index bbae623..4b6701c 100644
--- a/src/back-shr.c
+++ b/src/back-shr.c
@@ -293,7 +293,7 @@ backend_shr_entry_matches(Slapi_PBlock *pb, Slapi_Entry *e,
static void
backend_shr_set_config_free_config(void *cb_data)
{
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
set_data = cb_data;
backend_set_config_free_config(set_data);
@@ -305,15 +305,15 @@ backend_shr_set_config_entry_add_one(struct plugin_state *state, Slapi_Entry *e,
Slapi_PBlock *pb;
int i;
bool_t flag;
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
char **set_bases;
char *set_entry_filter;
pb = slapi_pblock_new();
flag = FALSE;
backend_set_config_read_config(state, e, group, set, &flag, &set_data);
- set_bases = backend_set_config_get_bases(set_data);
- set_entry_filter = backend_set_config_get_filter(set_data);
+ set_bases = set_data->bases;
+ set_entry_filter = set_data->entry_filter;
if (set_data == NULL) {
slapi_log_error(SLAPI_LOG_PLUGIN,
state->plugin_desc->spd_id,
@@ -486,14 +486,14 @@ backend_shr_get_set_config_entry_cb(Slapi_Entry *e, void *callback_data,
/* Given a map configuration, return true if the entry is supposed to be in the
* map. */
bool_t
-backend_shr_entry_matches_set(struct backend_set_data *set_data,
+backend_shr_entry_matches_set(struct backend_shr_set_data *set_data,
Slapi_PBlock *pb, Slapi_Entry *e)
{
char **set_bases;
char *set_filter;
int i;
- set_bases = backend_set_config_get_bases(set_data);
- set_filter = backend_set_config_get_filter(set_data);
+ set_bases = set_data->bases;
+ set_filter = set_data->entry_filter;
if (set_bases != NULL) {
for (i = 0; set_bases[i] != NULL; i++) {
if (backend_shr_entry_matches(pb, e,
@@ -531,7 +531,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
void *backend_data, void *cbdata_ptr)
{
struct plugin_state *state;
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
struct backend_shr_update_references_cbdata *cbdata;
Slapi_DN *referred_to_sdn;
Slapi_ValueSet *values;
@@ -543,20 +543,20 @@ backend_shr_update_references_cb(const char *group, const char *set,
set_data = backend_data;
cbdata = cbdata_ptr;
- state = backend_set_config_get_state(set_data);
+ state = set_data->state;
/* For every entry in this set which refers to this entry using
* a DN stored in an attribute, update that entry. */
/* Build a filter with all of these attributes and this entry's DN. */
- ref_attrs = backend_set_config_get_ref_attrs(set_data);
+ ref_attrs = set_data->ref_attrs;
for (i = 0; (ref_attrs != NULL) && (ref_attrs[i] != NULL); i++) {
continue;
}
n_ref_attrs = i;
if (n_ref_attrs > 0) {
filter_size = strlen("(&(|))") +
- strlen(backend_set_config_get_filter(set_data)) +
+ strlen(set_data->entry_filter) +
1;
ndn = slapi_entry_get_ndn(cbdata->e);
tndn = format_escape_for_filter(ndn);
@@ -583,8 +583,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
free(tndn);
return TRUE;
}
- sprintf(filter, "(&%s(|",
- backend_set_config_get_filter(set_data));
+ sprintf(filter, "(&%s(|", set_data->entry_filter);
for (i = 0;
(ref_attrs != NULL) && (ref_attrs[i] != NULL);
i++) {
@@ -597,7 +596,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
filter);
free(tndn);
/* Update any matching entry. */
- set_bases = backend_set_config_get_bases(set_data);
+ set_bases = set_data->bases;
for (i = 0;
(set_bases != NULL) && (set_bases[i] != NULL);
i++) {
@@ -630,7 +629,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
/* For every directory entry to which this directory entry refers and
* which also has a corresponding entry in this map, update it. */
- inref_attrs = backend_set_config_get_inref_attrs(set_data);
+ inref_attrs = set_data->inref_attrs;
for (i = 0; (inref_attrs != NULL) && (inref_attrs[i] != NULL); i++) {
/* We're only processing inref attributes for this map. */
if ((strcmp(inref_attrs[i]->group, group) != 0) ||
@@ -664,7 +663,7 @@ backend_shr_update_references_cb(const char *group, const char *set,
/* ...update it. */
backend_shr_set_config_entry_set_one_dn(state,
ndn,
- set_data);
+ set_data->self);
}
}
slapi_vattr_values_free(&values, &actual_attr,
@@ -704,7 +703,7 @@ static bool_t
backend_shr_add_entry_cb(const char *group, const char *set, bool_t secure,
void *backend_data, void *cbdata_ptr)
{
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
struct backend_add_entry_cbdata *cbdata;
set_data = backend_data;
@@ -722,7 +721,7 @@ backend_shr_add_entry_cb(const char *group, const char *set, bool_t secure,
/* Set the entry in the map which corresponds to this entry, or clear
* any that might if this entry doesn't have a key and value. */
- backend_set_entry_one(cbdata->e, set_data);
+ backend_set_entry_one(cbdata->e, set_data->self);
return TRUE;
}
@@ -791,7 +790,7 @@ static bool_t
backend_shr_modify_entry_cb(const char *group, const char *set, bool_t flag,
void *backend_data, void *cbdata_ptr)
{
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
struct backend_shr_modify_entry_cbdata *cbdata;
set_data = backend_data;
@@ -804,12 +803,12 @@ backend_shr_modify_entry_cb(const char *group, const char *set, bool_t flag,
cbdata->state->plugin_desc->spd_id,
"clearing group/set/id "
"\"%s\"/\"%s\"/(\"%s\")\n",
- backend_set_config_get_group(set_data),
- backend_set_config_get_set(set_data),
+ set_data->group,
+ set_data->set,
cbdata->ndn);
map_data_unset_entry_id(cbdata->state,
- backend_set_config_get_group(set_data),
- backend_set_config_get_set(set_data),
+ set_data->group,
+ set_data->set,
cbdata->ndn);
}
/* If the entry now matches the map, add it (or re-add it). */
@@ -818,7 +817,7 @@ backend_shr_modify_entry_cb(const char *group, const char *set, bool_t flag,
/* Set the entry in the set which corresponds to this entry, or
* remove any that might if this entry doesn't produce a useful
* value. */
- backend_shr_set_entry_one(cbdata->e_post, set_data);
+ backend_shr_set_entry_one(cbdata->e_post, set_data->self);
}
return TRUE;
}
@@ -907,7 +906,7 @@ static bool_t
backend_shr_modrdn_entry_cb(const char *group, const char *set, bool_t secure,
void *backend_data, void *cbdata_ptr)
{
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
struct backend_shr_modrdn_entry_cbdata *cbdata;
bool_t matched_pre, matched_post;
@@ -924,12 +923,12 @@ backend_shr_modrdn_entry_cb(const char *group, const char *set, bool_t secure,
cbdata->state->plugin_desc->spd_id,
"clearing group/set/id "
"\"%s\"/\"%s\"/(\"%s\")\n",
- backend_set_config_get_group(set_data),
- backend_set_config_get_set(set_data),
+ set_data->group,
+ set_data->set,
cbdata->ndn_pre);
map_data_unset_entry_id(cbdata->state,
- backend_set_config_get_group(set_data),
- backend_set_config_get_set(set_data),
+ set_data->group,
+ set_data->set,
cbdata->ndn_pre);
}
/* Set the entry in the map which corresponds to this entry, or clear
@@ -938,7 +937,7 @@ backend_shr_modrdn_entry_cb(const char *group, const char *set, bool_t secure,
cbdata->pb,
cbdata->e_post);
if (matched_post) {
- backend_set_entry_one(cbdata->e_post, set_data);
+ backend_set_entry_one(cbdata->e_post, set_data->self);
}
return TRUE;
}
@@ -1012,7 +1011,7 @@ static bool_t
backend_shr_delete_entry_cb(const char *group, const char *set, bool_t flag,
void *backend_data, void *cbdata_ptr)
{
- struct backend_set_data *set_data;
+ struct backend_shr_set_data *set_data;
struct backend_shr_delete_entry_cbdata *cbdata;
set_data = backend_data;
cbdata = cbdata_ptr;
@@ -1023,9 +1022,7 @@ backend_shr_delete_entry_cb(const char *group, const char *set, bool_t flag,
cbdata->state->plugin_desc->spd_id,
"unsetting group/set/id"
"\"%s\"/\"%s\"=\"%s\"/\"%s\"/(\"%s\")\n",
- group, set,
- backend_set_config_get_group(set_data),
- backend_set_config_get_set(set_data),
+ group, set, set_data->group, set_data->set,
cbdata->ndn);
map_data_unset_entry_id(cbdata->state, group, set, cbdata->ndn);
}
diff --git a/src/backend.h b/src/backend.h
index 2afbaae..a216f2d 100644
--- a/src/backend.h
+++ b/src/backend.h
@@ -4,6 +4,15 @@ struct backend_set_data;
struct plugin_state;
struct inref_attr;
+/* Common data. */
+struct backend_shr_set_data {
+ struct plugin_state *state;
+ char *group, *set, **bases, *entry_filter;
+ char **ref_attrs;
+ struct format_inref_attr **inref_attrs;
+ struct backend_set_data *self;
+};
+
/* Startup/initialization functions called through the map. */
void backend_startup(struct plugin_state *state);
void backend_init(struct slapi_pblock *pb, struct plugin_state *state);
@@ -19,15 +28,6 @@ void backend_get_set_config(struct plugin_state *state,
char ***bases, char **entry_filter);
void backend_free_set_config(char **bases, char *entry_filter);
-/* Read configuration from a set configuration. */
-struct plugin_state *backend_set_config_get_state(struct backend_set_data *);
-char **backend_set_config_get_bases(struct backend_set_data *set_data);
-char *backend_set_config_get_filter(struct backend_set_data *set_data);
-char *backend_set_config_get_group(struct backend_set_data *set_data);
-char *backend_set_config_get_set(struct backend_set_data *set_data);
-struct format_inref_attr **backend_set_config_get_inref_attrs(struct backend_set_data *set_data);
-char **backend_set_config_get_ref_attrs(struct backend_set_data *set_data);
-
/* Check if an entry is a set configuration, and add or remove one. */
bool_t backend_entry_is_a_set(struct plugin_state *state,
Slapi_PBlock *pb, Slapi_Entry *e);
@@ -42,8 +42,8 @@ void backend_set_config_read_config(struct plugin_state *state,
Slapi_Entry *e,
const char *group, const char *set,
bool_t *flag,
- struct backend_set_data **set_data);
-void backend_set_config_free_config(struct backend_set_data *set_data);
+ struct backend_shr_set_data **set_data);
+void backend_set_config_free_config(struct backend_shr_set_data *set_data);
/* Re-read any plugin configuration data which can be modified without
* requiring a restart. */