#include #include #define LDAP_SERVER "ldap://localhost:1389" int main( int argc, char **argv ) { LDAP *ld; LDAPMessage *search_result; int version, rc, msgidp; int pagesof=0; LDAPControl *pagecontrol = NULL; LDAPControl *requestctrls[ 2 ]; struct berval *cookie; rc = ldap_initialize(&ld,LDAP_SERVER); if (rc !=0) { perror("ldap_initialize"); return (1); } version = LDAP_VERSION3; ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &version ); /* Bind to the server. */ rc = ldap_simple_bind_s( ld, "cn=directory manager" , "secret12" ); if ( rc != LDAP_SUCCESS ) { /* error */ return(-1); } pagesof = 100; printf("paged search of %d entries\n",pagesof); cookie = NULL; while (1) { rc = ldap_create_page_control(ld,pagesof,cookie,1,&pagecontrol); if (rc != LDAP_SUCCESS) { printf("Failed to create page control\n"); return (-1); } requestctrls[0] = pagecontrol; requestctrls[1] = NULL; /* Perform the LDAP search */ /* ASYNCHRONIC */ printf("Before ldap search\n"); rc = ldap_search_ext( ld, "o=redhat", LDAP_SCOPE_SUBTREE, "(sn=user*)", NULL, 0, requestctrls, NULL, NULL, 0, &msgidp ); if ( rc != LDAP_SUCCESS && rc != LDAP_PARTIAL_RESULTS ) { printf("as. searched failed with ldap error (%d) (%s)\n",rc,ldap_err2string(rc)); ldap_control_free(pagecontrol); return(-1); } else { printf("Ldap search return is %d\n",rc); } printf("msgidp = %d\n",msgidp); rc = ldap_abandon_ext( ld, msgidp, NULL, NULL); if (rc == LDAP_SUCCESS){ printf("Abandonned successfull\n"); } else { printf("Abandonned unsuccessfull\n"); } /* new s. search */ rc = ldap_search_ext_s( ld, "o=redhat", LDAP_SCOPE_SUBTREE, "(cn=user100*)",NULL, 0, requestctrls, NULL, NULL, 0, &search_result); /* don't care any more about results and retrieve/decode the controls (in the mypaged_abandon.c) */ } /*end while 1 */ /* Disconnect from the server. */ ldap_unbind( ld ); return(0); }