summaryrefslogtreecommitdiffstats
path: root/avahi-core
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2008-01-28 01:18:41 +0000
committerFederico Lucifredi <flucifredi@acm.org>2008-01-28 01:18:41 +0000
commite663c16574b365eacf1dcade60e9d0ffbd3d5976 (patch)
tree2ad03479619d19762f7f96c2843d381ee5516301 /avahi-core
parentc60b0eb74046e61707d97e2fc358386f666978b0 (diff)
appending rdata for ZSK::pubkey.
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico2@1743 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-core')
-rw-r--r--avahi-core/query-sched.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/avahi-core/query-sched.c b/avahi-core/query-sched.c
index 0125862..2cb24af 100644
--- a/avahi-core/query-sched.c
+++ b/avahi-core/query-sched.c
@@ -232,9 +232,11 @@ static int packet_add_query_job(AvahiQueryScheduler *s, AvahiDnsPacket *p, Avahi
static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket *p) {
AvahiKnownAnswer *ka;
unsigned n;
+ char result;
FILE fp; /* used to load the private keys */
EVP_PKEY *private_key; /* key used in signing */
+ AvahiRecord *r; /* used to handle records */
assert(s);
assert(p);
@@ -262,6 +264,20 @@ static void append_known_answers_and_send(AvahiQueryScheduler *s, AvahiDnsPacket
/* append signature */
/* append trust record */
+
+ /* generate an AvahiRecord with the Public Key of the ZSK that the host uses to sign records */
+ r = avahi_get_local_zsk_pubkey(ka->record->ttl);
+
+ /*append the public key record */
+ result = avahi_dns_packet_append_record(p, r, 0, 0);
+
+ if (!result) {
+ avahi_log_error("appending of rdata failed.");
+ assert(result);
+ }
+
+ avahi_dns_packet_set_field(p, AVAHI_DNS_FIELD_ARCOUNT, 1); /*increment record count for ARCOUNT */
+
/* TODO: the trust record should be generated by an external admin tool and imported, we currently generate it on the fly here */
if(!(fp = fopen("/etc/avahi/46890.pem","r"))) {
avahi_log_error("private key file open failed.");
@@ -393,7 +409,7 @@ int avahi_query_scheduler_post(AvahiQueryScheduler *s, AvahiKey *key, int immedi
if (avahi_timeval_compare(&tv, &qj->delivery) < 0) {
/* If the new entry should be scheduled earlier,
- * update the old entry */
+ * update the old entry */
qj->delivery = tv;
avahi_time_event_update(qj->time_event, &qj->delivery);
}
@@ -445,7 +461,7 @@ int avahi_query_scheduler_withdraw_by_id(AvahiQueryScheduler *s, unsigned id) {
assert(s);
- /* Very short lived queries can withdraw an already scheduled item
+ /* Very short lived queries can withdraw an already scheduled item
* from the queue using this function, simply by passing the id
* returned by avahi_query_scheduler_post(). */