#ifdef LDAP_CONTROL_SUBENTRIES
fprintf( stderr, _(" [!]subentries[=true|false] (subentries)\n"));
#endif
-#ifdef LDAP_CLIENT_UPDATE
- fprintf( stderr, _(" [!]lcup=p/<cint>/<cookie>/<slimit> (LDAP client update)\n"));
-/*
- * " s/<cint>/<cookie> (LDAP client update)\n"
- * " sp/<cint>/<cookie>/<slimit>\n"
- * */
-#endif
-#ifdef LDAP_SYNC
fprintf( stderr, _(" [!]sync=ro[/<cookie>] (LDAP Sync refreshOnly)\n"));
fprintf( stderr, _(" rp[/<cookie>][/<slimit>] (LDAP Sync refreshAndPersist)\n"));
-#endif
fprintf( stderr, _(" -F prefix URL prefix for files (default: %s)\n"), def_urlpre);
fprintf( stderr, _(" -l limit time limit (in seconds) for search\n"));
fprintf( stderr, _(" -L print responses in LDIFv1 format\n"));
static int domainScope = 0;
#endif
-#if defined(LDAP_CLIENT_UPDATE) || defined(LDAP_SYNC)
-static int lcup = 0;
static int ldapsync = 0;
-#endif
-
-#ifdef LDAP_CLIENT_UPDATE
-static int lcup_cint = 0;
-static struct berval lcup_cookie = { 0, NULL };
-static int lcup_slimit = -1;
-#endif
-
-#ifdef LDAP_SYNC
static struct berval sync_cookie = { 0, NULL };
static int sync_slimit = -1;
-#endif
#ifdef LDAP_CONTROL_PAGEDRESULTS
static int pagedResults = 0;
if( crit ) subentries *= -1;
#endif
-#ifdef LDAP_CLIENT_UPDATE
- } else if ( strcasecmp( control, "lcup" ) == 0 ) {
- char *cookiep;
- char *slimitp;
- if ( lcup ) {
- fprintf( stderr, _("client update control previously specified\n"));
- exit( EXIT_FAILURE );
- }
- if ( ldapsync != -1 ) {
- fprintf( stderr, _("ldap sync control previously specified\n"));
- exit( EXIT_FAILURE );
- }
- if ( cvalue == NULL ) {
- fprintf( stderr,
- _("missing specification of client update control\n"));
- exit( EXIT_FAILURE );
- }
- if ( strncasecmp( cvalue, "p", 1 ) == 0 ) {
- lcup = LDAP_CUP_PERSIST_ONLY;
- cvalue = strchr( cvalue, '/' );
- cvalue++;
- cookiep = strchr( cvalue, '/' );
- *cookiep++ = '\0';
- lcup_cint = atoi( cvalue );
- cvalue = cookiep;
- slimitp = strchr( cvalue, '/' );
- *slimitp++ = '\0';
- while ( isspace( (unsigned char) *cookiep ) )
- cookiep++;
- ber_str2bv( cookiep, 0, 0, &lcup_cookie );
- lcup_slimit = atoi( slimitp );
-/*
- } else if ( strncasecmp( cvalue, "s", 1 ) == 0 ) {
- lcup = LDAP_CUP_SYNC_ONLY;
- cvalue += 2;
- cookiep = strchr( cvalue, '/' );
- *cookiep++ = '\0';
- lcup_cint = atoi( cvalue );
- ber_str2bv( cookiep, 0, 0, &lcup_cookie );
- } else if ( strncasecmp( cvalue, "sp", 2 ) == 0 ) {
- lcup = LDAP_CUP_SYNC_AND_PERSIST;
- cvalue += 3;
- cookiep = strchr( cvalue, '/' );
- *cookiep++ = '\0';
- lcup_cint = atoi( cvalue );
- cvalue = cookiep;
- slimitp = strchr( cvalue, '/' );
- *slimitp++ = '\0';
- ber_str2bv( cookiep, 0, 0, &lcup_cookie );
- lcup_slimit = atoi( slimitp );
-*/
- } else {
- fprintf( stderr,
- _("client update control value \"%s\" invalid\n"),
- cvalue );
- exit( EXIT_FAILURE );
- }
- if ( crit ) lcup *= -1;
-#endif
-
-#ifdef LDAP_SYNC
} else if ( strcasecmp( control, "sync" ) == 0 ) {
char *cookiep;
char *slimitp;
fprintf( stderr, _("ldap sync control previously specified\n") );
exit( EXIT_FAILURE );
}
- if ( lcup ) {
- fprintf( stderr, _("client update control previously specified\n") );
- exit( EXIT_FAILURE );
- }
if ( cvalue == NULL ) {
fprintf( stderr,
_("missing specification of ldap sync control\n"));
exit( EXIT_FAILURE );
}
if ( crit ) ldapsync *= -1;
-#endif
} else {
fprintf( stderr, _("Invalid control name: %s\n"), control );
int rc, i, first;
LDAP *ld = NULL;
BerElement *seber = NULL, *vrber = NULL, *prber = NULL;
-#ifdef LDAP_CLIENT_UPDATE
- BerElement *cuber = NULL;
- struct berval *cubvalp = NULL;
-#endif
-#ifdef LDAP_SYNC
BerElement *syncber = NULL;
struct berval *syncbvalp = NULL;
-#endif
tool_init();
tool_bind( ld );
getNextPage:
- if ( manageDSAit || noop || subentries || valuesReturnFilter
+ if ( assertion || authzid || manageDSAit || noop
#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
- || domainScope
+ || domainScope
#endif
#ifdef LDAP_CONTROL_PAGEDRESULTS
- || pageSize
-#endif
-#ifdef LDAP_CLIENT_UPDATE
- || lcup
-#endif
-#ifdef LDAP_SYNC
- || ldapsync
+ || pageSize
#endif
- ) {
+ || ldapsync
+ || subentries || valuesReturnFilter )
+ {
int err;
int i=0;
LDAPControl c[6];
}
#endif
-#ifdef LDAP_CLIENT_UPDATE
- if ( lcup ) {
- if (( cuber = ber_alloc_t(LBER_USE_DER)) == NULL ) {
- return EXIT_FAILURE;
- }
-
- if ( lcup_cookie.bv_len == 0 ) {
- err = ber_printf( cuber, "{ei}", abs(lcup), lcup_cint );
- } else {
- err = ber_printf( cuber, "{ei{sO}}", abs(lcup), lcup_cint,
- LDAP_CUP_COOKIE_OID, &lcup_cookie );
- }
-
- if ( err == LBER_ERROR ) {
- ber_free( cuber, 1 );
- fprintf( stderr, _("client update control encoding error!\n") );
- return EXIT_FAILURE;
- }
-
- if ( ber_flatten( cuber, &cubvalp ) == LBER_ERROR ) {
- return EXIT_FAILURE;
- }
-
- c[i].ldctl_oid = LDAP_CONTROL_CLIENT_UPDATE;
- c[i].ldctl_value = (*cubvalp);
- c[i].ldctl_iscritical = lcup < 0;
- i++;
- }
-#endif
-
-#ifdef LDAP_SYNC
if ( ldapsync ) {
if (( syncber = ber_alloc_t(LBER_USE_DER)) == NULL ) {
return EXIT_FAILURE;
c[i].ldctl_iscritical = ldapsync < 0;
i++;
}
-#endif
if ( valuesReturnFilter ) {
if (( vrber = ber_alloc_t(LBER_USE_DER)) == NULL ) {
int npartial;
LDAPMessage *res, *msg;
ber_int_t msgid;
-#ifdef LDAP_SYNC
char *retoid = NULL;
struct berval *retdata = NULL;
int nresponses_psearch = -1;
int cancel_msgid = -1;
-#endif
if( filtpatt != NULL ) {
filter = malloc( strlen( filtpatt ) + strlen( value ) );
msg = ldap_next_message( ld, msg ) )
{
if ( nresponses++ ) putchar('\n');
-#if LDAP_SYNC
if ( nresponses_psearch >= 0 )
nresponses_psearch++;
-#endif
switch( ldap_msgtype( msg ) ) {
case LDAP_RES_SEARCH_ENTRY:
goto done;
}
-#ifdef LDAP_SYNC
if ( cancel_msgid != -1 &&
cancel_msgid == ldap_msgid( msg ) ) {
printf(_("Cancelled \n"));
printf(_("cancel_msgid = %d\n"), cancel_msgid);
goto done;
}
-#endif
break;
case LDAP_RES_SEARCH_RESULT:
}
#endif
-#ifdef LDAP_CLIENT_UPDATE
- if ( lcup == LDAP_CUP_PERSIST_ONLY ||
- lcup == LDAP_CUP_SYNC_AND_PERSIST ) {
- break;
- }
-#endif
-#if defined(LDAP_CLIENT_UPDATE) && defined(LDAP_SYNC)
- else
-#endif
-#ifdef LDAP_SYNC
if ( ldapsync == LDAP_SYNC_REFRESH_AND_PERSIST ) {
break;
}
-#endif
goto done;
case LDAP_RES_INTERMEDIATE:
npartial++;
-#ifndef LDAP_SYNC
- print_partial( ld, msg );
-#else
ldap_parse_intermediate( ld, msg,
&retoid, &retdata, NULL, 0 );
ldap_memfree( retoid );
ber_bvfree( retdata );
goto done;
-#endif
}
-#ifdef LDAP_CLIENT_UPDATE
- if ( lcup && lcup_slimit != -1 && nresponses >= lcup_slimit ) {
- ldap_abandon (ld, ldap_msgid(msg));
- goto done;
- }
-#endif
-#ifdef LDAP_SYNC
if ( ldapsync && sync_slimit != -1 &&
nresponses_psearch >= sync_slimit ) {
BerElement *msgidber = NULL;
msgidvalp, NULL, NULL, &cancel_msgid);
nresponses_psearch = -1;
}
-#endif
-
}
ldap_msgfree( res );