[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: let's talk about RFC2136bis
Before I comment on the RFC2136 issues you mentioned, I'd like to add
two more...
#13 -- contradiction in section 3.4.2.2
3.4.2.2. Any Update RR whose CLASS is the same as ZCLASS is added to
the zone. In case of duplicate RDATAs (which for SOA RRs is always
the case, and for WKS RRs is the case if the ADDRESS and PROTOCOL
fields both match), the Zone RR is replaced by Update RR. If the
TYPE is SOA and there is no Zone SOA RR, or the new SOA.SERIAL is
lower (according to [RFC1982]) than or equal to the current Zone SOA
RR's SOA.SERIAL, the Update RR is ignored. In the case of a CNAME
Update RR and a non-CNAME Zone RRset or vice versa, ignore the CNAME
Update RR, otherwise replace the CNAME Zone RR with the CNAME Update
RR.
The last sentence contains a contradiction. If we have a non-CNAME
Update RR and a CNAME Zone RRset (that's the "vice versa" case), it
says we should "ignore the CNAME Update RR" even though the Update
RR is not a CNAME.
Also, strictly speaking the "otherwise" condition means "either both
the Update RR and Zone RRset are CNAMEs, or neither one is", but the
text following the "otherwise" only applies to the former case.
I propose replacing the last sentence with the following two sentences:
In the case of a CNAME
Update RR and a non-CNAME Zone RRset or vice versa, ignore the
Update RR. In the case of a CNAME Update RR and a CNAME Zone RR,
replace the CNAME Zone RR with the CNAME Update RR.
#14 -- conflict between section 3.4.2.4 and pseudocode
The text of RFC2136 says:
3.4.2.4. For any Update RR whose class is NONE, any Zone RR whose
NAME, TYPE, RDATA and RDLENGTH are equal to the Update RR is deleted,
unless the NAME is the same as ZNAME and either the TYPE is SOA or
the TYPE is NS and the matching Zone RR is the only NS remaining in
the RRset, in which case this Update RR is ignored.
The corresponding pseudocode in section 3.4.2.7 says:
elsif (rr.class == NONE)
if (rr.type == SOA)
next [rr]
if (rr.type == NS && zone_rrset<rr.name, NS> == rr)
next [rr]
zone_rr<rr.name, rr.type, rr.data> = Nil
The text and the pseudocode are in conflict in the case where the last
NS RR of an NS RR set in a place other than the zone apex (i.e., in a
delegation) is being deleted. The text allows this deletion, but the
pseudocode would cause it to be ignored. Since the text takes precendence
over the pseudocode, the pseudocode should be changed to say
elsif (rr.class == NONE)
if (rr.type == SOA)
next [rr]
if (rr.type == NS && rr.name == zname &&
zone_rrset<rr.name, NS> == rr)
next [rr]
zone_rr<rr.name, rr.type, rr.data> = Nil
--
Andreas Gustafsson, gson@nominum.com
--
to unsubscribe send a message to namedroppers-request@ops.ietf.org with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://ops.ietf.org/lists/namedroppers/>