]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
delegpt: slight api change, preparations
authorMarek Vavruša <marek.vavrusa@nic.cz>
Tue, 19 Aug 2014 17:09:32 +0000 (19:09 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Tue, 19 Aug 2014 17:09:32 +0000 (19:09 +0200)
daemon/layer/query.c
daemon/worker.c
lib/delegpt.c
lib/delegpt.h
lib/layer.h
lib/layer/iterate.c
lib/layer/static.c
lib/resolve.c

index a605a9860a4839e0b541c1c4a0ed1a61e4046272..88be165a9e43cec4ce197629d43f65b9bb58cdef 100644 (file)
@@ -29,13 +29,11 @@ static int input_query(knot_layer_t *ctx, knot_pkt_t *pkt)
 
        /* Check if at least header is parsed. */
        if (pkt->parsed < pkt->size) {
-               knot_pkt_free(&pkt);
                return NS_PROC_FAIL;
        }
 
        /* Accept only queries. */
        if (knot_wire_get_qr(pkt->wire)) {
-               knot_pkt_free(&pkt);
                return NS_PROC_NOOP; /* Ignore. */
        }
 
@@ -49,9 +47,6 @@ static int input_query(knot_layer_t *ctx, knot_pkt_t *pkt)
        knot_pkt_t *answer = param->result->ans;
        knot_wire_set_id(answer->wire, knot_wire_get_id(pkt->wire));
 
-       /* Free query and finish. */
-       knot_pkt_free(&pkt);
-
        if (ret != 0) {
                return NS_PROC_FAIL;
        } else {
index 7141b1873f3b6750d68e9426a9f7eeaf9c01ee12..9a01ddeebaf52d18032ede269bbf76aaf426eef2 100644 (file)
@@ -47,18 +47,22 @@ static void worker_recv(uv_udp_t *handle, ssize_t nread, const uv_buf_t *buf,
        knot_layer_t proc;
        memset(&proc, 0, sizeof(knot_layer_t));
        proc.mm = ctx->pool;
-       knot_process_begin(&proc, LAYER_QUERY, &param);
-       int state = knot_process_in(&proc, (uint8_t *)buf->base, nread);
+       knot_layer_begin(&proc, LAYER_QUERY, &param);
+
+       knot_pkt_t *query = knot_pkt_new((uint8_t *)buf->base, nread, ctx->pool);
+       knot_pkt_parse(query, 0);
+       int state = knot_layer_in(&proc, query);
        if (state & (NS_PROC_DONE|NS_PROC_FAIL)) {
                worker_send(handle, result.ans, addr);
        }
 
        /* Cleanup. */
-       knot_process_finish(&proc);
+       knot_layer_finish(&proc);
        kr_result_deinit(&result);
        kr_context_reset(&ctx->resolve);
 
        buf_free((uv_handle_t *)handle, buf);
+       knot_pkt_free(&query);
 }
 
 void worker_init(struct worker_ctx *worker, mm_ctx_t *mm)
index 16616fca26e334df17e6ee363b8be1b6d1680064..a5a93edb6bf1a1376b156982e1b653da3dbdebd2 100644 (file)
@@ -1,7 +1,7 @@
 #include "lib/delegpt.h"
 #include <common/mempool.h>
 
-static void delegpt_free(struct kr_delegpt *dp, mm_ctx_t *mm)
+static void delegpt_free(struct kr_ns *dp, mm_ctx_t *mm)
 {
        mm_free(mm, dp->name);
        mm_free(mm, dp);
@@ -70,22 +70,27 @@ list_t *kr_delegmap_find(struct kr_delegmap *map, const knot_dname_t *name)
        return *val;
 }
 
-struct kr_delegpt *kr_delegpt_create(const knot_dname_t *name, mm_ctx_t *mm)
+struct kr_ns *kr_ns_create(const knot_dname_t *name, mm_ctx_t *mm)
 {
-       struct kr_delegpt *dp = mm_alloc(mm, sizeof(struct kr_delegpt));
-       memset(dp, 0, sizeof(struct kr_delegpt));
-       dp->name = knot_dname_copy(name, mm);
-       dp->flags = DP_LAME;
-       return dp;
+       struct kr_ns *ns = mm_alloc(mm, sizeof(struct kr_ns));
+       memset(ns, 0, sizeof(struct kr_ns));
+       ns->name = knot_dname_copy(name, mm);
+       ns->flags = DP_LAME;
+       return ns;
 }
 
-void kr_delegpt_add(list_t *list, struct kr_delegpt *dp)
+void kr_ns_append(list_t *list, struct kr_ns *ns)
 {
-       add_tail(list, (node_t *)dp);
+       add_tail(list, (node_t *)ns);
 }
 
-void kr_delegpt_remove(struct kr_delegpt *dp, mm_ctx_t *mm)
+void kr_ns_remove(struct kr_ns *ns, mm_ctx_t *mm)
 {
-       rem_node((node_t *)dp);
-       delegpt_free(dp, mm);
+       rem_node((node_t *)ns);
+       delegpt_free(ns, mm);
+}
+
+int kr_ns_resolve(struct kr_ns *ns)
+{
+       return -1;
 }
index 7e0ee194708de881a935b8270421e8c271b7b6e6..d0e8371cb9fa57a9cae7ba04ab774fe82ea460d8 100644 (file)
@@ -22,16 +22,16 @@ limitations under the License.
 #include <common/sockaddr.h>
 #include <common/trie/hat-trie.h>
 
-/*! \brief Delegation point flag. */
-enum kr_deleg_flag {
+/*! \brief Name server flag. */
+enum kr_ns_flag {
        DP_LAME = 0,
        DP_RESOLVED
 };
 
 struct kr_context;
 
-/*! \brief Delegation point. */
-struct kr_delegpt {
+/*! \brief Name server. */
+struct kr_ns {
        node_t node;
        knot_dname_t *name;
        struct sockaddr_storage addr;
@@ -55,7 +55,7 @@ list_t *kr_delegmap_find(struct kr_delegmap *map, const knot_dname_t *name);
  *       choose next and move DPs from the other half for next sweep.
  */
 
-struct kr_delegpt *kr_delegpt_create(const knot_dname_t *name, mm_ctx_t *mm);
-void kr_delegpt_add(list_t *list, struct kr_delegpt *dp);
-void kr_delegpt_remove(struct kr_delegpt *dp, mm_ctx_t *mm);
-int kr_delegpt_resolve(struct kr_delegpt *dp);
+struct kr_ns *kr_ns_create(const knot_dname_t *name, mm_ctx_t *mm);
+void kr_ns_append(list_t *list, struct kr_ns *ns);
+void kr_ns_remove(struct kr_ns *ns, mm_ctx_t *mm);
+int kr_ns_resolve(struct kr_ns *ns);
index ba4e874069e48ec0f6349de49adfe42cb5b43a59..c1ec9d194e4bba1c9ad1eec5c2613d9dbbb4cd16 100644 (file)
@@ -15,7 +15,7 @@ limitations under the License.
 
 #pragma once
 
-#include <libknot/processing/process.h>
+#include <libknot/processing/layer.h>
 #include "lib/context.h"
 
 /*!
index 9772db7d65fd49f223ea70ca7785e36bbe9f8f2c..1d8108c4f42ee6d1eeedceb0babb1da7cefb9bd6 100644 (file)
@@ -67,7 +67,7 @@ static int evaluate_dp(const knot_rrset_t *dp, knot_pkt_t *pkt, struct kr_layer_
        }
 
        const knot_dname_t *dp_name = knot_ns_name(&dp->rrs, 0);
-       struct kr_delegpt *ns_new = kr_delegpt_create(dp_name, resolve->dp_map.pool);
+       struct kr_ns *ns_new = kr_ns_create(dp_name, resolve->dp_map.pool);
 
        /* Check if there's a glue for the record. */
        int ret = glue_record(pkt, dp_name, (struct sockaddr *)&ns_new->addr);
@@ -75,13 +75,13 @@ static int evaluate_dp(const knot_rrset_t *dp, knot_pkt_t *pkt, struct kr_layer_
                /* TODO: API for duplicates? */
                ns_new->flags |= DP_LAME;
                /* TODO: resolve. */
-               kr_delegpt_add(dplist, ns_new);
+               kr_ns_append(dplist, ns_new);
                return -1;
        }
 
        /* Add name server. */
        ns_new->flags |= DP_RESOLVED;
-       kr_delegpt_add(dplist, ns_new);
+       kr_ns_append(dplist, ns_new);
 
        return 0;
 }
index aace36830489f01e025c4a7ff96b678ba4dae32b..5e385dd0d581c1e3316f04c720b7af37e5757fb2 100644 (file)
@@ -62,11 +62,11 @@ static int begin(knot_layer_t *ctx, void *param)
 
        /* Initialize static root hints. */
        for (unsigned i = 0; i < HINT_COUNT; ++i) {
-               struct kr_delegpt *ns = kr_delegpt_create(SBELT[i].name, resolve->dp_map.pool);
+               struct kr_ns *ns = kr_ns_create(SBELT[i].name, resolve->dp_map.pool);
                if (ns != NULL) {
                        sockaddr_set(&ns->addr, AF_INET, SBELT[i].addr, 53);
                        ns->flags |= DP_RESOLVED;
-                       kr_delegpt_add(dp, ns);
+                       kr_ns_append(dp, ns);
                }
        }
 
index 7865d18dc50a99aa36084a69757cad69d619669d..5d877188f4442a6690baf67b6cadb61ad43f68d1 100644 (file)
@@ -44,7 +44,7 @@ static void iterate(struct knot_requestor *requestor, struct kr_context* ctx)
                return;
        }
 
-       struct kr_delegpt *ns = NULL;
+       struct kr_ns *ns = NULL;
        WALK_LIST(ns, *dp) {
                if (ns->flags & DP_RESOLVED) {
                        break;