45 #ifndef SERVICES_CACHE_INFRA_H 46 #define SERVICES_CACHE_INFRA_H 168 #define RATE_WINDOW 2 185 #define ip_rate_data rate_data 188 #define INFRA_HOST_STARTSIZE 32 190 #define INFRA_BYTES_NAME 14 228 size_t namelen,
int wr);
250 time_t timenow,
int* edns_vs,
uint8_t* edns_lame_known,
int* to);
269 uint8_t*
name,
size_t namelen, time_t timenow,
int dnsseclame,
288 socklen_t addrlen,
uint8_t*
name,
size_t namelen,
int qtype,
289 int roundtrip,
int orig_rtt, time_t timenow);
317 uint8_t*
name,
size_t namelen,
int edns_version, time_t timenow);
340 int* lame,
int* dnsseclame,
int* reclame,
int* rtt, time_t timenow);
360 size_t namelen,
struct rtt_info* rtt,
int* delay, time_t timenow,
361 int* tA,
int* tAAAA,
int* tother);
374 size_t namelen, time_t timenow);
387 size_t namelen, time_t timenow);
399 size_t namelen, time_t timenow);
460 #define ip_rate_deldatafunc rate_deldatafunc
struct lruhash_entry * infra_lookup_nottl(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, int wr)
size_t infra_sizefunc(void *k, void *d)
int infra_get_lame_rtt(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, uint16_t qtype, int *lame, int *dnsseclame, int *reclame, int *rtt, time_t timenow)
size_t rate_sizefunc(void *k, void *d)
struct infra_cache * infra_adjust(struct infra_cache *infra, struct config_file *cfg)
int infra_rate_max(void *data, time_t now)
int infra_ratelimit_inc(struct infra_cache *infra, uint8_t *name, size_t namelen, time_t timenow)
struct lruhash_entry entry
rbtree_type domain_limits
int infra_compfunc(void *key1, void *key2)
struct slabhash * client_ip_rates
long long infra_get_host_rto(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, struct rtt_info *rtt, int *delay, time_t timenow, int *tA, int *tAAAA, int *tother)
struct slabhash * domain_rates
int ip_rate_compfunc(void *key1, void *key2)
struct lruhash_entry entry
int infra_find_ratelimit(struct infra_cache *infra, uint8_t *name, size_t namelen)
void rate_deldatafunc(void *d, void *arg)
struct sockaddr_storage addr
time_t timestamp[RATE_WINDOW]
int infra_ratelimit_exceeded(struct infra_cache *infra, uint8_t *name, size_t namelen, time_t timenow)
int rate_compfunc(void *key1, void *key2)
struct name_tree_node node
int infra_ip_ratelimit_inc(struct infra_cache *infra, struct comm_reply *repinfo, time_t timenow)
int infra_host(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, time_t timenow, int *edns_vs, uint8_t *edns_lame_known, int *to)
void infra_delkeyfunc(void *k, void *arg)
size_t ip_rate_sizefunc(void *k, void *d)
void infra_update_tcp_works(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen)
void ip_rate_delkeyfunc(void *d, void *arg)
void rate_delkeyfunc(void *k, void *arg)
int infra_edns_update(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, int edns_version, time_t timenow)
void infra_delete(struct infra_cache *infra)
struct lruhash_entry entry
struct sockaddr_storage addr
void infra_ratelimit_dec(struct infra_cache *infra, uint8_t *name, size_t namelen, time_t timenow)
size_t infra_get_mem(struct infra_cache *infra)
struct infra_cache * infra_create(struct config_file *cfg)
int infra_set_lame(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, time_t timenow, int dnsseclame, int reclame, uint16_t qtype)
int infra_rtt_update(struct infra_cache *infra, struct sockaddr_storage *addr, socklen_t addrlen, uint8_t *name, size_t namelen, int qtype, int roundtrip, int orig_rtt, time_t timenow)
void infra_deldatafunc(void *d, void *arg)