]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
query flags for detect cycle.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 1 Aug 2007 11:29:12 +0000 (11:29 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 1 Aug 2007 11:29:12 +0000 (11:29 +0000)
git-svn-id: file:///svn/unbound/trunk@469 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
iterator/iter_utils.c
services/mesh.c
services/mesh.h
util/module.h

index 280d8bc4da158f8ba3c5d4b72427dbfed19bc1f3..652ce057c615603cf1a0338f8714dc2db3d2e372 100644 (file)
@@ -2,6 +2,7 @@
        - set version to 0.5
        - module work for module to module interconnections.
        - config of modules.
+       - detect cycle takes flags.
 
 31 July 2007: Wouter
        - updated plan
index a6accbe454e17af05f59fa7c34bbe0d1dad6c24f..73d4b726999266a8ce2cb2a52c4019ab8f192609 100644 (file)
@@ -365,7 +365,7 @@ causes_cycle(struct module_qstate* qstate, uint8_t* name, size_t namelen,
        qinf.qname_len = namelen;
        qinf.qtype = t;
        qinf.qclass = c;
-       return (*qstate->env->detect_cycle)(qstate, &qinf);
+       return (*qstate->env->detect_cycle)(qstate, &qinf, BIT_RD, 0);
 }
 
 void 
index 4abd77c9a044ae8c14ef1598636a822fde793370..df0d4372bd649085f6e9a7824222fcb77c099d74 100644 (file)
@@ -607,11 +607,12 @@ find_in_subsub(struct mesh_state* m, struct mesh_state* tofind)
 }
 
 int 
-mesh_detect_cycle(struct module_qstate* qstate, struct query_info* qinfo)
+mesh_detect_cycle(struct module_qstate* qstate, struct query_info* qinfo,
+       uint16_t flags, int prime)
 {
        struct mesh_area* mesh = qstate->env->mesh;
        struct mesh_state* cyc_m = qstate->mesh_info;
-       struct mesh_state* dep_m = mesh_area_find(mesh, qinfo, BIT_RD, 0);
+       struct mesh_state* dep_m = mesh_area_find(mesh, qinfo, flags, prime);
        if(!dep_m)
                return 0;
        if(dep_m == cyc_m || find_in_subsub(dep_m, cyc_m))
index 82e1a92e43b9cd062ed4faebf4e69ef879c28f9e..abb7083b22bed41ee7891fe2e1ccd35cd50ef868 100644 (file)
@@ -362,10 +362,13 @@ size_t mesh_get_mem(struct mesh_area* mesh);
  * trees.
  * @param qstate: given mesh querystate.
  * @param qinfo: query info for dependency.
+ * @param flags: query flags of dependency.
+ * @param prime: if dependency is a priming query or not.
  * @return true if the name,type,class exists and the given qstate mesh exists
  *     as a dependency of that name. Thus if qstate becomes dependent on
  *     name,type,class then a cycle is created.
  */
-int mesh_detect_cycle(struct module_qstate* qstate, struct query_info* qinfo);
+int mesh_detect_cycle(struct module_qstate* qstate, struct query_info* qinfo,
+       uint16_t flags, int prime);
 
 #endif /* SERVICES_MESH_H */
index f6d7f058f06f5e4dab3f300adc86f169e8a2d053..b19e197686caca67d4a2000acf25b037579765de 100644 (file)
@@ -202,15 +202,16 @@ struct module_env {
         * Detect if adding a dependency for qstate on name,type,class will
         * create a dependency cycle.
         * @param qstate: given mesh querystate.
-        * @param qinfo: query info for dependency. Assumed RDflag and not
-        *      priming.
+        * @param qinfo: query info for dependency. 
+        * @param flags: query flags of dependency, RD/CD flags.
+        * @param prime: if dependency is a priming query or not.
         * @return true if the name,type,class exists and the given 
         *      qstate mesh exists as a dependency of that name. Thus 
         *      if qstate becomes dependent on name,type,class then a 
         *      cycle is created.
         */
        int (*detect_cycle)(struct module_qstate* qstate, 
-               struct query_info* qinfo);
+               struct query_info* qinfo, uint16_t flags, int prime);
 
        /** region for temporary usage. May be cleared after operate() call. */
        struct region* scratch;