Deleted Added
full compact
iter_utils.c (266114) iter_utils.c (276605)
1/*
2 * iterator/iter_utils.c - iterative resolver module utility functions.
3 *
4 * Copyright (c) 2007, NLnet Labs. All rights reserved.
5 *
6 * This software is open source.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 411 unchanged lines hidden (view full) ---

420 if(!(m->rep = reply_info_copy(from->rep, NULL, region)))
421 return NULL;
422 return m;
423}
424
425void
426iter_dns_store(struct module_env* env, struct query_info* msgqinf,
427 struct reply_info* msgrep, int is_referral, time_t leeway, int pside,
1/*
2 * iterator/iter_utils.c - iterative resolver module utility functions.
3 *
4 * Copyright (c) 2007, NLnet Labs. All rights reserved.
5 *
6 * This software is open source.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 411 unchanged lines hidden (view full) ---

420 if(!(m->rep = reply_info_copy(from->rep, NULL, region)))
421 return NULL;
422 return m;
423}
424
425void
426iter_dns_store(struct module_env* env, struct query_info* msgqinf,
427 struct reply_info* msgrep, int is_referral, time_t leeway, int pside,
428 struct regional* region)
428 struct regional* region, uint16_t flags)
429{
430 if(!dns_cache_store(env, msgqinf, msgrep, is_referral, leeway,
429{
430 if(!dns_cache_store(env, msgqinf, msgrep, is_referral, leeway,
431 pside, region))
431 pside, region, flags))
432 log_err("out of memory: cannot store data in cache");
433}
434
435int
436iter_ns_probability(struct ub_randstate* rnd, int n, int m)
437{
438 int sel;
439 if(n == m) /* 100% chance */

--- 12 unchanged lines hidden (view full) ---

452 struct query_info qinf;
453 qinf.qname = name;
454 qinf.qname_len = namelen;
455 qinf.qtype = t;
456 qinf.qclass = c;
457 fptr_ok(fptr_whitelist_modenv_detect_cycle(
458 qstate->env->detect_cycle));
459 return (*qstate->env->detect_cycle)(qstate, &qinf,
432 log_err("out of memory: cannot store data in cache");
433}
434
435int
436iter_ns_probability(struct ub_randstate* rnd, int n, int m)
437{
438 int sel;
439 if(n == m) /* 100% chance */

--- 12 unchanged lines hidden (view full) ---

452 struct query_info qinf;
453 qinf.qname = name;
454 qinf.qname_len = namelen;
455 qinf.qtype = t;
456 qinf.qclass = c;
457 fptr_ok(fptr_whitelist_modenv_detect_cycle(
458 qstate->env->detect_cycle));
459 return (*qstate->env->detect_cycle)(qstate, &qinf,
460 (uint16_t)(BIT_RD|BIT_CD), qstate->is_priming);
460 (uint16_t)(BIT_RD|BIT_CD), qstate->is_priming,
461 qstate->is_valrec);
461}
462
463void
464iter_mark_cycle_targets(struct module_qstate* qstate, struct delegpt* dp)
465{
466 struct delegpt_ns* ns;
467 for(ns = dp->nslist; ns; ns = ns->next) {
468 if(ns->resolved)

--- 192 unchanged lines hidden (view full) ---

661 k2->entry.data;
662 size_t i, t;
663 if(k1->rk.dname_len != k2->rk.dname_len ||
664 k1->rk.flags != k2->rk.flags ||
665 k1->rk.type != k2->rk.type ||
666 k1->rk.rrset_class != k2->rk.rrset_class ||
667 query_dname_compare(k1->rk.dname, k2->rk.dname) != 0)
668 return 0;
462}
463
464void
465iter_mark_cycle_targets(struct module_qstate* qstate, struct delegpt* dp)
466{
467 struct delegpt_ns* ns;
468 for(ns = dp->nslist; ns; ns = ns->next) {
469 if(ns->resolved)

--- 192 unchanged lines hidden (view full) ---

662 k2->entry.data;
663 size_t i, t;
664 if(k1->rk.dname_len != k2->rk.dname_len ||
665 k1->rk.flags != k2->rk.flags ||
666 k1->rk.type != k2->rk.type ||
667 k1->rk.rrset_class != k2->rk.rrset_class ||
668 query_dname_compare(k1->rk.dname, k2->rk.dname) != 0)
669 return 0;
669 if(d1->ttl != d2->ttl ||
670 if( /* do not check ttl: d1->ttl != d2->ttl || */
670 d1->count != d2->count ||
671 d1->rrsig_count != d2->rrsig_count ||
672 d1->trust != d2->trust ||
673 d1->security != d2->security)
674 return 0;
675 t = d1->count + d1->rrsig_count;
676 for(i=0; i<t; i++) {
677 if(d1->rr_len[i] != d2->rr_len[i] ||
671 d1->count != d2->count ||
672 d1->rrsig_count != d2->rrsig_count ||
673 d1->trust != d2->trust ||
674 d1->security != d2->security)
675 return 0;
676 t = d1->count + d1->rrsig_count;
677 for(i=0; i<t; i++) {
678 if(d1->rr_len[i] != d2->rr_len[i] ||
678 d1->rr_ttl[i] != d2->rr_ttl[i] ||
679 /* no ttl check: d1->rr_ttl[i] != d2->rr_ttl[i] ||*/
679 memcmp(d1->rr_data[i], d2->rr_data[i],
680 d1->rr_len[i]) != 0)
681 return 0;
682 }
683 return 1;
684}
685
686int
687reply_equal(struct reply_info* p, struct reply_info* q, struct regional* region)
688{
689 size_t i;
690 if(p->flags != q->flags ||
691 p->qdcount != q->qdcount ||
680 memcmp(d1->rr_data[i], d2->rr_data[i],
681 d1->rr_len[i]) != 0)
682 return 0;
683 }
684 return 1;
685}
686
687int
688reply_equal(struct reply_info* p, struct reply_info* q, struct regional* region)
689{
690 size_t i;
691 if(p->flags != q->flags ||
692 p->qdcount != q->qdcount ||
693 /* do not check TTL, this may differ */
694 /*
692 p->ttl != q->ttl ||
693 p->prefetch_ttl != q->prefetch_ttl ||
695 p->ttl != q->ttl ||
696 p->prefetch_ttl != q->prefetch_ttl ||
697 */
694 p->security != q->security ||
695 p->an_numrrsets != q->an_numrrsets ||
696 p->ns_numrrsets != q->ns_numrrsets ||
697 p->ar_numrrsets != q->ar_numrrsets ||
698 p->rrset_count != q->rrset_count)
699 return 0;
700 for(i=0; i<p->rrset_count; i++) {
701 if(!rrset_equal(p->rrsets[i], q->rrsets[i])) {

--- 323 unchanged lines hidden ---
698 p->security != q->security ||
699 p->an_numrrsets != q->an_numrrsets ||
700 p->ns_numrrsets != q->ns_numrrsets ||
701 p->ar_numrrsets != q->ar_numrrsets ||
702 p->rrset_count != q->rrset_count)
703 return 0;
704 for(i=0; i<p->rrset_count; i++) {
705 if(!rrset_equal(p->rrsets[i], q->rrsets[i])) {

--- 323 unchanged lines hidden ---