Soft Del: The attribute shall contain none of these values, but might have others
I'm not sure I understand how SOFTDEL differs from LDAP_MOD_DELETE. Do you mean that values listed in SOFTDEL will be deleted if they exist, or otherwise ignored?
Yes; LDAP_MOD_DELETE requires that the listed values exist. The delete-all-values case is separate. If we had
cn: a cn: b
and ran
changetype: modify softdel: cn cn: b cb: c
Then the result would be success and cn=a remaining. Yes, this is useful!
Protocol-wise, this is what permissive modify control is intended for. I concur that having this as an internal modification (much like SLAP_MOD_SOFTADD) would allow finer grain control to internal operations, without (ab)using the permissive control. The same, in terms of granularity, applies protocol-wise.
p.