Lines Matching full:env
91 dt_sample_rate_limited(struct dt_env* env)
93 lock_basic_lock(&env->sample_lock);
95 if(env->sample_rate > 1) {
98 if (env->sample_rate_count > env->sample_rate) {
103 env->sample_rate_count = 0;
106 env->sample_rate_count++;
107 lock_basic_unlock(&env->sample_lock);
110 lock_basic_unlock(&env->sample_lock);
115 dt_send(const struct dt_env *env, void *buf, size_t len_buf)
117 dt_msg_queue_submit(env->msgqueue, buf, len_buf);
121 dt_msg_init(const struct dt_env *env,
131 if (env->identity != NULL) {
132 dm->d.identity.data = (uint8_t *) env->identity;
133 dm->d.identity.len = (size_t) env->len_identity;
136 if (env->version != NULL) {
137 dm->d.version.data = (uint8_t *) env->version;
138 dm->d.version.len = (size_t) env->len_version;
158 struct dt_env *env;
171 env = (struct dt_env *) calloc(1, sizeof(struct dt_env));
172 if (!env)
174 lock_basic_init(&env->sample_lock);
176 env->dtio = dt_io_thread_create();
177 if(!env->dtio) {
179 free(env);
182 if(!dt_io_thread_apply_cfg(env->dtio, cfg)) {
183 dt_io_thread_delete(env->dtio);
184 free(env);
187 dt_apply_cfg(env, cfg);
188 return env;
192 dt_apply_identity(struct dt_env *env, struct config_file *cfg)
197 free(env->identity);
201 env->identity = strdup(buf);
206 env->identity = strdup(cfg->dnstap_identity);
208 if (env->identity == NULL)
210 env->len_identity = (unsigned int)strlen(env->identity);
212 env->identity);
216 dt_apply_version(struct dt_env *env, struct config_file *cfg)
220 free(env->version);
222 env->version = strdup(PACKAGE_STRING);
224 env->version = strdup(cfg->dnstap_version);
225 if (env->version == NULL)
227 env->len_version = (unsigned int)strlen(env->version);
229 env->version);
233 dt_apply_cfg(struct dt_env *env, struct config_file *cfg)
238 dt_apply_identity(env, cfg);
239 dt_apply_version(env, cfg);
240 if ((env->log_resolver_query_messages = (unsigned int)
245 if ((env->log_resolver_response_messages = (unsigned int)
250 if ((env->log_client_query_messages = (unsigned int)
255 if ((env->log_client_response_messages = (unsigned int)
260 if ((env->log_forwarder_query_messages = (unsigned int)
265 if ((env->log_forwarder_response_messages = (unsigned int)
270 lock_basic_lock(&env->sample_lock);
271 if((env->sample_rate = (unsigned int)cfg->dnstap_sample_rate))
273 verbose(VERB_OPS, "dnstap SAMPLE_RATE enabled and set to \"%d\"", (int)env->sample_rate);
275 lock_basic_unlock(&env->sample_lock);
279 dt_init(struct dt_env *env, struct comm_base* base)
281 env->msgqueue = dt_msg_queue_create(base);
282 if(!env->msgqueue) {
286 if(!dt_io_thread_register_queue(env->dtio, env->msgqueue)) {
288 dt_msg_queue_delete(env->msgqueue);
289 env->msgqueue = NULL;
296 dt_deinit(struct dt_env* env)
298 dt_io_thread_unregister_queue(env->dtio, env->msgqueue);
299 dt_msg_queue_delete(env->msgqueue);
303 dt_delete(struct dt_env *env)
305 if (!env)
307 dt_io_thread_delete(env->dtio);
308 lock_basic_destroy(&env->sample_lock);
309 free(env->identity);
310 free(env->version);
311 free(env);
434 dt_msg_send_client_query(struct dt_env *env,
445 if(dt_sample_rate_limited(env))
453 dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__CLIENT_QUERY);
472 dt_send(env, dm.buf, dm.len_buf);
476 dt_msg_send_client_response(struct dt_env *env,
486 if(dt_sample_rate_limited(env))
492 dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__CLIENT_RESPONSE);
510 dt_send(env, dm.buf, dm.len_buf);
514 dt_msg_send_outside_query(struct dt_env *env,
526 if(dt_sample_rate_limited(env))
534 if (!env->log_forwarder_query_messages)
536 dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__FORWARDER_QUERY);
538 if (!env->log_resolver_query_messages)
540 dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__RESOLVER_QUERY);
564 dt_send(env, dm.buf, dm.len_buf);
568 dt_msg_send_outside_response(struct dt_env *env,
582 if(dt_sample_rate_limited(env))
591 if (!env->log_forwarder_response_messages)
593 dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__FORWARDER_RESPONSE);
595 if (!env->log_resolver_response_messages)
597 dt_msg_init(env, &dm, DNSTAP__MESSAGE__TYPE__RESOLVER_RESPONSE);
626 dt_send(env, dm.buf, dm.len_buf);