2003-06-05 06:34:30 +04:00
/*
2005-09-30 21:13:37 +04:00
Unix SMB / CIFS mplementation .
2003-06-05 06:34:30 +04:00
LDAP protocol helper functions for SAMBA
Copyright ( C ) Gerald Carter 2001 - 2003
2009-05-31 13:14:06 +04:00
2003-06-05 06:34:30 +04:00
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-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2003-06-05 06:34:30 +04:00
( at your option ) any later version .
2009-05-31 13:14:06 +04:00
2003-06-05 06:34:30 +04:00
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 .
2009-05-31 13:14:06 +04:00
2003-06-05 06:34:30 +04:00
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2009-05-31 13:14:06 +04:00
2003-06-05 06:34:30 +04:00
*/
# ifndef _SMBLDAP_H
# define _SMBLDAP_H
2011-10-17 19:17:18 +04:00
# include "include/smb_ldap.h"
2011-02-24 13:56:08 +03:00
2003-06-25 16:51:58 +04:00
# ifdef HAVE_LDAP
2011-11-17 01:50:18 +04:00
# include <talloc.h>
# include <tevent.h>
2003-06-25 16:51:58 +04:00
/**
* Struct to keep the state for all the ldap stuff
*
*/
2017-04-19 14:43:39 +03:00
struct smbldap_state ;
2017-07-03 11:58:50 +03:00
typedef int ( * smbldap_bind_callback_fn ) ( LDAP * ldap_struct ,
struct smbldap_state * ldap_state ,
void * data ) ;
2003-06-07 00:31:19 +04:00
2010-08-26 16:07:20 +04:00
/* The following definitions come from lib/smbldap.c */
2011-11-16 21:59:26 +04:00
NTSTATUS smbldap_init ( TALLOC_CTX * mem_ctx ,
struct tevent_context * tevent_ctx ,
const char * location ,
bool anon ,
const char * bind_dn ,
const char * bind_secret ,
struct smbldap_state * * smbldap_state ) ;
2017-04-19 14:29:31 +03:00
LDAP * smbldap_get_ldap ( struct smbldap_state * state ) ;
2017-04-19 14:39:25 +03:00
bool smbldap_get_paged_results ( struct smbldap_state * state ) ;
2017-04-19 14:39:25 +03:00
void smbldap_set_paged_results ( struct smbldap_state * state ,
bool paged_results ) ;
2017-04-19 14:29:31 +03:00
2017-07-03 11:58:50 +03:00
void smbldap_set_bind_callback ( struct smbldap_state * state ,
smbldap_bind_callback_fn callback ,
void * callback_data ) ;
2011-11-16 21:59:26 +04:00
void smbldap_set_mod ( LDAPMod * * * modlist , int modop , const char * attribute , const char * value ) ;
void smbldap_set_mod_blob ( LDAPMod * * * modlist , int modop , const char * attribute , const DATA_BLOB * newblob ) ;
void smbldap_make_mod ( LDAP * ldap_struct , LDAPMessage * existing ,
LDAPMod * * * mods ,
const char * attribute , const char * newval ) ;
void smbldap_make_mod_blob ( LDAP * ldap_struct , LDAPMessage * existing ,
LDAPMod * * * mods ,
const char * attribute , const DATA_BLOB * newblob ) ;
bool smbldap_get_single_attribute ( LDAP * ldap_struct , LDAPMessage * entry ,
const char * attribute , char * value ,
int max_len ) ;
int smbldap_modify ( struct smbldap_state * ldap_state ,
const char * dn ,
LDAPMod * attrs [ ] ) ;
2012-09-06 19:52:03 +04:00
int smbldap_start_tls ( LDAP * ldap_struct , int version ) ;
int smbldap_setup_full_conn ( LDAP * * ldap_struct , const char * uri ) ;
2010-08-26 16:07:20 +04:00
int smbldap_search ( struct smbldap_state * ldap_state ,
const char * base , int scope , const char * filter ,
const char * attrs [ ] , int attrsonly ,
LDAPMessage * * res ) ;
int smbldap_search_paged ( struct smbldap_state * ldap_state ,
const char * base , int scope , const char * filter ,
const char * * attrs , int attrsonly , int pagesize ,
LDAPMessage * * res , void * * cookie ) ;
int smbldap_modify ( struct smbldap_state * ldap_state , const char * dn , LDAPMod * attrs [ ] ) ;
int smbldap_add ( struct smbldap_state * ldap_state , const char * dn , LDAPMod * attrs [ ] ) ;
int smbldap_delete ( struct smbldap_state * ldap_state , const char * dn ) ;
int smbldap_extended_operation ( struct smbldap_state * ldap_state ,
LDAP_CONST char * reqoid , struct berval * reqdata ,
LDAPControl * * serverctrls , LDAPControl * * clientctrls ,
char * * retoidp , struct berval * * retdatap ) ;
int smbldap_search_suffix ( struct smbldap_state * ldap_state ,
const char * filter , const char * * search_attr ,
LDAPMessage * * result ) ;
void smbldap_free_struct ( struct smbldap_state * * ldap_state ) ;
bool smbldap_has_control ( LDAP * ld , const char * control ) ;
bool smbldap_has_extension ( LDAP * ld , const char * extension ) ;
bool smbldap_has_naming_context ( LDAP * ld , const char * naming_context ) ;
bool smbldap_set_creds ( struct smbldap_state * ldap_state , bool anon , const char * dn , const char * secret ) ;
2011-10-10 20:46:53 +04:00
char * smbldap_talloc_single_attribute ( LDAP * ldap_struct , LDAPMessage * entry ,
const char * attribute ,
TALLOC_CTX * mem_ctx ) ;
char * smbldap_talloc_first_attribute ( LDAP * ldap_struct , LDAPMessage * entry ,
const char * attribute ,
TALLOC_CTX * mem_ctx ) ;
char * smbldap_talloc_smallest_attribute ( LDAP * ldap_struct , LDAPMessage * entry ,
const char * attribute ,
TALLOC_CTX * mem_ctx ) ;
bool smbldap_talloc_single_blob ( TALLOC_CTX * mem_ctx , LDAP * ld ,
LDAPMessage * msg , const char * attrib ,
DATA_BLOB * blob ) ;
bool smbldap_pull_sid ( LDAP * ld , LDAPMessage * msg , const char * attrib ,
struct dom_sid * sid ) ;
2012-09-06 19:52:03 +04:00
void smbldap_talloc_autofree_ldapmsg ( TALLOC_CTX * mem_ctx , LDAPMessage * result ) ;
void smbldap_talloc_autofree_ldapmod ( TALLOC_CTX * mem_ctx , LDAPMod * * mod ) ;
2011-10-10 20:46:53 +04:00
char * smbldap_talloc_dn ( TALLOC_CTX * mem_ctx , LDAP * ld ,
LDAPMessage * entry ) ;
2010-08-26 16:07:20 +04:00
2005-08-13 16:05:54 +04:00
# endif /* HAVE_LDAP */
2003-06-25 16:51:58 +04:00
2004-07-01 20:35:43 +04:00
# endif /* _SMBLDAP_H */