diff options
Diffstat (limited to 'usr.sbin/nsd/zparser.y')
-rw-r--r-- | usr.sbin/nsd/zparser.y | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/usr.sbin/nsd/zparser.y b/usr.sbin/nsd/zparser.y index 664040071d1..d82347893bc 100644 --- a/usr.sbin/nsd/zparser.y +++ b/usr.sbin/nsd/zparser.y @@ -68,6 +68,7 @@ nsec3_add_params(const char* hash_algo_str, const char* flag_str, %token <type> T_AXFR T_MAILB T_MAILA T_DS T_DLV T_SSHFP T_RRSIG T_NSEC T_DNSKEY %token <type> T_SPF T_NSEC3 T_IPSECKEY T_DHCID T_NSEC3PARAM T_TLSA T_URI %token <type> T_NID T_L32 T_L64 T_LP T_EUI48 T_EUI64 T_CAA T_CDS T_CDNSKEY +%token <type> T_CSYNC /* other tokens */ %token DOLLAR_TTL DOLLAR_ORIGIN NL SP @@ -632,6 +633,8 @@ type_and_rdata: | T_CDS sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } | T_CDNSKEY sp rdata_dnskey | T_CDNSKEY sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } + | T_CSYNC sp rdata_csync + | T_CSYNC sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } | T_URI sp rdata_uri | T_URI sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } | T_UTYPE sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } @@ -1050,6 +1053,17 @@ rdata_caa: STR sp STR sp STR trail } ; +/* RFC7477 */ +rdata_csync: STR sp STR nsec_seq + { + zadd_rdata_wireformat(zparser_conv_serial(parser->region, $1.str)); + zadd_rdata_wireformat(zparser_conv_short(parser->region, $3.str)); + zadd_rdata_wireformat(zparser_conv_nsec(parser->region, nsecbits)); /* nsec bitlist */ + memset(nsecbits, 0, sizeof(nsecbits)); + nsec_highest_rcode = 0; + } + ; + rdata_unknown: URR sp STR sp str_sp_seq trail { /* $2 is the number of octets, currently ignored */ |