summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2015-01-02 17:35:29 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2015-01-02 17:35:29 +0000
commit7954be7fa5ea70de36aacebb8bcca2a70af709f4 (patch)
treeb839bbb75392ad4c301a0393b3ca49fe155c5740 /util
parent7f563e614fb9a8ce7c8904a3ad346b7e38238339 (diff)
downloadsrc-test2-7954be7fa5ea70de36aacebb8bcca2a70af709f4.tar.gz
src-test2-7954be7fa5ea70de36aacebb8bcca2a70af709f4.zip
import unbound 1.5.1vendor/unbound/1.5.1
Notes
Notes: svn path=/vendor/unbound/dist/; revision=276544 svn path=/vendor/unbound/1.5.1/; revision=276545; tag=vendor/unbound/1.5.1
Diffstat (limited to 'util')
-rw-r--r--util/data/msgreply.c13
-rw-r--r--util/data/msgreply.h5
-rw-r--r--util/fptr_wlist.c4
-rw-r--r--util/fptr_wlist.h4
-rw-r--r--util/iana_ports.inc3
-rw-r--r--util/module.h10
-rw-r--r--util/net_help.c2
7 files changed, 26 insertions, 15 deletions
diff --git a/util/data/msgreply.c b/util/data/msgreply.c
index 126e7bef45b7..68bcfd09ee39 100644
--- a/util/data/msgreply.c
+++ b/util/data/msgreply.c
@@ -576,10 +576,12 @@ reply_info_delete(void* d, void* ATTR_UNUSED(arg))
}
hashvalue_t
-query_info_hash(struct query_info *q)
+query_info_hash(struct query_info *q, uint16_t flags)
{
hashvalue_t h = 0xab;
h = hashlittle(&q->qtype, sizeof(q->qtype), h);
+ if(q->qtype == LDNS_RR_TYPE_AAAA && (flags&BIT_CD))
+ h++;
h = hashlittle(&q->qclass, sizeof(q->qclass), h);
h = dname_query_hash(q->qname, h);
return h;
@@ -771,15 +773,14 @@ log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* rep)
region, 65535, 1)) {
log_info("%s: log_dns_msg: out of memory", str);
} else {
- char* str = sldns_wire2str_pkt(sldns_buffer_begin(buf),
+ char* s = sldns_wire2str_pkt(sldns_buffer_begin(buf),
sldns_buffer_limit(buf));
- if(!str) {
+ if(!s) {
log_info("%s: log_dns_msg: ldns tostr failed", str);
} else {
- log_info("%s %s",
- str, (char*)sldns_buffer_begin(buf));
+ log_info("%s %s", str, s);
}
- free(str);
+ free(s);
}
sldns_buffer_free(buf);
regional_destroy(region);
diff --git a/util/data/msgreply.h b/util/data/msgreply.h
index ccbd0d748381..e8d6d762e01a 100644
--- a/util/data/msgreply.h
+++ b/util/data/msgreply.h
@@ -305,8 +305,9 @@ void query_entry_delete(void *q, void* arg);
/** delete reply_info data structure */
void reply_info_delete(void* d, void* arg);
-/** calculate hash value of query_info, lowercases the qname */
-hashvalue_t query_info_hash(struct query_info *q);
+/** calculate hash value of query_info, lowercases the qname,
+ * uses CD flag for AAAA qtype */
+hashvalue_t query_info_hash(struct query_info *q, uint16_t flags);
/**
* Setup query info entry
diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c
index 3a5fc5f0611a..5a77432c775e 100644
--- a/util/fptr_wlist.c
+++ b/util/fptr_wlist.c
@@ -280,7 +280,7 @@ fptr_whitelist_modenv_detach_subs(void (*fptr)(
int
fptr_whitelist_modenv_attach_sub(int (*fptr)(
struct module_qstate* qstate, struct query_info* qinfo,
- uint16_t qflags, int prime, struct module_qstate** newq))
+ uint16_t qflags, int prime, int valrec, struct module_qstate** newq))
{
if(fptr == &mesh_attach_sub) return 1;
return 0;
@@ -296,7 +296,7 @@ fptr_whitelist_modenv_kill_sub(void (*fptr)(struct module_qstate* newq))
int
fptr_whitelist_modenv_detect_cycle(int (*fptr)(
struct module_qstate* qstate, struct query_info* qinfo,
- uint16_t flags, int prime))
+ uint16_t flags, int prime, int valrec))
{
if(fptr == &mesh_detect_cycle) return 1;
return 0;
diff --git a/util/fptr_wlist.h b/util/fptr_wlist.h
index 62692ba8b530..10de5d816772 100644
--- a/util/fptr_wlist.h
+++ b/util/fptr_wlist.h
@@ -233,7 +233,7 @@ int fptr_whitelist_modenv_detach_subs(void (*fptr)(
*/
int fptr_whitelist_modenv_attach_sub(int (*fptr)(
struct module_qstate* qstate, struct query_info* qinfo,
- uint16_t qflags, int prime, struct module_qstate** newq));
+ uint16_t qflags, int prime, int valrec, struct module_qstate** newq));
/**
* Check function pointer whitelist for module_env kill_sub callback values.
@@ -251,7 +251,7 @@ int fptr_whitelist_modenv_kill_sub(void (*fptr)(struct module_qstate* newq));
*/
int fptr_whitelist_modenv_detect_cycle(int (*fptr)(
struct module_qstate* qstate, struct query_info* qinfo,
- uint16_t flags, int prime));
+ uint16_t flags, int prime, int valrec));
/**
* Check function pointer whitelist for module init call values.
diff --git a/util/iana_ports.inc b/util/iana_ports.inc
index ff971293fe9e..d318477e56f4 100644
--- a/util/iana_ports.inc
+++ b/util/iana_ports.inc
@@ -2061,6 +2061,7 @@
2423,
2424,
2425,
+2426,
2427,
2428,
2429,
@@ -5353,9 +5354,11 @@
35004,
35355,
36001,
+36411,
36865,
37475,
37654,
+38002,
38201,
38202,
38203,
diff --git a/util/module.h b/util/module.h
index f95ff6dc8372..b9dde36e2f3c 100644
--- a/util/module.h
+++ b/util/module.h
@@ -256,13 +256,14 @@ struct module_env {
* @param qinfo: what to query for (copied).
* @param qflags: what flags to use (RD, CD flag or not).
* @param prime: if it is a (stub) priming query.
+ * @param valrec: validation lookup recursion, does not need validation
* @param newq: If the new subquery needs initialisation, it is
* returned, otherwise NULL is returned.
* @return: false on error, true if success (and init may be needed).
*/
int (*attach_sub)(struct module_qstate* qstate,
struct query_info* qinfo, uint16_t qflags, int prime,
- struct module_qstate** newq);
+ int valrec, struct module_qstate** newq);
/**
* Kill newly attached sub. If attach_sub returns newq for
@@ -280,13 +281,15 @@ struct module_env {
* @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.
+ * @param valrec: validation lookup recursion, does not need validation
* @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, uint16_t flags, int prime);
+ struct query_info* qinfo, uint16_t flags, int prime,
+ int valrec);
/** region for temporary usage. May be cleared after operate() call. */
struct regional* scratch;
@@ -397,6 +400,9 @@ struct module_qstate {
uint16_t query_flags;
/** if this is a (stub or root) priming query (with hints) */
int is_priming;
+ /** if this is a validation recursion query that does not get
+ * validation itself */
+ int is_valrec;
/** comm_reply contains server replies */
struct comm_reply* reply;
diff --git a/util/net_help.c b/util/net_help.c
index 49ce677f4aa0..8c2bac7372fc 100644
--- a/util/net_help.c
+++ b/util/net_help.c
@@ -699,7 +699,7 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem)
}
}
if(verifypem && verifypem[0]) {
- if(!SSL_CTX_load_verify_locations(ctx, verifypem, NULL) != 1) {
+ if(!SSL_CTX_load_verify_locations(ctx, verifypem, NULL)) {
log_crypto_err("error in SSL_CTX verify");
SSL_CTX_free(ctx);
return NULL;