BIND 10 #534: DNAME support in MemoryZone

BIND 10 Development do-not-reply at isc.org
Tue Feb 1 10:15:45 UTC 2011


#534: DNAME support in MemoryZone
-------------------------------------+-------------------------------------
                 Reporter:  vorner   |                Owner:  jinmei
                     Type:  task     |               Status:  reviewing
                 Priority:  major    |            Milestone:  A-Team-
                Component:  data     |  Sprint-20110209
  source                             |           Resolution:
                 Keywords:           |            Sensitive:  0
Estimated Number of Hours:  3.0      |  Add Hours to Ticket:  0
                Billable?:  1        |          Total Hours:  0
                Internal?:  0        |
-------------------------------------+-------------------------------------
Changes (by vorner):

 * owner:  vorner => jinmei


Comment:

 Replying to [comment:6 jinmei]:
 > Okay, but I found the comment about exception guarantee should now
 better
 > be in find().  I also found the new function can/should be a const
 member
 > function.  I've made these changes locally, and am going to push them.

 Thanks.

 > I didn't worry about performance, and, in fact, my main concern was
 > clarity/complexity.  Having more variables makes the code more
 > incomprehensible because the reader needs to think about combinations
 > of possible variable states (with two variables that can be NULL or
 > non NULL, we need to consider 4 cases, and if the code (seemingly)
 > ignores some of the cases we need to think about whether such a case
 > is really impossible or whether it's overlooked, etc.).  But at the
 > same time, I agree we should use separate variables to represent
 > different things and I also agree the semantics of zonecut_node_ and
 > dname_node_ would be different to some extent (while they also have
 > similarity).  So, to me, this is a tradeoff issue.

 That's probably dependant on point of view. I examine code not by variable
 states, but by the code flow.

 Anyway, I added a comment and tried to explain the situation.

 > Actually, the only real question is about the case where we have DNAME
 > under NS, and glue under DNAME:
 >
 > {{{
 > dchild.example.com.   IN      NS      ns.dname.dchild.example.com.
 > dname.dchild.example.com. IN  DNAME   example.org.
 > ns.dname.dchild.example.com. IN       A       192.0.2.39
 > }}}
 > and when we ask for the glue in the "glue OK mode".

 That situation is explicitly forbidden by RFC 2672, there must be nothing
 under the node with DNAME and we are required by RFC to reject loading
 such data. We don't reject it yet, but I will create a task in the backlog
 to do so.

 I created a test to check it returns the DNAME, but I didn't add the
 nested glue, as it would test the code in forbidden situation and would
 not check anything more (it will return NXDOMAIN instead of wrong answer
 if it passes trough the DNAME).

 > Ack.  I wonder we might want to create the node at the creation of the
 > zone (which is what BIND 9 does).  In any valid zone that node should
 > exist and should not be deleted throughout the lifetime of the zone,
 > so we should safely be able to do so, and it's slightly more
 > efficient (and makes the code a bit simpler).

 Done.

-- 
Ticket URL: <http://bind10.isc.org/ticket/534#comment:8>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list