Electroneum
Loading...
Searching...
No Matches
subnetmod.h
Go to the documentation of this file.
1/*
2 * edns-subnet/subnetmod.h - edns subnet module. Must be called before validator
3 * and iterator.
4 *
5 * Copyright (c) 2013, NLnet Labs. All rights reserved.
6 *
7 * This software is open source.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright notice,
17 * this list of conditions and the following disclaimer in the documentation
18 * and/or other materials provided with the distribution.
19 *
20 * Neither the name of the NLNET LABS nor the names of its contributors may
21 * be used to endorse or promote products derived from this software without
22 * specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
30 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 */
40
41#ifndef SUBNETMOD_H
42#define SUBNETMOD_H
43#include "util/module.h"
45#include "util/alloc.h"
46#include "util/net_help.h"
50
65
70
83
84void subnet_data_delete(void* d, void* ATTR_UNUSED(arg));
85size_t msg_cache_sizefunc(void* k, void* d);
86
92
94int subnetmod_init(struct module_env* env, int id);
95
97void subnetmod_deinit(struct module_env* env, int id);
98
100void subnetmod_operate(struct module_qstate* qstate, enum module_ev event,
101 int id, struct outbound_entry* outbound);
102
104void subnetmod_inform_super(struct module_qstate* qstate, int id,
105 struct module_qstate* super);
106
108void subnetmod_clear(struct module_qstate* qstate, int id);
109
111size_t subnetmod_get_mem(struct module_env* env, int id);
112
115
117int ecs_whitelist_check(struct query_info* qinfo, uint16_t flags,
118 struct module_qstate* qstate, struct sockaddr_storage* addr,
119 socklen_t addrlen, uint8_t* zone, size_t zonelen,
120 struct regional* region, int id, void* cbargs);
121
124int ecs_edns_back_parsed(struct module_qstate* qstate, int id, void* cbargs);
125
127int ecs_query_response(struct module_qstate* qstate, struct dns_msg* response,
128 int id, void* cbargs);
129
130#endif /* SUBNETMOD_H */
int lock_rw_type
Definition locks.h:261
uint32_t hashvalue_type
Definition lruhash.h:119
module_ev
Definition module.h:536
unsigned short uint16_t
Definition stdint.h:125
unsigned char uint8_t
Definition stdint.h:124
Definition dns.h:61
struct slabhash * subnet_msg_cache
Definition subnetmod.h:58
lock_rw_type biglock
Definition subnetmod.h:63
struct ecs_whitelist * whitelist
Definition subnetmod.h:60
struct alloc_cache alloc
Definition subnetmod.h:62
struct addrtree * tree6
Definition subnetmod.h:68
struct addrtree * tree4
Definition subnetmod.h:67
int subnet_downstream
Definition subnetmod.h:80
struct ecs_data ecs_server_in
Definition subnetmod.h:78
struct ecs_data ecs_client_out
Definition subnetmod.h:76
struct ecs_data ecs_server_out
Definition subnetmod.h:79
struct ecs_data ecs_client_in
Definition subnetmod.h:75
hashvalue_type qinfo_hash
Definition subnetmod.h:73
void subnet_data_delete(void *d, void *ATTR_UNUSED(arg))
int subnetmod_init(struct module_env *env, int id)
int ecs_query_response(struct module_qstate *qstate, struct dns_msg *response, int id, void *cbargs)
struct module_func_block * subnetmod_get_funcblock(void)
size_t unittest_wrapper_subnetmod_sizefunc(void *elemptr)
void subnetmod_clear(struct module_qstate *qstate, int id)
size_t msg_cache_sizefunc(void *k, void *d)
int ecs_edns_back_parsed(struct module_qstate *qstate, int id, void *cbargs)
void subnetmod_deinit(struct module_env *env, int id)
void subnetmod_inform_super(struct module_qstate *qstate, int id, struct module_qstate *super)
size_t subnetmod_get_mem(struct module_env *env, int id)
void subnetmod_operate(struct module_qstate *qstate, enum module_ev event, int id, struct outbound_entry *outbound)
int ecs_whitelist_check(struct query_info *qinfo, uint16_t flags, struct module_qstate *qstate, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *zone, size_t zonelen, struct regional *region, int id, void *cbargs)