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.Zoneobject is available.
- A
- Required inputs:
- Parent zone object from
methods.Method1. - Delegation NS names from
methods.Method2. - Delegation addressed NS from
methods.Method4.
- Parent zone object from
- 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
- Emit
TEST_CASE_START. - Build a maximally long qname under the tested zone apex.
- Build a DNS message with question
<max-length-name> IN NS. - Add NS records for all names from
Method2into the authority section. - Get parent zone from
Method1; if parent is missing, return an error. - Read delegation addressed NS from
Method4. - If IPv4 delegation NS list is non-empty and all names are in-bailiwick of parent:
- Add one
Aglue record to additional section, using the first IPv4 nameserver.
- Add one
- If IPv6 delegation NS list is non-empty and all names are in-bailiwick of parent:
- Add one
AAAAglue record to additional section, using the first IPv6 nameserver.
- Add one
- Pack wire format with compression enabled and measure packet size.
- Emit one of:
REFERRAL_SIZE_TOO_LARGEwhen packed size> 512.REFERRAL_SIZE_OKotherwise.
- Emit
TEST_CASE_END.
Emitted Tags (Possible Set)
| Tag | Emitted when |
|---|---|
REFERRAL_SIZE_OK | Synthesized packed referral size is within UDP 512-byte limit. |
REFERRAL_SIZE_TOO_LARGE | Synthesized packed referral size exceeds UDP 512-byte limit. |
TEST_CASE_END | Testcase completion marker is emitted. |
TEST_CASE_START | Testcase start marker is emitted. |
Tag Arguments
| Tag | Argument key | Type | Meaning |
|---|---|---|---|
REFERRAL_SIZE_OK | size | int | Packed referral size in bytes. |
REFERRAL_SIZE_TOO_LARGE | size | int | Packed referral size in bytes. |
TEST_CASE_END | testcase | string | Testcase display name (Delegation03). |
TEST_CASE_START | testcase | string | Testcase display name (Delegation03). |
Severity Levels Per Tag
| Tag | Level | Notes |
|---|---|---|
REFERRAL_SIZE_OK | INFO | Default from share/profile.json (test_levels.DELEGATION). |
REFERRAL_SIZE_TOO_LARGE | WARNING | Default from share/profile.json (test_levels.DELEGATION). |
TEST_CASE_END | DEBUG | Default from share/profile.json (test_levels.DELEGATION). |
TEST_CASE_START | DEBUG | Default 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
Method4for each family. - Upstream: does not describe testcase boundary debug markers. Gonemaster: emits
TEST_CASE_STARTandTEST_CASE_END.
- 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
- 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.