diff --git a/Makefile b/Makefile index 64f48b8..8ba146d 100644 --- a/Makefile +++ b/Makefile @@ -9,11 +9,10 @@ scan_asn1STRING.o scan_asn1SEQUENCE.o scan_asn1ENUMERATED.o \ scan_asn1BOOLEAN.o scan_asn1rawint.o scan_asn1SET.o ldap.a: scan_ldapmessage.o fmt_ldapmessage.o fmt_ldapbindrequest.o \ -scan_ldapbindrequest.o fmt_ldapbindresponse.o scan_ldapbindresponse.o \ +scan_ldapbindrequest.o scan_ldapbindresponse.o scan_ldapresult.o \ scan_ldapstring.o scan_ldapsearchfilter.o scan_ldapsearchrequest.o \ freefilter.o freeava.o scan_ldapava.o fmt_ldapsearchresultentry.o \ fmt_ldapstring.o freepal.o scan_ldapsearchresultentry.o \ -scan_ldapresult.o ldif.a: ldif_parse.o diff --git a/ldap.h b/ldap.h index cbb269e..e66cddf 100644 --- a/ldap.h +++ b/ldap.h @@ -48,7 +48,6 @@ struct SearchRequest { } derefAliases; unsigned long sizeLimit, timeLimit, typesOnly; struct Filter* filter; - /* really an AttributeDescriptionList, but the types are equivalent: */ struct AttributeDescriptionList* attributes; }; diff --git a/ldif.h b/ldif.h index d38a8a8..efd0d76 100644 --- a/ldif.h +++ b/ldif.h @@ -18,4 +18,6 @@ extern const char* dn,* mail,* sn,* cn,* objectClass; extern struct ldaprec *first; int parse_ldif(const char* filename); -void free_ldif(); + +/* return non-zero if the record matches the search request */ +int ldap_match(struct ldaprec* r,struct SearchRequest* sr); diff --git a/t2.c b/t2.c index 1b31bb0..cdbfdc0 100644 --- a/t2.c +++ b/t2.c @@ -135,6 +135,20 @@ int main(int argc,char* argv[]) { printf("scan_ldapsearchrequest %d\n",tmp=scan_ldapsearchrequest(ldapsequence+done+res,ldapsequence+done+res+len,&br)); if (tmp) { printf("baseObject: \"%.*s\"\n",(int)br.baseObject.l,br.baseObject.s); + printf(" scope: "); + switch (br.scope) { + case 0: printf("baseObject"); break; + case 1: printf("singleLevel"); break; + case 2: printf("wholeSubtree"); break; + } + printf(", deref: "); + switch (br.derefAliases) { + case 0: printf("neverDerefAliases"); break; + case 1: printf("derefInSearching"); break; + case 2: printf("derefFindingBaseObj"); break; + case 3: printf("derefAlways"); break; + } + printf(", size limit %d, time limit %d\n",br.sizeLimit,br.timeLimit); printfilter(br.filter); printf("\n"); } printal(br.attributes);