← Index
NYTProf Performance Profile   « block view • line view • sub view »
For /usr/share/koha/opac/cgi-bin/opac/opac-search.pl
  Run on Tue Oct 15 11:58:52 2013
Reported on Tue Oct 15 12:01:07 2013

Filename/usr/share/perl5/Net/LDAP/ASN.pm
StatementsExecuted 17 statements in 646µs
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
22237µs61µsNet::LDAP::ASN::::importNet::LDAP::ASN::import
11125µs51µsNet::LDAP::ASN::::BEGIN@6Net::LDAP::ASN::BEGIN@6
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1
2package Net::LDAP::ASN;
3
41800ns$VERSION = "0.08";
5
63584µs277µs
# spent 51µs (25+26) within Net::LDAP::ASN::BEGIN@6 which was called: # once (25µs+26µs) by Net::LDAP::Message::BEGIN@8 at line 6
use Convert::ASN1;
# spent 51µs making 1 call to Net::LDAP::ASN::BEGIN@6 # spent 26µs making 1 call to Exporter::import
7
816µs152µsmy $asn = Convert::ASN1->new;
# spent 52µs making 1 call to Convert::ASN1::new
9
10
# spent 61µs (37+24) within Net::LDAP::ASN::import which was called 2 times, avg 30µs/call: # once (23µs+13µs) by Net::LDAP::Message::BEGIN@8 at line 8 of Net/LDAP/Message.pm # once (14µs+12µs) by Net::LDAP::BEGIN@14 at line 14 of Net/LDAP.pm
sub import {
111036µs my $pkg = shift;
12 my $caller = caller;
13
14 foreach my $macro (@_) {
15224µs my $obj = $asn->find($macro)
# spent 24µs making 2 calls to Convert::ASN1::find, avg 12µs/call
16 or require Carp and Carp::croak("Unknown macro '$macro'");
17
18 *{"$caller\::$macro"} = \$obj;
19 }
20}
21
2214µs1103ms$asn->prepare(<<LDAP_ASN) or die $asn->error;
# spent 103ms making 1 call to Convert::ASN1::prepare
23
24 -- We have split LDAPMessage into LDAPResponse and LDAPRequest
25 -- The purpose of this is two fold
26 -- 1) for encode we don't want the protocolOp
27 -- in the hierarchy as it is not really needed
28 -- 2) For decode we do want it, this allows Net::LDAP::Message::decode
29 -- to be much simpler. Decode will also be faster due to
30 -- less elements in the CHOICE
31
32 LDAPRequest ::= SEQUENCE {
33 messageID MessageID,
34 --protocolOp
35 CHOICE {
36 bindRequest BindRequest,
37 unbindRequest UnbindRequest,
38 searchRequest SearchRequest,
39 modifyRequest ModifyRequest,
40 addRequest AddRequest,
41 delRequest DelRequest,
42 modDNRequest ModifyDNRequest,
43 compareRequest CompareRequest,
44 abandonRequest AbandonRequest,
45 extendedReq ExtendedRequest}
46 controls [0] Controls OPTIONAL }
47
48 LDAPResponse ::= SEQUENCE {
49 messageID MessageID,
50 protocolOp CHOICE {
51 bindResponse BindResponse,
52 searchResEntry SearchResultEntry,
53 searchResDone SearchResultDone,
54 searchResRef SearchResultReference,
55 modifyResponse ModifyResponse,
56 addResponse AddResponse,
57 delResponse DelResponse,
58 modDNResponse ModifyDNResponse,
59 compareResponse CompareResponse,
60 extendedResp ExtendedResponse,
61 intermediateResponse IntermediateResponse }
62 controls [0] Controls OPTIONAL }
63
64 MessageID ::= INTEGER -- (0 .. maxInt)
65
66 -- maxInt INTEGER ::= 2147483647 -- (2^^31 - 1) --
67
68 LDAPString ::= OCTET STRING -- UTF8String ??
69
70 LDAPOID ::= OCTET STRING
71
72 LDAPDN ::= LDAPString
73
74 RelativeLDAPDN ::= LDAPString
75
76 AttributeType ::= LDAPString
77
78 AttributeDescription ::= LDAPString
79
80 AttributeDescriptionList ::= SEQUENCE OF
81 AttributeDescription
82
83 AttributeValue ::= OCTET STRING
84
85 AttributeValueAssertion ::= SEQUENCE {
86 attributeDesc AttributeDescription,
87 assertionValue AssertionValue }
88
89 AssertionValue ::= OCTET STRING
90
91 Attribute ::= SEQUENCE {
92 type AttributeDescription,
93 vals SET OF AttributeValue }
94
95 MatchingRuleId ::= LDAPString
96
97 LDAPResult ::= SEQUENCE {
98 resultCode ENUMERATED {
99 success (0),
100 operationsError (1),
101 protocolError (2),
102 timeLimitExceeded (3),
103 sizeLimitExceeded (4),
104 compareFalse (5),
105 compareTrue (6),
106 authMethodNotSupported (7),
107 strongAuthRequired (8),
108 -- 9 reserved --
109 referral (10), -- new
110 adminLimitExceeded (11), -- new
111 unavailableCriticalExtension (12), -- new
112 confidentialityRequired (13), -- new
113 saslBindInProgress (14), -- new
114 noSuchAttribute (16),
115 undefinedAttributeType (17),
116 inappropriateMatching (18),
117 constraintViolation (19),
118 attributeOrValueExists (20),
119 invalidAttributeSyntax (21),
120 -- 22-31 unused --
121 noSuchObject (32),
122 aliasProblem (33),
123 invalidDNSyntax (34),
124 -- 35 reserved for undefined isLeaf --
125 aliasDereferencingProblem (36),
126 -- 37-47 unused --
127 inappropriateAuthentication (48),
128 invalidCredentials (49),
129 insufficientAccessRights (50),
130 busy (51),
131 unavailable (52),
132 unwillingToPerform (53),
133 loopDetect (54),
134 -- 55-63 unused --
135 namingViolation (64),
136 objectClassViolation (65),
137 notAllowedOnNonLeaf (66),
138 notAllowedOnRDN (67),
139 entryAlreadyExists (68),
140 objectClassModsProhibited (69),
141 -- 70 reserved for CLDAP --
142 affectsMultipleDSAs (71), -- new
143 -- 72-79 unused --
144 other (80)}
145 -- 81-90 reserved for APIs --
146 matchedDN LDAPDN,
147 errorMessage LDAPString,
148 referral [3] Referral OPTIONAL }
149
150 Referral ::= SEQUENCE OF LDAPURL
151
152 LDAPURL ::= LDAPString -- limited to characters permitted in URLs
153
154 Controls ::= SEQUENCE OF Control
155
156 -- Names changed here for backwards compat with previous
157 -- Net::LDAP --GMB
158 Control ::= SEQUENCE {
159 type LDAPOID, -- controlType
160 critical BOOLEAN OPTIONAL, -- DEFAULT FALSE, -- criticality
161 value OCTET STRING OPTIONAL } -- controlValue
162
163 BindRequest ::= [APPLICATION 0] SEQUENCE {
164 version INTEGER, -- (1 .. 127),
165 name LDAPDN,
166 authentication AuthenticationChoice }
167
168 AuthenticationChoice ::= CHOICE {
169 simple [0] OCTET STRING,
170 -- 1 and 2 reserved
171 sasl [3] SaslCredentials }
172
173 SaslCredentials ::= SEQUENCE {
174 mechanism LDAPString,
175 credentials OCTET STRING OPTIONAL }
176
177 BindResponse ::= [APPLICATION 1] SEQUENCE {
178 COMPONENTS OF LDAPResult,
179 serverSaslCreds [7] OCTET STRING OPTIONAL }
180
181 UnbindRequest ::= [APPLICATION 2] NULL
182
183 SearchRequest ::= [APPLICATION 3] SEQUENCE {
184 baseObject LDAPDN,
185 scope ENUMERATED {
186 baseObject (0),
187 singleLevel (1),
188 wholeSubtree (2) }
189 derefAliases ENUMERATED {
190 neverDerefAliases (0),
191 derefInSearching (1),
192 derefFindingBaseObj (2),
193 derefAlways (3) }
194 sizeLimit INTEGER , -- (0 .. maxInt),
195 timeLimit INTEGER , -- (0 .. maxInt),
196 typesOnly BOOLEAN,
197 filter Filter,
198 attributes AttributeDescriptionList }
199
200 Filter ::= CHOICE {
201 and [0] SET OF Filter,
202 or [1] SET OF Filter,
203 not [2] Filter,
204 equalityMatch [3] AttributeValueAssertion,
205 substrings [4] SubstringFilter,
206 greaterOrEqual [5] AttributeValueAssertion,
207 lessOrEqual [6] AttributeValueAssertion,
208 present [7] AttributeDescription,
209 approxMatch [8] AttributeValueAssertion,
210 extensibleMatch [9] MatchingRuleAssertion }
211
212 SubstringFilter ::= SEQUENCE {
213 type AttributeDescription,
214 -- at least one must be present
215 substrings SEQUENCE OF CHOICE {
216 initial [0] LDAPString,
217 any [1] LDAPString,
218 final [2] LDAPString } }
219
220 MatchingRuleAssertion ::= SEQUENCE {
221 matchingRule [1] MatchingRuleId OPTIONAL,
222 type [2] AttributeDescription OPTIONAL,
223 matchValue [3] AssertionValue,
224 dnAttributes [4] BOOLEAN OPTIONAL } -- DEFAULT FALSE }
225
226 SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
227 objectName LDAPDN,
228 attributes PartialAttributeList }
229
230 PartialAttributeList ::= SEQUENCE OF SEQUENCE {
231 type AttributeDescription,
232 vals SET OF AttributeValue }
233
234 SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL
235
236 SearchResultDone ::= [APPLICATION 5] LDAPResult
237
238 ModifyRequest ::= [APPLICATION 6] SEQUENCE {
239 object LDAPDN,
240 modification SEQUENCE OF SEQUENCE {
241 operation ENUMERATED {
242 add (0),
243 delete (1),
244 replace (2),
245 increment (3) } -- increment from RFC 4525
246 modification AttributeTypeAndValues } }
247
248 AttributeTypeAndValues ::= SEQUENCE {
249 type AttributeDescription,
250 vals SET OF AttributeValue }
251
252 ModifyResponse ::= [APPLICATION 7] LDAPResult
253
254 AddRequest ::= [APPLICATION 8] SEQUENCE {
255 objectName LDAPDN,
256 attributes AttributeList }
257
258 AttributeList ::= SEQUENCE OF SEQUENCE {
259 type AttributeDescription,
260 vals SET OF AttributeValue }
261
262 AddResponse ::= [APPLICATION 9] LDAPResult
263
264 DelRequest ::= [APPLICATION 10] LDAPDN
265
266 DelResponse ::= [APPLICATION 11] LDAPResult
267
268 ModifyDNRequest ::= [APPLICATION 12] SEQUENCE {
269 entry LDAPDN,
270 newrdn RelativeLDAPDN,
271 deleteoldrdn BOOLEAN,
272 newSuperior [0] LDAPDN OPTIONAL }
273
274 ModifyDNResponse ::= [APPLICATION 13] LDAPResult
275
276 CompareRequest ::= [APPLICATION 14] SEQUENCE {
277 entry LDAPDN,
278 ava AttributeValueAssertion }
279
280 CompareResponse ::= [APPLICATION 15] LDAPResult
281
282 AbandonRequest ::= [APPLICATION 16] MessageID
283
284 ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
285 requestName [0] LDAPOID,
286 requestValue [1] OCTET STRING OPTIONAL }
287
288 ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
289 COMPONENTS OF LDAPResult,
290 responseName [10] LDAPOID OPTIONAL,
291 response [11] OCTET STRING OPTIONAL }
292
293 IntermediateResponse ::= [APPLICATION 25] SEQUENCE {
294 responseName [0] LDAPOID OPTIONAL,
295 responseValue [1] OCTET STRING OPTIONAL }
296
297
298 -- Virtual List View Control
299 VirtualListViewRequest ::= SEQUENCE {
300 beforeCount INTEGER , --(0 .. maxInt),
301 afterCount INTEGER , --(0 .. maxInt),
302 CHOICE {
303 byoffset [0] SEQUENCE {
304 offset INTEGER , --(0 .. maxInt),
305 contentCount INTEGER } --(0 .. maxInt) }
306 byValue [1] AssertionValue }
307 -- byValue [1] greaterThanOrEqual assertionValue }
308 contextID OCTET STRING OPTIONAL }
309
310 VirtualListViewResponse ::= SEQUENCE {
311 targetPosition INTEGER , --(0 .. maxInt),
312 contentCount INTEGER , --(0 .. maxInt),
313 virtualListViewResult ENUMERATED {
314 success (0),
315 operatonsError (1),
316 unwillingToPerform (53),
317 insufficientAccessRights (50),
318 busy (51),
319 timeLimitExceeded (3),
320 adminLimitExceeded (11),
321 sortControlMissing (60),
322 indexRangeError (61),
323 other (80) }
324 contextID OCTET STRING OPTIONAL }
325
326
327 LDAPEntry ::= COMPONENTS OF AddRequest
328
329 -- RFC-2891 Server Side Sorting Control
330 -- Current parser does not allow a named entity following the ::=
331 -- so we use a COMPONENTS OF hack
332 SortRequestDummy ::= SEQUENCE {
333 order SEQUENCE OF SEQUENCE {
334 type OCTET STRING,
335 orderingRule [0] OCTET STRING OPTIONAL,
336 reverseOrder [1] BOOLEAN OPTIONAL } }
337
338 SortRequest ::= COMPONENTS OF SortRequestDummy
339
340 SortResult ::= SEQUENCE {
341 sortResult ENUMERATED {
342 success (0), -- results are sorted
343 operationsError (1), -- server internal failure
344 timeLimitExceeded (3), -- timelimit reached before
345 -- sorting was completed
346 strongAuthRequired (8), -- refused to return sorted
347 -- results via insecure
348 -- protocol
349 adminLimitExceeded (11), -- too many matching entries
350 -- for the server to sort
351 noSuchAttribute (16), -- unrecognized attribute
352 -- type in sort key
353 inappropriateMatching (18), -- unrecognized or inappro-
354 -- priate matching rule in
355 -- sort key
356 insufficientAccessRights (50), -- refused to return sorted
357 -- results to this client
358 busy (51), -- too busy to process
359 unwillingToPerform (53), -- unable to sort
360 other (80) }
361 attributeType [0] AttributeDescription OPTIONAL }
362
363 -- RFC-2696 Paged Results Control
364 realSearchControlValue ::= SEQUENCE {
365 size INTEGER, -- (0..maxInt),
366 -- requested page size from client
367 -- result set size estimate from server
368 cookie OCTET STRING }
369
370 -- draft-behera-ldap-password-policy-09
371 ppControlResponse ::= SEQUENCE {
372 warning [0] PPWarning OPTIONAL,
373 error [1] PPError OPTIONAL
374 }
375 PPWarning ::= CHOICE {
376 timeBeforeExpiration [0] INTEGER, -- (0..maxInt),
377 graceAuthNsRemaining [1] INTEGER -- (0..maxInt)
378 }
379 PPError ::= ENUMERATED {
380 passwordExpired (0),
381 accountLocked (1),
382 changeAfterReset (2),
383 passwordModNotAllowed (3),
384 mustSupplyOldPassword (4),
385 insufficientPasswordQuality (5),
386 passwordTooShort (6),
387 passwordTooYoung (7),
388 passwordInHistory (8)
389 }
390
391 -- RFC-4370 Proxied Authorization Control
392 proxyAuthValue ::= SEQUENCE {
393 proxyDN LDAPDN
394 }
395
396 -- RFC-3296 ManageDsaIT Control
397 ManageDsaIT ::= SEQUENCE {
398 dummy INTEGER OPTIONAL -- it really is unused
399 }
400
401 -- Persistent Search Control
402 PersistentSearch ::= SEQUENCE {
403 changeTypes INTEGER,
404 changesOnly BOOLEAN,
405 returnECs BOOLEAN
406 }
407
408 -- Entry Change Notification Control
409 EntryChangeNotification ::= SEQUENCE {
410 changeType ENUMERATED {
411 add (1),
412 delete (2),
413 modify (4),
414 modDN (8)
415 }
416 previousDN LDAPDN OPTIONAL, -- modifyDN ops. only
417 changeNumber INTEGER OPTIONAL -- if supported
418 }
419
420 -- RFC-3876 Matched Values Control
421 ValuesReturnFilter ::= SEQUENCE OF SimpleFilterItem
422
423 SimpleFilterItem ::= CHOICE {
424 equalityMatch [3] AttributeValueAssertion,
425 substrings [4] SubstringFilter,
426 greaterOrEqual [5] AttributeValueAssertion,
427 lessOrEqual [6] AttributeValueAssertion,
428 present [7] AttributeDescription,
429 approxMatch [8] AttributeValueAssertion,
430 extensibleMatch [9] SimpleMatchingAssertion }
431
432 SimpleMatchingAssertion ::= SEQUENCE {
433 matchingRule [1] MatchingRuleId OPTIONAL,
434 type [2] AttributeDescription OPTIONAL,
435 --- at least one of the above must be present
436 matchValue [3] AssertionValue }
437
438 -- RFC-4527 Pre-/Post-read Control
439 -- note: this is SearchResultEntry without the APPLICATION tag
440 prSearchResultEntry ::= SEQUENCE {
441 objectName LDAPDN,
442 attributes PartialAttributeList }
443
444 -- RFC-4533 LDAP Content Synchronization Operation
445
446 syncUUID ::= OCTET STRING -- (SIZE(16))
447
448 syncCookie ::= OCTET STRING
449
450 syncRequestValue ::= SEQUENCE {
451 mode ENUMERATED {
452 -- 0 unused
453 refreshOnly (1),
454 -- 2 reserved
455 refreshAndPersist (3)
456 }
457 cookie syncCookie OPTIONAL,
458 reloadHint BOOLEAN OPTIONAL -- DEFAULT FALSE
459 }
460
461 syncStateValue ::= SEQUENCE {
462 state ENUMERATED {
463 present (0),
464 add (1),
465 modify (2),
466 delete (3)
467 }
468 entryUUID syncUUID,
469 cookie syncCookie OPTIONAL
470 }
471
472 syncDoneValue ::= SEQUENCE {
473 cookie syncCookie OPTIONAL,
474 refreshDeletes BOOLEAN OPTIONAL -- DEFAULT FALSE
475 }
476
477 syncInfoValue ::= CHOICE {
478 newcookie [0] syncCookie,
479 refreshDelete [1] SEQUENCE {
480 cookie syncCookie OPTIONAL,
481 refreshDone BOOLEAN OPTIONAL -- DEFAULT TRUE
482 }
483 refreshPresent [2] SEQUENCE {
484 cookie syncCookie OPTIONAL,
485 refreshDone BOOLEAN OPTIONAL -- DEFAULT TRUE
486 }
487 syncIdSet [3] SEQUENCE {
488 cookie syncCookie OPTIONAL,
489 refreshDeletes BOOLEAN OPTIONAL, -- DEFAULT FALSE
490 syncUUIDs SET OF syncUUID
491 }
492 }
493
494LDAP_ASN
495
496115µs1;
497