OpenDNSSEC-signer
1.4.5
Main Page
Data Structures
Files
File List
Globals
signer
src
wire
xfrd.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011 NLNet Labs. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
6
* are met:
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
*
13
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
17
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
19
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
21
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
22
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
23
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
*
25
*/
26
32
#ifndef WIRE_XFRD_H
33
#define WIRE_XFRD_H
34
35
#include "config.h"
36
#include "
shared/allocator.h
"
37
#include "
shared/locks.h
"
38
#include "
shared/status.h
"
39
#include "
wire/acl.h
"
40
#include "
wire/buffer.h
"
41
#include "
wire/netio.h
"
42
#include "
wire/tsig.h
"
43
44
#include <stdint.h>
45
#include <time.h>
46
47
#define XFRD_MAX_ROUNDS 3
/* max number of rounds along the masters */
48
#define XFRD_MAX_UDP 100
/* max number of udp sockets at a time for ixfr */
49
#define XFRD_NO_IXFR_CACHE 172800
/* 48h before retrying ixfr after notimpl */
50
#define XFRD_TCP_TIMEOUT 120
/* seconds, before a tcp request times out */
51
#define XFRD_UDP_TIMEOUT 5
/* seconds, before a udp request times out */
52
57
enum
xfrd_pkt_enum
{
58
XFRD_PKT_BAD
,
/* drop the packet/connection */
59
XFRD_PKT_MORE
,
/* more packets to follow on tcp */
60
XFRD_PKT_NOTIMPL
,
/* server responded with NOTIMPL or FORMATERR */
61
XFRD_PKT_TC
,
/* try tcp connection */
62
XFRD_PKT_XFR
,
/* server responded with transfer*/
63
XFRD_PKT_NEWLEASE
/* no changes, soa OK */
64
};
65
typedef
enum
xfrd_pkt_enum
xfrd_pkt_status
;
66
67
/*
68
* Zone transfer SOA information.
69
*/
70
typedef
struct
soa_struct
soa_type
;
71
struct
soa_struct
{
72
/* owner equals zone apex */
73
/* class equals zone klass */
74
/* type is SOA */
75
uint32_t
ttl
;
76
/* rdata count = 7 */
77
uint8_t
mname
[
MAXDOMAINLEN
+ 2];
78
uint8_t
rname
[
MAXDOMAINLEN
+ 2];
79
uint32_t
serial
;
80
uint32_t
refresh
;
81
uint32_t
retry
;
82
uint32_t
expire
;
83
uint32_t
minimum
;
84
};
85
90
typedef
struct
xfrd_struct
xfrd_type
;
91
struct
xfrd_struct
92
{
93
allocator_type
*
allocator
;
94
void
*
xfrhandler
;
95
void
*
zone
;
96
lock_basic_type
serial_lock
;
/* mutexes soa serial management */
97
lock_basic_type
rw_lock
;
/* mutexes <zone>.xfrd file */
98
99
/* transfer request handling */
100
int
tcp_conn
;
101
int
round_num
;
102
int
master_num
;
103
int
next_master
;
104
acl_type
*
master
;
105
106
/* soa serial management */
107
uint32_t
serial_xfr
;
108
uint32_t
serial_notify
;
109
uint32_t
serial_disk
;
110
time_t
serial_xfr_acquired
;
111
time_t
serial_notify_acquired
;
112
time_t
serial_disk_acquired
;
113
soa_type
soa
;
114
115
/* timeout and event handling */
116
struct
timespec
timeout
;
117
netio_handler_type
handler
;
118
119
/* packet handling */
120
uint16_t
query_id
;
121
uint32_t
msg_seq_nr
;
122
uint32_t
msg_old_serial
;
123
uint32_t
msg_new_serial
;
124
size_t
msg_rr_count
;
125
uint8_t
msg_is_ixfr
;
126
tsig_rr_type
*
tsig_rr
;
127
128
xfrd_type
*
tcp_waiting_next
;
129
xfrd_type
*
udp_waiting_next
;
130
unsigned
tcp_waiting
: 1;
131
unsigned
udp_waiting
: 1;
132
133
};
134
142
xfrd_type
*
xfrd_create
(
void
* xfrhandler,
void
* zone);
143
149
void
xfrd_set_timer_now
(
xfrd_type
* xfrd);
150
156
void
xfrd_set_timer_retry
(
xfrd_type
* xfrd);
157
163
void
xfrd_set_timer_refresh
(
xfrd_type
* xfrd);
164
172
socklen_t
xfrd_acl_sockaddr_to
(
acl_type
* acl,
173
struct
sockaddr_storage* to);
174
181
void
xfrd_cleanup
(
xfrd_type
* xfrd,
int
backup);
182
183
#endif
/* WIRE_XFRD_H */
Generated on Tue Jul 22 2014 00:37:52 for OpenDNSSEC-signer by
1.8.1.2