H. LDAP Result Codes
For the purposes of this guide, we have incorporated the standard LDAP result codes from Appendix A. LDAP Result Codes of RFC4511, a copy of which can be found in doc/rfc of the OpenLDAP source code.
We have expanded the description of each error in relation to the OpenLDAP toolsets. LDAP extensions may introduce extension-specific result codes, which are not part of RFC4511. OpenLDAP returns the result codes related to extensions it implements. Their meaning is documented in the extension they are related to.
H.1. Non-Error Result Codes
These result codes (called "non-error" result codes) do not indicate an error condition:
success (0), compareFalse (5), compareTrue (6), referral (10), and saslBindInProgress (14).
The success, compareTrue, and compareFalse result codes indicate successful completion (and, hence, are referred to as "successful" result codes).
The referral and saslBindInProgress result codes indicate the client needs to take additional action to complete the operation.
H.2. Result Codes
Existing LDAP result codes are described as follows:
H.3. success (0)
Indicates the successful completion of an operation.
Note: this code is not used with the Compare operation. See compareFalse (5) and compareTrue (6).
H.4. operationsError (1)
Indicates that the operation is not properly sequenced with relation to other operations (of same or different type).
For example, this code is returned if the client attempts to StartTLS (RFC4511 Section 4.14) while there are other uncompleted operations or if a TLS layer was already installed.
H.5. protocolError (2)
Indicates the server received data that is not well-formed.
For Bind operation only, this code is also used to indicate that the server does not support the requested protocol version.
For Extended operations only, this code is also used to indicate that the server does not support (by design or configuration) the Extended operation associated with the requestName.
For request operations specifying multiple controls, this may be used to indicate that the server cannot ignore the order of the controls as specified, or that the combination of the specified controls is invalid or unspecified.
H.6. timeLimitExceeded (3)
Indicates that the time limit specified by the client was exceeded before the operation could be completed.
H.7. sizeLimitExceeded (4)
Indicates that the size limit specified by the client was exceeded before the operation could be completed.
H.8. compareFalse (5)
Indicates that the Compare operation has successfully completed and the assertion has evaluated to FALSE or Undefined.
H.9. compareTrue (6)
Indicates that the Compare operation has successfully completed and the assertion has evaluated to TRUE.
H.10. authMethodNotSupported (7)
Indicates that the authentication method or mechanism is not supported.
H.11. strongerAuthRequired (8)
Indicates the server requires strong(er) authentication in order to complete the operation.
When used with the Notice of Disconnection operation, this code indicates that the server has detected that an established security association between the client and server has unexpectedly failed or been compromised.
H.12. referral (10)
Indicates that a referral needs to be chased to complete the operation (see RFC4511 Section 4.1.10).
H.13. adminLimitExceeded (11)
Indicates that an administrative limit has been exceeded.
H.14. unavailableCriticalExtension (12)
Indicates a critical control is unrecognized (see RFC4511 Section 4.1.11).
H.15. confidentialityRequired (13)
Indicates that data confidentiality protections are required.
H.16. saslBindInProgress (14)
Indicates the server requires the client to send a new bind request, with the same SASL mechanism, to continue the authentication process (see RFC4511 Section 4.2).
H.17. noSuchAttribute (16)
Indicates that the named entry does not contain the specified attribute or attribute value.
H.18. undefinedAttributeType (17)
Indicates that a request field contains an unrecognized attribute description.
H.19. inappropriateMatching (18)
Indicates that an attempt was made (e.g., in an assertion) to use a matching rule not defined for the attribute type concerned.
H.20. constraintViolation (19)
Indicates that the client supplied an attribute value that does not conform to the constraints placed upon it by the data model.
For example, this code is returned when multiple values are supplied to an attribute that has a SINGLE-VALUE constraint.
H.21. attributeOrValueExists (20)
Indicates that the client supplied an attribute or value to be added to an entry, but the attribute or value already exists.
H.22. invalidAttributeSyntax (21)
Indicates that a purported attribute value does not conform to the syntax of the attribute.
H.23. noSuchObject (32)
Indicates that the object does not exist in the DIT.
H.24. aliasProblem (33)
Indicates that an alias problem has occurred. For example, the code may used to indicate an alias has been dereferenced that names no object.
H.25. invalidDNSyntax (34)
Indicates that an LDAPDN or RelativeLDAPDN field (e.g., search base, target entry, ModifyDN newrdn, etc.) of a request does not conform to the required syntax or contains attribute values that do not conform to the syntax of the attribute's type.
H.26. aliasDereferencingProblem (36)
Indicates that a problem occurred while dereferencing an alias. Typically, an alias was encountered in a situation where it was not allowed or where access was denied.
H.27. inappropriateAuthentication (48)
Indicates the server requires the client that had attempted to bind anonymously or without supplying credentials to provide some form of credentials.
H.28. invalidCredentials (49)
Indicates that the provided credentials (e.g., the user's name and password) are invalid.
H.29. insufficientAccessRights (50)
Indicates that the client does not have sufficient access rights to perform the operation.
H.30. busy (51)
Indicates that the server is too busy to service the operation.
H.31. unavailable (52)
Indicates that the server is shutting down or a subsystem necessary to complete the operation is offline.
H.32. unwillingToPerform (53)
Indicates that the server is unwilling to perform the operation.
H.33. loopDetect (54)
Indicates that the server has detected an internal loop (e.g., while dereferencing aliases or chaining an operation).
H.34. namingViolation (64)
Indicates that the entry's name violates naming restrictions.
H.35. objectClassViolation (65)
Indicates that the entry violates object class restrictions.
H.36. notAllowedOnNonLeaf (66)
Indicates that the operation is inappropriately acting upon a non-leaf entry.
H.37. notAllowedOnRDN (67)
Indicates that the operation is inappropriately attempting to remove a value that forms the entry's relative distinguished name.
H.38. entryAlreadyExists (68)
Indicates that the request cannot be fulfilled (added, moved, or renamed) as the target entry already exists.
H.39. objectClassModsProhibited (69)
Indicates that an attempt to modify the object class(es) of an entry's 'objectClass' attribute is prohibited.
For example, this code is returned when a client attempts to modify the structural object class of an entry.
H.40. affectsMultipleDSAs (71)
Indicates that the operation cannot be performed as it would affect multiple servers (DSAs).
H.41. other (80)
Indicates the server has encountered an internal error.