s4:ldap_server: rewrite to socket layer to use tstream
[metze/samba/wip.git] / source4 / ldap_server / ldap_server.h
index 0b0b78ea7f400b70d8c528d9b8e19aabf6b4b527..4d5cae49fc74fc36c996a959fbe089e2dff722fd 100644 (file)
@@ -6,7 +6,7 @@
    
    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/>.
 */
 
-#include "libcli/ldap/ldap.h"
+#include "libcli/ldap/libcli_ldap.h"
+#include "lib/socket/socket.h"
+#include "lib/stream/packet.h"
+#include "system/network.h"
 
 struct ldapsrv_connection {
+       struct loadparm_context *lp_ctx;
        struct stream_connection *connection;
        struct gensec_security *gensec;
        struct auth_session_info *session_info;
@@ -29,22 +32,26 @@ struct ldapsrv_connection {
        struct cli_credentials *server_credentials;
        struct ldb_context *ldb;
 
-       /* are we using gensec wrapping? */
-       BOOL enable_wrap;
-
-       BOOL global_catalog;
+       struct {
+               struct tevent_queue *send_queue;
+               struct tstream_context *raw;
+               struct tstream_context *tls;
+               struct tstream_context *sasl;
+               struct tstream_context *active;
+       } sockets;
 
-       struct packet_context *packet;
+       bool global_catalog;
 
        struct {
                int initial_timeout;
                int conn_idle_time;
                int max_page_size;
                int search_timeout;
-               
-               struct timed_event *ite;
-               struct timed_event *te;
+               struct timeval endtime;
+               const char *reason;
        } limits;
+
+       struct tevent_req *active_call;
 };
 
 struct ldapsrv_call {
@@ -54,12 +61,19 @@ struct ldapsrv_call {
                struct ldapsrv_reply *prev, *next;
                struct ldap_message *msg;
        } *replies;
-};
+       struct iovec out_iov;
 
-struct ldapsrv_service;
+       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_service {
-       struct tls_params *tls_params;
+       struct tstream_tls_params *tls_params;
+       struct task_server *task;
+       struct tevent_queue *call_queue;
 };
 
 #include "ldap_server/proto.h"