Mercurial > prosody-hg
comparison util/dns.lua @ 12241:dd15f42f6312
util.dns: Minor updates of SVCB parser
Now based on draft-ietf-dnsop-svcb-https-08
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 02 Feb 2022 17:58:48 +0100 |
| parents | ffd66b461f6a |
| children | 08a933450922 |
comparison
equal
deleted
inserted
replaced
| 12240:ffd66b461f6a | 12241:dd15f42f6312 |
|---|---|
| 196 match = match; | 196 match = match; |
| 197 data = s_sub(packet, 4); | 197 data = s_sub(packet, 4); |
| 198 }, tlsa_mt); | 198 }, tlsa_mt); |
| 199 end | 199 end |
| 200 | 200 |
| 201 local svcb_params = {"alpn"; "no-default-alpn"; "port"; "ipv4hint"; "echconfig"; "ipv6hint"}; | 201 local svcb_params = {"alpn"; "no-default-alpn"; "port"; "ipv4hint"; "ech"; "ipv6hint"}; |
| 202 setmetatable(svcb_params, {__index = function(_, n) return "key" .. tostring(n); end}); | 202 setmetatable(svcb_params, {__index = function(_, n) return "key" .. tostring(n); end}); |
| 203 | 203 |
| 204 local svcb_mt = { | 204 local svcb_mt = { |
| 205 __tostring = function (rr) | 205 __tostring = function (rr) |
| 206 local kv = {}; | 206 local kv = {}; |
| 207 for i = 1, #rr.fields do | 207 for i = 1, #rr.fields do |
| 208 t_insert(kv, s_format("%s=%q", svcb_params[rr.fields[i].key], tostring(rr.fields[i].value))); | 208 t_insert(kv, s_format("%s=%q", svcb_params[rr.fields[i].key], tostring(rr.fields[i].value))); |
| 209 -- FIXME the =value part may be omitted when the value is "empty" | |
| 209 end | 210 end |
| 210 return s_format("%d %s %s", rr.prio, rr.name, t_concat(kv, " ")); | 211 return s_format("%d %s %s", rr.prio, rr.name, t_concat(kv, " ")); |
| 211 end; | 212 end; |
| 212 }; | 213 }; |
| 213 local svbc_ip_mt = {__tostring = function(ip) return t_concat(ip, ", "); end} | 214 local svbc_ip_mt = {__tostring = function(ip) return t_concat(ip, ", "); end} |
