From: Yuri Schaeffer Date: Sun, 13 Oct 2013 19:05:51 +0000 (+0000) Subject: cleaning up X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecd9212830b7f7b3e15d3332c2b55ca791d42d63;p=thirdparty%2Funbound.git cleaning up git-svn-id: file:///svn/unbound/branches/edns-subnet@2977 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/edns-subnet/addrtree.c b/edns-subnet/addrtree.c index d19d7baf0..c8899b28b 100644 --- a/edns-subnet/addrtree.c +++ b/edns-subnet/addrtree.c @@ -18,6 +18,8 @@ * @param node: Child node this edge will connect to. * @param addr: full key to this edge. * @param addrlen: length of relevant part of key for this node + * @param parent_node: Parent node for node + * @param parent_index: Index of child node at parent node * @return new addredge or NULL on failure */ static struct addredge * @@ -254,19 +256,19 @@ bits_common(const addrkey_t* s1, addrlen_t l1, * @return 1 for substring, 0 otherwise */ static int -issub(const addrkey_t* s1, addrlen_t l1, - const addrkey_t* s2, addrlen_t l2, addrlen_t skip) +issub(const addrkey_t *s1, addrlen_t l1, + const addrkey_t *s2, addrlen_t l2, addrlen_t skip) { return bits_common(s1, l1, s2, l2, skip) == l1; } void -addrtree_insert(struct addrtree* tree, const addrkey_t* addr, - addrlen_t sourcemask, addrlen_t scope, void* elem, time_t ttl, +addrtree_insert(struct addrtree *tree, const addrkey_t *addr, + addrlen_t sourcemask, addrlen_t scope, void *elem, time_t ttl, time_t now) { - struct addrnode* newnode, *node; - struct addredge* edge, *newedge; + struct addrnode *newnode, *node; + struct addredge *edge; uint8_t index; addrlen_t common, depth; @@ -304,7 +306,7 @@ addrtree_insert(struct addrtree* tree, const addrkey_t* addr, if (!edge) { newnode = node_create(tree, elem, scope, ttl); if (!newnode) return; - if (!edge_create(newnode, addr, sourcemask, node, index)) { + if (!edge_create(newnode, addr, sourcemask, node, (int)index)) { clean_node(tree, newnode); free(newnode); return; @@ -325,7 +327,7 @@ addrtree_insert(struct addrtree* tree, const addrkey_t* addr, /* Case 4: split. */ if (!(newnode = node_create(tree, NULL, 0, 0))) return; - if (!edge_create(newnode, addr, common, node, index)) { + if (!edge_create(newnode, addr, common, node, (int)index)) { clean_node(tree, newnode); free(newnode); return; @@ -345,7 +347,7 @@ addrtree_insert(struct addrtree* tree, const addrkey_t* addr, /* Data is stored in other leafnode */ node = newnode; newnode = node_create(tree, elem, scope, ttl); - if (!edge_create(newnode, addr, sourcemask, node, index^1)) { + if (!edge_create(newnode, addr, sourcemask, node, (int)index^1)) { clean_node(tree, newnode); free(newnode); return; diff --git a/edns-subnet/addrtree.h b/edns-subnet/addrtree.h index b909f156f..bf2ae8166 100644 --- a/edns-subnet/addrtree.h +++ b/edns-subnet/addrtree.h @@ -43,14 +43,19 @@ struct addrtree { unsigned int elem_count; /** Maximum prefix length we are willing to cache. */ addrlen_t max_depth; + /** External function to delete elem. Called as + * delfunc(addrnode->elem, addrtree->env) */ void (*delfunc)(void *, void *); - size_t (*sizefunc)(void *); + /** Environment for delfunc */ void *env; + /** External function returning size of elem. Called as + * sizefunc(addrnode->elem) */ + size_t (*sizefunc)(void *); }; struct addrnode { /** Payload of node, may be NULL */ - struct reply_info* elem; + void* elem; /** Abs time in seconds in which elem is meaningful */ time_t ttl; /** Number of significant bits in address. */ @@ -68,8 +73,9 @@ struct addredge { addrlen_t len; /** child node this edge is connected to */ struct addrnode* node; - /** Ptr in parent node to self */ + /** Parent node this ege is connected to */ struct addrnode* parent_node; + /** Index of this edge in parent_node */ int parent_index; };