On Tue, 2014-04-01 at 17:21 +0300, Zeus Panchenko wrote: > (...) > attributetype ( 2.16.840.1.113719.1.203.4.3 > NAME 'dhcpStatements' > EQUALITY caseIgnoreIA5Match > DESC 'Flexible storage for specific data depending on what > object this exists in. Like conditional statements, server > parameters, etc. This allows the standard to evolve > without needing to adjust the schema.' > SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) > ... > - ---[ quotation end ]------------------------------------------- > > so, when I use filter "(&(objectClass=dhcpHost)(dhcpStatements=*))" > I successfully receive all objects > but lets say I need to find this object: > - ---[ quotation start ]------------------------------------------- > dn: cn=ap01,cn=10.0.0.0,cn=officeXXX DHCP Config,ou=officeXXX,ou=DHCP, > dc=allstuff > cn: ap01 > objectClass: top > objectClass: dhcpHost > dhcpHWAddress: ethernet 20:cf:30:88:5d:18 > dhcpStatements: fixed-address 10.0.0.222 > - ---[ quotation end ]------------------------------------------- > > I use filter: > "(&(objectClass=dhcpHost)(dhcpStatements=fixed-address 10.0.0.222))" > > and receive empty result ...
If you've given dhcpStatements an index in slapd.conf when the attribute already existed in LDAP tree, you also need to stop slapd and run sbin/slapindex. Otherwise the index is empty, and tells slapd there are no matches for your filter. OTOH using cn=config to add an index does this automatically. > it is the same picture for anything except dhcpStatements=* ... > > so, how is it correct to write the filter to get all objects with IP > like 10.0.0.2* ? Doesn't look like you can. The dhcpStatements attribute description you showed has no SUBSTR(ing) matching rule, so you can't use substring search. "(attrname=*)" is a special case: it's presence search, not substring search.
