1$ORIGIN success-cases. 2$TTL 3600 3 4@ SOA primary admin 0 0 0 0 0 5 6 7; A particular key does not need to have a value 8 9s01 SVCB 0 . key123 10 11 12; echconfig does not need to have a value 13 14s02 SVCB 0 . echconfig 15 16 17; When "no-default-alpn" is specified in an RR, "alpn" must also be specified 18; in order for the RR to be "self-consistent" 19 20s03 HTTPS 0 . alpn="h2,h3" no-default-alpn 21 22 23; SHOULD is not MUST (so allowed) 24; Zone-file implementations SHOULD enforce self-consistency 25 26s04 HTTPS 0 . no-default-alpn 27 28 29; SHOULD is not MUST (so allowed) 30; (port and no-default-alpn are automatically mandatory keys with HTTPS) 31; Other automatically mandatory keys SHOULD NOT appear in the list either. 32 33s05 HTTPS 0 . alpn="dot" no-default-alpn port=853 mandatory=port 34 35; Any valid base64 is okay for ech 36s06 HTTPS 0 . ech="aGVsbG93b3JsZCE=" 37 38; echconfig is an alias for ech 39s07 HTTPS 0 . echconfig="aGVsbG93b3JsZCE=" 40 41; maximum size allowed in a svcb rdata set (63 SvcParams) 42 43s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a) 44 45; maximum alpn size allowed (255 characters) 46 47s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) 48 49; dohpath can be (non-)quoted and MUST contain "?dns" 50; currently there is no validation from Unbound, it can be anything 51; maybe needs changing if Unbound is the primary authoritative for SVCB records. 52; Then SVCB_SEMANTIC_CHECKS parts of the code could be used per authoritative role. 53 54_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath 55_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath= 56_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="" 57_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/" 58_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/dns-query{?dns}" 59_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcd}{!abcd}{?dns} 60_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcdabcd?dns?defedf} 61_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-queryéè{?dns} 62