diff --git a/daemon/layer/query.c b/daemon/layer/query.c index 5dce26a95f70a84f0f6d43437f7d7668c2bffd0c..82c41dda748f86fedd24ba2112c80cc4ad9c1ac6 100644 --- a/daemon/layer/query.c +++ b/daemon/layer/query.c @@ -21,7 +21,7 @@ static int reset(knot_layer_t *ctx) { - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } static int begin(knot_layer_t *ctx, void *module_param) @@ -36,20 +36,20 @@ static int input_query(knot_layer_t *ctx, knot_pkt_t *pkt) /* Check if at least header is parsed. */ if (pkt->parsed < pkt->size) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } /* Accept only queries. */ if (knot_wire_get_qr(pkt->wire)) { - return KNOT_NS_PROC_NOOP; /* Ignore. */ + return KNOT_STATE_NOOP; /* Ignore. */ } /* No authoritative service. */ if (!knot_wire_get_rd(pkt->wire)) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } - return KNOT_NS_PROC_FULL; + return KNOT_STATE_PRODUCE; } static int output_answer(knot_layer_t *ctx, knot_pkt_t *pkt) @@ -63,16 +63,16 @@ static int output_answer(knot_layer_t *ctx, knot_pkt_t *pkt) knot_pkt_qtype(pkt)); if (ret != KNOT_EOK) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } static int output_error(knot_layer_t *ctx, knot_pkt_t *pkt) { knot_wire_set_rcode(pkt->wire, KNOT_RCODE_SERVFAIL); - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } /*! \brief Module implementation. */ diff --git a/daemon/worker.c b/daemon/worker.c index 23d99d3c8b8ee9d1cf90e0931b1d27fbb6682ba4..9a7ccc75bea6ef4542f616e9cf93edecb6bbe947 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -84,12 +84,12 @@ int worker_exec(struct worker_ctx *worker, knot_pkt_t *answer, knot_pkt_t *query memset(&proc, 0, sizeof(knot_layer_t)); proc.mm = worker->pool; knot_layer_begin(&proc, LAYER_QUERY, &worker->resolve); - int state = knot_layer_in(&proc, query); + int state = knot_layer_consume(&proc, query); /* Build an answer. */ - if (state & (KNOT_NS_PROC_FULL|KNOT_NS_PROC_FAIL)) { + if (state & (KNOT_STATE_PRODUCE|KNOT_STATE_FAIL)) { knot_pkt_init_response(answer, query); - state = knot_layer_out(&proc, answer); + state = knot_layer_produce(&proc, answer); } /* Cleanup. */ diff --git a/lib/layer/iterate.c b/lib/layer/iterate.c index 44c1e69c35f06d94caa090bd5a6079d505d33eb2..e881186ea44b120560986ce32258b097cc0eab9f 100644 --- a/lib/layer/iterate.c +++ b/lib/layer/iterate.c @@ -131,14 +131,14 @@ static int update_nsaddr(const knot_rrset_t *rr, struct kr_query *query, uint16_ /* Set zone cut address. */ int ret = kr_set_zone_cut_addr(&query->zone_cut, rr, index); if (ret == KNOT_EOK) { - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } else { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } } } - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } static int update_glue(const knot_rrset_t *rr, unsigned hint, struct kr_layer_param *param) @@ -163,10 +163,10 @@ int rr_update_answer(const knot_rrset_t *rr, unsigned hint, struct kr_layer_para knot_rrset_clear((knot_rrset_t *)rr, &answer->mm); } knot_wire_set_tc(answer->wire); - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } static bool has_glue(const knot_dname_t *ns_name, knot_pkt_t *pkt) @@ -221,7 +221,7 @@ static int process_authority(knot_pkt_t *pkt, struct kr_layer_param *param) /* AA, terminate resolution chain. */ if (knot_wire_get_aa(pkt->wire)) { - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } /* Elect best name server candidate. */ @@ -231,7 +231,7 @@ static int process_authority(knot_pkt_t *pkt, struct kr_layer_param *param) if (rr->type == KNOT_RRTYPE_NS) { int score = nameserver_score(rr, 0, pkt, param); if (score < KR_NS_VALID) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } if (score > best_score) { best_ns = rr; @@ -243,10 +243,10 @@ static int process_authority(knot_pkt_t *pkt, struct kr_layer_param *param) /* Update name server candidate. */ if (best_ns != NULL) { kr_set_zone_cut(&query->zone_cut, best_ns->owner, knot_ns_name(&best_ns->rrs, 0)); - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } static int process_additional(knot_pkt_t *pkt, struct kr_layer_param *param) @@ -256,12 +256,12 @@ static int process_additional(knot_pkt_t *pkt, struct kr_layer_param *param) for (unsigned i = 0; i < ar->count; ++i) { const knot_rrset_t *rr = knot_pkt_rr(ar, i); int state = update_glue(rr, 0, param); - if (state != KNOT_NS_PROC_MORE) { + if (state != KNOT_STATE_CONSUME) { return state; } } - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } static void finalize_answer(knot_pkt_t *pkt, struct kr_layer_param *param) @@ -298,13 +298,13 @@ static int process_answer(knot_pkt_t *pkt, struct kr_layer_param *param) int pkt_class = response_classify(pkt); if (!knot_dname_is_equal(knot_pkt_qname(pkt), query->sname) && (pkt_class & (PKT_NXDOMAIN|PKT_NODATA))) { query->flags |= QUERY_NO_MINIMIZE; - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } /* This answer didn't improve resolution chain, therefore must be authoritative (relaxed to negative). */ if (!is_authoritative(pkt, query) && (pkt_class & (PKT_NXDOMAIN|PKT_NODATA))) { DEBUG_MSG("<= lame response: non-auth sent negative response\n"); - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } /* Process answer type */ @@ -313,7 +313,7 @@ static int process_answer(knot_pkt_t *pkt, struct kr_layer_param *param) for (unsigned i = 0; i < an->count; ++i) { const knot_rrset_t *rr = knot_pkt_rr(an, i); int state = is_final ? rr_update_answer(rr, 0, param) : rr_update_parent(rr, 0, param); - if (state == KNOT_NS_PROC_FAIL) { + if (state == KNOT_STATE_FAIL) { return state; } follow_cname_chain(&cname, rr, query); @@ -330,18 +330,18 @@ static int process_answer(knot_pkt_t *pkt, struct kr_layer_param *param) /* Either way it resolves current query. */ query->resolved = true; - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } /*! \brief Error handling, RFC1034 5.3.3, 4d. */ static int resolve_error(knot_pkt_t *pkt, struct kr_layer_param *param) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } /* State-less single resolution iteration step, not needed. */ -static int reset(knot_layer_t *ctx) { return KNOT_NS_PROC_FULL; } -static int finish(knot_layer_t *ctx) { return KNOT_NS_PROC_NOOP; } +static int reset(knot_layer_t *ctx) { return KNOT_STATE_PRODUCE; } +static int finish(knot_layer_t *ctx) { return KNOT_STATE_NOOP; } /* Set resolution context and parameters. */ static int begin(knot_layer_t *ctx, void *module_param) @@ -355,7 +355,7 @@ static int prepare_query(knot_layer_t *ctx, knot_pkt_t *pkt) assert(pkt && ctx); struct kr_layer_param *param = ctx->data; struct kr_query *query = kr_rplan_current(param->rplan); - if (query == NULL || ctx->state == KNOT_NS_PROC_DONE) { + if (query == NULL || ctx->state == KNOT_STATE_DONE) { return ctx->state; } @@ -367,7 +367,7 @@ static int prepare_query(knot_layer_t *ctx, knot_pkt_t *pkt) knot_pkt_clear(pkt); int ret = knot_pkt_put_question(pkt, qname, query->sclass, qtype); if (ret != KNOT_EOK) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } query->id = dnssec_random_uint16_t(); @@ -377,14 +377,14 @@ static int prepare_query(knot_layer_t *ctx, knot_pkt_t *pkt) knot_rrset_t opt_rr; ret = knot_edns_init(&opt_rr, KR_EDNS_PAYLOAD, 0, KR_EDNS_VERSION, &pkt->mm); if (ret != KNOT_EOK) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } knot_pkt_begin(pkt, KNOT_ADDITIONAL); ret = knot_pkt_put(pkt, KNOT_COMPR_HINT_NONE, &opt_rr, KNOT_PF_FREE); if (ret != KNOT_EOK) { knot_rrset_clear(&opt_rr, &pkt->mm); - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } #ifndef NDEBUG @@ -396,7 +396,7 @@ static int prepare_query(knot_layer_t *ctx, knot_pkt_t *pkt) #endif /* Query built, expect answer. */ - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } /*! \brief Resolve input query or continue resolution with followups. @@ -418,7 +418,7 @@ static int resolve(knot_layer_t *ctx, knot_pkt_t *pkt) return resolve_error(pkt, param); } else if (!is_paired_to_query(pkt, query)) { DEBUG_MSG("<= ignoring mismatching response\n"); - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } else if (knot_wire_get_tc(pkt->wire)) { DEBUG_MSG("<= truncated response, failover to TCP\n"); struct kr_query *cur = kr_rplan_current(param->rplan); @@ -430,7 +430,7 @@ static int resolve(knot_layer_t *ctx, knot_pkt_t *pkt) } cur->flags |= QUERY_TCP; } - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } /* Check response code. */ @@ -445,14 +445,14 @@ static int resolve(knot_layer_t *ctx, knot_pkt_t *pkt) } /* Resolve authority to see if it's referral or authoritative. */ - int state = KNOT_NS_PROC_MORE; + int state = KNOT_STATE_CONSUME; state = process_authority(pkt, param); switch(state) { - case KNOT_NS_PROC_MORE: /* Not referral, process answer. */ + case KNOT_STATE_CONSUME: /* Not referral, process answer. */ DEBUG_MSG("<= rcode: %s\n", rcode ? rcode->name : "??"); state = process_answer(pkt, param); break; - case KNOT_NS_PROC_DONE: /* Referral, try to find glue. */ + case KNOT_STATE_DONE: /* Referral, try to find glue. */ DEBUG_MSG("<= referral response, follow\n"); state = process_additional(pkt, param); break; @@ -470,8 +470,8 @@ const knot_layer_api_t *iterate_layer(void) .begin = &begin, .reset = &reset, .finish = &finish, - .in = &resolve, - .out = &prepare_query + .consume = &resolve, + .produce = &prepare_query }; return &_layer; } diff --git a/lib/layer/itercache.c b/lib/layer/itercache.c index 45868e164c8c7b81e9c43a8c0a3456155af63ee1..f9ac681e214a5fc86bbb6c9d14cb03ef5156440e 100644 --- a/lib/layer/itercache.c +++ b/lib/layer/itercache.c @@ -48,7 +48,7 @@ static int update_answer(const knot_rrset_t *rr, unsigned drift, struct kr_layer /* Materialize RR set */ knot_rrset_t rr_copy = kr_cache_materialize(rr, drift, &answer->mm); if (rr_copy.rrs.rr_count == 0) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } return rr_update_answer(&rr_copy, 0, param); @@ -59,7 +59,7 @@ static int read_cache_rr(namedb_txn_t *txn, knot_rrset_t *cache_rr, uint32_t tim { /* Query cache for requested record */ if (kr_cache_peek(txn, cache_rr, ×tamp) != KNOT_EOK) { - return KNOT_NS_PROC_NOOP; + return KNOT_STATE_NOOP; } return cb(cache_rr, timestamp, param); @@ -93,7 +93,7 @@ static int read_cache(knot_layer_t *ctx, knot_pkt_t *pkt) /* Try to find expected record first. */ int state = read_cache_rr(txn, &cache_rr, timestamp, callback, param); - if (state == KNOT_NS_PROC_DONE) { + if (state == KNOT_STATE_DONE) { DEBUG_MSG("=> satisfied from cache\n"); cur->resolved = true; return state; @@ -102,20 +102,20 @@ static int read_cache(knot_layer_t *ctx, knot_pkt_t *pkt) /* Check if CNAME chain exists. */ cache_rr.type = KNOT_RRTYPE_CNAME; state = read_cache_rr(txn, &cache_rr, timestamp, callback, param); - if (state != KNOT_NS_PROC_NOOP) { + if (state != KNOT_STATE_NOOP) { if (cur->stype != KNOT_RRTYPE_CNAME) { const knot_dname_t *cname = knot_cname_name(&cache_rr.rrs); if (kr_rplan_push(param->rplan, cur->parent, cname, cur->sclass, cur->stype) == NULL) { - return KNOT_NS_PROC_FAIL; + return KNOT_STATE_FAIL; } } cur->resolved = true; - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } /* Not resolved. */ - return KNOT_NS_PROC_MORE; + return KNOT_STATE_CONSUME; } /*! \brief Merge-in record if same type and owner. */ @@ -232,7 +232,7 @@ static int write_cache(knot_layer_t *ctx, knot_pkt_t *pkt) struct kr_query *query = kr_rplan_current(param->rplan); /* Don't cache anything if failed. */ - if (query == NULL || ctx->state == KNOT_NS_PROC_FAIL) { + if (query == NULL || ctx->state == KNOT_STATE_FAIL) { return ctx->state; } @@ -271,8 +271,8 @@ const knot_layer_api_t *itercache_layer(void) { static const knot_layer_api_t _layer = { .begin = &begin, - .in = &write_cache, - .out = &read_cache + .consume = &write_cache, + .produce = &read_cache }; return &_layer; diff --git a/modules/README.md b/modules/README.md index 73640f534023bdfcd39ca0d5da85c07c4cca439a..903353d52190fec049ddd3f28ce916bbe4bfc04a 100644 --- a/modules/README.md +++ b/modules/README.md @@ -50,7 +50,7 @@ int produce(knot_layer_t *ctx, knot_pkt_t *pkt) /* This flag makes the resolver move the query * to the "resolved" list. */ query->resolved = true; - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } /* Pass-through. */ diff --git a/modules/hints/hints.c b/modules/hints/hints.c index 2493f9ebb8dc48c587b3c23727b04300d4307725..fbcfd87ba795a2aa242b9a7413e77904c890523b 100644 --- a/modules/hints/hints.c +++ b/modules/hints/hints.c @@ -96,7 +96,7 @@ static int query(knot_layer_t *ctx, knot_pkt_t *pkt) callback(&rr, 0, param); cur->resolved = true; - return KNOT_NS_PROC_DONE; + return KNOT_STATE_DONE; } } @@ -155,7 +155,7 @@ const knot_layer_api_t *hints_layer(void) { static const knot_layer_api_t _layer = { .begin = &begin, - .out = &query + .produce = &query }; return &_layer; }