2005-06-16 09:39:40 +04:00
/*
Unix SMB / CIFS Implementation .
ldap client side header
Copyright ( C ) Andrew Tridgell 2005
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
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
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 0213 9 , USA .
*/
2005-11-06 02:46:57 +03:00
# include "libcli/ldap/ldap.h"
2005-06-16 09:39:40 +04:00
enum ldap_request_state { LDAP_REQUEST_SEND , LDAP_REQUEST_PENDING , LDAP_REQUEST_DONE } ;
/* this is the handle that the caller gets when an async ldap message
is sent */
struct ldap_request {
struct ldap_request * next , * prev ;
struct ldap_connection * conn ;
enum ldap_request_tag type ;
int messageid ;
enum ldap_request_state state ;
int num_replies ;
struct ldap_message * * replies ;
NTSTATUS status ;
DATA_BLOB data ;
struct {
void ( * fn ) ( struct ldap_request * ) ;
void * private ;
} async ;
} ;
/* main context for a ldap client connection */
struct ldap_connection {
2005-06-20 05:17:29 +04:00
struct tls_context * tls ;
2005-06-16 09:39:40 +04:00
struct socket_context * sock ;
char * host ;
uint16_t port ;
BOOL ldaps ;
const char * auth_dn ;
const char * simple_pw ;
/* next message id to assign */
unsigned next_messageid ;
/* Outstanding LDAP requests that have not yet been replied to */
struct ldap_request * pending ;
/* Let's support SASL */
struct gensec_security * gensec ;
/* set if we are wrapping requests */
BOOL enable_wrap ;
/* the default timeout for messages */
int timeout ;
/* last error message */
char * last_error ;
struct {
struct event_context * event_ctx ;
struct fd_event * fde ;
} event ;
2005-11-10 03:28:02 +03:00
struct packet_context * packet ;
2005-06-16 09:39:40 +04:00
} ;