OpenDNSSEC-signer
1.4.1
Main Page
Data Structures
Files
File List
Globals
signer
src
wire
query.h
Go to the documentation of this file.
1
/*
2
* $Id: query.h 4958 2011-04-18 07:11:09Z matthijs $
3
*
4
* Copyright (c) 2011 NLNet Labs. All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
19
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
21
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
23
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
25
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*
27
*/
28
34
#ifndef WIRE_QUERY_H
35
#define WIRE_QUERY_H
36
37
#include "config.h"
38
#include "
shared/allocator.h
"
39
#include "
signer/zone.h
"
40
#include "
wire/buffer.h
"
41
#include "
wire/edns.h
"
42
#include "
wire/tsig.h
"
43
44
#define UDP_MAX_MESSAGE_LEN 512
45
#define TCP_MAX_MESSAGE_LEN 65535
46
#define QUERY_RESPONSE_MAX_RRSET 10
/* should be enough */
47
48
enum
query_enum
{
49
QUERY_PROCESSED
= 0,
50
QUERY_DISCARDED
,
51
QUERY_AXFR
,
52
QUERY_IXFR
53
};
54
typedef
enum
query_enum
query_state
;
55
60
typedef
struct
query_struct
query_type
;
61
struct
query_struct
{
62
/* Memory allocator */
63
allocator_type
*
allocator
;
64
/* Query from addres */
65
struct
sockaddr_storage
addr
;
66
socklen_t
addrlen
;
67
/* Maximum supported query size */
68
size_t
maxlen
;
69
size_t
reserved_space
;
70
/* TSIG */
71
tsig_rr_type
*
tsig_rr
;
72
/* EDNS */
73
edns_rr_type
*
edns_rr
;
74
/* TCP */
75
int
tcp
;
76
uint16_t
tcplen
;
77
buffer_type
*
buffer
;
78
/* QNAME, QTYPE, QCLASS */
79
80
/* Zone */
81
zone_type
*
zone
;
82
/* Compression */
83
84
/* AXFR IXFR */
85
FILE*
axfr_fd
;
86
uint32_t
serial
;
87
size_t
startpos
;
88
/* Bits */
89
unsigned
axfr_is_done
: 1;
90
unsigned
tsig_prepare_it
: 1;
91
unsigned
tsig_update_it
: 1;
92
unsigned
tsig_sign_it
: 1;
93
};
94
99
typedef
struct
response_struct
response_type
;
100
struct
response_struct
{
101
size_t
rrset_count
;
102
ldns_pkt_section
sections
[
QUERY_RESPONSE_MAX_RRSET
];
103
rrset_type
*
rrsets
[
QUERY_RESPONSE_MAX_RRSET
];
104
};
105
111
query_type
*
query_create
(
void
);
112
118
void
query_prepare
(
query_type
* q);
119
127
query_state
query_process
(
query_type
* q,
void
* engine);
128
136
void
query_reset
(
query_type
* q,
size_t
maxlen,
int
is_tcp);
137
144
void
query_add_optional
(
query_type
* q,
void
* engine);
145
153
int
query_add_rr
(
query_type
* q, ldns_rr* rr);
154
160
void
query_cleanup
(
query_type
* q);
161
162
#endif
/* WIRE_QUERY_H */
Generated on Wed Jul 17 2013 07:14:23 for OpenDNSSEC-signer by
1.8.4