]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
utils: add class aliases INTERNET and CHAOS
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 13 Jun 2025 05:29:04 +0000 (07:29 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Sat, 14 Jun 2025 18:48:18 +0000 (20:48 +0200)
src/libknot/descriptor.c
tests/libknot/test_descriptor.c

index 61b16cf6ca76a70b9cb4b613f4f5fc8a07b923c9..dcd0eda26411850fe747b7261f68990c4e1cdb28 100644 (file)
 #include "libknot/descriptor.h"
 
 /*!
- * \brief Table with DNS classes.
+ * \brief Table with supported DNS classes.
  */
-static const char* dns_classes[] = {
-       [KNOT_CLASS_IN]   = "IN",
-       [KNOT_CLASS_CH]   = "CH",
-       [KNOT_CLASS_NONE] = "NONE",
-       [KNOT_CLASS_ANY]  = "ANY"
+static const char* dns_classes[][2] = {
+       [KNOT_CLASS_IN]   = { "IN", "INTERNET" },
+       [KNOT_CLASS_CH]   = { "CH", "CHAOS" },
+       [KNOT_CLASS_NONE] = { "NONE" },
+       [KNOT_CLASS_ANY]  = { "ANY" },
 };
 
 /*!
@@ -265,8 +265,8 @@ int knot_rrclass_to_string(const uint16_t rrclass,
 
        int ret;
 
-       if (rrclass <= KNOT_CLASS_ANY && dns_classes[rrclass] != NULL) {
-               ret = snprintf(out, out_len, "%s", dns_classes[rrclass]);
+       if (rrclass <= KNOT_CLASS_ANY && dns_classes[rrclass][0] != NULL) {
+               ret = snprintf(out, out_len, "%s", dns_classes[rrclass][0]);
        } else {
                ret = snprintf(out, out_len, "CLASS%u", rrclass);
        }
@@ -291,8 +291,9 @@ int knot_rrclass_from_string(const char *name, uint16_t *num)
 
        // Try to find the name in classes table.
        for (i = 0; i <= KNOT_CLASS_ANY; i++) {
-               if (dns_classes[i] != NULL &&
-                   strcasecmp(dns_classes[i], name) == 0) {
+               const char **row = dns_classes[i];
+               if ((row[0] != NULL && strcasecmp(row[0], name) == 0) ||
+                   (row[1] != NULL && strcasecmp(row[1], name) == 0)) {
                        *num = i;
                        return 0;
                }
index a71e48fadad4bfd562d8516f3874e724a9b24ec4..7c10fd63fa86df2aad70474fcec81b27565fcd89 100644 (file)
@@ -167,6 +167,9 @@ int main(int argc, char *argv[])
        ret = knot_rrclass_from_string("In", &num);
        ok(ret != -1, "get In num ret");
        ok(num == 1, "get In num");
+       ret = knot_rrclass_from_string("Internet", &num);
+       ok(ret != -1, "get In num ret");
+       ok(num == 1, "get In num");
 
        // 22. ANY
        ret = knot_rrclass_from_string("ANY", &num);