Commit 70210970 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

update ldap/lber headers towards ldapext-ldap-c-api-01

parent ad9da052
......@@ -6,8 +6,8 @@
#include <stdlib.h>
#include <ctype.h>
#include <ac/socket.h>
#include <ac/string.h>
#include <ac/unistd.h>
#include <lber.h>
#include <ldap.h>
......@@ -107,7 +107,10 @@ main( argc, argv )
exit( 1 );
}
ld->ld_deref = LDAP_DEREF_NEVER; /* prudent, but probably unnecessary */
#if LDAP_VERSION > LDAP_VERSION2
/* this seems prudent */
ldap_set_option( LDAP_OPT_DEREF, LDAP_DEREF_NEVER);
#endif
if ( !kerberos ) {
authmethod = LDAP_AUTH_SIMPLE;
......
......@@ -7,7 +7,6 @@
#include <ctype.h>
#include <ac/string.h>
#include <ac/socket.h>
#include <ac/unistd.h>
#include <sys/stat.h>
......@@ -169,7 +168,10 @@ main( int argc, char **argv )
exit( 1 );
}
ld->ld_deref = LDAP_DEREF_NEVER; /* this seems prudent */
#if LDAP_VERSION > LDAP_VERSION2
/* this seems prudent */
ldap_set_option( LDAP_OPT_DEREF, LDAP_DEREF_NEVER);
#endif
if ( !kerberos ) {
authmethod = LDAP_AUTH_SIMPLE;
......
/* ldapmodrdn.c - generic program to modify an entry's RDN using LDAP */
#define DISABLE_BRIDGE
#include "portable.h"
#include <stdio.h>
......@@ -8,7 +7,7 @@
#include <ctype.h>
#include <ac/string.h>
#include <ac/time.h>
#include <ac/unistd.h>
#include <lber.h>
#include <ldap.h>
......@@ -132,7 +131,10 @@ main( argc, argv )
exit( 1 );
}
ld->ld_deref = LDAP_DEREF_NEVER; /* this seems prudent */
#if LDAP_VERSION > LDAP_VERSION2
/* this seems prudent */
ldap_set_option( LDAP_OPT_DEREF, LDAP_DEREF_NEVER);
#endif
if ( !kerberos ) {
authmethod = LDAP_AUTH_SIMPLE;
......
#include "portable.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <ac/socket.h>
#include <ac/string.h>
#include <ac/time.h>
#include <ac/unistd.h>
#include <lber.h>
#include <ldap.h>
#include <ldif.h>
#if LDAP_VERSION == LDAP_VERSION2
/* until we implement ldap_set_options() */
#include "../libraries/libldap/ldap-int.h"
#endif
#include "ldapconfig.h"
#define DEFSEP "="
......
......@@ -40,6 +40,7 @@ LDAP_BEGIN_DECL
*/
#define LBER_ERROR 0xffffffffL
#define LBER_DEFAULT 0xffffffffL
#define LBER_END_SEQORSET 0xfffffffeL
/* general BER types we know about */
#define LBER_BOOLEAN 0x01L
......@@ -54,62 +55,34 @@ LDAP_BEGIN_DECL
#define OLD_LBER_SEQUENCE 0x10L /* w/o constructed bit - broken */
#define OLD_LBER_SET 0x11L /* w/o constructed bit - broken */
/* get/set options for BerElement */
#define LBER_SOCKBUF_OPT_TO_FILE 0x01
#define LBER_SOCKBUF_OPT_TO_FILE_ONLY 0x02
#define LBER_SOCKBUF_OPT_TO_MAX_INCOMING_SIZE 0x04
#define LBER_SOCKBUF_OPT_TO_NO_READ_AHEAD 0x08
#define LBER_SOCKBUF_OPT_TO_DESC 0x10
#define LBER_SOCKBUF_OPT_TO_COPYDESC 0x20
#define LBER_SOCKBUF_OPT_TO_READFN 0x40
#define LBER_SOCKBUF_OPT_TO_WRITE_FN 0x80
/* LBER on/off values */
#define LBER_OPT_ON ((void *) 1)
#define LBER_OPT_OFF ((void *) 0)
typedef int (*BERTranslateProc) LDAP_P(( char **bufp,
unsigned long *buflenp,
int free_input ));
typedef struct berelement {
char *ber_buf;
char *ber_ptr;
char *ber_end;
struct seqorset *ber_sos;
unsigned long ber_tag;
unsigned long ber_len;
int ber_usertag;
char ber_options;
#define LBER_USE_DER 0x01
#define LBER_USE_INDEFINITE_LEN 0x02
#define LBER_TRANSLATE_STRINGS 0x04
char *ber_rwptr;
BERTranslateProc ber_encode_translate_proc;
BERTranslateProc ber_decode_translate_proc;
} BerElement;
typedef struct berelement BerElement;
#define NULLBER ((BerElement *) 0)
typedef struct sockbuf {
#ifndef MACOS
int sb_sd;
#else /* MACOS */
void *sb_sd;
#endif /* MACOS */
BerElement sb_ber;
int sb_naddr; /* > 0 implies using CLDAP (UDP) */
void *sb_useaddr; /* pointer to sockaddr to use next */
void *sb_fromaddr; /* pointer to message source sockaddr */
void **sb_addrs; /* actually an array of pointers to
sockaddrs */
int sb_options; /* to support copying ber elements */
#define LBER_TO_FILE 0x01 /* to a file referenced by sb_fd */
#define LBER_TO_FILE_ONLY 0x02 /* only write to file, not network */
#define LBER_MAX_INCOMING_SIZE 0x04 /* impose limit on incoming stuff */
#define LBER_NO_READ_AHEAD 0x08 /* read only as much as requested */
int sb_fd;
long sb_max_incoming;
} Sockbuf;
typedef struct sockbuf Sockbuf;
#define READBUFSIZ 8192
typedef struct seqorset {
BerElement *sos_ber;
unsigned long sos_clen;
unsigned long sos_tag;
char *sos_first;
char *sos_ptr;
struct seqorset *sos_next;
} Seqorset;
#define NULLSEQORSET ((Seqorset *) 0)
/* structure for returning a sequence of octet strings + length */
struct berval {
unsigned long bv_len;
......@@ -167,7 +140,7 @@ LDAP_F int ber_start_set LDAP_P(( BerElement *ber, unsigned long tag ));
LDAP_F int ber_put_seq LDAP_P(( BerElement *ber ));
LDAP_F int ber_put_set LDAP_P(( BerElement *ber ));
LDAP_F int ber_printf LDAP_P(( BerElement *ber, char *fmt, ... ));
LDAP_F int ber_fatten LDAP_P(( BerElement *ber, struct berval **bvPtr));
/*
* in io.c:
*/
......
......@@ -21,7 +21,8 @@ LDAP_BEGIN_DECL
#define LDAP_VERSION1 1
#define LDAP_VERSION2 2
#define LDAP_VERSION3 3
#define LDAP_VERSION LDAP_VERSION2
#define LDAP_VERSION LDAP_VERSION2
#define LDAP_VERSION_MAX LDAP_VERSION2
#define LDAP_COMPAT20
#define LDAP_COMPAT30
......@@ -29,52 +30,54 @@ LDAP_BEGIN_DECL
#define LDAP_COMPAT
#endif
#define LDAP_OPT_API_INFO 0x00
#define LDAP_OPT_DESC 0x01
#define LDAP_OPT_DEREF 0x02
#define LDAP_OPT_SIZELIMIT 0x03
#define LDAP_OPT_TIMELIMIT 0x04
#define LDAP_OPT_REFERRALS 0x08
#define LDAP_OPT_RESTART 0x09
#define LDAP_OPT_PROTOCOL_VERSION 0x11
#define LDAP_OPT_SERVER_CONTROLS 0x12
#define LDAP_OPT_CLIENT_CONTROLS 0x13
#define LDAP_OPT_HOST_NAME 0x30
#define LDAP_OPT_ERROR_NUMBER 0x31
#define LDAP_OPT_ERROR_STRING 0x32
/* for LDAPv2 compatibility */
#define LDAP_OPT_DNS 0x40 /* use DN & DNS */
/* on/off values */
#define LDAP_OPT_ON ((void *) 1)
#define LDAP_OPT_OFF ((void *)) 0)
#define LDAP_OPT_SUCCESS 0
#define LDAP_OPT_ERROR (-1)
LDAP_F int ldap_get_option LDAP_P((LDAP *ld, int option, void *outvalue));
LDAP_F int ldap_set_option LDAP_P((LDAP *ld, int option, void *invalue));
typedef struct ldapapiinfo {
int ldapai_info_version; /* version of LDAPAPIInfo (1) */
int ldapai_api_version; /* revision of API supported */
int ldapai_protocol_version; /* highest LDAP version supported */
char **ldapai_extensions; /* names of API extensions */
char *ldapi_vendor_name; /* name of supplier */
int ldapai_vendor_version; /* supplier-specific version times 100 */
} LDAPAPIInfo;
typedef struct ldapcontrol {
char *ldctl_oid;
struct berval ldctl_value;
char ldctl_iscritical;
} LDAPControl, *PLDAPControl;
LDAP_F void ldap_control_free LDAP_P(( LDAPControl *ctrl ));
LDAP_F void ldap_controls_free LDAP_P(( LDAPControl **ctrls ));
#define LDAP_MAX_ATTR_LEN 100
/* debugging stuff */
#ifdef LDAP_DEBUG
extern int ldap_debug;
#ifdef LDAP_SYSLOG
extern int ldap_syslog;
extern int ldap_syslog_level;
#endif /* LDAP_SYSLOG */
#define LDAP_DEBUG_TRACE 0x001
#define LDAP_DEBUG_PACKETS 0x002
#define LDAP_DEBUG_ARGS 0x004
#define LDAP_DEBUG_CONNS 0x008
#define LDAP_DEBUG_BER 0x010
#define LDAP_DEBUG_FILTER 0x020
#define LDAP_DEBUG_CONFIG 0x040
#define LDAP_DEBUG_ACL 0x080
#define LDAP_DEBUG_STATS 0x100
#define LDAP_DEBUG_STATS2 0x200
#define LDAP_DEBUG_SHELL 0x400
#define LDAP_DEBUG_PARSE 0x800
#define LDAP_DEBUG_ANY 0xffff
/* this doesn't below as part of ldap.h */
#ifdef LDAP_SYSLOG
#define Debug( level, fmt, arg1, arg2, arg3 ) \
{ \
if ( ldap_debug & (level) ) \
fprintf( stderr, (fmt), (arg1), (arg2), (arg3) ); \
if ( ldap_syslog & level ) \
syslog( ldap_syslog_level, (fmt), (arg1), (arg2), (arg3) ); \
}
#else /* LDAP_SYSLOG */
#ifndef WINSOCK
#define Debug( level, fmt, arg1, arg2, arg3 ) \
if ( ldap_debug & (level) ) \
fprintf( stderr, (fmt), (arg1), (arg2), (arg3) );
#else /* !WINSOCK */
extern void Debug( int level, char* fmt, ... );
#endif /* !WINSOCK */
#endif /* LDAP_SYSLOG */
#else /* LDAP_DEBUG */
#define Debug( level, fmt, arg1, arg2, arg3 )
#endif /* LDAP_DEBUG */
/*
* specific LDAP instantiations of BER types we know about
*/
......@@ -228,6 +231,11 @@ typedef struct ldapmod {
#define LDAP_STRONG_AUTH_NOT_SUPPORTED 0x07
#define LDAP_STRONG_AUTH_REQUIRED 0x08
#define LDAP_PARTIAL_RESULTS 0x09
#define LDAP_REFERRAL 0x0a /* LDAPv3 */
#define LDAP_ADMINLIMIT_EXCEEDED 0x0b /* LDAPv3 */
#define LDAP_UNAVAILABLE_CRITICIAL_EXTENSION 0x0c /* LDAPv3 */
#define LDAP_CONFIDENTIALITY_REQUIRED 0x0d /* LDAPv3 */
#define LDAP_SASL_BIND_IN_PROGRESS 0x0e /* LDAPv3 */
#define LDAP_NO_SUCH_ATTRIBUTE 0x10
#define LDAP_UNDEFINED_TYPE 0x11
......@@ -239,7 +247,7 @@ typedef struct ldapmod {
#define LDAP_NO_SUCH_OBJECT 0x20
#define LDAP_ALIAS_PROBLEM 0x21
#define LDAP_INVALID_DN_SYNTAX 0x22
#define LDAP_IS_LEAF 0x23
#define LDAP_IS_LEAF 0x23 /* not LDAPv3 */
#define LDAP_ALIAS_DEREF_PROBLEM 0x24
#define NAME_ERROR(n) ((n & 0xf0) == 0x20)
......@@ -258,7 +266,8 @@ typedef struct ldapmod {
#define LDAP_NOT_ALLOWED_ON_RDN 0x43
#define LDAP_ALREADY_EXISTS 0x44
#define LDAP_NO_OBJECT_CLASS_MODS 0x45
#define LDAP_RESULTS_TOO_LARGE 0x46
#define LDAP_RESULTS_TOO_LARGE 0x46 /* CLDAP */
#define LDAP_AFFECTS_MULTIPLE_DSAS 0x47 /* LDAPv3 */
#define LDAP_OTHER 0x50
#define LDAP_SERVER_DOWN 0x51
......@@ -282,14 +291,7 @@ typedef struct ldapmod {
* where a response has multiple messages.
*/
typedef struct ldapmsg {
int lm_msgid; /* the message id */
int lm_msgtype; /* the message type */
BerElement *lm_ber; /* the ber encoded message contents */
struct ldapmsg *lm_chain; /* for search - next msg in the resp */
struct ldapmsg *lm_next; /* next response */
unsigned int lm_time; /* used to maintain cache */
} LDAPMessage;
typedef struct ldapmsg LDAPMessage;
#define NULLMSG ((LDAPMessage *) NULL)
......@@ -406,64 +408,14 @@ typedef struct ldap_filt_desc {
* structure representing an ldap connection
*/
typedef struct ldap {
Sockbuf ld_sb; /* socket descriptor & buffer */
char *ld_host;
int ld_version;
char ld_lberoptions;
int ld_deref;
#define LDAP_DEREF_NEVER 0
#define LDAP_DEREF_SEARCHING 1
#define LDAP_DEREF_FINDING 2
#define LDAP_DEREF_ALWAYS 3
int ld_timelimit;
int ld_sizelimit;
#define LDAP_NO_LIMIT 0
typedef struct ldap LDAP;
LDAPFiltDesc *ld_filtd; /* from getfilter for ufn searches */
char *ld_ufnprefix; /* for incomplete ufn's */
#define LDAP_DEREF_NEVER 0x00
#define LDAP_DEREF_SEARCHING 0x01
#define LDAP_DEREF_FINDING 0x02
#define LDAP_DEREF_ALWAYS 0x03
int ld_errno;
char *ld_error;
char *ld_matched;
int ld_msgid;
/* do not mess with these */
#ifdef LDAP_REFERRALS
LDAPRequest *ld_requests; /* list of outstanding requests */
#else /* LDAP_REFERRALS */
LDAPMessage *ld_requests; /* list of outstanding requests */
#endif /* LDAP_REFERRALS */
LDAPMessage *ld_responses; /* list of outstanding responses */
int *ld_abandoned; /* array of abandoned requests */
char ld_attrbuffer[LDAP_MAX_ATTR_LEN];
LDAPCache *ld_cache; /* non-null if cache is initialized */
char *ld_cldapdn; /* DN used in connectionless search */
/* it is OK to change these next four values directly */
int ld_cldaptries; /* connectionless search retry count */
int ld_cldaptimeout;/* time between retries */
int ld_refhoplimit; /* limit on referral nesting */
unsigned long ld_options; /* boolean options */
#define LDAP_OPT_DNS 0x00000001 /* use DN & DNS */
#define LDAP_OPT_REFERRALS 0x00000002 /* chase referrals */
#define LDAP_OPT_RESTART 0x00000004 /* restart if EINTR occurs */
/* do not mess with the rest though */
char *ld_defhost; /* full name of default server */
int ld_defport; /* port of default server */
BERTranslateProc ld_lber_encode_translate_proc;
BERTranslateProc ld_lber_decode_translate_proc;
#ifdef LDAP_REFERRALS
LDAPConn *ld_defconn; /* default connection */
LDAPConn *ld_conns; /* list of server connections */
void *ld_selectinfo; /* platform specifics for select */
int (*ld_rebindproc)( struct ldap *ld, char **dnp,
char **passwdp, int *authmethodp, int freeit );
/* routine to get info needed for re-bind */
#endif /* LDAP_REFERRALS */
} LDAP;
#define LDAP_NO_LIMIT 0
/*
......
/*
* Copyright (c) 1990 Regents of the University of Michigan.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that this notice is preserved and that due credit is given
* to the University of Michigan at Ann Arbor. The name of the University
* may not be used to endorse or promote products derived from this
* software without specific prior written permission. This software
* is provided ``as is'' without express or implied warranty.
*/
#ifndef _LDAP_LOG_H
#define _LDAP_LOG_H
#include <ldap_cdefs.h>
LDAP_BEGIN_DECL
/* debugging stuff */
#ifdef LDAP_DEBUG
extern int ldap_debug;
#ifdef LDAP_SYSLOG
extern int ldap_syslog;
extern int ldap_syslog_level;
#endif /* LDAP_SYSLOG */
#define LDAP_DEBUG_TRACE 0x001
#define LDAP_DEBUG_PACKETS 0x002
#define LDAP_DEBUG_ARGS 0x004
#define LDAP_DEBUG_CONNS 0x008
#define LDAP_DEBUG_BER 0x010
#define LDAP_DEBUG_FILTER 0x020
#define LDAP_DEBUG_CONFIG 0x040
#define LDAP_DEBUG_ACL 0x080
#define LDAP_DEBUG_STATS 0x100
#define LDAP_DEBUG_STATS2 0x200
#define LDAP_DEBUG_SHELL 0x400
#define LDAP_DEBUG_PARSE 0x800
#define LDAP_DEBUG_ANY 0xffff
/* this doesn't below as part of ldap.h */
#ifdef LDAP_SYSLOG
#define Debug( level, fmt, arg1, arg2, arg3 ) \
{ \
if ( ldap_debug & (level) ) \
fprintf( stderr, (fmt), (arg1), (arg2), (arg3) ); \
if ( ldap_syslog & level ) \
syslog( ldap_syslog_level, (fmt), (arg1), (arg2), (arg3) ); \
}
#else /* LDAP_SYSLOG */
#ifndef WINSOCK
#define Debug( level, fmt, arg1, arg2, arg3 ) \
if ( ldap_debug & (level) ) \
fprintf( stderr, (fmt), (arg1), (arg2), (arg3) );
#else /* !WINSOCK */
extern void Debug( int level, char* fmt, ... );
#endif /* !WINSOCK */
#endif /* LDAP_SYSLOG */
#else /* LDAP_DEBUG */
#define Debug( level, fmt, arg1, arg2, arg3 )
#endif /* LDAP_DEBUG */
LDAP_END_DECL
#endif /* _LDAP_H */
......@@ -8,7 +8,7 @@
#include <ac/string.h>
#endif /* LDAP_DEBUG && LDAP_LIBUI */
#include "lber.h"
#include "lber-int.h"
/*
* Print arbitrary stuff, for debugging.
......
......@@ -25,7 +25,7 @@
#include <ac/string.h>
#include <ac/socket.h>
#include "lber.h"
#include "lber-int.h"
#ifdef LDAP_DEBUG
int lber_debug;
......
......@@ -25,7 +25,7 @@
#include <ac/socket.h>
#include <ac/string.h>
#include "lber.h"
#include "lber-int.h"
static int ber_put_len LDAP_P(( BerElement *ber,
unsigned long len, int nosos ));
......
......@@ -26,7 +26,7 @@
#include <io.h>
#endif
#include "lber.h"
#include "lber-int.h"
static int ber_realloc LDAP_P(( BerElement *ber, unsigned long len ));
static int ber_filbuf LDAP_P(( Sockbuf *sb, long len ));
......
/*
* Copyright (c) 1990 Regents of the University of Michigan.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that this notice is preserved and that due credit is given
* to the University of Michigan at Ann Arbor. The name of the University
* may not be used to endorse or promote products derived from this
* software without specific prior written permission. This software
* is provided ``as is'' without express or implied warranty.
*/
#ifndef _LBER_INT_H
#define _LBER_INT_H
#include "lber.h"
LDAP_BEGIN_DECL
typedef struct berelement {
char *ber_buf;
char *ber_ptr;
char *ber_end;
struct seqorset *ber_sos;
unsigned long ber_tag;
unsigned long ber_len;
int ber_usertag;
char ber_options;
#define LBER_USE_DER 0x01
#define LBER_USE_INDEFINITE_LEN 0x02
#define LBER_TRANSLATE_STRINGS 0x04
char *ber_rwptr;
BERTranslateProc ber_encode_translate_proc;
BERTranslateProc ber_decode_translate_proc;
} BerElement;
#define NULLBER ((BerElement *) 0)
typedef struct sockbuf {
#ifndef MACOS
int sb_sd;
#else /* MACOS */
void *sb_sd;
#endif /* MACOS */
BerElement sb_ber;
int sb_naddr; /* > 0 implies using CLDAP (UDP) */
void *sb_useaddr; /* pointer to sockaddr to use next */
void *sb_fromaddr; /* pointer to message source sockaddr */
void **sb_addrs; /* actually an array of pointers to
sockaddrs */
int sb_options; /* to support copying ber elements */
#define LBER_TO_FILE 0x01 /* to a file referenced by sb_fd */
#define LBER_TO_FILE_ONLY 0x02 /* only write to file, not network */
#define LBER_MAX_INCOMING_SIZE 0x04 /* impose limit on incoming stuff */
#define LBER_NO_READ_AHEAD 0x08 /* read only as much as requested */
int sb_fd;
long sb_max_incoming;
} Sockbuf;
#define READBUFSIZ 8192
typedef struct seqorset {
BerElement *sos_ber;
unsigned long sos_clen;
unsigned long sos_tag;
char *sos_first;
char *sos_ptr;
struct seqorset *sos_next;
} Seqorset;
#define NULLSEQORSET ((Seqorset *) 0)
#endif /* _LBER_INT_H */
......@@ -92,6 +92,10 @@ SOURCE=.\io.c
# End Source File
# Begin Source File
SOURCE=".\lber-int.h"
# End Source File
# Begin Source File
SOURCE=..\..\include\lber.h
# End Source File
# End Target
......
......@@ -18,8 +18,6 @@ static char copyright[] = "@(#) Copyright (c) 1990 Regents of the University of
#include <ac/string.h>
#include <ac/time.h>
#include "lber.h"
#include "ldap.h"
#include "ldap-int.h"
static int do_abandon LDAP_P(( LDAP *ld, int origid, int msgid ));
......
......@@ -17,8 +17,6 @@ static char copyright[] = "@(#) Copyright (c) 1990 Regents of the University of
#include <ac/string.h>
#include <ac/time.h>
#include "lber.h"
#include "ldap.h"
#include "ldap-int.h"
/*
......
......@@ -19,8 +19,7 @@ static char copyright[] = "@(#) Copyright (c) 1990 Regents of the University of
#include <ac/string.h>
#include <ac/time.h>
#include "lber.h"
#include "ldap.h"
#include "ldap-int.h"
LDAPMessage *
ldap_delete_result_entry( LDAPMessage **list, LDAPMessage *e )
......
......@@ -18,8 +18,7 @@ static char copyright[] = "@(#) Copyright (c) 1990 Regents of the University of
#include <ac/string.h>
#include <ac/time.h>
#include "lber.h"