BIND 10 #506: Analysis of Wildcard Processing
BIND 10 Development
do-not-reply at isc.org
Fri Jan 28 18:41:23 UTC 2011
#506: Analysis of Wildcard Processing
-------------------------------------+-------------------------------------
Reporter: stephen | Owner: jinmei
Type: | Status: reviewing
enhancement | Milestone: A-Team-
Priority: major | Sprint-20110209
Component: | Resolution:
b10-auth | Sensitive: 0
Keywords: | Add Hours to Ticket: 0
Estimated Number of Hours: 3.0 | Total Hours: 0
Billable?: 1 |
Internal?: 0 |
-------------------------------------+-------------------------------------
Comment (by jinmei):
Replying to [comment:6 vorner]:
Thanks for the review.
> I didn't check it against RFC. Should I?
I don't think so. But I think anyone who actually picks up
development (sub)task, except the "getting previous node" primitive,
should read at least Section 4.3.3 of RFC1034 (which is short).
> It mostly makes sense, but I have few questions.
> - What if we add "*.example.com." and "example.com." isn't there yet?
Do we add it? Won't it change NXDOMAIN into NXRRSET?
Ah, good point. We need to explicitly create a node for "example.com"
if it doesn't yet exist. That doesn't change the semantics about NXDOMAIN
vs NXRRSET: the existence of *.example.com automatically implies the
existence
of example.com.
> - The wildcards are handled inside MemoryZone? Including creation of
the names?
Yes (at least that's what BIND 9 does).
> - Do we store the „I met a wild node“ on the path here? The first part
suggest yes, but the second doesn't mention it and it seems to me looking
at the node we got from last partial match is enough.
Do you mean that returned node should be marked as 'wild'? Hmm, you're
right (it looks like not (always) the case with BIND 9 due to other
features of its rbtdb). On rethinking about it in our simplified
scenario,
we probably don't need the "I met a wild node" flag in FindState or
invoking
the callback at the "wild" node.
To reject wildcard match under a zone cut, however, we should be careful
not to perform wildcard matching if the search also indicates it has
encountered a zone cut.
> - How does the case with "foo.*.example.com." work while searching? We
will encounter "example.com." and it is wild, therefore we would like to
search for "*.example.com.", but that one isn't there. What we do then?
(Provided we are looking for example for "foo.bar.example.com.")
First off, foo.bar.example.com doesn't (shouldn't) match
foo.*.example.com.
Adding foo.*.example.com implicitly creates *.example.com. As for the
existence of *.example.com node, it's done in the second bullet of
"Loading"
part, i.e., we explictly add *.example.com, and mark example.com as
'wild'.
(From re-reading it, I see it was not clear that we add *.example.com.
thanks for pointing it out).
> - The task for previous primitive for RBTree should list next as well?
No, getting the next is necessary for general non empty terminal support,
and it's already included in #517 (the interface should be consistent,
so this subtask should be done after #517).
--
Ticket URL: <http://bind10.isc.org/ticket/506#comment:7>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list