]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: OPENPGPKEY records
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 2 Feb 2015 01:54:15 +0000 (20:54 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 28 Jan 2016 23:35:02 +0000 (18:35 -0500)
src/resolve/dns-type.h
src/resolve/resolved-dns-packet.c
src/resolve/resolved-dns-rr.c

index 60ff160383315b86b18c169b7fad75df0501d6f5..2eda670ed42d7397c1cf1a1c58214dfcd6b31a81 100644 (file)
@@ -87,6 +87,7 @@ enum {
         DNS_TYPE_TALINK,
         DNS_TYPE_CDS,
         DNS_TYPE_CDNSKEY,
+        DNS_TYPE_OPENPGPKEY,
 
         DNS_TYPE_SPF        = 0x63,
         DNS_TYPE_NID,
index ee3d15103411150c905bdafaf3f0df5babd9fe4e..4492b33cdbb23ac17e9cbf295fcdfc52ffea1a37 100644 (file)
@@ -1075,6 +1075,7 @@ int dns_packet_append_rr(DnsPacket *p, const DnsResourceRecord *rr, size_t *star
                 break;
 
         case DNS_TYPE_OPT:
+        case DNS_TYPE_OPENPGPKEY:
         case _DNS_TYPE_INVALID: /* unparseable */
         default:
 
@@ -2018,6 +2019,7 @@ int dns_packet_read_rr(DnsPacket *p, DnsResourceRecord **ret, bool *ret_cache_fl
                 break;
 
         case DNS_TYPE_OPT: /* we only care about the header of OPT for now. */
+        case DNS_TYPE_OPENPGPKEY:
         default:
         unparseable:
                 r = dns_packet_read_memdup(p, rdlength, &rr->generic.data, &rr->generic.size, NULL);
index 1db50993096d65fbd6554838ff42ac2317cb743f..6f58d175c140b5e6c18a19d0afb9d3ccad08bbba 100644 (file)
@@ -491,6 +491,7 @@ DnsResourceRecord* dns_resource_record_unref(DnsResourceRecord *rr) {
                         free(rr->tlsa.data);
                         break;
 
+                case DNS_TYPE_OPENPGPKEY:
                 default:
                         free(rr->generic.data);
                 }
@@ -1105,6 +1106,23 @@ const char *dns_resource_record_to_string(DnsResourceRecord *rr) {
                 break;
         }
 
+        case DNS_TYPE_OPENPGPKEY: {
+                int n;
+
+                r = asprintf(&s, "%s %n",
+                             k,
+                             &n);
+                if (r < 0)
+                        return NULL;
+
+                r = base64_append(&s, n,
+                                  rr->generic.data, rr->generic.size,
+                                  8, columns());
+                if (r < 0)
+                        return NULL;
+                break;
+        }
+
         default:
                 t = hexmem(rr->generic.data, rr->generic.size);
                 if (!t)
@@ -1378,6 +1396,7 @@ static void dns_resource_record_hash_func(const void *i, struct siphash *state)
                 siphash24_compress(&rr->tlsa.data, rr->tlsa.data_size, state);
                 break;
 
+        case DNS_TYPE_OPENPGPKEY:
         default:
                 siphash24_compress(rr->generic.data, rr->generic.size, state);
                 break;