File: ubhook.h

package info (click to toggle)
dnssec-trigger 0.17%2Brepack-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,896 kB
  • sloc: ansic: 18,697; sh: 977; makefile: 494; xml: 444; objc: 421; cpp: 18
file content (168 lines) | stat: -rw-r--r-- 5,479 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/*
 * ubhook.h - dnssec-trigger unbound control hooks for adjusting that server
 *
 * Copyright (c) 2011, NLnet Labs. All rights reserved.
 *
 * This software is open source.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * 
 * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 * 
 * Neither the name of the NLNET LABS nor the names of its contributors may
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * \file
 *
 * This file contains the unbound hooks for adjusting the unbound validating
 * DNSSEC resolver.
 */

#ifdef FWD_ZONES_SUPPORT

#include "connection_list.h"

#endif

#ifndef UBHOOKS_H
#define UBHOOKS_H
struct cfg;
struct probe_ip;

/**
 * Set the unbound server to go to the authorities
 * @param cfg: the config options.
 */
void hook_unbound_auth(struct cfg* cfg);

/**
 * Set the unbound server to go to the given cache
 * @param cfg: the config options.
 */
void hook_unbound_cache(struct cfg* cfg, const char* ip);

/**
 * Set the unbound server to go to the working probed servers. 
 * @param cfg: the config options.
 * @param list: the working servers in this list are used.
 */
void hook_unbound_cache_list(struct cfg* cfg, struct probe_ip* list);

/**
 * Set the unbound server to go dark.  It gets no connections.
 * In reality, it sets unbound to forward to 127.0.0.127 and thus no upstream.
 * Unbound by default does not send queries to 127/8.
 * @param cfg: the config options.
 */
void hook_unbound_dark(struct cfg* cfg);

/* IP address that makes unbound go dark, no upstream. unbound has
 * donotquery 127.0.0.0/8 by default */
#define UNBOUND_DARK_IP "127.0.0.127"

/**
 * Detect if unbound supports the tcp-upstream option (since 1.4.13).
 * @param cfg: the config options.
 */
int hook_unbound_supports_tcp_upstream(struct cfg* cfg);

/**
 * Detect if unbound supports the ssl-upstream option (since 1.4.14).
 * @param cfg: the config options.
 */
int hook_unbound_supports_ssl_upstream(struct cfg* cfg);

/**
 * Set unbound to use tcp upstream.
 * @param cfg: the config options.
 * @param tcp80_ip4: if true, use those IP addresses.
 * @param tcp80_ip6: if true, use those IP addresses.
 * @param tcp443_ip4: if true, use those IP addresses.
 * @param tcp443_ip6: if true, use those IP addresses.
 */
void hook_unbound_tcp_upstream(struct cfg* cfg, int tcp80_ip4, int tcp80_ip6,
	int tcp443_ip4, int tcp443_ip6);

/**
 * Set unbound to use ssl upstream.
 * @param cfg: the config options.
 * @param ssl443_ip4: if true, use those IP addresses.
 * @param ssl443_ip6: if true, use those IP addresses.
 */
void hook_unbound_ssl_upstream(struct cfg* cfg, int ssl443_ip4, int ssl443_ip6);

#ifdef FWD_ZONES_SUPPORT

/**
 * Run unbound list_forwards and parse output into the return structure
 */
struct nm_connection_list hook_unbound_list_forwards(struct cfg* cfg);

/**
 * For testing purposes only.
 */
struct nm_connection_list hook_unbound_list_forwards_inner(struct cfg* cfg, FILE *fp);

/**
 * Run unbound list_local_zones and parse output into the return structure
 */
struct string_list hook_unbound_list_local_zones(struct cfg* cfg);

/**
 * For testing purposes only.
 */
struct string_list hook_unbound_list_local_zones_inner(struct cfg* cfg, FILE *fp);

/**
 * 
 */
int hook_unbound_add_forward_zone_from_connection(struct nm_connection *con);
int hook_unbound_add_forward_zone(struct string_buffer zone, struct string_buffer servers);
int hook_unbound_add_forward_zone_inner(struct string_buffer exe, struct string_buffer zone, struct string_buffer servers);

/**
 * 
 */
int hook_unbound_remove_forward_zone(struct string_buffer zone);
int hook_unbound_remove_forward_zone_inner(struct string_buffer exe, struct string_buffer zone);


/**
 * Call unbound-control local_zone <zone> <type>
 */
int hook_unbound_add_local_zone(struct string_buffer zone, struct string_buffer type);
int hook_unbound_add_local_zone_inner(struct string_buffer exe, struct string_buffer zone, struct string_buffer type);


/**
 * Call unbound-control local_zone_remove <zone> <type>
 */
int hook_unbound_remove_local_zone(struct string_buffer zone);
int hook_unbound_remove_local_zone_inner(struct string_buffer exe, struct string_buffer zone);


#endif

#endif /* UBHOOKS_H */