db-ldap.h revision 964c86de7158ccafdfe665853579d71232e2634e
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher/* Functions like ldap_bind() have been deprecated in OpenLDAP 2.3
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher This define enables them until the code here can be refactored */
9542512d7be40f2000298c86d3d2b728f4f0f65aStephen Gallagher/* Maximum number of pending requests before delaying new requests. */
c6e39e15178675d0779e0ae855245774a09b4eb5Nikolai Kondrashov/* If LDAP connection is down, fail requests after waiting for this long. */
c6e39e15178675d0779e0ae855245774a09b4eb5Nikolai Kondrashov#define DB_LDAP_REQUEST_DISCONNECT_TIMEOUT_SECS 4
c6e39e15178675d0779e0ae855245774a09b4eb5Nikolai Kondrashov/* If request is still in queue after this many seconds and other requests
c6e39e15178675d0779e0ae855245774a09b4eb5Nikolai Kondrashov have been replied, assume the request was lost and abort it. */
c6e39e15178675d0779e0ae855245774a09b4eb5Nikolai Kondrashov#define DB_LDAP_REQUEST_LOST_TIMEOUT_SECS 60
fd5a4eacd56700ffb08a73121aeacdc806cb0132Sumit Bose/* If server disconnects us, don't reconnect if no requests have been sent
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher for this many seconds. */
df4cc3a83c5d6700b6a09ff96cb4a6b1949b1aa9Stephen Gallaghertypedef void db_search_callback_t(struct ldap_connection *conn,
f3c85d900c4663854cc7bbae7d9f77867ed1f69bSumit Bose const char *deref;
f3c85d900c4663854cc7bbae7d9f77867ed1f69bSumit Bose const char *scope;
d921c1eba437662437847279f251a0a5d8f70127Maxim const char *pass_attrs;
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher /* msgid for sent requests, -1 if not sent */
bc13c352ba9c2877f1e9bc62e55ad60fc000a55dJakub Hrozek /* timestamp when request was created */
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher /* If expect_one_reply=TRUE, this contains the first LDAP entry.
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher If another one comes, we'll return an error. */
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher char **attributes; /* points to pass_attr_names / user_attr_names */
558998ce664055a75595371118f818084d8f2b23Jan Cholasta const char *dn;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher /* Not connected */
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher /* Binding - either to default dn or doing auth bind */
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher /* Bound to auth dn */
c737e1444fb186e349e59bfa9dac4995b720b4b1Jan Zeleny /* Bound to default dn */
9e80079370ff3b943832adc3c5ef430e64be0a0cJakub Hrozek /* Request queue contains sent requests at tail (msgid != -1) and
e7311aec8d691e5427317442387af1bc8fff3742Jan Cholasta queued requests at head (msgid == -1). */
e7311aec8d691e5427317442387af1bc8fff3742Jan Cholasta ARRAY_DEFINE(request_array, struct ldap_request *);
cb4d5b588e704114b7090678752d33512baa718eJakub Hrozek /* Number of messages in queue with msgid != -1 */
19d3aba12c70528708be9440aca66038a291f29eYassir Elley /* Timestamp when we last received a reply */
f3a25949de81f80c136bb073e4a8f504b080c20cJakub Hrozek char **pass_attr_names, **user_attr_names, **iterate_attr_names;
f3a25949de81f80c136bb073e4a8f504b080c20cJakub Hrozek struct hash_table *pass_attr_map, *user_attr_map, *iterate_attr_map;
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bose/* Send/queue request */
5484044ea7bb632b915f706685fce509f6eacc48Jakub Hrozekvoid db_ldap_request(struct ldap_connection *conn,
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bosevoid db_ldap_set_attrs(struct ldap_connection *conn, const char *attrlist,
45726939a48e605b0166521f94300ae04981a3a7Sumit Bose char ***attr_names_r, struct hash_table *attr_map,
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bosestruct ldap_connection *db_ldap_init(const char *config_path, bool userdb);
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bosevoid db_ldap_unref(struct ldap_connection **conn);
b9e5bd09a5ff7009537a18914dbebcf10498f592Sumit Bosevoid db_ldap_check_userdb_warning(struct ldap_connection *conn);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherint db_ldap_connect(struct ldap_connection *conn);
36ccdecd053a9ad88dce86b8c84770dc2aa11d21Simo Sorcevoid db_ldap_enable_input(struct ldap_connection *conn, bool enable);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdb_ldap_value_get_var_expand_table(struct auth_request *auth_request);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherconst char *ldap_get_error(struct ldap_connection *conn);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherdb_ldap_result_iterate_init(struct ldap_connection *conn, LDAPMessage *entry,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherbool db_ldap_result_iterate_next(struct db_ldap_result_iterate_context *ctx,
69aaef8719c5cf33ed1c4090fa313ba281bf8a02Jakub Hrozek const char **name_r,
4dd615c01357b8715711aad6820ba9595d3ad377Stephen Gallagher const char *const **values_r);