Electroneum
Loading...
Searching...
No Matches
localzone.h
Go to the documentation of this file.
1/*
2 * services/localzone.h - local zones authority service.
3 *
4 * Copyright (c) 2007, NLnet Labs. All rights reserved.
5 *
6 * This software is open source.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 *
15 * Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 *
19 * Neither the name of the NLNET LABS nor the names of its contributors may
20 * be used to endorse or promote products derived from this software without
21 * specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 */
35
41
42#ifndef SERVICES_LOCALZONE_H
43#define SERVICES_LOCALZONE_H
44#include "util/rbtree.h"
45#include "util/locks.h"
47#include "util/module.h"
48#include "services/view.h"
51struct regional;
52struct config_file;
53struct edns_data;
54struct query_info;
55struct sldns_buffer;
56struct comm_reply;
57struct config_strlist;
58
95
105
150
167
177
187
193
198void local_zones_delete(struct local_zones* zones);
199
207int local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg);
208
216int local_zone_cmp(const void* z1, const void* z2);
217
224int local_data_cmp(const void* d1, const void* d2);
225
231
248 uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype,
249 uint8_t* taglist, size_t taglen, int ignoretags);
250
264 uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype);
265
271void local_zones_print(struct local_zones* zones);
272
304int local_zones_answer(struct local_zones* zones, struct module_env* env,
305 struct query_info* qinfo, struct edns_data* edns, struct sldns_buffer* buf,
306 struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist,
307 size_t taglen, uint8_t* tagactions, size_t tagactionssize,
308 struct config_strlist** tag_datas, size_t tag_datas_size,
309 char** tagname, int num_tags, struct view* view);
310
318int local_zone_str2type(const char* str, enum localzone_type* t);
319
327
339 uint8_t* name, size_t len, int labs, uint16_t dclass);
340
354 uint8_t* name, size_t len, int labs, uint16_t dclass,
355 enum localzone_type tp);
356
363void local_zones_del_zone(struct local_zones* zones, struct local_zone* zone);
364
373int local_zones_add_RR(struct local_zones* zones, const char* rr);
374
385 uint8_t* name, size_t len, int labs, uint16_t dclass);
386
387
396int parse_dname(const char* str, uint8_t** res, size_t* len, int* labs);
397
408int local_data_find_tag_datas(const struct query_info* qinfo,
409 struct config_strlist* list, struct ub_packed_rrset_key* r,
410 struct regional* temp);
411
431 size_t taglen, const uint8_t* taglist2, size_t taglen2,
432 const uint8_t* tagactions, size_t tagactionssize,
433 enum localzone_type lzt, int* tag, char* const* tagname, int num_tags);
434
442 struct config_file* cfg);
443
457int rrstr_get_rr_content(const char* str, uint8_t** nm, uint16_t* type,
458 uint16_t* dclass, time_t* ttl, uint8_t* rr, size_t len,
459 uint8_t** rdata, size_t* rdata_len);
460
472 uint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr);
473
513
514#endif /* SERVICES_LOCALZONE_H */
const char * res
int parse_dname(const char *str, uint8_t **res, size_t *len, int *labs)
int rrstr_get_rr_content(const char *str, uint8_t **nm, uint16_t *type, uint16_t *dclass, time_t *ttl, uint8_t *rr, size_t len, uint8_t **rdata, size_t *rdata_len)
const char * local_zone_type2str(enum localzone_type t)
void local_zone_delete(struct local_zone *z)
int local_zone_enter_defaults(struct local_zones *zones, struct config_file *cfg)
void local_zones_del_zone(struct local_zones *zones, struct local_zone *zone)
struct local_zones * local_zones_create(void)
int local_zone_str2type(const char *str, enum localzone_type *t)
int local_zone_cmp(const void *z1, const void *z2)
void local_zones_del_data(struct local_zones *zones, uint8_t *name, size_t len, int labs, uint16_t dclass)
respip_action
Definition localzone.h:483
@ respip_always_transparent
Definition localzone.h:495
@ respip_redirect
Definition localzone.h:489
@ respip_inform
Definition localzone.h:491
@ respip_none
Definition localzone.h:485
@ respip_deny
Definition localzone.h:487
@ respip_always_nxdomain
Definition localzone.h:499
@ respip_always_refuse
Definition localzone.h:497
@ respip_transparent
Definition localzone.h:509
@ respip_typetransparent
Definition localzone.h:511
@ respip_refuse
Definition localzone.h:505
@ respip_static
Definition localzone.h:507
@ respip_inform_deny
Definition localzone.h:493
int local_data_find_tag_datas(const struct query_info *qinfo, struct config_strlist *list, struct ub_packed_rrset_key *r, struct regional *temp)
struct local_zone * local_zones_find(struct local_zones *zones, uint8_t *name, size_t len, int labs, uint16_t dclass)
enum localzone_type local_data_find_tag_action(const uint8_t *taglist, size_t taglen, const uint8_t *taglist2, size_t taglen2, const uint8_t *tagactions, size_t tagactionssize, enum localzone_type lzt, int *tag, char *const *tagname, int num_tags)
int local_zones_apply_cfg(struct local_zones *zones, struct config_file *cfg)
struct local_zone * local_zones_lookup(struct local_zones *zones, uint8_t *name, size_t len, int labs, uint16_t dclass, uint16_t dtype)
struct local_zone * local_zones_tags_lookup(struct local_zones *zones, uint8_t *name, size_t len, int labs, uint16_t dclass, uint16_t dtype, uint8_t *taglist, size_t taglen, int ignoretags)
localzone_type
Definition localzone.h:64
@ local_zone_redirect
Definition localzone.h:78
@ local_zone_inform_deny
Definition localzone.h:85
@ local_zone_typetransparent
Definition localzone.h:76
@ local_zone_always_nxdomain
Definition localzone.h:91
@ local_zone_transparent
Definition localzone.h:74
@ local_zone_inform
Definition localzone.h:83
@ local_zone_always_transparent
Definition localzone.h:87
@ local_zone_nodefault
Definition localzone.h:81
@ local_zone_deny
Definition localzone.h:68
@ local_zone_noview
Definition localzone.h:93
@ local_zone_static
Definition localzone.h:72
@ local_zone_unset
Definition localzone.h:66
@ local_zone_always_refuse
Definition localzone.h:89
@ local_zone_refuse
Definition localzone.h:70
void local_zones_print(struct local_zones *zones)
int local_zones_answer(struct local_zones *zones, struct module_env *env, struct query_info *qinfo, struct edns_data *edns, struct sldns_buffer *buf, struct regional *temp, struct comm_reply *repinfo, uint8_t *taglist, size_t taglen, uint8_t *tagactions, size_t tagactionssize, struct config_strlist **tag_datas, size_t tag_datas_size, char **tagname, int num_tags, struct view *view)
struct local_zone * local_zones_add_zone(struct local_zones *zones, uint8_t *name, size_t len, int labs, uint16_t dclass, enum localzone_type tp)
void local_zones_delete(struct local_zones *zones)
int local_zones_add_RR(struct local_zones *zones, const char *rr)
int local_data_cmp(const void *d1, const void *d2)
int rrset_insert_rr(struct regional *region, struct packed_rrset_data *pd, uint8_t *rdata, size_t rdata_len, time_t ttl, const char *rrstr)
int lock_rw_type
Definition locks.h:261
const char * buf
unsigned short uint16_t
Definition stdint.h:125
unsigned char uint8_t
Definition stdint.h:124
rbnode_type node
Definition localzone.h:156
struct local_rrset * rrsets
Definition localzone.h:165
size_t namelen
Definition localzone.h:160
uint8_t * name
Definition localzone.h:158
struct local_rrset * next
Definition localzone.h:173
struct ub_packed_rrset_key * rrset
Definition localzone.h:175
struct addr_tree_node node
Definition localzone.h:183
enum localzone_type type
Definition localzone.h:185
struct rbtree_type * override_tree
Definition localzone.h:139
struct regional * region
Definition localzone.h:143
lock_rw_type lock
Definition localzone.h:129
uint16_t dclass
Definition localzone.h:123
enum localzone_type type
Definition localzone.h:132
struct local_zone * parent
Definition localzone.h:113
size_t namelen
Definition localzone.h:118
rbnode_type node
Definition localzone.h:111
rbtree_type data
Definition localzone.h:146
struct ub_packed_rrset_key * soa
Definition localzone.h:148
uint8_t * taglist
Definition localzone.h:134
uint8_t * name
Definition localzone.h:116
size_t taglen
Definition localzone.h:136
rbtree_type ztree
Definition localzone.h:103
lock_rw_type lock
Definition localzone.h:101
Definition view.h:66