summaryrefslogtreecommitdiffstats
path: root/src/backend.h
blob: 5924d788196098b1006fb116259f633b4824d76a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef backend_h
#define backend_h
struct backend_set_data;
struct plugin_state;
struct inref_attr;

/* Configuration data common to all backends. */
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);

/* Read the server's name. */
int backend_read_master_name(struct plugin_state *state, char **master);
void backend_free_master_name(struct plugin_state *state, char *master);

/* Read enough of the set's configuration for the formatter to be able to
 * resolve references correctly. */
void backend_get_set_config(struct plugin_state *state,
			    const char *group, const char *set,
			    char ***bases, char **entry_filter);
void backend_free_set_config(char **bases, char *entry_filter);

/* 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);
int backend_set_config_entry_add_cb(Slapi_Entry *e, void *callback_data);
int backend_set_config_entry_delete_cb(Slapi_Entry *e, void *callback_data);

/* Set an entry in a set. */
void backend_set_entry_one(Slapi_Entry *e, struct backend_set_data *set_data);

/* Read and free set configurations. */
void backend_set_config_read_config(struct plugin_state *state,
				    Slapi_Entry *e,
				    const char *group, const char *set,
				    bool_t *flag,
				    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. */
void backend_update_params(struct plugin_state *state);

#endif