db-ldap.h revision 43d3ea2780b5f8557ede7b4c039e8f56cb8d357d
cfdaa223525f87c9c980a25cc7bb6770a248d76aTimo Sirainen/* Functions like ldap_bind() have been deprecated in OpenLDAP 2.3
cfdaa223525f87c9c980a25cc7bb6770a248d76aTimo Sirainen This define enables them until the code here can be refactored */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen/* Maximum number of requests in queue. After this new requests are dropped. */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen/* Maximum number of pending requests before delaying new requests. */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen/* If LDAP connection is down, fail requests after waiting for this long. */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen#define DB_LDAP_REQUEST_DISCONNECT_TIMEOUT_SECS 4
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen/* If request is still in queue after this many seconds and other requests
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen have been replied, assume the request was lost and abort it. */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen/* If server disconnects us, don't reconnect if no requests have been sent
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen for this many seconds. */
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainentypedef void db_search_callback_t(struct ldap_connection *conn,
7d6389e4053c2dac1fb37180b5756b00785983dcTimo Sirainen const char *dn;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* msgid for sent requests, -1 if not sent */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* timestamp when request was created */
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen /* If expect_one_reply=TRUE, this contains the first LDAP entry.
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen If another one comes, we'll return an error. */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen char **attributes; /* points to pass_attr_names / user_attr_names */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen const char *dn;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Not connected */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Binding - either to default dn or doing auth bind */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Bound to auth dn */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Bound to default dn */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Request queue contains sent requests at tail (msgid != -1) and
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen queued requests at head (msgid == -1). */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen ARRAY_DEFINE(request_array, struct ldap_request *);
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Number of messages in queue with msgid != -1 */
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainen /* Timestamp when we last received a reply */
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen char **pass_attr_names, **user_attr_names, **iterate_attr_names;
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainen struct hash_table *pass_attr_map, *user_attr_map, *iterate_attr_map;
fc4ff2356fee6389d4cf2b3f12f4098a436f0502Timo Sirainenvoid db_ldap_request(struct ldap_connection *conn,
9f431ccfb6932746db56245c8a3d3415717ef545Timo Sirainenvoid db_ldap_set_attrs(struct ldap_connection *conn, const char *attrlist,
0d7d27765267594a5870892268ab345148306d49Timo Sirainen char ***attr_names_r, struct hash_table *attr_map,
965ed6ea3fc8f7637bd0d159d2fdb283a191ce34Timo Sirainenstruct ldap_connection *db_ldap_init(const char *config_path);
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainenvoid db_ldap_unref(struct ldap_connection **conn);
16133a719ce8b6a5b8cedd721340cc1607c43433Timo Sirainenint db_ldap_connect(struct ldap_connection *conn);
43d3ea2780b5f8557ede7b4c039e8f56cb8d357dTimo Sirainenvoid db_ldap_enable_input(struct ldap_connection *conn, bool enable);
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainendb_ldap_value_get_var_expand_table(struct auth_request *auth_request);
ebfcfd258acc89633c47d9c3b0b40a1a3f75cdcbTimo Sirainenconst char *ldap_get_error(struct ldap_connection *conn);
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainendb_ldap_result_iterate_init(struct ldap_connection *conn, LDAPMessage *entry,
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainenbool db_ldap_result_iterate_next(struct db_ldap_result_iterate_context *ctx,
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainenbool db_ldap_result_iterate_next_all(struct db_ldap_result_iterate_context *ctx,
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainen const char **name_r,
4261a8b43792dc4db4b39e6910319835b7450e84Timo Sirainen const char *const **values_r);