Hello!
I have a problem when I try to modify the DN of an entry.
The following entries exist in my LDAP:
dn: cn=10.3.4.190,ou=Computers,dc=tgm,dc=ac,dc=at objectClass: top objectClass: ieee802Device objectClass: ipHost macAddress: 00:02:44:29:e7:a4 cn: 10.3.4.190 ipHostNumber: 10.3.4.190
dn: macAddress=00:01:02:4f:c7:98,ou=Computers,dc=tgm,dc=ac,dc=at objectClass: top objectClass: ieee802Device objectClass: ipHost macAddress: 00:01:02:4f:c7:98 cn: 10.3.4.191 ipHostNumber: 10.3.4.190
When I try to modify the DN of the first entry to "macAddress=00:02:44:29:e7:a4,ou=Computers,dc=tgm,dc=ac,dc=at" I get an Object Class Violation error, and the logfile states "objectClass ipHost needs Attribute cn", but this Attribute is in the Entry.
Apparently you're using modrdn with
deleteoldrdn: 1
aehm, yes
which causes an attempt to delete the value of attribute "cn" together with the rdn change. You should set deleteoldrdn to 0, to leave the old valuie, otherwise you have an objectClass violation (and you wouldn't get the expected result, since you state that you want to preserve the value of the attribute "cn". You don't say what API you're using; however, in LDIF format you'd use
dn: cn=10.3.4.190,ou=Computers,dc=tgm,dc=ac,dc=at changetype: modrdn macAddress=00:02:44:29:e7:a4 deleteoldrdn: 0 newrdn:
Is it possible to modify this entry? Exporting this Entry to LDIF, changing the DN manually and importing via ldapadd works fine. But I can't modify the DN direct.
If you use the C API (the only one I'm familiar with) there's a dedicated argument:
int ldap_modrdn2(ld, dn, newrdn, deleteoldrdn)
I've tried with Net::LDAP in perl (and explicitly set deleteoldrdn to 1) and with gq - which seems to have implemented deleteoldrdn=1 so it doesn't work in this case...
regards Markus Schabel +--------------------------------------------+ | TGM - Die Schule der Technik | | IT-Service | | A-1200 Wien, Wexstrasse 19-23 | | Tel.: +43(1)33126/316 Fax: +43(1)33126/154 | | eMail: markus.schabel@tgm.ac.at | +--------------------------------------------+