summaryrefslogtreecommitdiffstats
path: root/src/libzscanner/scanner_body.rl
diff options
context:
space:
mode:
Diffstat (limited to 'src/libzscanner/scanner_body.rl')
-rw-r--r--src/libzscanner/scanner_body.rl28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/libzscanner/scanner_body.rl b/src/libzscanner/scanner_body.rl
index a1ff46c..33f87a8 100644
--- a/src/libzscanner/scanner_body.rl
+++ b/src/libzscanner/scanner_body.rl
@@ -1432,6 +1432,7 @@
| "CAA"i %{ type_num(KNOT_RRTYPE_CAA, &rdata_tail); }
| "SVCB"i %{ type_num(KNOT_RRTYPE_SVCB, &rdata_tail); }
| "HTTPS"i %{ type_num(KNOT_RRTYPE_HTTPS, &rdata_tail); }
+ | "WALLET"i %{ type_num(KNOT_RRTYPE_WALLET, &rdata_tail); }
| "TYPE"i . num16 # TYPE0-TYPE65535.
) $!_type_error;
# END
@@ -1498,6 +1499,7 @@
| "CAA"i %{ window_add_bit(KNOT_RRTYPE_CAA, s); }
| "SVCB"i %{ window_add_bit(KNOT_RRTYPE_SVCB, s); }
| "HTTPS"i %{ window_add_bit(KNOT_RRTYPE_HTTPS, s); }
+ | "WALLET"i %{ window_add_bit(KNOT_RRTYPE_WALLET, s); }
| "TYPE"i . type_bitmap # TYPE0-TYPE65535.
);
@@ -1840,10 +1842,13 @@
svcb_key_ipv4hint = ("ipv4hint" %_write16_4);
svcb_key_ech = ("ech" %_write16_5);
svcb_key_ipv6hint = ("ipv6hint" %_write16_6);
+ svcb_key_dohpath = ("dohpath" %_write16_7);
+ svcb_key_ohttp = ("ohttp" %_write16_8);
mandat_value_ :=
(svcb_key_generic | svcb_key_alpn | svcb_key_ndalpn | svcb_key_port |
- svcb_key_ipv4hint | svcb_key_ech | svcb_key_ipv6hint
+ svcb_key_ipv4hint | svcb_key_ech | svcb_key_ipv6hint | svcb_key_dohpath |
+ svcb_key_ohttp
) >_rdata_2B_check $!_mandat_value_error %_ret . ([,\"] | all_wchar);
mandat_value = alpha ${ fhold; fcall mandat_value_; };
@@ -1857,20 +1862,24 @@
svcb_ipv4 = ((ipv4_addr_write . ("," . ipv4_addr_write)*) >_item_length2_init %_item_length2_exit);
svcb_ech = (base64_quartet+ >_item_length2_init %_item_length2_exit);
svcb_ipv6 = ((ipv6_addr_write . ("," . ipv6_addr_write)*) >_item_length2_init %_item_length2_exit);
+ svcb_dohpath = (text >_item_length2_init %_item_length2_exit);
svcb_param_generic = (svcb_key_generic . svcb_generic);
- svcb_param_mandatory = (svcb_key_mandatory . "=" . (svcb_mandat | ('\"' . svcb_mandat . '\"')));
- svcb_param_alpn = (svcb_key_alpn . "=" . (svcb_alpn | ('\"' . svcb_alpn . '\"')));
+ svcb_param_mandatory = (svcb_key_mandatory . "=" . (svcb_mandat | ('\"' . svcb_mandat . '\"')));
+ svcb_param_alpn = (svcb_key_alpn . "=" . (svcb_alpn | ('\"' . svcb_alpn . '\"')));
svcb_param_ndalpn = (svcb_key_ndalpn . svcb_empty);
- svcb_param_port = (svcb_key_port . "=" . (svcb_port | ('\"' . svcb_port . '\"')));
- svcb_param_ipv4hint = (svcb_key_ipv4hint . "=" . (svcb_ipv4 | ('\"' . svcb_ipv4 . '\"')));
- svcb_param_ech = (svcb_key_ech . "=" . (svcb_ech | ('\"' . svcb_ech . '\"')));
- svcb_param_ipv6hint = (svcb_key_ipv6hint . "=" . (svcb_ipv6 | ('\"' . svcb_ipv6 . '\"')));
+ svcb_param_port = (svcb_key_port . "=" . (svcb_port | ('\"' . svcb_port . '\"')));
+ svcb_param_ipv4hint = (svcb_key_ipv4hint . "=" . (svcb_ipv4 | ('\"' . svcb_ipv4 . '\"')));
+ svcb_param_ech = (svcb_key_ech . "=" . (svcb_ech | ('\"' . svcb_ech . '\"')));
+ svcb_param_ipv6hint = (svcb_key_ipv6hint . "=" . (svcb_ipv6 | ('\"' . svcb_ipv6 . '\"')));
+ svcb_param_dohpath = (svcb_key_dohpath . "=" . (svcb_dohpath | ('\"' . svcb_dohpath . '\"')));
+ svcb_param_ohttp = (svcb_key_ohttp . svcb_empty);
svcb_param_any =
(svcb_param_generic | svcb_param_mandatory | svcb_param_alpn |
svcb_param_ndalpn | svcb_param_port | svcb_param_ipv4hint |
- svcb_param_ech | svcb_param_ipv6hint
+ svcb_param_ech | svcb_param_ipv6hint | svcb_param_dohpath |
+ svcb_param_ohttp
) >_svcb_param_init %_svcb_param_exit;
svcb_params_ :=
((sep . svcb_param_any)* . sep?) >_svcb_params_init
@@ -2092,6 +2101,7 @@
fcall r_data_mx;
case KNOT_RRTYPE_TXT:
case KNOT_RRTYPE_SPF:
+ case KNOT_RRTYPE_WALLET:
fcall r_data_txt;
case KNOT_RRTYPE_AAAA:
fcall r_data_aaaa;
@@ -2205,6 +2215,7 @@
case KNOT_RRTYPE_CAA:
case KNOT_RRTYPE_SVCB:
case KNOT_RRTYPE_HTTPS:
+ case KNOT_RRTYPE_WALLET:
fcall nonempty_hex_r_data;
// Next types can have empty rdata.
case KNOT_RRTYPE_APL:
@@ -2289,6 +2300,7 @@
| "CAA"i %{ s->r_type = KNOT_RRTYPE_CAA; }
| "SVCB"i %{ s->r_type = KNOT_RRTYPE_SVCB; }
| "HTTPS"i %{ s->r_type = KNOT_RRTYPE_HTTPS; }
+ | "WALLET"i %{ s->r_type = KNOT_RRTYPE_WALLET; }
| "TYPE"i . type_number
) $!_r_type_error;
# END