1 #include "private.h"
2
3 #include <wdns.h>
4
5 bool loadfunc(uint8_t *, size_t);
6 void freefunc(void);
7 bool testfunc(void);
8
9 wdns_message_t m;
10
11 bool
loadfunc(uint8_t * data,size_t len)12 loadfunc(uint8_t *data, size_t len)
13 {
14 wdns_res res;
15 res = wdns_parse_message(&m, data, len);
16 if (res != wdns_res_success)
17 return (false);
18 return (true);
19 }
20
21 void
freefunc(void)22 freefunc(void)
23 {
24 wdns_clear_message(&m);
25 }
26
27
28 static void
print_data(const uint8_t * d,size_t len)29 print_data(const uint8_t *d, size_t len) {
30 while (len-- != 0)
31 fprintf(stderr, "%02x", *(d++));
32 fprintf(stderr, "\n");
33 }
34
35 bool
testfunc(void)36 testfunc(void)
37 {
38 wdns_rrset_array_t *a;
39 wdns_rrset_t *rrset;
40 size_t sz;
41 uint8_t *buf;
42
43 for (size_t sec = WDNS_MSG_SEC_ANSWER; sec < WDNS_MSG_SEC_MAX; sec++) {
44 a = &m.sections[sec];
45 for (size_t n = 0; n < a->n_rrsets; n++) {
46 rrset = &a->rrsets[n];
47 wdns_serialize_rrset(rrset, NULL, &sz);
48 buf = alloca(sz);
49 wdns_serialize_rrset(rrset, buf, NULL);
50 print_data(buf, sz);
51 }
52 }
53 return (true);
54 }
55