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