Delegation03 (delegation03)

Status: Final

Purpose

  • Check whether a synthesized maximal referral response can fit within the 512-byte non-EDNS UDP DNS payload limit.

Preconditions And Inputs

  • Preconditions:
    • A zone.Zone object is available.
  • Required inputs:
    • Parent zone object from methods.Method1.
    • Delegation NS names from methods.Method2.
    • Delegation addressed NS from methods.Method4.
  • Profile/config knobs that affect behavior:
    • No direct profile knob in this testcase.
    • Size limit is fixed by constants.UDPPayloadLimit (512).

Algorithm And Decision Flow

  1. Emit TEST_CASE_START.
  2. Build a maximally long qname under the tested zone apex.
  3. Build a DNS message with question <max-length-name> IN NS.
  4. Add NS records for all names from Method2 into the authority section.
  5. Get parent zone from Method1; if parent is missing, return an error.
  6. Read delegation addressed NS from Method4.
  7. If IPv4 delegation NS list is non-empty and all names are in-bailiwick of parent:
    • Add one A glue record to additional section, using the first IPv4 nameserver.
  8. If IPv6 delegation NS list is non-empty and all names are in-bailiwick of parent:
    • Add one AAAA glue record to additional section, using the first IPv6 nameserver.
  9. Pack wire format with compression enabled and measure packet size.
  10. Emit one of:
    • REFERRAL_SIZE_TOO_LARGE when packed size > 512.
    • REFERRAL_SIZE_OK otherwise.
  11. Emit TEST_CASE_END.

Emitted Tags (Possible Set)

TagEmitted when
REFERRAL_SIZE_OKSynthesized packed referral size is within UDP 512-byte limit.
REFERRAL_SIZE_TOO_LARGESynthesized packed referral size exceeds UDP 512-byte limit.
TEST_CASE_ENDTestcase completion marker is emitted.
TEST_CASE_STARTTestcase start marker is emitted.

Tag Arguments

TagArgument keyTypeMeaning
REFERRAL_SIZE_OKsizeintPacked referral size in bytes.
REFERRAL_SIZE_TOO_LARGEsizeintPacked referral size in bytes.
TEST_CASE_ENDtestcasestringTestcase display name (Delegation03).
TEST_CASE_STARTtestcasestringTestcase display name (Delegation03).

Severity Levels Per Tag

TagLevelNotes
REFERRAL_SIZE_OKINFODefault from share/profile.json (test_levels.DELEGATION).
REFERRAL_SIZE_TOO_LARGEWARNINGDefault from share/profile.json (test_levels.DELEGATION).
TEST_CASE_ENDDEBUGDefault from share/profile.json (test_levels.DELEGATION).
TEST_CASE_STARTDEBUGDefault from share/profile.json (test_levels.DELEGATION).

Differences From Upstream

  • Upstream reference: delegation03.md
  • Differences (Upstream vs Gonemaster):
    • Upstream: describes adding one A/AAAA record with any address when conditions are met. Gonemaster: adds one record using the first available NS address from Method4 for each family.
    • Upstream: does not describe testcase boundary debug markers. Gonemaster: emits TEST_CASE_START and TEST_CASE_END.
  • Potential upstream report:
    • no

Edge Cases And Limitations

  • This testcase does not send network queries; it evaluates synthesized packet size only.
  • When a family has any out-of-bailiwick NS name relative to parent, no additional-section record is added for that family.
  • A missing parent zone object is treated as a hard error instead of a logged result tag.