On Tue, May 18, 2021 at 10:24:00PM -0500, Matthew Martin wrote:
> Sync the DNS types with IANA[1] and upstream[2]. With this the Type65
> queries show up as HTTPS.
>
> Removed the UNSPECA type parsing as IANA has that query type number
> assigned to NID now.
>
> Also added a const on ns_class2str.
>
> 1: https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml
> 2: https://github.com/the-tcpdump-group/tcpdump/pull/912
ping
diff --git nameser.h nameser.h
index ddb5e065c4a..616e0028cff 100644
--- nameser.h
+++ nameser.h
@@ -145,25 +145,47 @@
#define T_ATMA 34 /* ATM Address */
#define T_NAPTR 35 /* Naming Authority PoinTeR */
#define T_KX 36 /* Key Exchanger */
-#define T_CERT 37 /* certificate */
+#define T_CERT 37 /* Certificates in the DNS */
#define T_A6 38 /* IP6 address */
#define T_DNAME 39 /* non-terminal redirection */
-#define T_SINK 40 /* SINK */
+#define T_SINK 40 /* unknown */
#define T_OPT 41 /* EDNS0 option (meta-RR) */
-#define T_APL 42 /* APL */
+#define T_APL 42 /* lists of address prefixes */
#define T_DS 43 /* Delegation Signer */
-#define T_SSHFP 44 /* SSH Key Fingerprint */
+#define T_SSHFP 44 /* SSH Fingerprint */
#define T_IPSECKEY 45 /* IPsec keying material */
-#define T_RRSIG 46 /* RRSIG */
-#define T_NSEC 47 /* NSEC */
-#define T_DNSKEY 48 /* DNSKEY */
+#define T_RRSIG 46 /* new security signature */
+#define T_NSEC 47 /* provable insecure information */
+#define T_DNSKEY 48 /* new security key */
+#define T_DHCID 49 /* DHCP IDentifier */
+#define T_NSEC3 50 /* Next SECure record v3 */
+#define T_NSEC3PARAM 51 /* NSEC3 PARAMeter */
+#define T_TLSA 52 /* TLS Authentication */
+#define T_SMIMEA 53 /* S/MIME Authentication */
+/* Unassigned */
+#define T_HIP 55 /* Host Identity Protocol */
+#define T_NINFO 56 /* zone status information */
+#define T_RKEY 57 /* Record encryption KEY */
+#define T_TALINK 58 /* Trust Anchor LINK */
+#define T_CDS 59 /* Child Delegation Signer */
+#define T_CDNSKEY 60 /* Child DNSKEY */
+#define T_OPENPGPKEY 61 /* OpenPGP KEY */
+#define T_CSYNC 62 /* Child to parent
SYNCronization */
+#define T_ZONEMD 63 /* ZONE data Message Digest */
+#define T_SVCB 64 /* SerViCe Binding */
+#define T_HTTPS 65 /* HTTPS binding */
/* non standard */
#define T_SPF 99 /* sender policy framework */
#define T_UINFO 100 /* user (finger) information */
#define T_UID 101 /* user ID */
#define T_GID 102 /* group ID */
#define T_UNSPEC 103 /* Unspecified format (binary data) */
-#define T_UNSPECA 104 /* "unspecified ascii". Ugly MIT hack */
+#define T_NID 104 /* Node IDentifier */
+#define T_L32 105 /* Locator 32-bit */
+#define T_L64 106 /* Locator 64-bit */
+#define T_LP 107 /* Locator Pointer */
+#define T_EUI48 108 /* an EUI-48 address */
+#define T_EUI64 109 /* an EUI-64 address */
/* Query type values which do not appear in resource records */
#define T_TKEY 249 /* Transaction Key [RFC2930] */
#define T_TSIG 250 /* Transaction Signature [RFC2845] */
@@ -172,6 +194,13 @@
#define T_MAILB 253 /* transfer mailbox records */
#define T_MAILA 254 /* transfer mail agent records
*/
#define T_ANY 255 /* wildcard match */
+#define T_URI 256 /* uri records [RFC7553] */
+#define T_CAA 257 /* Certification Authority
Authorization */
+#define T_AVC 258 /* Application Visibility and Control */
+#define T_DOA 259 /* Digital Object Architecture */
+#define T_AMTRELAY 260 /* Automatic Multicast Tunneling RELAY
*/
+#define T_TA 32768 /* DNSSEC Trust Authorities */
+#define T_DLV 32769 /* DNSSEC Lookaside Validation */
/*
* Values for class field
diff --git print-domain.c print-domain.c
index f5d74e8227c..023f8020738 100644
--- print-domain.c
+++ print-domain.c
@@ -252,7 +252,7 @@ ns_cprint(const u_char *cp)
}
/* https://www.iana.org/assignments/dns-parameters */
-struct tok ns_type2str[] = {
+const struct tok ns_type2str[] = {
{ T_A, "A" }, /* RFC 1035 */
{ T_NS, "NS" }, /* RFC 1035 */
{ T_MD, "MD" }, /* RFC 1035 */
@@ -270,30 +270,30 @@ struct tok ns_type2str[] = {
{ T_MX, "MX" }, /* RFC 1035 */
{ T_TXT, "TXT" }, /* RFC 1035 */
{ T_RP, "RP" }, /* RFC 1183 */
- { T_AFSDB, "AFSDB" }, /* RFC 1183 */
+ { T_AFSDB, "AFSDB" }, /* RFC 5864 */
{ T_X25, "X25" }, /* RFC 1183 */
{ T_ISDN, "ISDN" }, /* RFC 1183 */
{ T_RT, "RT" }, /* RFC 1183 */
{ T_NSAP, "NSAP" }, /* RFC 1706 */
- { T_NSAP_PTR, "NSAP_PTR" },
- { T_SIG, "SIG" }, /* RFC 2535 */
- { T_KEY, "KEY" }, /* RFC 2535 */
+ { T_NSAP_PTR, "NSAP_PTR" }, /* RFC 1706 */
+ { T_SIG, "SIG" }, /* RFC 3008 */
+ { T_KEY, "KEY" }, /* RFC 3110 */
{ T_PX, "PX" }, /* RFC 2163 */
{ T_GPOS, "GPOS" }, /* RFC 1712 */
- { T_AAAA, "AAAA" }, /* RFC 1886 */
+ { T_AAAA, "AAAA" }, /* RFC 3596 */
{ T_LOC, "LOC" }, /* RFC 1876 */
- { T_NXT, "NXT" }, /* RFC 2535 */
+ { T_NXT, "NXT" }, /* RFC 3755 */
{ T_EID, "EID" }, /* Nimrod */
{ T_NIMLOC, "NIMLOC" }, /* Nimrod */
{ T_SRV, "SRV" }, /* RFC 2782 */
{ T_ATMA, "ATMA" }, /* ATM Forum */
- { T_NAPTR, "NAPTR" }, /* RFC 2168, RFC 2915 */
+ { T_NAPTR, "NAPTR" }, /* RFC 3403 */
{ T_KX, "KX" }, /* RFC 2230 */
- { T_CERT, "CERT" }, /* RFC 2538 */
- { T_A6, "A6" }, /* RFC 2874 */
- { T_DNAME, "DNAME" }, /* RFC 2672 */
+ { T_CERT, "CERT" }, /* RFC 4398 */
+ { T_A6, "A6" }, /* RFC 6563 */
+ { T_DNAME, "DNAME" }, /* RFC 6672 */
{ T_SINK, "SINK" },
- { T_OPT, "OPT" }, /* RFC 2671 */
+ { T_OPT, "OPT" }, /* RFC 6891 */
{ T_APL, "APL" }, /* RFC 3123 */
{ T_DS, "DS" }, /* RFC 4034 */
{ T_SSHFP, "SSHFP" }, /* RFC 4255 */
@@ -301,23 +301,51 @@ struct tok ns_type2str[] = {
{ T_RRSIG, "RRSIG" }, /* RFC 4034 */
{ T_NSEC, "NSEC" }, /* RFC 4034 */
{ T_DNSKEY, "DNSKEY" }, /* RFC 4034 */
- { T_SPF, "SPF" }, /*
RFC-schlitt-spf-classic-02.txt */
+ { T_DHCID, "DHCID" }, /* RFC 4071 */
+ { T_NSEC3, "NSEC3" }, /* RFC 5155 */
+ { T_NSEC3PARAM, "NSEC3PARAM" }, /* RFC 5155 */
+ { T_TLSA, "TLSA" }, /* RFC 6698 */
+ { T_SMIMEA, "SMIMEA" }, /* RFC 8162 */
+ { T_HIP, "HIP" }, /* RFC 8005 */
+ { T_NINFO, "NINFO" },
+ { T_RKEY, "RKEY" },
+ { T_TALINK, "TALINK" },
+ { T_CDS, "CDS" }, /* RFC 7344 */
+ { T_CDNSKEY, "CDNSKEY" }, /* RFC 7344 */
+ { T_OPENPGPKEY, "OPENPGPKEY" }, /* RFC 7929 */
+ { T_CSYNC, "CSYNC" }, /* RFC 7477 */
+ { T_ZONEMD, "ZONEMD" }, /* RFC 8976 */
+ { T_SVCB, "SVCB" },
+ { T_HTTPS, "HTTPS" },
+ { T_SPF, "SPF" }, /* RFC 7208 */
{ T_UINFO, "UINFO" },
{ T_UID, "UID" },
{ T_GID, "GID" },
{ T_UNSPEC, "UNSPEC" },
- { T_UNSPECA, "UNSPECA" },
+ { T_NID, "NID" }, /* RFC 6742 */
+ { T_L32, "L32" }, /* RFC 6742 */
+ { T_L64, "L64" }, /* RFC 6742 */
+ { T_LP, "LP" }, /* RFC 6742 */
+ { T_EUI48, "EUI48" }, /* RFC 7043 */
+ { T_EUI64, "EUI64" }, /* RFC 7043 */
{ T_TKEY, "TKEY" }, /* RFC 2930 */
- { T_TSIG, "TSIG" }, /* RFC 2845 */
+ { T_TSIG, "TSIG" }, /* RFC 8945 */
{ T_IXFR, "IXFR" }, /* RFC 1995 */
- { T_AXFR, "AXFR" }, /* RFC 1035 */
+ { T_AXFR, "AXFR" }, /* RFC 5936 */
{ T_MAILB, "MAILB" }, /* RFC 1035 */
{ T_MAILA, "MAILA" }, /* RFC 1035 */
- { T_ANY, "ANY" },
+ { T_ANY, "ANY" }, /* RFC 8482 */
+ { T_URI, "URI" }, /* RFC 7553 */
+ { T_CAA, "CAA" }, /* RFC 8659 */
+ { T_AVC, "AVC" },
+ { T_DOA, "DOA" },
+ { T_AMTRELAY, "AMTRELAY" }, /* RFC 8777 */
+ { T_TA, "TA" },
+ { T_DLV, "DLV" }, /* RFC 8749 */
{ 0, NULL }
};
-struct tok ns_class2str[] = {
+const struct tok ns_class2str[] = {
{ C_IN, "IN" }, /* Not used */
{ C_CHAOS, "CHAOS" },
{ C_HS, "HS" },
@@ -527,13 +555,6 @@ ns_rprint(const u_char *cp, const u_char *bp, int is_mdns)
printf(" DO");
break;
- case T_UNSPECA: /* One long string */
- if (!TTEST2(*cp, len))
- return(NULL);
- if (fn_printn(cp, len, snapend))
- return(NULL);
- break;
-
case T_TSIG:
{
if (cp + len > snapend)