2005-05-10 06:01:25 +04:00
/*
Unix SMB / CIFS implementation .
a async CLDAP library
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
2007-07-10 06:07:03 +04:00
the Free Software Foundation ; either version 3 of the License , or
2005-05-10 06:01:25 +04:00
( 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
2007-07-10 06:07:03 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2005-05-10 06:01:25 +04:00
*/
2011-01-07 14:01:42 +03:00
# include "../libcli/netlogon/netlogon.h"
2005-05-10 06:01:25 +04:00
2006-01-03 20:27:33 +03:00
struct ldap_message ;
2009-02-13 15:13:54 +03:00
struct tsocket_address ;
struct cldap_socket ;
struct cldap_incoming {
int recv_errno ;
uint8_t * buf ;
size_t len ;
struct tsocket_address * src ;
struct ldap_message * ldap_msg ;
2005-05-10 06:01:25 +04:00
} ;
/*
2009-02-13 15:13:54 +03:00
a general cldap search request
2005-05-10 06:01:25 +04:00
*/
struct cldap_search {
struct {
const char * dest_address ;
2007-12-02 18:20:29 +03:00
uint16_t dest_port ;
2005-05-10 06:01:25 +04:00
const char * filter ;
2009-02-13 15:13:54 +03:00
const char * const * attributes ;
2005-05-10 06:01:25 +04:00
int timeout ;
int retries ;
} in ;
struct {
struct ldap_SearchResEntry * response ;
struct ldap_Result * result ;
} out ;
} ;
2009-02-13 15:13:54 +03:00
NTSTATUS cldap_socket_init ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
const struct tsocket_address * local_addr ,
const struct tsocket_address * remote_addr ,
struct cldap_socket * * _cldap ) ;
2005-05-11 08:48:30 +04:00
NTSTATUS cldap_set_incoming_handler ( struct cldap_socket * cldap ,
2011-10-10 17:38:22 +04:00
struct tevent_context * ev ,
2009-02-13 15:13:54 +03:00
void ( * handler ) ( struct cldap_socket * ,
void * private_data ,
struct cldap_incoming * ) ,
2009-02-02 10:22:40 +03:00
void * private_data ) ;
2009-02-13 15:13:54 +03:00
struct tevent_req * cldap_search_send ( TALLOC_CTX * mem_ctx ,
struct cldap_socket * cldap ,
const struct cldap_search * io ) ;
NTSTATUS cldap_search_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
2005-05-10 06:01:25 +04:00
struct cldap_search * io ) ;
2009-02-13 15:13:54 +03:00
NTSTATUS cldap_search ( struct cldap_socket * cldap , TALLOC_CTX * mem_ctx ,
2005-05-10 06:01:25 +04:00
struct cldap_search * io ) ;
2005-05-12 12:25:35 +04:00
/*
a general cldap reply
*/
struct cldap_reply {
uint32_t messageid ;
2009-02-13 15:13:54 +03:00
struct tsocket_address * dest ;
2005-05-12 12:25:35 +04:00
struct ldap_SearchResEntry * response ;
struct ldap_Result * result ;
} ;
NTSTATUS cldap_reply_send ( struct cldap_socket * cldap , struct cldap_reply * io ) ;
2009-02-13 15:13:54 +03:00
NTSTATUS cldap_empty_reply ( struct cldap_socket * cldap ,
2006-11-15 20:08:45 +03:00
uint32_t message_id ,
2009-02-13 15:13:54 +03:00
struct tsocket_address * dst ) ;
NTSTATUS cldap_error_reply ( struct cldap_socket * cldap ,
2006-11-15 20:08:45 +03:00
uint32_t message_id ,
2009-02-13 15:13:54 +03:00
struct tsocket_address * dst ,
2006-11-15 20:08:45 +03:00
int resultcode ,
const char * errormessage ) ;
2005-05-10 06:01:25 +04:00
/*
a netlogon cldap request
*/
struct cldap_netlogon {
struct {
const char * dest_address ;
2007-12-04 01:33:16 +03:00
uint16_t dest_port ;
2005-05-10 06:01:25 +04:00
const char * realm ;
const char * host ;
2005-05-13 10:08:49 +04:00
const char * user ;
const char * domain_guid ;
const char * domain_sid ;
int acct_control ;
uint32_t version ;
2008-05-16 07:03:01 +04:00
bool map_response ;
2005-05-10 06:01:25 +04:00
} in ;
struct {
2008-05-16 07:03:01 +04:00
struct netlogon_samlogon_response netlogon ;
2005-05-10 06:01:25 +04:00
} out ;
} ;
2009-02-13 15:13:54 +03:00
struct tevent_req * cldap_netlogon_send ( TALLOC_CTX * mem_ctx ,
struct cldap_socket * cldap ,
const struct cldap_netlogon * io ) ;
NTSTATUS cldap_netlogon_recv ( struct tevent_req * req ,
TALLOC_CTX * mem_ctx ,
2005-05-10 06:01:25 +04:00
struct cldap_netlogon * io ) ;
2009-02-13 15:13:54 +03:00
NTSTATUS cldap_netlogon ( struct cldap_socket * cldap ,
TALLOC_CTX * mem_ctx ,
struct cldap_netlogon * io ) ;
NTSTATUS cldap_netlogon_reply ( struct cldap_socket * cldap ,
2005-05-12 12:25:35 +04:00
uint32_t message_id ,
2009-02-13 15:13:54 +03:00
struct tsocket_address * dst ,
2005-05-12 12:25:35 +04:00
uint32_t version ,
2008-05-16 07:03:01 +04:00
struct netlogon_samlogon_response * netlogon ) ;
2009-02-13 15:13:54 +03:00