/*% Print AAAA record fully expanded */
#define DNS_STYLEFLAG_EXPANDAAAA 0x00000020ULL
+/*% Print non-initial Service Parameter Keys in backward-compatible format */
+#define DNS_STYLEFLAG_SVCPARAMKEYCOMPAT 0x00000040ULL
+
#define DNS_RDATA_DOWNCASE DNS_NAME_DOWNCASE
#define DNS_RDATA_CHECKNAMES DNS_NAME_CHECKNAMES
#define DNS_RDATA_CHECKNAMESFAIL DNS_NAME_CHECKNAMESFAIL
static const char *
svcparamkey(unsigned short value, enum encoding *encoding, char *buf,
- size_t len) {
+ size_t len, bool compat) {
size_t i;
int n;
for (i = 0; i < ARRAY_SIZE(sbpr); i++) {
- if (sbpr[i].value == value && sbpr[i].initial) {
+ if (sbpr[i].value == value && (sbpr[i].initial || !compat)) {
*encoding = sbpr[i].encoding;
return sbpr[i].name;
}
char buf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255")];
unsigned short num;
int n;
+ bool compat = (tctx->flags & DNS_STYLEFLAG_SVCPARAMKEYCOMPAT) != 0;
REQUIRE(rdata->length != 0);
INSIST(region.length >= 2);
num = uint16_fromregion(®ion);
isc_region_consume(®ion, 2);
- RETERR(str_totext(svcparamkey(num, &encoding, buf, sizeof(buf)),
- target));
+ RETERR(str_totext(
+ svcparamkey(num, &encoding, buf, sizeof(buf), compat),
+ target));
INSIST(region.length >= 2);
num = uint16_fromregion(®ion);
num = uint16_fromregion(&r);
isc_region_consume(&r, 2);
RETERR(str_totext(svcparamkey(num, &encoding,
- buf, sizeof(buf)),
+ buf, sizeof(buf),
+ compat),
target));
if (r.length != 0) {
RETERR(str_totext(",", target));