New classification design.
Some proposals for a new classification design:
- replace the list+set by a multi-index
- replace the required-xxx by a more direct add-client-classes.
- add this new add-client-classes to host reservations as an alias of the existing client-classes (same entry with the same behavior for all objects which add a class to the query)
- complete the list of class evaluation points:
- new points after the deferred unpack, pkt*_receive hook, etc
- make clear in the doc that which a classification point is for:
- dependency on a packet procession phase (e.g. KNOWN/UNKNOWN)
- usage for the next packet processing step (e.g. subnet selection, pool guard, output option)
- add an enum (vs a few flags) for the point where a class must be evaluated
- add a meta-data with the value of its enum and make it visible to users
- same rules on dependency (use of member in expression):
- no forward reference (the user class in a member clause must be already defined)
- get the last classification point
- perhaps a new built-in class for instance for the pkt*_receive hook
- document the way to switch from expired-* to this new stuff (but do not develop a tool to translate configurations)
- (next steps?) new uses of classes (e.g. lifetime), new expressions (e.g. in the response vs the query): in almost all cases this means new classification points