diff --git a/libs/libks/test/Makefile.am b/libs/libks/test/Makefile.am index 5c64a37fc6..c993ab62ee 100644 --- a/libs/libks/test/Makefile.am +++ b/libs/libks/test/Makefile.am @@ -54,6 +54,11 @@ testdht_SOURCES = testdht.c tap.c testdht_CFLAGS = $(AM_CFLAGS) testdht_LDADD = $(TEST_LDADD) +check_PROGRAMS += testdht2 +testdht2_SOURCES = testdht2.c tap.c +testdht2_CFLAGS = $(AM_CFLAGS) +testdht2_LDADD = $(TEST_LDADD) + check_PROGRAMS += testdht_net testdht_net_SOURCES = testdht-net.c tap.c testdht_net_CFLAGS = $(AM_CFLAGS) diff --git a/libs/libks/test/testdht2.c b/libs/libks/test/testdht2.c new file mode 100644 index 0000000000..7f784802ae --- /dev/null +++ b/libs/libks/test/testdht2.c @@ -0,0 +1,93 @@ +#include +#include <../dht/ks_dht.h> +#include + +int main() { + ks_status_t err; + int mask = 0; + ks_dht2_t *dht1 = NULL; + ks_dht2_t dht2; + ks_bool_t have_v4, have_v6; + char v4[48] = {0}, v6[48] = {0}; + ks_sockaddr_t addr; + + err = ks_init(); + ok(!err); + + err = ks_find_local_ip(v4, sizeof(v4), &mask, AF_INET, NULL); + ok(err == KS_STATUS_SUCCESS); + have_v4 = !zstr_buf(v4); + + //err = ks_find_local_ip(v6, sizeof(v6), NULL, AF_INET6, NULL); + //ok(err == KS_STATUS_SUCCESS); + have_v6 = KS_FALSE;//!zstr_buf(v6); + + ok(have_v4 || have_v6); + + if (have_v4) { + diag("Binding to %s on ipv4\n", v4); + } + if (have_v6) { + diag("Binding to %s on ipv6\n", v6); + } + + err = ks_dht2_alloc(&dht1, NULL); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_init(dht1, NULL); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_prealloc(&dht2, dht1->pool); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_init(&dht2, NULL); + ok(err == KS_STATUS_SUCCESS); + + if (have_v4) { + err = ks_addr_set(&addr, v4, KS_DHT_DEFAULT_PORT, AF_INET); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_bind(dht1, &addr); + ok(err == KS_STATUS_SUCCESS); + + err = ks_addr_set(&addr, v4, KS_DHT_DEFAULT_PORT + 1, AF_INET); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_bind(&dht2, &addr); + ok(err == KS_STATUS_SUCCESS); + } + + if (have_v6) { + err = ks_addr_set(&addr, v6, KS_DHT_DEFAULT_PORT, AF_INET6); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_bind(dht1, &addr); + ok(err == KS_STATUS_SUCCESS); + + err = ks_addr_set(&addr, v6, KS_DHT_DEFAULT_PORT + 1, AF_INET6); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_bind(&dht2, &addr); + ok(err == KS_STATUS_SUCCESS); + } + + + + + + /* Cleanup and shutdown */ + + err = ks_dht2_deinit(&dht2); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_deinit(dht1); + ok(err == KS_STATUS_SUCCESS); + + err = ks_dht2_free(dht1); + ok(err == KS_STATUS_SUCCESS); + + err = ks_shutdown(); + ok(err == KS_STATUS_SUCCESS); + + done_testing(); +}