diff options
author | 2020-12-10 21:44:22 +0000 | |
---|---|---|
committer | 2020-12-10 21:44:22 +0000 | |
commit | 72f587081daf30dc70b634a0555d02b02a09e00a (patch) | |
tree | d546e3043673a42e49b5c7aa9ca4e77c25d39227 /usr.sbin/unbound/testcode/unitmain.c | |
parent | Simplify '-i' handling, failing immediately during command line parsing (diff) | |
download | wireguard-openbsd-72f587081daf30dc70b634a0555d02b02a09e00a.tar.xz wireguard-openbsd-72f587081daf30dc70b634a0555d02b02a09e00a.zip |
import unbound 1.13.0, heavy lifting done by florian@
Diffstat (limited to 'usr.sbin/unbound/testcode/unitmain.c')
-rw-r--r-- | usr.sbin/unbound/testcode/unitmain.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/usr.sbin/unbound/testcode/unitmain.c b/usr.sbin/unbound/testcode/unitmain.c index a42be424e9e..c61026f2680 100644 --- a/usr.sbin/unbound/testcode/unitmain.c +++ b/usr.sbin/unbound/testcode/unitmain.c @@ -839,6 +839,52 @@ static void respip_test(void) respip_conf_actions_test(); } +#include "services/outside_network.h" +/** add number of new IDs to the reuse tree, randomly chosen */ +static void tcpid_addmore(struct reuse_tcp* reuse, + struct outside_network* outnet, unsigned int addnum) +{ + unsigned int i; + struct waiting_tcp* w; + for(i=0; i<addnum; i++) { + uint16_t id = reuse_tcp_select_id(reuse, outnet); + unit_assert(!reuse_tcp_by_id_find(reuse, id)); + w = calloc(1, sizeof(*w)); + unit_assert(w); + w->id = id; + w->outnet = outnet; + w->next_waiting = (void*)reuse->pending; + reuse_tree_by_id_insert(reuse, w); + } +} + +/** fill up the reuse ID tree and test assertions */ +static void tcpid_fillup(struct reuse_tcp* reuse, + struct outside_network* outnet) +{ + int t, numtest=3; + for(t=0; t<numtest; t++) { + rbtree_init(&reuse->tree_by_id, reuse_id_cmp); + tcpid_addmore(reuse, outnet, 65535); + reuse_del_readwait(&reuse->tree_by_id); + } +} + +/** test TCP ID selection */ +static void tcpid_test(void) +{ + struct pending_tcp pend; + struct outside_network outnet; + unit_show_func("services/outside_network.c", "reuse_tcp_select_id"); + memset(&pend, 0, sizeof(pend)); + pend.reuse.pending = &pend; + memset(&outnet, 0, sizeof(outnet)); + outnet.rnd = ub_initstate(NULL); + rbtree_init(&pend.reuse.tree_by_id, reuse_id_cmp); + tcpid_fillup(&pend.reuse, &outnet); + ub_randfree(outnet.rnd); +} + void unit_show_func(const char* file, const char* func) { printf("test %s:%s\n", file, func); @@ -907,6 +953,7 @@ main(int argc, char* argv[]) infra_test(); ldns_test(); msgparse_test(); + tcpid_test(); #ifdef CLIENT_SUBNET ecs_test(); #endif /* CLIENT_SUBNET */ |