BIND 10 #2432: define and implement base and libdns++ version of RRsetCollection
BIND 10 Development
do-not-reply at isc.org
Thu Jan 3 16:16:02 UTC 2013
#2432: define and implement base and libdns++ version of RRsetCollection
-------------------------------------+-------------------------------------
Reporter: jinmei | Owner:
Type: task | jinmei
Priority: medium | Status:
Component: libdns++ | reviewing
Keywords: | Milestone:
Sensitive: 0 | Sprint-20130108
Sub-Project: DNS | Resolution:
Estimated Difficulty: 5 | CVSS Scoring:
Total Hours: 0 | Defect Severity: N/A
| Feature Depending on Ticket:
| loadzone-ng
| Add Hours to Ticket: 0
| Internal?: 0
-------------------------------------+-------------------------------------
Comment (by jinmei):
Replying to [comment:27 muks]:
> Replying to [comment:25 jinmei]:
> > And I just encountered a more serious issue.
> >
> > `RRsetCollection` rejects loading (on it construction) a zone (from a
> > file or a stream) if an RRset consists of multiple RRs. It's too
> > restrictive. It should allow that, and for that I suggest using
> > `RRCollator`.
>
> `RRCollator` is used now inside `RRsetCollection`.
>
> > Further, the behavior is still not good enough even with `RRCollator`,
> > because RRs can appear in any order, and can be interleaved.
> > `RRsetCollection` is intended to be used for general purpose, so it
> > should be generic enough.
>
> I want to ask, should we extend `RRCollator` to handle this case, or
> make another class? Or perhaps we can modify the `RRsets` directly
> in our internal `std::map` to avoid using another collection of
> sets during collation.
It's certainly beyond the intended responsibility of `RRCollator`
(which is expected to be reasonably stateless - for complete collation
we need to expect to have a temporary storage for the entire zone in
the worst case). So, it should be done in `RRsetCollection`. I guess
we need to be able to "merge" an (newly given) RRset into another
(already stored in the collection). Note also that if we implement it
by modifying the stored RRset, it means the result of a previous call
to find() can be changed. This should be documented.
Anyway, in completing #2433 I realized I didn't need full collation
for it, and we won't need it for the rest of the zone validation/check
tasks. So I suggest deferring this part to a separate task.
--
Ticket URL: <https://bind10.isc.org/ticket/2432#comment:28>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list