1/*
2 * answer.h -- manipulating query answers and encoding them.
3 *
4 * Copyright (c) 2001-2006, NLnet Labs. All rights reserved.
5 *
6 * See LICENSE for the license.
7 *
8 */
9
10#ifndef ANSWER_H
11#define ANSWER_H
12
13#include <sys/types.h>
14
15#include "dns.h"
16#include "namedb.h"
17#include "packet.h"
18#include "query.h"
19
20/*
21 * Structure used to keep track of RRsets that need to be stored in
22 * the answer packet.
23 */
24typedef struct answer answer_type;
25struct answer {
26	size_t rrset_count;
27	rrset_type *rrsets[MAXRRSPP];
28	domain_type *domains[MAXRRSPP];
29	rr_section_type section[MAXRRSPP];
30};
31
32
33void encode_answer(query_type *q, const answer_type *answer);
34
35
36void answer_init(answer_type *answer);
37
38/*
39 * Add the specified RRset to the answer in the specified section.  If
40 * the RRset is already present and in the same (or "higher") section
41 * return 0, otherwise return 1.
42 */
43int answer_add_rrset(answer_type *answer, rr_section_type section,
44		     domain_type *domain, rrset_type *rrset);
45
46
47#endif /* ANSWER_H */
48