passdb.c revision 8ff9812659728d4166df8e003a1dd3524ae8514e
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen/* Copyright (c) 2002-2011 Dovecot authors, see the included COPYING file */
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainenstatic ARRAY_DEFINE(passdb_interfaces, struct passdb_module_interface *);
ac4e6609cbdca594db1b1c02afb1e372ab22e060Timo Sirainenstatic ARRAY_DEFINE(passdb_modules, struct passdb_module *);
ac4e6609cbdca594db1b1c02afb1e372ab22e060Timo Sirainenstatic const struct passdb_module_interface passdb_iface_deinit = {
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainenstatic struct passdb_module_interface *passdb_interface_find(const char *name)
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen struct passdb_module_interface *const *ifaces;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen struct passdb_module_interface *iface = *ifaces;
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainenvoid passdb_register_module(struct passdb_module_interface *iface)
910fa4e4204a73d3d24c03f3059dd24e727ca057Timo Sirainen old_iface = passdb_interface_find(iface->name);
4321f6c969e7b8f6b243ff5bb6b8d297921676f6Timo Sirainen if (old_iface != NULL && old_iface->verify_plain == NULL) {
4321f6c969e7b8f6b243ff5bb6b8d297921676f6Timo Sirainen /* replacing a "support not compiled in" passdb */
4321f6c969e7b8f6b243ff5bb6b8d297921676f6Timo Sirainen i_panic("passdb_register_module(%s): Already registered",
56b134799a457fd55830355f4c8d746d6bb5206fTimo Sirainenvoid passdb_unregister_module(struct passdb_module_interface *iface)
a69dfb7f6f1a804a0c91fd5e506b78dd499cccd4Timo Sirainen struct passdb_module_interface *const *ifaces;
2898ad0028a9b0c30df96dd6b68930fd4dc57527Timo Sirainen unsigned int idx;
a0cd302bcb827678f9c9c2ca1d0a3f0d3c0b3563Timo Sirainen idx = array_foreach_idx(&passdb_interfaces, ifaces);
ff7056842f14fd3b30a2d327dfab165b9d15dd30Timo Sirainen i_panic("passdb_unregister_module(%s): Not registered", iface->name);
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainenbool passdb_get_credentials(struct auth_request *auth_request,
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen const unsigned char **credentials_r, size_t *size_r)
7b85f7d35b2192bdff734d7d2891630bc30b2518Timo Sirainen const char *wanted_scheme = auth_request->credentials_scheme;
if (ret <= 0) {
if (ret < 0) {
return FALSE;
return TRUE;
return FALSE;
return FALSE;
return TRUE;
static struct passdb_module *
unsigned int i, count;
for (i = 0; i < count; i++) {
*idx_r = i;
return passdbs[i];
return NULL;
struct passdb_module *
static unsigned int auth_passdb_id = 0;
unsigned int idx;
return passdb;
return passdb;
unsigned int idx;
i_unreached();
unsigned int i, count;
for (i = 0; i < count; i++) {
void passdbs_init(void)
void passdbs_deinit(void)