Asterisk LDAP - Couldn't modify [...] because Undefined att

Hello,

i recently tried migrating parts of my sip.conf to LDAP.
I can confirm that the asterisk server is able to login to LDAP and can browse the LDAP entrys.
The Sip clients are also able to register with the credentials stored in the LDAP server.

However my asterisk server constantly throws errors like this:

[Mar 19 16:28:59] ERROR[6407]: res_config_ldap.c:1327 update_ldap: Couldn't modify 'name'='21', dn:cn=21,ou=sippeers,ou=asterisk,dc=***,dc=*** because Undefined attribute type

Why is this and how can I stop the software from doing this?

Here is some further information:
A screenshot of one LDAP entry

The LDAP schema I’m using

[code]#

Copyright © 2007-2009 Suretec Systems Ltd. - http://www.suretecsystems.com/

Version: 3.2.2

Changes:

- Added AsteriskDialplan, AsteriskAccount and AsteriskMailbox objectClasses

to allow standalone dialplan, account and mailbox entries (STRUCTURAL)

- Added new Fields

* AstAccountLanguage, AstAccountTransport, AstAccountPromiscRedir,

* AstAccountAccountCode, AstAccountSetVar, AstAccountAllowOverlap,

* AstAccountVideoSupport, AstAccountIgnoreSDPVersion

Removed redundant IPaddr (there’s already IPAddress)

- Fixed typo - 13/08/2009

- https://issues.asterisk.org/view.php?id=13725 - 12/08/2009

- Added AsteriskVoiceMail Object class and AstAccountCallLimit attribute - 28/05/2009

https://issues.asterisk.org/view.php?id=15155

- Added AstAccountLastQualifyMilliseconds - 28/05/2009

https://issues.asterisk.org/view.php?id=15156

- https://issues.asterisk.org/view.php?id=12860 - 04/07/2008

- Fixed wrong DESC - 07/05/2008

Author: Gavin Henry - ghenry@suretecsystems.com

Michael Kromer - medozas@medozas.de

Asterisk LDAP Schema

Digium root OID (http://www.iana.org/assignments/enterprise-numbers)

1.3.6.1.4.1.22736

1.3.6.1.4.1.22736.5 LDAP elements

1.3.6.1.4.1.22736.5.4 Attribute Types

1.3.6.1.4.1.22736.5.5 Object Classes

objectIdentifier AsteriskRoot 1.3.6.1.4.1.22736
objectIdentifier AsteriskLDAP AsteriskRoot:5

#############################################################################

Attribute group OIDs. e.g.: objectIdentifier AstAttrType AsteriskLDAP:4

#############################################################################
objectIdentifier AstAttrType AsteriskLDAP:4

#############################################################################

Attribute OIDs e.g.: objectIdentifier AstContext AstAttrType:1

#############################################################################
objectIdentifier AstContext AstAttrType:1
objectIdentifier AstExtension AstAttrType:2
objectIdentifier AstPriority AstAttrType:3
objectIdentifier AstApplication AstAttrType:4
objectIdentifier AstApplicationData AstAttrType:5
objectIdentifier AstAccountAMAFlags AstAttrType:6
objectIdentifier AstAccountCallerID AstAttrType:7
objectIdentifier AstAccountContext AstAttrType:8
objectIdentifier AstAccountMailbox AstAttrType:9
objectIdentifier AstMD5secret AstAttrType:10
objectIdentifier AstAccountDeny AstAttrType:11
objectIdentifier AstAccountPermit AstAttrType:12
objectIdentifier AstAccountQualify AstAttrType:13
objectIdentifier AstAccountType AstAttrType:14
objectIdentifier AstAccountDisallowedCodec AstAttrType:15
objectIdentifier AstAccountExpirationTimestamp AstAttrType:16
objectIdentifier AstAccountRegistrationContext AstAttrType:17
objectIdentifier AstAccountRegistrationExten AstAttrType:18
objectIdentifier AstAccountNoTransfer AstAttrType:19
objectIdentifier AstAccountCallGroup AstAttrType:20
objectIdentifier AstAccountCanReinvite AstAttrType:21
objectIdentifier AstAccountDTMFMode AstAttrType:22
objectIdentifier AstAccountFromUser AstAttrType:23
objectIdentifier AstAccountFromDomain AstAttrType:24
objectIdentifier AstAccountFullContact AstAttrType:25
objectIdentifier AstAccountHost AstAttrType:26
objectIdentifier AstAccountInsecure AstAttrType:27
objectIdentifier AstAccountNAT AstAttrType:28
objectIdentifier AstAccountPickupGroup AstAttrType:29
objectIdentifier AstAccountPort AstAttrType:30
objectIdentifier AstAccountRestrictCID AstAttrType:31
objectIdentifier AstAccountRTPTimeout AstAttrType:32
objectIdentifier AstAccountRTPHoldTimeout AstAttrType:33
objectIdentifier AstAccountRealmedPassword AstAttrType:34
objectIdentifier AstAccountAllowedCodec AstAttrType:35
objectIdentifier AstAccountMusicOnHold AstAttrType:36
objectIdentifier AstAccountCanCallForward AstAttrType:37
objectIdentifier AstAccountSecret AstAttrType:38
objectIdentifier AstAccountName AstAttrType:39
objectIdentifier AstConfigFilename AstAttrType:40
objectIdentifier AstConfigCategory AstAttrType:41
objectIdentifier AstConfigCategoryMetric AstAttrType:42
objectIdentifier AstConfigVariableName AstAttrType:43
objectIdentifier AstConfigVariableValue AstAttrType:44
objectIdentifier AstConfigCommented AstAttrType:45
objectIdentifier AstAccountIPAddress AstAttrType:46
objectIdentifier AstAccountDefaultUser AstAttrType:47
objectIdentifier AstAccountRegistrationServer AstAttrType:48
objectIdentifier AstAccountLastQualifyMilliseconds AstAttrType:49
objectIdentifier AstAccountCallLimit AstAttrType:50
objectIdentifier AstVoicemailMailbox AstAttrType:51
objectIdentifier AstVoicemailPassword AstAttrType:52
objectIdentifier AstVoicemailFullname AstAttrType:53
objectIdentifier AstVoicemailEmail AstAttrType:54
objectIdentifier AstVoicemailPager AstAttrType:55
objectIdentifier AstVoicemailOptions AstAttrType:56
objectIdentifier AstVoicemailTimestamp AstAttrType:57
objectIdentifier AstVoicemailContext AstAttrType:58
objectIdentifier AstAccountSubscribeContext AstAttrType:59
objectIdentifier AstAccountUserAgent AstAttrType:61
objectIdentifier AstAccountLanguage AstAttrType:62
objectIdentifier AstAccountTransport AstAttrType:63
objectIdentifier AstAccountPromiscRedir AstAttrType:64
objectIdentifier AstAccountAccountCode AstAttrType:65
objectIdentifier AstAccountSetVar AstAttrType:66
objectIdentifier AstAccountAllowOverlap AstAttrType:67
objectIdentifier AstAccountVideoSupport AstAttrType:68
objectIdentifier AstAccountIgnoreSDPVersion AstAttrType:69
objectIdentifier AstAccountPathSupport AstAttrType:70

#############################################################################

Object Class OIDs

#############################################################################
objectIdentifier AstObjectClass AsteriskLDAP:2
objectIdentifier AsteriskExtension AstObjectClass:1
objectIdentifier AsteriskIAXUser AstObjectClass:2
objectIdentifier AsteriskSIPUser AstObjectClass:3
objectIdentifier AsteriskConfig AstObjectClass:4
objectIdentifier AsteriskVoiceMail AstObjectClass:5
objectIdentifier AsteriskDialplan AstObjectClass:6
objectIdentifier AsteriskAccount AstObjectClass:7
objectIdentifier AsteriskMailbox AstObjectClass:8

#############################################################################

attribute definitions

OID (the first arg) comes from the objectIdentifier defined above

NAME should be the same as objectIdentifier

DESC should be the description of the attribute

EQUALITY is the rule to use when doing a search/compare for an

attribute value.

SUBSTR is the rule to use when doing a substring search (foo)

SYNTAX is the syntax (i.e., type) of the attribute. We should

probably stick to syntaxes:

1.3.6.1.4.1.1466.115.121.1.15 -> directoryString (UTF-8 string)

1.3.6.1.4.1.1466.115.121.1.26 -> IA5String (ASCII String)

1.3.6.1.4.1.1466.115.121.1.27 -> integer (Integer value)

SINGLE-VALUE should be present if only one instance of this

attribute is allowed within an entry.

{32} is the allowed length

e.g.:

attributetype ( AstExample

NAME ( ‘AstExample’ )

DESC ‘Asterisk Example Attribute’

EQUALITY caseIgnoreMatch

SUBSTR caseIgnoreSubstringsMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32}

SINGLE-VALUE )

#############################################################################

attributetype ( AstContext
NAME ‘AstContext’
DESC ‘Asterisk Context’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstExtension
NAME ‘AstExtension’
DESC ‘Asterisk Extension’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstPriority
NAME ‘AstPriority’
DESC ‘Asterisk Priority’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstApplication
NAME ‘AstApplication’
DESC ‘Asterisk Application’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstApplicationData
NAME ‘AstApplicationData’
DESC ‘Asterisk Application Data’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountAMAFlags
NAME ‘AstAccountAMAFlags’
DESC ‘Asterisk Account AMA Flags’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountCallerID
NAME ‘AstAccountCallerID’
DESC ‘Asterisk Account CallerID’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountContext
NAME ‘AstAccountContext’
DESC ‘Asterisk Account Context’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountMailbox
NAME ‘AstAccountMailbox’
DESC ‘Asterisk Account Mailbox’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstMD5secret
NAME ‘AstMD5secret’
DESC ‘Asterisk Account MD5 Secret’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountDeny
NAME ‘AstAccountDeny’
DESC ‘Asterisk Account Deny’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountPermit
NAME ‘AstAccountPermit’
DESC ‘Asterisk Account Permit’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountQualify
NAME ‘AstAccountQualify’
DESC ‘Asterisk Account Qualify’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountType
NAME ‘AstAccountType’
DESC ‘Asterisk Account Type’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountDisallowedCodec
NAME ‘AstAccountDisallowedCodec’
DESC ‘Asterisk Account Disallowed Codec’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountExpirationTimestamp
NAME ‘AstAccountExpirationTimestamp’
DESC ‘Asterisk Account Expiration Timestamp’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRegistrationContext
NAME ‘AstAccountRegistrationContext’
DESC ‘Asterisk Account Registration Context’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRegistrationExten
NAME ‘AstAccountRegistrationExten’
DESC ‘Asterisk Account Registration Extension’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountNoTransfer
NAME ‘AstAccountNoTransfer’
DESC ‘Asterisk Account No Transfer’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountCallGroup
NAME ‘AstAccountCallGroup’
DESC ‘Asterisk Account Call Group’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountCanReinvite
NAME ‘AstAccountCanReinvite’
DESC ‘Asterisk Account Can Reinvite’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountDTMFMode
NAME ‘AstAccountDTMFMode’
DESC ‘Asterisk Account DTMF Flags’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountFromUser
NAME ‘AstAccountFromUser’
DESC ‘Asterisk Account From User’
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountFromDomain
NAME ‘AstAccountFromDomain’
DESC ‘Asterisk Account From Domain’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountFullContact
NAME ‘AstAccountFullContact’
DESC ‘Asterisk Account Full Contact’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountHost
NAME ‘AstAccountHost’
DESC ‘Asterisk Account Host’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountInsecure
NAME ‘AstAccountInsecure’
DESC ‘Asterisk Account Insecure’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountNAT
NAME ‘AstAccountNAT’
DESC ‘Asterisk Account NAT’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountPickupGroup
NAME ‘AstAccountPickupGroup’
DESC ‘Asterisk Account PickupGroup’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountPort
NAME ‘AstAccountPort’
DESC ‘Asterisk Account Port’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRestrictCID
NAME ‘AstAccountRestrictCID’
DESC ‘Asterisk Account Restrict CallerID’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRTPTimeout
NAME ‘AstAccountRTPTimeout’
DESC ‘Asterisk Account RTP Timeout’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRTPHoldTimeout
NAME ‘AstAccountRTPHoldTimeout’
DESC ‘Asterisk Account RTP Hold Timeout’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRealmedPassword
NAME ‘AstAccountRealmedPassword’
DESC ‘Asterisk Account Realmed Password’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountAllowedCodec
NAME ‘AstAccountAllowedCodec’
DESC ‘Asterisk Account Allowed Codec’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountMusicOnHold
NAME ‘AstAccountMusicOnHold’
DESC ‘Asterisk Account Music On Hold’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountCanCallForward
NAME ‘AstAccountCanCallForward’
DESC ‘Asterisk Account Can Call Forward’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountSecret
NAME ‘AstAccountSecret’
DESC ‘Asterisk Account Secret’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountName
NAME ‘AstAccountName’
DESC ‘Asterisk Account Username’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstConfigFilename
NAME ‘AstConfigFilename’
DESC ‘Asterisk LDAP Configuration Filename’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstConfigCategory
NAME ‘AstConfigCategory’
DESC ‘Asterisk LDAP Configuration Category’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstConfigCategoryMetric
NAME ‘AstConfigCategoryMetric’
DESC ‘Asterisk LDAP Configuration Category Metric’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstConfigVariableName
NAME ‘AstConfigVariableName’
DESC ‘Asterisk LDAP Configuration Variable Name’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstConfigVariableValue
NAME ‘AstConfigVariableValue’
DESC ‘Asterisk LDAP Configuration Variable Value’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstConfigCommented
NAME ‘AstConfigCommented’
DESC ‘Asterisk LDAP Configuration Commented’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountIPAddress
NAME ‘AstAccountIPAddress’
DESC ‘Asterisk Account IP Address’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountDefaultUser
NAME ‘AstAccountDefaultUser’
DESC ‘Asterisk Account Default User’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountRegistrationServer
NAME ‘AstAccountRegistrationServer’
DESC ‘Asterisk Account Registration Server’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountLastQualifyMilliseconds
NAME ‘AstAccountLastQualifyMilliseconds’
DESC ‘Asterisk Account Last Qualify Milliseconds’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountCallLimit
NAME ‘AstAccountCallLimit’
DESC ‘Asterisk Account Call Limit’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailMailbox
NAME ‘AstVoicemailMailbox’
DESC ‘Asterisk voicemail mailbox’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailPassword
NAME ‘AstVoicemailPassword’
DESC ‘Asterisk voicemail password’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailFullname
NAME ‘AstVoicemailFullname’
DESC ‘Asterisk voicemail fullname’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailEmail
NAME ‘AstVoicemailEmail’
DESC ‘Asterisk voicemail email’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailPager
NAME ‘AstVoicemailPager’
DESC ‘Asterisk voicemail pager’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailOptions
NAME ‘AstVoicemailOptions’
DESC ‘Asterisk voicemail options’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailTimestamp
NAME ‘AstVoicemailTimestamp’
DESC ‘Asterisk voicemail timestamp’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstVoicemailContext
NAME ‘AstVoicemailContext’
DESC ‘Asterisk voicemail context’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountSubscribeContext
NAME ‘AstAccountSubscribeContext’
DESC ‘Asterisk subscribe context’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountUserAgent
NAME ‘AstAccountUserAgent’
DESC ‘Asterisk account user context’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountLanguage
NAME ‘AstAccountLanguage’
DESC ‘Asterisk account user language’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountTransport
NAME ‘AstAccountTransport’
DESC ‘Asterisk account transport type’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountPromiscRedir
NAME ‘AstAccountPromiscRedir’
DESC ‘Asterisk account promiscous redirects’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountAccountCode
NAME ‘AstAccountAccountCode’
DESC ‘Asterisk account billing code’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountSetVar
NAME ‘AstAccountSetVar’
DESC ‘Asterisk account setvar’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountAllowOverlap
NAME ‘AstAccountAllowOverlap’
DESC ‘Asterisk account allow overlap dialing’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountVideoSupport
NAME ‘AstAccountVideoSupport’
DESC ‘Asterisk account video support’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountIgnoreSDPVersion
NAME ‘AstAccountIgnoreSDPVersion’
DESC ‘Asterisk account ignore SDP version’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

attributetype ( AstAccountPathSupport
NAME ‘AstAccountPathSupport’
DESC ‘Asterisk account support Path RFC 3327’
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15)

#############################################################################

Object Class definitions

This is where to define the object classes. Object classes are used

to define which attribute MAY (optional) or MUST (required) belong

to an entry.

Classes can be AUXILIARY or STRUCTURAL. An entry in the directory

must have one and only one structural class, but can have many

AUXILIARY classes.

#############################################################################

objectclass ( AsteriskExtension
NAME ‘AsteriskExtension’
DESC ‘PBX Extension Information for Asterisk’
SUP top AUXILIARY
MUST cn
MAY (
AstContext AstExtension
AstPriority AstApplication
AstApplicationData
)
)

#############################################################################

AsteriskIAXUser and AsteriskSIPUser extend AsteriskExtension. These

represent real accounts in Asterisk.

NOTE: They are defined as AUXILIARY in case they need to be mixed with an

existing directory deployment.

#############################################################################

objectclass ( AsteriskIAXUser
NAME ‘AsteriskIAXUser’
DESC ‘IAX2 User information for Asterisk’
SUP AsteriskExtension AUXILIARY
MUST cn
MAY (
AstAccountAMAFlags AstAccountCallerID
AstAccountContext AstAccountFullContact
AstAccountHost AstAccountMailbox
AstMD5secret AstAccountDeny
AstAccountPermit AstAccountPort
AstAccountQualify AstAccountType
AstAccountLanguage AstAccountDisallowedCodec
AstAccountExpirationTimestamp AstAccountRegistrationContext
AstAccountRegistrationExten AstAccountNoTransfer
AstAccountName AstAccountLastQualifyMilliseconds
AstAccountCallLimit AstAccountSubscribeContext
AstAccountIPAddress $
AstAccountUserAgent
)
)

objectclass ( AsteriskSIPUser
NAME ‘AsteriskSIPUser’
DESC ‘SIP User information for Asterisk’
SUP AsteriskExtension AUXILIARY
MUST cn
MAY (
AstAccountAccountCode AstAccountAllowOverlap
AstAccountAllowedCodec AstAccountAMAFlags
AstAccountCallGroup AstAccountCallLimit
AstAccountCallerID AstAccountCanCallForward
AstAccountCanReinvite AstAccountContext
AstAccountDTMFMode AstAccountDefaultUser
AstAccountDeny AstAccountDisallowedCodec
AstAccountExpirationTimestamp AstAccountFromDomain
AstAccountFromUser AstAccountFullContact
AstAccountHost AstAccountIgnoreSDPVersion
AstAccountInsecure AstAccountIPAddress
AstAccountLanguage AstAccountLastQualifyMilliseconds
AstAccountMailbox AstAccountMusicOnHold
AstAccountNAT AstAccountName
AstAccountPermit AstAccountPickupGroup
AstAccountPort AstAccountPromiscRedir
AstAccountQualify AstAccountRTPHoldTimeout
AstAccountRTPTimeout AstAccountRealmedPassword
AstAccountRegistrationContext AstAccountRegistrationExten
AstAccountRegistrationServer AstAccountRestrictCID
AstAccountSecret AstAccountSetVar
AstAccountSubscribeContext AstAccountTransport
AstAccountType AstAccountUserAgent
AstAccountVideoSupport $
AstAccountPathSupport
)
)

#############################################################################

AsteriskConfig and AsteriskVoiceMail extend AsteriskExtension. These

represent real accounts in Asterisk.

NOTE: They are defined as AUXILIARY in case they need to be mixed with an

existing directory deployment.

#############################################################################

objectclass ( AsteriskConfig
NAME ‘AsteriskConfig’
DESC ‘Asterisk configuration Information’
SUP top AUXILIARY
MUST cn
MAY (
AstConfigFilename AstConfigCategory
AstConfigCategoryMetric AstConfigVariableName
AstConfigVariableValue $
AstConfigCommented
)
)

objectclass ( AsteriskVoiceMail
NAME ‘AsteriskVoiceMail’
DESC ‘Asterisk voicemail information’
SUP top AUXILIARY
MUST (
cn AstContext
AstVoicemailMailbox AstVoicemailPassword ) MAY ( AstVoicemailFullname
AstVoicemailEmail AstVoicemailPager
AstVoicemailOptions AstVoicemailTimestamp
AstVoicemailContext
)
)

objectClass (
AsteriskDialplan
NAME ‘AsteriskDialplan’
DESC ‘Asterisk Dialplan Information’
SUP top STRUCTURAL
MUST ( AstExtension ) )

objectClass (
AsteriskAccount
NAME ‘AsteriskAccount’
DESC ‘Asterisk Account Information’
SUP top STRUCTURAL
MUST ( AstAccountName ) )

objectClass (
AsteriskMailbox
NAME ‘AsteriskMailbox’
DESC ‘Asterisk Mailbox Information’
SUP top STRUCTURAL
MUST ( AstVoicemailMailbox ) )[/code]

How the above LDAP entry looked in my sip.conf

[code]; Wohnzimmer
[21]
type=friend
callerid=Wohnzimmer <21>
host=dynamic
domain=192.168.0.100
secret=Wohnzimmer
nat=no
context=lokal_in
directmedia=no

disalow=all
allow=alaw
allow=ulaw[/code]

and now parts of my res_ldap.conf

[code][_general]
;
; Specify one of either host and port OR url. URL is preferred, as you can
; use more options.
;host=192.168.0.100 ; LDAP host
;port=389
url=ldap://192.168.0.100
protocol=3 ; Version of the LDAP protocol to use; default is 3.
basedn=dc=,dc= ; Base DN
user=cn=admin,dc=,dc= ; Bind DN
pass=admin ; Bind password

; Sip Users Table
;
[sip]
name = AstAccountName ; We use the “cn” as the default value for name on the line above
; because objectClass=AsteriskSIPUser does not include a uid as an allowed field
; If your entry combines other objectClasses and uid is available, you may
; prefer to change the line to be name = uid, especially if your LDAP entries
; contain spaces in the cn field.
; You may also find it appropriate to use something completely different.
; This is possible by changing the line above to name = AstAccountName (or whatever you
; prefer).
;
amaflags = AstAccountAMAFlags
callgroup = AstAccountCallGroup
callerid = AstAccountCallerID
directmedia = AstAccountDirectMedia
context = AstAccountContext
dtmfmode = AstAccountDTMFMode
fromuser = AstAccountFromUser
fromdomain = AstAccountFromDomain
fullcontact = AstAccountFullContact
fullcontact = gecos
host = AstAccountHost
insecure = AstAccountInsecure
mailbox = AstAccountMailbox
md5secret = AstAccountRealmedPassword ; Must be an MD5 hash. Field value can start with{md5} but it is not required.
; Generate the password via the md5sum command, e.g.
; echo “my_password” | md5sum
nat = AstAccountNAT
deny = AstAccountDeny
permit = AstAccountPermit
pickupgroup = AstAccountPickupGroup
port = AstAccountPort
qualify = AstAccountQualify
restrictcid = AstAccountRestrictCID
rtptimeout = AstAccountRTPTimeout
rtpholdtimeout = AstAccountRTPHoldTimeout
type = AstAccountType
disallow = AstAccountDisallowedCodec
allow = AstAccountAllowedCodec
MusicOnHold = AstAccountMusicOnHold
regseconds = AstAccountExpirationTimestamp
regcontext = AstAccountRegistrationContext
regexten = AstAccountRegistrationExten
CanCallForward = AstAccountCanCallForward
ipaddr = AstAccountIPAddress
defaultuser = AstAccountDefaultUser
regserver = AstAccountRegistrationServer
lastms = AstAccountLastQualifyMilliseconds
additionalFilter=(objectClass=AsteriskSIPUser)[/code]

I’m using Asterisk v. 1.8.10.1

Thanks for your help in advance
Christian