]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
Pending commits
authorYuri Schaeffer <yuri@nlnetlabs.nl>
Wed, 29 May 2013 08:35:51 +0000 (08:35 +0000)
committerYuri Schaeffer <yuri@nlnetlabs.nl>
Wed, 29 May 2013 08:35:51 +0000 (08:35 +0000)
git-svn-id: file:///svn/unbound/branches/edns-subnet@2906 be551aaa-1e26-0410-a405-d3ace91eadb9

edns-subnet/subnetmod.c
util/module.h

index 91bf9593e1b76617807aac6c22bde687e95527b5..d23c9fd42e0e08e1c30e794045035d6751aebfec 100644 (file)
@@ -110,8 +110,7 @@ enum module_ext_state eval_response(struct module_qstate* qstate)
        if(qstate->edns_server_out.subnet_addr_fam != qstate->edns_server_in.subnet_addr_fam ||
                qstate->edns_server_out.subnet_source_mask != qstate->edns_server_in.subnet_source_mask ||
                memcmp(qstate->edns_server_out.subnet_addr, qstate->edns_server_in.subnet_addr, sn_octs) != 0 ||
-               //YBS should this just be equal?
-               (qstate->edns_server_out.subnet_addr[sn_octs]^qstate->edns_server_in.subnet_addr[sn_octs])>>remainder) {
+               qstate->edns_server_out.subnet_addr[sn_octs] != qstate->edns_server_in.subnet_addr[sn_octs]) {
                /* we can not, restart query without option */
                verbose(VERB_QUERY, "subnet: forged data");
                qstate->edns_server_out.subnet_validdata = 0;
@@ -120,6 +119,8 @@ enum module_ext_state eval_response(struct module_qstate* qstate)
        }
        
        /* TODO PUT IT IN OUR SPECIAL CACHE */
+       /* NOTE: do not cache responses with sourcemask larger than 
+        * EDNSSUBNET_MAX_SUBNET_IP4/6, unless  */
        
        if (qstate->edns_client_in.subnet_downstream) {
                /* Client wants to see the answer, echo option back
index e72390ad4160654bd5ecbce2429996f6f571712d..2f1551a3b3334eaf3a3680c92c85b107306e250d 100644 (file)
@@ -306,11 +306,11 @@ struct module_qstate {
        void* minfo[MAX_MODULE];
 #ifdef CLIENT_SUBNET
        /** edns_data for client communication */
-       struct edns_data* edns_from_client;
-       struct edns_data* edns_to_client;
+       struct edns_data edns_client_in;
+       struct edns_data edns_client_out;
        /** edns data for server communication */
-       struct edns_data edns_in;
-       struct edns_data edns_out;
+       struct edns_data edns_server_in;
+       struct edns_data edns_server_out;
 #endif
        /** environment for this query */
        struct module_env* env;