[Date Prev][Date Next]
User-defined attribute options (Was: Suggestion: attribute;search)
Kurt D. Zeilenga writes:
>At 04:52 AM 2002-11-09, Hallvard B Furuseth wrote:
>> Besides, I just finished coding user-defined attribute options: Since I
>> thought I'd have to implement a new option anyway, I could just as well
> I suggest that each of these user-defined attribute options have
> a common prefix (e.g, ";x-user").
I like ;x-user-, but I don't agree that such names should be enforced.
I've looked again at RFC2251, and all it says is
Options beginning with "x-" are reserved for private experiments.
I think OpenLDAP should follow suit: Reserve a namespace for users, but
don't enforce it. If the user wants a shorter option name and is
prepared to risk that OpenLDAP may use that option name in the future,
that's his decision.
(The same way, if OpenLDAP wants to define a new option some day, it
looks like a valid approach to not use the 'x-' prefix: Instead try to
get out an RFC with the option as soon as possible, while hoping that
nobody else will grab it first. I don't know which way I'd prefer.)
> Coding wise, they would be just like language tag/range
> options... except the option name would have user defined meaning.
Actually I coded them as bit flags. Each option defined in slapd.conf
gets its own bit. That seemed to be quicker and easier.
Here is a preliminary patch, if anyone is interested:
Yet to do:
- I'd like to handle ";binary" the same way as user-defined options,
instead of having a special case for it, and move the binary flag
from AttributeDescription.ad_flags to .ad_options.
- I could merge AttributeDescription.ad_flags and .ad_options into
one value `ber_uint_t ad_flags'. 16 bits could be reserved for
OpenLDAP flags and options, the rest for user-defined options.
Flags like SLAP_DESC_LANG_RANGE would be in the most significant bits,
predefined options like ;binary in the least significant bits.
- A slapd.conf directive 'access to attr=;options ...' which would apply
to all attributes with those options.
- document (and maybe enforce) the ";x-user-" namespace.