http://qs321.pair.com?node_id=924351


in reply to Re^3: Net::LDAP q
in thread Net::LDAP q

Thank you for a tip.
Searching for uids less than 1000 and gt 500... Net::LDAP=HASH(0x22d4e +e0) sending: 0000 82: SEQUENCE { 0002 1: INTEGER = 2 0005 77: [APPLICATION 3] { 0007 39: STRING = 'ou=slurm,dc=lomonosov,dc=parallel,dc=ru' 0030 1: ENUM = 2 0033 1: ENUM = 2 0036 1: INTEGER = 0 0039 1: INTEGER = 0 003C 1: BOOLEAN = FALSE 003F 17: [CONTEXT 6] { 0041 9: STRING = 'uidNumber' 004C 4: STRING = '1000' 0052 : } 0052 0: SEQUENCE { 0054 : } 0054 : } 0054 : } Net::LDAP=HASH(0x22d4ee0) received: 0000 12: SEQUENCE { 0002 1: INTEGER = 2 0005 7: [APPLICATION 5] { 0007 1: ENUM = 0 000A 0: STRING = '' 000C 0: STRING = '' 000E : } 000E : } Ok Found:
I suppose that 'context 6' in this context means 'less or equal'; according to rfc,
LDAPMessage ::= SEQUENCE { messageID MessageID, protocolOp CHOICE { bindRequest BindRequest, bindResponse BindResponse, unbindRequest UnbindRequest, searchRequest SearchRequest, searchResEntry SearchResultEntry, searchResDone SearchResultDone, [...] SearchRequest ::= [APPLICATION 3] SEQUENCE { baseObject LDAPDN, scope ENUMERATED { baseObject (0), singleLevel (1), wholeSubtree (2), ... }, derefAliases ENUMERATED { neverDerefAliases (0), derefInSearching (1), derefFindingBaseObj (2), derefAlways (3) }, sizeLimit INTEGER (0 .. maxInt), timeLimit INTEGER (0 .. maxInt), typesOnly BOOLEAN, filter Filter, attributes AttributeSelection } [...] Filter ::= CHOICE { [...] greaterOrEqual [5] AttributeValueAssertion, lessOrEqual [6] AttributeValueAssertion, [...] AttributeValueAssertion ::= SEQUENCE { attributeDesc AttributeDescription, assertionValue AssertionValue } AttributeDescription ::= LDAPString -- Constrained to <attributedescriptio +n> -- [RFC4512] AssertionValue ::= OCTET STRING
Everything seems to be OK, but *why* console utility 'ldapsearch' returns ~200 entries, and Net::LDAP doesn't?