ldclt.man 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. #ident "ldclt @(#)ldclt.man 1.56 01/05/04"
  2. ldclt(1) SUNQAldap ldclt(1)
  3. NAME
  4. ldclt - ldap client for stress and reliability testing.
  5. SYNOPSIS
  6. ldclt [-qQvV] [-e <execParams>] [-t <timeout>]
  7. [-b <base DN>] [-h <host>] [-p <port>]
  8. [-D <bind DN>] [-w <passwd>]
  9. [-n <nb threads>] [-i <nb times>] [-N <nb samples>]
  10. [-r <low> -R <high>]
  11. [-a <max pending>] [-E <max errors>]
  12. [-I <ignored error>] [-T <total>]
  13. [-f <filter>] [-s <scope>]
  14. [-S <slave>] [-P<master port>]
  15. [-W <waitsec>] [-Z <certfile>]
  16. AVAILABILITY
  17. SUNQAldap
  18. DESCRIPTION
  19. ldclt is a multi-threaded test tool targeted to stress a
  20. ldap server with multiple simultaneous requests.
  21. The tool automatically set its ulimit parameters to fit
  22. with the options.
  23. The tool uses a minimum of 16Mo of memory, and maybe more
  24. depending on the operations requested.
  25. A summary of global statistics regarding the operations
  26. performed, and the errors that occurs, is printed at the
  27. exit of the tool, as well as every 90 loops (15 minutes).
  28. http://www-icnc.france/~jls/icnc_qa_lab_faq_05.html#ldclt
  29. Mailing list : [email protected]
  30. Referrals
  31. By default, ldclt will let the ldap library try to follow
  32. referrals as anonymous. The option "-e referral=value"
  33. allows to change this behaviour :
  34. on : (default) follow as anonymous.
  35. off : do not follow.
  36. rebind : try to rebind with the same binDN and passwd.
  37. Search operation
  38. The option -e attrsonly=value is used to request or not
  39. the attributes values. It is recommanded to use ldclt
  40. with the the default value (== 0) of this option.
  41. Extract from the C-SDK documentation :
  42. 0 : both attribute types and attribute values are
  43. returned.
  44. 1 : only attribute types are returned.
  45. The options -e attrlist=name:name:name and similar option
  46. -e randomattrlist=name:name:name allows to specify which
  47. attributes are retrieved from the server.
  48. Error decoding
  49. The tool try to decode the error as much as possible, but
  50. sometimes not enough information is send back to the
  51. client. This happen if chaining the backend feature of
  52. DS 5.0 or more is used, when one of the farm servers is
  53. stopped. The error returned is "Operations error" without
  54. any more information in synchronous mode (except for the
  55. search).
  56. This is a problem resides in the libldap implementation
  57. of Solaris.
  58. Implementation note : This improvement is to retrieve the
  59. additional error string that is returned by the server.
  60. This is implemented for the asynchronous operations and
  61. for the synchronous search only, because for the other
  62. synchronous ops we should use ldap_get_lderrno() that is
  63. not implement in Solaris's libldap.
  64. Missing nodes
  65. The tool automatically create the missing nodes. These
  66. nodes are created using the DN and passwd given in argu-
  67. ments to ldclt, and thus it may be possible that the tool
  68. cannot initiate an empty database if it is not cn=admin,
  69. because only cn=admin may create the root entry.
  70. Note that when it occurs, the tool doesn't retry to
  71. create the original entry IF running *asynchronously*.
  72. Special consideration about rename entries : from the
  73. c-sdk function description, if the parent node of the new
  74. dn doesn't exist, the error returned LDAP_PROTOCOL_ERROR
  75. may report as well three other problems :
  76. - BER problem, unlike to happen
  77. - newrdn is invalid, also unlike to happen
  78. - ldclt is not running ldap v3 - ok, we could leave with
  79. this issue.
  80. - the newparent is invalid. I thing that we could take
  81. this for "doesn't exist"...
  82. The current version of this tool recognize the following
  83. naming attributes:
  84. cn organizationalRole
  85. o organization
  86. ou organizationalUnit
  87. Close(fd) vs ldap_unbind(ld)
  88. The option "-e bindeach" made the tool to release the
  89. connection to the server after each operation being
  90. processed. This is intended to simulate many clients
  91. doing quick operations.
  92. Without any other option, the connection is properly
  93. released with a ldap_unbind(ld), but if the additional
  94. option "-e close" is used, the socket with the server is
  95. close() simulating a suddent exit of the client process.
  96. Random
  97. This feature is activated by the option "-e random". When
  98. used with filters, the tool will seek the given filters
  99. for the first sequence of 'X' and will take this as the
  100. place where the random numbers should be put. The span of
  101. the random numbers generated is given by the options -r
  102. and -R.
  103. For example, if the tool is called with the options:
  104. -f [email protected] -e random -r0 \
  105. -R 9000000
  106. the following filters will be generated:
  107. [email protected]
  108. [email protected]
  109. [email protected]
  110. [email protected]
  111. [email protected]
  112. [email protected]
  113. etc...
  114. The same feature may be applied to the base DN, and is
  115. activated by the options "-e randombase",
  116. "-e randombaselow=value" and "-e randombasehigh=value".
  117. The same feature may be applied to the bind DN, and is
  118. activated by the options "-e randombinddn",
  119. "-e randombinddnlow=value", "-e randombinddnhigh=value".
  120. Incremental
  121. This feature is activated by the option "-e incr", and is
  122. similar to the "Random" feature described above. It will
  123. replace the 'X' partern by incremental numbers starting
  124. by the value of "-r" and ending with "-R". When the top
  125. value is reached, return back to the lower value.
  126. The option "-e noloop" will prevent ldclt from looping
  127. the numbers: when the -R value is reached, the thread
  128. dies.
  129. The option "-e commoncounter" will made all the threads
  130. use the same counter rather than each thread having its
  131. own private counter. This may be used for example to have
  132. many threads adding entries without "collisions".
  133. String
  134. This feature is activated by the option "-e string", and
  135. will make this tool generates random strings for the 'X'
  136. partern rather than random numbers.
  137. This option is only valid with the mode "-e random", and
  138. will be applied as well to the base DN if "-e randombase"
  139. is set, and to the bind DN and bind password if the
  140. option "-e randombinddn" is set.
  141. The option "-e ascii" will produce characters less than
  142. 0x7f, otherwise UTF-8 will be produced.
  143. Signals
  144. The signal SIGINT (^C or kill -2) is trapped to perform a
  145. smooth exit of the tool, with statistics report.
  146. The signal SIGQUIT (^\ or kill -3) is trapped to issue
  147. the current statistics numbers, but without exiting the
  148. tool.
  149. Entry generator
  150. If you do not want to use the hard-coded object classes
  151. person/emailPerson/inetOrgPerson (see below), you may use
  152. the option "-e object=filename" to give ldclt a template
  153. to build the entries.
  154. The same syntax may be used for the option "-e rdn=value"
  155. including variables. The RDN is build first and you may
  156. retrieve the variables you defined in it for the object.
  157. You could use the option -e commoncounter with the entry
  158. generator. When used, all the variants INCRNNOLOOP or
  159. INCRN will share the same counter (if you are using three
  160. times one of these variants, three different counters
  161. will be used).
  162. The option -e commoncounter is also compatible with the
  163. variants INCRFROMFILE and INCRFROMFILENOLOOP.
  164. File grammar :
  165. # Comment start with a '#'
  166. #
  167. LINE = ATTRIBUTE_NAME: FIELD+
  168. ATTRIBUTE_NAME = constant_string
  169. FIELD = constant_string | VARIANT
  170. VARIANT = [VAR=VDEF] | [VAR] | [VDEF]
  171. VAR = letter A to H
  172. VDEF = see below
  173. The keywords and associated args are listed below. Note
  174. that the separator is ';' and not ','.
  175. INCRFROMFILE(file_name)
  176. Will select each entry of file_name in sequence.
  177. After the last entry, will reset the index for
  178. to process again the first entry.
  179. INCRFROMFILENOLOOP(file_name)
  180. Will select each entry of file_name in sequence.
  181. After the last entry, the thread will exit.
  182. INCRN(low;hign;nb)
  183. Increment a counter that will go from low to
  184. high, and will loop to restart with low. This
  185. counter is VARIANT-specific.
  186. Similar to "-e incr".
  187. INCRNNOLOOP(low;high;nb)
  188. Same as INCRN, except that the thread will exit
  189. when reaching the value high (after processing
  190. of this value).
  191. Similar to "-e incr,noloop".
  192. RNDFROMFILE(file_name)
  193. Select a random string from the file. One entry
  194. per line is expected.
  195. RNDN(low;high;length)
  196. Build a random number of length digits, value
  197. selected from low to high.
  198. RNDS(lenght)
  199. Build a random string.
  200. Here is an example of template file :
  201. # Example.
  202. #
  203. objectclass: person
  204. sn: mr [RNDS(12)] final
  205. description: blob [RNDN(1,5,6)] blib
  206. Resulting entries :
  207. dn: cn=mr00000,ou=object,o=test.com
  208. cn: mr00000
  209. objectclass: person
  210. sn: mr 2[kK-:9)_(qv final
  211. description: blob 000005 blib
  212. dn: cn=mr00001,ou=object,o=test.com
  213. cn: mr00001
  214. objectclass: person
  215. sn: mr Jwf01XrZs.mt final
  216. description: blob 000002 blib
  217. Person
  218. Activated by "-e person" and valid only for the "-e add"
  219. feature, the new entries are of the objectclass=person
  220. as described here:
  221. EmailPerson
  222. Activated by "-e emailPerson" and valid only for the "-e
  223. add" feature, the new entries are of the objectclass=
  224. emailPerson as described here. These entries contain a
  225. jpegPhoto attribute, and thus are very big entries. The
  226. jpeg image itself is randomly (in fact: sequencially)
  227. selected from /opt/SUNQA/ldap/lib/images/*.jpg or in the
  228. directory specified by -e imagesdir=path.
  229. InetOrgPerson
  230. Activated by "-e inetOrgPerson", it is the Netscape
  231. version of emailPerson.
  232. Scalab01 scenario
  233. This scenario is activated by the "-e scalab01" and is
  234. a special evolution of ldclt for the purpose of the
  235. system tests "scalab01". This scenario simulates a modem
  236. pool that uses LDAP to store information about users, as
  237. well as to autheticate them by binding.
  238. The associated options are :
  239. -e scalab01
  240. Activate this scenario.
  241. -e scalab01_cnxduration
  242. Specifies the maximum cnx duration in seconds.
  243. Default value is 3600 seconds.
  244. -e scalab01_maxcnxnb
  245. Modem pool size. Default size if 5000.
  246. -e scalab01_wait
  247. Sleep() in seconds while to attempts to connect.
  248. Default value is 10 seconds.
  249. OPTIONS
  250. The valid options are:
  251. -a <number>
  252. Asynchronous mode. When used, the tool will issue
  253. asynchronous requests, with a maximum number of
  254. pending requests (aka results non-read). There is
  255. a threshold at "max pending / 2" giving the
  256. minimum number of pending operations needed to
  257. read the answers from the server.
  258. Each thread will process with the same algorythm,
  259. each having the same thresholds.
  260. -b <DN> Specify the base DN to use. Default "o=sun,c=us".
  261. -D <DN> Bind DN. See -w for the password. You could use
  262. the option "-e randombinddn" to randomize the
  263. bind DN. Read below in -e options for the
  264. details.
  265. -e <parm1,parm2,etc...>
  266. Execution parameters. This option is used to
  267. select the kind of tests that should be run. It
  268. is possible to specify more than one value (see
  269. example below). The valid values are:
  270. add
  271. Add entries.
  272. append
  273. Append new entries to genldif file.
  274. See also -e genldif.
  275. ascii
  276. Ascii 7-bits strings.
  277. attreplace=name:mask
  278. Will replace the attribute "name" with a
  279. random string value build using the mask
  280. i.e. :
  281. attreplace=sn:"mr XXXX Jr"
  282. Note : You DO NOT need to use -e random
  283. nor -e string with this option.
  284. attrlist=name:name:name
  285. Specify the list of attributes to
  286. retrieve.
  287. See also -e randomattrlist.
  288. attrsonly=0|1
  289. This ldap_search() parameter means : 0
  290. specifies that both attribute types and
  291. attribute values are returned and 1
  292. specifies that only attribute types are
  293. returned.
  294. Default value : 0
  295. bindeach
  296. Bind for each operation.
  297. bindonly
  298. ldclt will only perform ldap_bind() and
  299. ldap_unbind() or close() depending on
  300. the options.
  301. See also -e close.
  302. close
  303. Will disconnect from the server by a
  304. close() on the fd, rather than by a
  305. ldap_unbind().
  306. cltcertname=certificate_name
  307. Use certificate_name for SSL client
  308. authentication. The certificate database
  309. is specified with the -Z option.
  310. SSL client authentication requires the
  311. option -Z and cltcertname, keydbfile,
  312. keydbpin execution parameters to be
  313. specified.
  314. commoncounter
  315. Valid only with -e incr or -e object.
  316. All the threads will use the same
  317. counter, i.e. T000 will process entry n,
  318. T001 entry n+1, etc...
  319. When used with an object (-e object) or
  320. within a rdn (-e rdn), a common counter
  321. will be used for each variant field
  322. INCRN or INCRNNOLOOP. Each field will
  323. have its own common counter.
  324. counteach
  325. To count each operation, and not only
  326. the ones that succeed. Without this
  327. option, an add request with result
  328. 68==LDAP_ALREADY_EXISTS is not counted,
  329. that may mislead the statistics about
  330. the thread's activity.
  331. The changes are that we will count as a
  332. valid request :
  333. - add ==> LDAP_ALREADY_EXISTS
  334. - delete ==> LDAP_NO_SUCH_OBJECT
  335. - rename ==> LDAP_ALREADY_EXISTS
  336. LDAP_NO_SUCH_OBJECT
  337. LDAP_PROTOCOL_ERROR
  338. - search ==> LDAP_NO_SUCH_OBJECT
  339. delete
  340. ldap_delete() entries.
  341. dontsleeponserverdown
  342. By default, ldclt sleep 1 second when
  343. occurs an error like 81 or 91 (i.e.
  344. server down). This should avoid ldclt
  345. looping when server is down, otherwise it
  346. may take 100% of all 10 CPUs of a E6000.
  347. Basically, the client machine is down if
  348. this happen.
  349. emailPerson
  350. The new entries objectclass is
  351. emailPerson. See details above in
  352. DESCRIPTION.
  353. esearch
  354. Exact search. No wildcards expected in
  355. the filter.
  356. genldif=filename
  357. Create a ldif file using ldclt entry
  358. generator.
  359. See also -e append.
  360. imagesdir=<path>
  361. The images are taken from the given path
  362. rather than from the default directory :
  363. /opt/SUNQA/ldap/lib/images
  364. incr
  365. Incremental values, from -r to -R values
  366. When -R is reached, go back to -r.
  367. See also -e commoncounter.
  368. inetOrgPerson
  369. The new entries objectclass is
  370. inetOrgPerson. See details above in
  371. DESCRIPTION.
  372. keydbfile=key_DB_filename
  373. The file name of the key database.
  374. SSL client authentication requires the
  375. option -Z and cltcertname, keydbfile,
  376. keydbpin execution parameters to be
  377. specified.
  378. keydbpin=key_DB_password
  379. Password required for accessing the key
  380. database specified in keydbfile
  381. execution parameter.
  382. SSL client authentication requires the
  383. option -Z and cltcertname, keydbfile,
  384. keydbpin execution parameters to be
  385. specified.
  386. noglobalstats
  387. Don't print the periodical global stats
  388. (by default : every 90 loops).
  389. noloop
  390. Does not loop the numbers. Cf the option
  391. "-e incr".
  392. object=filename
  393. Entries will be created using template
  394. from the given file. See details above
  395. in DESCRIPTION.
  396. See "-e rdn=attrname:value".
  397. person
  398. The new entries objectclass is person.
  399. See details in DESCRIPTION.
  400. random
  401. Random filters, etc... generation. See
  402. details above in this tool description.
  403. randomattrlist=name:name:name
  404. Specify the list of attributes from
  405. which ldclt will randomly select one to
  406. be retrieved.
  407. See also -e attrlist.
  408. randombase
  409. Random base DN generation.
  410. randombaselow=<number>
  411. Low value range for random base DN.
  412. randombasehigh=<number>
  413. High value range for random base DN.
  414. randombinddn
  415. Random bind DN and bind password
  416. generation. When used, this option will
  417. produce a random value that will be used
  418. to randomize the bind DN and password
  419. with the same random value. e.g. cn=m123
  420. and passwd123 will be generated.
  421. If you want to have fix password (the
  422. same password) for each bind DN, just no
  423. 'X' in the password.
  424. randombinddnfromfile=filename
  425. A bind DN and its corresponding password
  426. will be randomly selected from the given
  427. file. Each line must contain the bind DN
  428. and password, separated by one or more
  429. tabs. Leading & trailing spaces are not
  430. ignored.
  431. Exclusive with -e randombinddn and with
  432. -D / -w.
  433. randombinddnlow=<number>
  434. Low value range for random bind DN.
  435. randombinddnhigh=<number>
  436. High value range for random bind DN.
  437. rdn=attrname:value
  438. Similar to the option "-f filterspec",
  439. this feature allow to use the full power
  440. of the entry generator (see DESCRIPTION)
  441. to build the rdn of the entry that will
  442. be processed.
  443. Requires "-e object=".
  444. Exclusive with -f.
  445. referral=value
  446. Change referral behaviour. See details
  447. above in the DESCRIPTION section.
  448. rename
  449. Rename entries (aka modrdn). See also
  450. -e withnewparent.
  451. scalab01
  452. Activates the scalab01 scenario. Please
  453. read the corresponding section above for
  454. the other associated options and
  455. behaviour.
  456. string
  457. Will generate random strings rather than
  458. numbers. See details above in the string
  459. sub-section.
  460. v2
  461. Ldap v2 mode.
  462. withnewparent
  463. The ldap_rename() will be called with a
  464. newparent argument. By default, only the
  465. new rdn is specified. This option is
  466. valid only with -e rename.
  467. -E <number>
  468. Specify the maximum number of times one error
  469. may occur. It is usefull to detect a big problem
  470. on the server side, and to exit the tool. The
  471. default value is 1000.
  472. -f <filter>
  473. Filter for searches. The syntax is the same as
  474. specified in ldap's RFCs.
  475. See option "-e rdn=attrname:value".
  476. -h <hostname>
  477. Host to connect. Default "localhost".
  478. -i <number of 10 seconds>
  479. Number of times inactivity allowed. The tool
  480. ensure that no thread is starving, i.e. expect
  481. that all the threads should perform at least one
  482. operation every 10 seconds. This parameter gives
  483. the number of times a thread may be starving
  484. before releasing an alert message. The default
  485. value is 3 (30 seconds).
  486. -I <error number>
  487. The tool will ignore the errors the same number
  488. as the ones specified with -I. These errors may
  489. be for example:
  490. 32 : No such object - when -e random,delete
  491. 68 : Already exists - when -e random,add
  492. When used, this option will configure ldclt to
  493. ignore/support these errors during the ldap_bind
  494. to the server. Otherwise, any error that happen
  495. during the connection is a fatal error for the
  496. thread where it occurs.
  497. Note that although ldclt support a certain level
  498. of errors during connection, any error that
  499. happen while creating missing nodes is a fatal
  500. error.
  501. -n <number>
  502. Number of threads. Each thread is a ldap client
  503. for the ldap server under test. The maximum
  504. number of threads is system-dependand, and is of
  505. 1000 threads. The default number is 10 threads.
  506. -N <number>
  507. Number of samples (10 seconds each). It is the
  508. time the tool should run. A value of 360 means
  509. 360 samples of 10 seconds, i.e. 3600 seconds of
  510. testing (one hour). Default infinite.
  511. -p <port number>
  512. Server port. Default port 389.
  513. -P <master port number>
  514. This is the port used to communicate with the
  515. slaves in order to check the replication.
  516. -q Quiet mode. When used, the errors of the option
  517. -I are not printed. The messages "Intermediate
  518. nodes created for xxx" are not printed either.
  519. -Q Super quiet mode. In addition to -q, the
  520. following messages are not printed:
  521. Max pending request hit.
  522. No activity for %d seconds.
  523. Restart sending.
  524. -r <number>
  525. Range's low value.
  526. -R <number>
  527. Range's high value.
  528. -s <scope>
  529. Valid only for searches. May be base, subtree
  530. or one. The default value is subtree.
  531. -S <slave>
  532. The slave host given in argument will be under
  533. monitoring to ensure that the operations
  534. performed on the server are well realized on
  535. the given slave. This option may be used more
  536. than one time to indicate more than one slave.
  537. -t <seconds>
  538. LDAP operations timeout. Default 30 seconds.
  539. -T <total>
  540. Total number of operations requested per thread
  541. before exit. When used, this parameter will
  542. cause each thread to exit when this number of
  543. operations is reached.
  544. -v Verbose.
  545. -V Very verbose.
  546. -w <password>
  547. Bind passwd. See option -D.
  548. -W <wait seconds>
  549. Wait between two operations. Default=0 seconds.
  550. -Z <certfile>
  551. Establish secure communication with the server
  552. over SSL using certfile as the certificate
  553. database.
  554. EXIT STATUS
  555. ldclt exit status may be :
  556. 0 : no problem during execution.
  557. 1 : please report this to me - shouldn't happen !!
  558. 2 : error in parameters.
  559. 3 : max errors reached.
  560. 4 : cannot bind.
  561. 5 : cannot load libssl.
  562. 6 : mutex error.
  563. 7 : initialization problem.
  564. 8 : ressource limitation (malloc, etc...).
  565. 99 : other kind of error - please report to me.
  566. EXAMPLES
  567. jls@chronos$ ldclt -v \
  568. -h aegir -e esearch,random \
  569. -r0 -R900000 \
  570. -bo=Sympatico,c=CA \
  571. [email protected] \
  572. -ebindeach -n230 -i6
  573. Host to connect = aegir
  574. Port number = 389
  575. Bind DN = NULL
  576. Passwd = NULL
  577. Base DN = o=Sympatico,c=CA
  578. Filter = [email protected]
  579. Max times inactive = 6
  580. Number of samples = 20
  581. Number of threads = 5
  582. Running mode = 0x0000001d
  583. Sampling interval = 10 sec
  584. Random range = [0 , 900000]
  585. Filter's head = mail=a0000
  586. Filter's tail = @sympatico.ca
  587. Average rate: 9.98/thr (229.50/sec), total: 2295
  588. Average rate: 10.13/thr (233.00/sec), total: 2330
  589. Average rate: 10.05/thr (231.10/sec), total: 2311
  590. Average rate: 10.17/thr (233.80/sec), total: 2338
  591. Average rate: 9.99/thr (229.80/sec), total: 2298
  592. ^CCatch SIGINT - exit...
  593. jls@chronos$
  594. NOTES
  595. This tool doesn't retry to create the original entry when
  596. the creation of the missing nodes is activated. This is a
  597. known missing feature of the asynchronous mode.
  598. Please read the file "History" delivered with this tool
  599. for more information about new features, todo list, etc.
  600. IMPORTANT NOTE : you may specify a filter that return lot
  601. of entries (e.g. : -f "cn=*") but you should then know
  602. that such filters leads to retrieve a lot of data from
  603. the server. These data are malloc() and free() by ldclt
  604. and the ldap C library, but as you may have many threads
  605. running at the same time in ldclt, you will have many
  606. times these data allocated, leading to a *very) big ldclt
  607. process, even more than 1Gb. It is not a memory leak but
  608. rather allocation of lot of data. If you want the server
  609. to retrieve a lot of data from its database and however
  610. limit the ressources required by ldclt, use the option
  611. "-e attrsonly=1".
  612. AUTHORS
  613. Jean-Luc Schwing
  614. Fabio Pistolesi : replication check.
  615. Bertold Kolics : SSL.