returns a dns_result_t.
dns_rbt_created requires deleter_arg NULL if deleter is NULL.
dns_rbt_addnode always returns DNS_R_EXISTS if the node is found, regardless
of if it has data.
dns_rbt_addname will add the data and return SUCCESS if addnode says
EXISTS but there is no data at the node.
make sure memory is freed even when get_ancestor_mem to reallocate fails.
partialmatch returned by findnode must have data associated with it.
fixed up deletename; prematurely exited without freeing chain memory if
the node was not found. made deletename responsible for identifying whether
a node could be removed rather than zapnode.
turned a few of the print support functions static.
name attributes, name length, offset length, and number of bytes
of "padding" that are left over when a node is split.
adjusted node splitting algorithm to preserve the original location
of the lower portion of the split node (eg, when a node has "a.b" as
its name and is split into "a" and "b", "a" retains the same address
space as "a.b".)
and use it within dns_rbt_findnode.
moved the guts of dns_rbt_deletename into its own function to clean up
the freeing of ancestor memory into just one location.
deletefromlevel required that ancestor_count be > 1, which would abort
trying to delete the root of the tree when the root had no children.
ancestor/level history no longer kept in rbt structure; node_chain structure
was created for this purpose, and each dns_rbt_deletename call will pass
the chain structure to dns_rbt_findnode.
color enum removed from rbtnode structure; single bit used instead
length of name in rbtnode no longer kept as int in rbtnode structure;
stored as single byte just past end of rbtnode, and the actual name data starts
two bytes past the end.
dns_rbt_create takes additional argument that is a pointer to a function
which is responsible for deleting the space pointed to by an rbtnode's data
pointer when the node is removed.
dns_rbt_addnode renamed to dns_rbt_addonlevel so that dns_rbt_addnode could
be a public function that can provide the address of the new node back
to the caller.
removed several #if 0 blocks that were held over from when parent pointers
were used.
dns_rbt_node_t changed to dns_rbtnode_t to match ISC conventions.
main() test routine and support functions removed, to be put in
bin/tests/rbt_test.c
adding a node and rotating left/right taught to not use parent pointers.
deletion disabled because it currently does not know how to not use
parent pointers, and since they are not being maintained by insertion,
deleting has no prayer of working.
several isc_result_t returns changed to dns_result_t.