From 4d4094049320ed938408c7c46aef7c8092bcaa15 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Thu, 17 Jan 2013 21:39:32 +0100 Subject: [PATCH] move WKS into action --- examples/dns.c | 7 +------ examples/rr.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/examples/dns.c b/examples/dns.c index 0456223b..f5915912 100644 --- a/examples/dns.c +++ b/examples/dns.c @@ -97,12 +97,7 @@ void set_rdata(struct dns_rr rr, HCountedArray *rdata) { // XXX Where is the length stored!? break; case 11: // WKS - rr.wks.address = p->ast->seq->elements[0]->uint; - rr.wks.protocol = p->ast->seq->elements[1]->uint; - rr.wks.len = p->ast->seq->elements[2]->seq->used; - rr.wks.bit_map = h_arena_malloc(rdata->arena, sizeof(uint8_t)*p->ast->seq->elements[2]->seq->used); - for (size_t i=0; i<rr.wks.len; ++i) - rr.wks.bit_map[i] = p->ast->seq->elements[2]->seq->elements[i]->uint; + rr.wks = *(dns_rr_wks_t *)p->ast->user; break; case 12: // PTR rr.ptr = *(dns_domain_t *)p->ast->user; diff --git a/examples/rr.c b/examples/rr.c index 5752fe91..83241d84 100644 --- a/examples/rr.c +++ b/examples/rr.c @@ -57,6 +57,19 @@ const HParsedToken* act_soa(const HParseResult *p) { return H_MAKE_TOKEN(dns_rr_soa_t, soa); } +const HParsedToken* act_wks(const HParseResult *p) { + dns_rr_wks_t *wks = H_MAKE(dns_rr_wks_t); + + wks->address = p->ast->seq->elements[0]->uint; + wks->protocol = p->ast->seq->elements[1]->uint; + wks->len = p->ast->seq->elements[2]->seq->used; + wks->bit_map = h_arena_malloc(p->arena, sizeof(uint8_t)*wks->len); + for (size_t i=0; i<wks->len; ++i) + wks->bit_map[i] = p->ast->seq->elements[2]->seq->elements[i]->uint; + + return H_MAKE_TOKEN(dns_rr_wks_t, wks); +} + #define RDATA_TYPE_MAX 16 const HParser* init_rdata(uint16_t type) { static const HParser *parsers[RDATA_TYPE_MAX+1]; -- GitLab