Lines Matching +defs:t +defs:e +defs:d

82 infra_sizefunc(void* k, void* ATTR_UNUSED(d))
117 infra_deldatafunc(void* d, void* ATTR_UNUSED(arg))
119 struct infra_data* data = (struct infra_data*)d;
124 rate_sizefunc(void* k, void* ATTR_UNUSED(d))
156 rate_deldatafunc(void* d, void* ATTR_UNUSED(arg))
158 struct rate_data* data = (struct rate_data*)d;
169 struct domain_limit_data* d;
180 d = (struct domain_limit_data*)name_tree_find(domain_limits, nm,
182 if(d) {
184 return d;
188 d = (struct domain_limit_data*)calloc(1, sizeof(*d));
189 if(!d) {
193 d->node.node.key = &d->node;
194 d->node.name = nm;
195 d->node.len = nmlen;
196 d->node.labs = labs;
197 d->node.dclass = LDNS_RR_CLASS_IN;
198 d->lim = -1;
199 d->below = -1;
200 if(!name_tree_insert(domain_limits, &d->node, nm, nmlen, labs,
204 free(d);
207 return d;
215 struct domain_limit_data* d;
217 d = domain_limit_findcreate(domain_limits, p->str);
218 if(!d)
220 d->lim = atoi(p->str2);
223 d = domain_limit_findcreate(domain_limits, p->str);
224 if(!d)
226 d->below = atoi(p->str2);
249 struct wait_limit_netblock_info* d;
257 d = (struct wait_limit_netblock_info*)addr_tree_find(tree, &addr,
259 if(d)
260 return d;
263 d = (struct wait_limit_netblock_info*)calloc(1, sizeof(*d));
264 if(!d)
266 d->limit = -1;
267 if(!addr_tree_insert(tree, &d->node, &addr, addrlen, net)) {
269 free(d);
272 return d;
282 struct wait_limit_netblock_info* d;
284 d = wait_limit_netblock_findcreate(wait_limits_netblock,
286 if(!d)
288 d->limit = atoi(p->str2);
291 d = wait_limit_netblock_findcreate(wait_limits_cookie_netblock,
293 if(!d)
295 d->limit = atoi(p->str2);
304 struct wait_limit_netblock_info* d;
305 d = wait_limit_netblock_findcreate(tree, str);
306 if(!d)
308 d->limit = limit;
528 data_entry_init(struct infra_cache* infra, struct lruhash_entry* e,
531 struct infra_data* data = (struct infra_data*)e->data;
591 struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
595 if(e && ((struct infra_data*)e->data)->ttl < timenow) {
597 int old = ((struct infra_data*)e->data)->rtt.rto;
598 time_t tprobe = ((struct infra_data*)e->data)->probedelay;
599 uint8_t tA = ((struct infra_data*)e->data)->timeout_A;
600 uint8_t tAAAA = ((struct infra_data*)e->data)->timeout_AAAA;
601 uint8_t tother = ((struct infra_data*)e->data)->timeout_other;
602 lock_rw_unlock(&e->lock);
603 e = infra_lookup_nottl(infra, addr, addrlen, nm, nmlen, 1);
604 if(e) {
608 data_entry_init(infra, e, timenow);
612 ((struct infra_data*)e->data)->rtt.rto
614 ((struct infra_data*)e->data)->probedelay = tprobe;
615 ((struct infra_data*)e->data)->timeout_A = tA;
616 ((struct infra_data*)e->data)->timeout_AAAA = tAAAA;
617 ((struct infra_data*)e->data)->timeout_other = tother;
621 if(!e) {
623 if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow)))
625 data = (struct infra_data*)e->data;
629 slabhash_insert(infra->hosts, e->hash, e, data, NULL);
633 data = (struct infra_data*)e->data;
641 lock_rw_unlock(&e->lock);
642 e = infra_lookup_nottl(infra, addr,addrlen,nm,nmlen, 1);
643 if(!e) { /* flushed from cache real fast, no use to
647 data = (struct infra_data*)e->data;
654 lock_rw_unlock(&e->lock);
664 struct lruhash_entry* e;
666 e = infra_lookup_nottl(infra, addr, addrlen, nm, nmlen, 1);
667 if(!e) {
669 if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow))) {
674 } else if( ((struct infra_data*)e->data)->ttl < timenow) {
676 data_entry_init(infra, e, timenow);
679 data = (struct infra_data*)e->data;
691 slabhash_insert(infra->hosts, e->hash, e, e->data, NULL);
692 else { lock_rw_unlock(&e->lock); }
701 struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
704 if(!e)
705 return; /* doesn't exist */
706 data = (struct infra_data*)e->data;
711 lock_rw_unlock(&e->lock);
719 struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
725 if(!e) {
726 if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow)))
729 } else if(((struct infra_data*)e->data)->ttl < timenow) {
730 oldprobedelay = ((struct infra_data*)e->data)->probedelay;
731 data_entry_init(infra, e, timenow);
735 data = (struct infra_data*)e->data;
772 slabhash_insert(infra->hosts, e->hash, e, e->data, NULL);
773 else { lock_rw_unlock(&e->lock); }
782 struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
786 if(!e) return -1;
787 data = (struct infra_data*)e->data;
798 lock_rw_unlock(&e->lock);
807 struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
811 if(!e) {
812 if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow)))
815 } else if(((struct infra_data*)e->data)->ttl < timenow) {
816 data_entry_init(infra, e, timenow);
819 data = (struct infra_data*)e->data;
828 slabhash_insert(infra->hosts, e->hash, e, e->data, NULL);
829 else { lock_rw_unlock(&e->lock); }
840 struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen,
842 if(!e)
844 host = (struct infra_data*)e->data;
873 lock_rw_unlock(&e->lock);
880 lock_rw_unlock(&e->lock);
885 lock_rw_unlock(&e->lock);
891 lock_rw_unlock(&e->lock);
897 lock_rw_unlock(&e->lock);
903 lock_rw_unlock(&e->lock);
910 lock_rw_unlock(&e->lock);
921 struct domain_limit_data* d = (struct domain_limit_data*)
924 if(!d) return infra_dp_ratelimit;
926 if(d->node.labs == labs && d->lim != -1)
927 return d->lim; /* exact match */
930 if(d->node.labs == labs)
931 d = (struct domain_limit_data*)d->node.parent;
932 while(d) {
933 if(d->below != -1)
934 return d->below;
935 d = (struct domain_limit_data*)d->node.parent;
940 size_t ip_rate_sizefunc(void* k, void* ATTR_UNUSED(d))
996 struct rate_data* d = (struct rate_data*)calloc(1, sizeof(*d));
997 if(!k || !d) {
999 free(d);
1006 free(d);
1012 k->entry.data = d;
1013 d->qps[0] = 1;
1014 d->timestamp[0] = timenow;
1015 slabhash_insert(infra->domain_rates, h, &k->entry, d, NULL);
1025 struct ip_rate_data* d = (struct ip_rate_data*)calloc(1, sizeof(*d));
1026 if(!k || !d) {
1028 free(d);
1036 k->entry.data = d;
1037 d->qps[0] = 1;
1038 d->timestamp[0] = timenow;
1039 d->mesh_wait = mesh_wait;
1040 slabhash_insert(infra->client_ip_rates, h, &k->entry, d, NULL);
1045 static int* infra_rate_find_second_or_none(void* data, time_t t, int should_add)
1047 struct rate_data* d = (struct rate_data*)data;
1050 if(d->timestamp[i] == t)
1051 return &(d->qps[i]);
1054 /* remove oldest timestamp, and insert it at t with 0 qps */
1057 if(d->timestamp[i] < d->timestamp[oldest])
1060 d->timestamp[oldest] = t;
1061 d->qps[oldest] = 0;
1062 return &(d->qps[oldest]);
1067 static int* infra_rate_give_second(void* data, time_t t)
1069 return infra_rate_find_second_or_none(data, t, 1);
1074 static int* infra_rate_get_second(void* data, time_t t)
1076 return infra_rate_find_second_or_none(data, t, 0);
1081 struct rate_data* d = (struct rate_data*)data;
1085 if(now-d->timestamp[i] <= RATE_WINDOW &&
1086 d->qps[i] > max) {
1087 max = d->qps[i];
1090 if(now == d->timestamp[i]) {
1091 return d->qps[i];
1133 verbose(VERB_OPS, "ratelimit exceeded %s %d query %s %s %s from %s", buf, lim, qnm, cs, ts, ip);
1135 verbose(VERB_OPS, "ratelimit exceeded %s %d query %s %s %s", buf, lim, qnm, cs, ts);
1224 if(strchr(qnm, '\t'))
1225 *strchr(qnm, '\t') = ' ';
1226 if(strchr(qnm, '\t'))
1227 *strchr(qnm, '\t') = ' ';
1228 verbose(VERB_OPS, "ip_ratelimit exceeded %s %d%s %s",
1232 verbose(VERB_OPS, "ip_ratelimit exceeded %s %d%s (no query name)",
1280 struct rate_data* d = (struct rate_data*)entry->data;
1281 int mesh_wait = d->mesh_wait;
1315 struct rate_data* d = (struct rate_data*)entry->data;
1316 d->mesh_wait++;
1336 struct rate_data* d = (struct rate_data*)entry->data;
1337 if(d->mesh_wait > 0)
1338 d->mesh_wait--;