This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-struct rw_buffer {
- uint8_t *data;
- size_t ofs, length;
-};
-
-enum ldapsrv_call_state {
- LDAPSRV_CALL_STATE_NEW = 0,
- LDAPSRV_CALL_STATE_BUSY,
- LDAPSRV_CALL_STATE_ASYNC,
- LDAPSRV_CALL_STATE_ABORT,
- LDAPSRV_CALL_STATE_COMPLETE
-};
+#include "libcli/ldap/libcli_ldap.h"
+#include "lib/socket/socket.h"
+#include "lib/stream/packet.h"
+#include "system/network.h"
-enum ldapsrv_reply_state {
- LDAPSRV_REPLY_STATE_NEW = 0,
- LDAPSRV_REPLY_STATE_SEND
-};
+struct ldapsrv_connection {
+ struct loadparm_context *lp_ctx;
+ struct stream_connection *connection;
+ struct gensec_security *gensec;
+ struct auth_session_info *session_info;
+ struct ldapsrv_service *service;
+ struct cli_credentials *server_credentials;
+ struct ldb_context *ldb;
-struct ldapsrv_connection;
+ struct {
+ struct tevent_queue *send_queue;
+ struct tstream_context *raw;
+ struct tstream_context *tls;
+ struct tstream_context *sasl;
+ struct tstream_context *active;
+ } sockets;
-struct ldapsrv_call {
- struct ldapsrv_call *prev,*next;
- enum ldapsrv_call_state state;
+ bool global_catalog;
- struct ldapsrv_connection *conn;
+ struct {
+ int initial_timeout;
+ int conn_idle_time;
+ int max_page_size;
+ int search_timeout;
+ struct timeval endtime;
+ const char *reason;
+ } limits;
- struct ldap_message request;
+ struct tevent_req *active_call;
+};
+struct ldapsrv_call {
+ struct ldapsrv_connection *conn;
+ struct ldap_message *request;
struct ldapsrv_reply {
- struct ldapsrv_reply *prev,*next;
- enum ldapsrv_reply_state state;
- struct ldap_message msg;
+ struct ldapsrv_reply *prev, *next;
+ struct ldap_message *msg;
} *replies;
-};
-
-struct ldapsrv_connection {
- struct server_connection *connection;
+ struct iovec out_iov;
- struct gensec_security *gensec_ctx;
- struct auth_session_info *session_info;
-
- struct rw_buffer in_buffer;
- struct rw_buffer out_buffer;
+ struct tevent_req *(*postprocess_send)(TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ void *private_data);
+ NTSTATUS (*postprocess_recv)(struct tevent_req *req);
+ void *postprocess_private;
+};
- struct ldapsrv_call *calls;
+struct ldapsrv_service {
+ struct tstream_tls_params *tls_params;
+ struct task_server *task;
+ struct tevent_queue *call_queue;
};
+
+#include "ldap_server/proto.h"