diff options
Diffstat (limited to 'src/libzscanner/scanner_body.rl')
-rw-r--r-- | src/libzscanner/scanner_body.rl | 28 |
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 |