Worker API reference¶
Functions
-
int
worker_init
(struct engine *engine, int worker_count)¶ Create and initialize the worker.
- Return
error code (ENOMEM)
-
void
worker_deinit
(void)¶ Destroy the worker (free memory).
-
int
worker_submit
(struct session *session, const struct sockaddr *peer, const struct sockaddr *dst_addr, const uint8_t *eth_from, const uint8_t *eth_to, knot_pkt_t *pkt)¶ Process an incoming packet (query from a client or answer from upstream).
- Return
0 or an error code
- Parameters
session
: session the packet came from, or NULL (not from network)peer
: address the packet came from, or NULL (not from network)eth_*
: MAC addresses or NULL (they’re useful for XDP)pkt
: the packet, or NULL (an error from the transport layer)
-
int
worker_end_tcp
(struct session *session)¶ End current DNS/TCP session, this disassociates pending tasks from this session which may be freely closed afterwards.
-
knot_pkt_t *
worker_resolve_mk_pkt
(const char *qname_str, uint16_t qtype, uint16_t qclass, const struct kr_qflags *options)¶ Create a packet suitable for worker_resolve_start().
All in malloc() memory.
-
struct qr_task *
worker_resolve_start
(knot_pkt_t *query, struct kr_qflags options)¶ Start query resolution with given query.
- Return
task or NULL
-
int
worker_resolve_exec
(struct qr_task *task, knot_pkt_t *query)¶
-
struct kr_request *
worker_task_request
(struct qr_task *task)¶ - Return
struct kr_request associated with opaque task
-
int
worker_task_step
(struct qr_task *task, const struct sockaddr *packet_source, knot_pkt_t *packet)¶
-
int
worker_task_numrefs
(const struct qr_task *task)¶
-
int
worker_task_finalize
(struct qr_task *task, int state)¶ Finalize given task.
-
void
worker_task_complete
(struct qr_task *task)¶
-
void
worker_task_ref
(struct qr_task *task)¶
-
void
worker_task_unref
(struct qr_task *task)¶
-
void
worker_task_timeout_inc
(struct qr_task *task)¶
-
int
worker_add_tcp_connected
(struct worker_ctx *worker, const struct sockaddr *addr, struct session *session)¶
-
int
worker_del_tcp_connected
(struct worker_ctx *worker, const struct sockaddr *addr)¶
-
int
worker_del_tcp_waiting
(struct worker_ctx *worker, const struct sockaddr *addr)¶
-
knot_pkt_t *
worker_task_get_pktbuf
(const struct qr_task *task)¶
-
struct request_ctx *
worker_task_get_request
(struct qr_task *task)¶
-
struct session *
worker_request_get_source_session
(struct request_ctx*)¶
-
uint16_t
worker_task_pkt_get_msgid
(struct qr_task *task)¶
-
void
worker_task_pkt_set_msgid
(struct qr_task *task, uint16_t msgid)¶
-
uint64_t
worker_task_creation_time
(struct qr_task *task)¶
-
void
worker_task_subreq_finalize
(struct qr_task *task)¶
-
bool
worker_task_finished
(struct qr_task *task)¶
-
int
qr_task_on_send
(struct qr_task *task, const uv_handle_t *handle, int status)¶ To be called after sending a DNS message.
It mainly deals with cleanups.
Variables
-
struct worker_ctx *
the_worker
¶ Pointer to the singleton worker.
NULL if not initialized.
-
struct
worker_stats
¶ - #include <worker.h>
Various worker statistics.
Sync with wrk_stats()
Public Members
-
size_t
queries
¶ Total number of requests (from clients and internal ones).
-
size_t
concurrent
¶ The number of requests currently in processing.
-
size_t
rconcurrent
¶
-
size_t
dropped
¶ The number of requests dropped due to being badly formed.
See #471.
-
size_t
timeout
¶ Number of outbound queries that timed out.
-
size_t
udp
¶ Number of outbound queries over UDP.
-
size_t
tcp
¶ Number of outbound queries over TCP (excluding TLS).
-
size_t
tls
¶ Number of outbound queries over TLS.
-
size_t
ipv4
¶ Number of outbound queries over IPv4.
-
size_t
ipv6
¶ Number of outbound queries over IPv6.
-
size_t
err_udp
¶ Total number of write errors for UDP transport.
-
size_t
err_tcp
¶ Total number of write errors for TCP transport.
-
size_t
err_tls
¶ Total number of write errors for TLS transport.
-
size_t
err_http
¶ Total number of write errors for HTTP(S) transport.
-
size_t