1/* LINTLIBRARY */ 2/* PROTOLIB1 */ 3 4/* 5 * Copyright (c) 1997 by Sun Microsystems, Inc. 6 * All rights reserved. 7 */ 8#pragma ident "%Z%%M% %I% %E% SMI" 9 10#include <stdio.h> 11#include <sys/types.h> 12#include <lber.h> 13#include <ldap.h> 14 15/* 16 * /usr/src/lib/libldap routines 17 */ 18 19 20/* 21 * in abandon.c: 22 */ 23int ldap_abandon_ext(LDAP *ld, int msgid, LDAPControl **serverctrls, LDAPControl ** clientctrls); 24int ldap_abandon( LDAP *ld, int msgid ); 25 26/* 27 * in add.c: 28 */ 29int ldap_add_ext( LDAP *ld, char *dn, LDAPMod **attrs, LDAPControl ** serverctrls, LDAPControl **clientctrls, int *msgidp); 30int ldap_add_ext_s( LDAP *ld, char *dn, LDAPMod **attrs, LDAPControl ** serverctrls, LDAPControl **clientctrls); 31int ldap_add( LDAP *ld, char *dn, LDAPMod **attrs ); 32int ldap_add_s( LDAP *ld, char *dn, LDAPMod **attrs ); 33 34/* 35 * in bind.c: 36 */ 37 38/* 39 * in sbind.c: 40 */ 41int ldap_simple_bind( LDAP *ld, char *who, char *passwd ); 42int ldap_simple_bind_s( LDAP *ld, char *who, char *passwd ); 43 44/* 45 * in saslbind.c: 46 */ 47int ldap_sasl_bind(LDAP *ld, char *dn, char *mechanism, struct berval *cred, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp); 48int ldap_sasl_bind_s(LDAP *ld, char *dn, char *mechanism, struct berval *cred, LDAPControl **serverctrls, LDAPControl **clientctrls, struct berval **servercredp); 49 50/* 51 * in kbind.c: 52 */ 53 54#ifndef NO_CACHE 55/* 56 * in cache.c 57 */ 58int ldap_enable_cache( LDAP *ld, time_t timeout, ssize_t maxmem ); 59void ldap_disable_cache( LDAP *ld ); 60void ldap_set_cache_options( LDAP *ld, unsigned int opts ); 61void ldap_destroy_cache( LDAP *ld ); 62void ldap_flush_cache( LDAP *ld ); 63void ldap_uncache_entry( LDAP *ld, char *dn ); 64void ldap_uncache_request( LDAP *ld, int msgid ); 65#endif /* !NO_CACHE */ 66 67/* 68 * in compare.c: 69 */ 70int ldap_compare_ext(LDAP *ld, char *dn, char *attr, struct berval *bvalue, LDAPControl ** serverctrls, LDAPControl **clientctrls, int *msgidp); 71int ldap_compare_ext_s(LDAP *ld, char *dn, char *attr, struct berval *bvalue, LDAPControl ** serverctrls, LDAPControl **clientctrls) ; 72int ldap_compare( LDAP *ld, char *dn, char *attr, char *value ); 73int ldap_compare_s( LDAP *ld, char *dn, char *attr, char *value ); 74 75/* 76 * in delete.c: 77 */ 78int ldap_delete_ext(LDAP *ld, char *dn, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp); 79int ldap_delete_ext_s(LDAP *ld, char *dn, LDAPControl **serverctrls, LDAPControl **clientctrls); 80int ldap_delete( LDAP *ld, char *dn ); 81int ldap_delete_s( LDAP *ld, char *dn ); 82 83/* 84 * in error.c: 85 */ 86char *ldap_err2string( int err ); 87 88 89/* 90 * in modify.c: 91 */ 92int ldap_modify_ext(LDAP *ld, char *dn, LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls, int *msgidp); 93int ldap_modify_ext_s(LDAP *ld, char *dn, LDAPMod **mods, LDAPControl **serverctrls, LDAPControl **clientctrls) ; 94int ldap_modify( LDAP *ld, char *dn, LDAPMod **mods ); 95int ldap_modify_s( LDAP *ld, char *dn, LDAPMod **mods ); 96 97/* 98 * in modrdn.c: 99 */ 100 101/* 102 * in rename.c: 103 */ 104int ldap_rename(LDAP *ld, char *dn, char *newrdn, char *newparent, int deleteoldrdn, LDAPControl ** serverctrls, LDAPControl **clientctrls, int *msgidp); 105int ldap_rename_s(LDAP *ld, char *dn, char *newrdn, char *newparent, int deleteoldrdn, LDAPControl ** serverctrls, LDAPControl **clientctrls); 106 107/* 108 * in open.c: 109 */ 110LDAP *ldap_init( char *defhost, int defport ); 111 112 113#ifdef LDAP_SSL 114LDAP *ldap_ssl_init(char *defhost, int defport, char *keyname ); 115#endif 116 117/* 118 * in getentry.c: 119 */ 120LDAPMessage *ldap_first_entry( LDAP *ld, LDAPMessage *res ); 121LDAPMessage *ldap_next_entry( LDAP *ld, LDAPMessage *entry ); 122int ldap_count_entries( LDAP *ld, LDAPMessage *res ); 123 124/* 125 * in getmsg.c: 126 */ 127LDAPMessage *ldap_first_message( LDAP *ld, LDAPMessage *res ); 128LDAPMessage *ldap_next_message( LDAP *ld, LDAPMessage *msg ); 129int ldap_count_messages( LDAP *ld, LDAPMessage *res ); 130 131/* 132 * in getref.c: 133 */ 134LDAPMessage *ldap_first_reference( LDAP *ld, LDAPMessage *res ); 135LDAPMessage *ldap_next_reference( LDAP *ld, LDAPMessage *msg ); 136int ldap_count_references( LDAP *ld, LDAPMessage *res ); 137char ** ldap_get_reference_urls( LDAP *ld, LDAPMessage *res ); 138 139/* 140 * in addentry.c 141 */ 142LDAPMessage *ldap_delete_result_entry( LDAPMessage **list, 143 LDAPMessage *e ); 144void ldap_add_result_entry( LDAPMessage **list, LDAPMessage *e ); 145 146/* 147 * in getdn.c 148 */ 149char *ldap_get_dn( LDAP *ld, LDAPMessage *entry ); 150char **ldap_explode_dn( char *dn, int notypes ); 151char ** ldap_explode_rdn( char *rdn, int notypes ); 152char *ldap_dn2ufn( char *dn ); 153 154char **ldap_explode_dns( char *dn ); 155int ldap_is_dns_dn( char *dn ); 156char *ldap_dns_to_dn(char *dns_name, int *nameparts); 157 158/* 159 * in getattr.c 160 */ 161char *ldap_first_attribute( LDAP *ld, LDAPMessage *entry, 162 BerElement **ber ); 163char *ldap_next_attribute( LDAP *ld, LDAPMessage *entry, 164 BerElement *ber ); 165void ldap_memfree(char *mem); 166 167/* 168 * in getvalues.c 169 */ 170char **ldap_get_values( LDAP *ld, LDAPMessage *entry, char *target ); 171struct berval **ldap_get_values_len( LDAP *ld, LDAPMessage *entry, 172 char *target ); 173int ldap_count_values( char **vals ); 174int ldap_count_values_len( struct berval **vals ); 175void ldap_value_free( char **vals ); 176void ldap_value_free_len( struct berval **vals ); 177 178/* 179 * in result.c: 180 */ 181int ldap_result( LDAP *ld, int msgid, int all, 182 struct timeval *timeout, LDAPMessage **result ); 183int ldap_msgdelete( LDAP *ld, int msgid ); 184int ldap_msgfree( LDAPMessage *lm ); 185int ldap_msgtype( LDAPMessage *res ); 186int ldap_msgid( LDAPMessage *res ); 187int ldap_parse_result(LDAP *ld, LDAPMessage *res, int *errcodep, char **matcheddnp, char **errmsgp, char ***referralsp, LDAPControl ***serverctrlsp, int freeit) ; 188int ldap_parse_sasl_bind_result(LDAP *ld, LDAPMessage *res, struct berval **servercredp, int freeit); 189int ldap_parse_extended_result(LDAP *ld, LDAPMessage *res, char **resultoidp, struct berval **resultdata, int freeit); 190 191/* 192 * in search.c: 193 */ 194int ldap_search_ext(LDAP *ld, char *base, int scope, char *filter, char **attrs, int attrsonly, LDAPControl **serverctrls, LDAPControl **clientctrls, struct timeval *timeoutp, int sizelimit, int *msgidp); 195int ldap_search_ext_s(LDAP *ld, char *base, int scope, char *filter, char **attrs, int attrsonly, LDAPControl **serverctrls, LDAPControl **clientctrls, struct timeval *timeoutp, int sizelimit, LDAPMessage **res); 196 197int ldap_search( LDAP *ld, char *base, int scope, char *filter, 198 char **attrs, int attrsonly ); 199int ldap_search_s( LDAP *ld, char *base, int scope, char *filter, 200 char **attrs, int attrsonly, LDAPMessage **res ); 201int ldap_search_st( LDAP *ld, char *base, int scope, char *filter, 202 char **attrs, int attrsonly, struct timeval *timeout, LDAPMessage **res ); 203 204/* 205 * in ufn.c 206 */ 207int ldap_ufn_search_c( LDAP *ld, char *ufn, char **attrs, 208 int attrsonly, LDAPMessage **res, int (*cancelproc)( void *cl ), 209 void *cancelparm ); 210int ldap_ufn_search_ct( LDAP *ld, char *ufn, char **attrs, 211 int attrsonly, LDAPMessage **res, int (*cancelproc)( void *cl ), 212 void *cancelparm, char *tag1, char *tag2, char *tag3 ); 213int ldap_ufn_search_s( LDAP *ld, char *ufn, char **attrs, 214 int attrsonly, LDAPMessage **res ); 215LDAPFiltDesc *ldap_ufn_setfilter( LDAP *ld, char *fname ); 216void ldap_ufn_setprefix( LDAP *ld, char *prefix ); 217int ldap_ufn_timeout( void *tvparam ); 218 219 220/* 221 * in unbind.c 222 */ 223int ldap_unbind( LDAP *ld ); 224int ldap_unbind_s( LDAP *ld ); 225 226 227/* 228 * in getfilter.c 229 */ 230LDAPFiltDesc *ldap_init_getfilter( char *fname ); 231LDAPFiltDesc *ldap_init_getfilter_buf( char *buf, ssize_t buflen ); 232LDAPFiltInfo *ldap_getfirstfilter( LDAPFiltDesc *lfdp, char *tagpat, 233 char *value ); 234LDAPFiltInfo *ldap_getnextfilter( LDAPFiltDesc *lfdp ); 235void ldap_setfilteraffixes( LDAPFiltDesc *lfdp, char *prefix, char *suffix ); 236void ldap_build_filter( char *buf, size_t buflen, 237 char *pattern, char *prefix, char *suffix, char *attr, 238 char *value, char **valwords ); 239 240/* 241 * in free.c 242 */ 243void ldap_getfilter_free( LDAPFiltDesc *lfdp ); 244void ldap_mods_free( LDAPMod **mods, int freemods ); 245 246/* 247 * in friendly.c 248 */ 249char *ldap_friendly_name( char *filename, char *uname, 250 FriendlyMap **map ); 251void ldap_free_friendlymap( FriendlyMap **map ); 252 253 254/* 255 * in cldap.c 256 */ 257LDAP *cldap_open( char *host, int port ); 258void cldap_close( LDAP *ld ); 259int cldap_search_s( LDAP *ld, char *base, int scope, char *filter, 260 char **attrs, int attrsonly, LDAPMessage **res, char *logdn ); 261void cldap_setretryinfo( LDAP *ld, int tries, time_t timeout ); 262 263 264/* 265 * in sort.c 266 */ 267int ldap_sort_entries( LDAP *ld, LDAPMessage **chain, char *attr, 268 int (*cmp)() ); 269int ldap_sort_values( LDAP *ld, char **vals, int (*cmp)() ); 270int ldap_sort_strcasecmp( char **a, char **b ); 271 272 273/* 274 * in url.c 275 */ 276int ldap_is_ldap_url( char *url ); 277int ldap_url_parse( char *url, LDAPURLDesc **ludpp ); 278void ldap_free_urlexts( LDAPURLExt **lues ); 279void ldap_free_urldesc( LDAPURLDesc *ludp ); 280int ldap_url_search( LDAP *ld, char *url, int attrsonly ); 281int ldap_url_search_s( LDAP *ld, char *url, int attrsonly, 282 LDAPMessage **res ); 283int ldap_url_search_st( LDAP *ld, char *url, int attrsonly, 284 struct timeval *timeout, LDAPMessage **res ); 285char *ldap_dns_to_url(LDAP *ld, char *dns_name, char *attrs, 286char *scope, char *filter); 287char *ldap_dn_to_url(LDAP *ld, char *dn, int nameparts); 288 289 290/* 291 * in charset.c 292 */ 293#ifdef STR_TRANSLATION 294void ldap_set_string_translators( LDAP *ld, 295 BERTranslateProc encode_proc, BERTranslateProc decode_proc ); 296int ldap_translate_from_t61( LDAP *ld, char **bufp, 297 unsigned int *lenp, int free_input ); 298int ldap_translate_to_t61( LDAP *ld, char **bufp, 299 unsigned int *lenp, int free_input ); 300void ldap_enable_translation( LDAP *ld, LDAPMessage *entry, 301 int enable ); 302 303#ifdef LDAP_CHARSET_8859 304int ldap_t61_to_8859( char **bufp, unsigned int *buflenp, 305 int free_input ); 306int ldap_8859_to_t61( char **bufp, unsigned int *buflenp, 307 int free_input ); 308#endif /* LDAP_CHARSET_8859 */ 309#endif /* STR_TRANSLATION */ 310 311 312#ifdef WINSOCK 313/* 314 * in msdos/winsock/wsa.c 315 */ 316void ldap_memfree( void *p ); 317#endif /* WINSOCK */ 318