static void test_zonecut_filter(void **state)
{
	struct kr_zonecut cut;
	kr_zonecut_init(&cut, (const uint8_t *)"", NULL);

	/* IPv4 */
	uint32_t ip4 = 0; /* 0.0.0.0 */
	TEST_IP(cut, ip4, kr_error(EILSEQ));
	ip4 = htonl(0x7f000002); /* 127.0.0.2 */
	TEST_IP(cut, ip4, kr_error(EILSEQ));
	ip4 = htonl(0x7fffffff); /* 127.255.255.255 */
	TEST_IP(cut, ip4, kr_error(EILSEQ));
	ip4 = htonl(0xff000001); /* 255.0.0.1 */
	TEST_IP(cut, ip4, 0);
	/* IPv6 */
	struct in6_addr ip6;
	memset(&ip6, 0, sizeof(ip6)); /* :: */
	TEST_IP(cut, ip6.s6_addr, kr_error(EILSEQ));
	ip6.s6_addr[15] = 0x01; /* ::1 */
	TEST_IP(cut, ip6.s6_addr, kr_error(EILSEQ));
	ip6.s6_addr[15] = 0x02; /* ::2 */
	TEST_IP(cut, ip6.s6_addr, 0);

	kr_zonecut_deinit(&cut);
}
Beispiel #2
0
void engine_deinit(struct engine *engine)
{
	if (engine == NULL) {
		return;
	}

	/* Only close sockets and services,
	 * no need to clean up mempool. */
	network_deinit(&engine->net);
	kr_zonecut_deinit(&engine->resolver.root_hints);
	kr_cache_close(&engine->resolver.cache);
	lru_deinit(engine->resolver.cache_rtt);
	lru_deinit(engine->resolver.cache_rep);

	/* Unload modules and engine. */
	for (size_t i = 0; i < engine->modules.len; ++i) {
		engine_unload(engine, engine->modules.at[i]);
	}
	if (engine->L) {
		lua_close(engine->L);
	}

	/* Free data structures */
	array_clear(engine->modules);
	array_clear(engine->storage_registry);
	kr_ta_clear(&engine->resolver.trust_anchors);
	kr_ta_clear(&engine->resolver.negative_anchors);
}
static void test_zonecut_copy(void **state)
{
	const knot_dname_t *root = (const uint8_t *)"";
	struct kr_zonecut cut1, cut2;
	kr_zonecut_init(&cut1, root, NULL);
	kr_zonecut_init(&cut2, root, NULL);
	/* Insert some values */
	assert_int_equal(kr_zonecut_add(&cut1, (const uint8_t *)"dead", NULL), 0);
	assert_int_equal(kr_zonecut_add(&cut1, (const uint8_t *)"beef", NULL), 0);
	/* Copy */
	assert_int_equal(kr_zonecut_copy(&cut2, &cut1), 0);
	/* Check if exist */
	assert_non_null(kr_zonecut_find(&cut2, (const uint8_t *)"dead"));
	assert_non_null(kr_zonecut_find(&cut2, (const uint8_t *)"beef"));
	assert_null(kr_zonecut_find(&cut2, (const uint8_t *)"corn"));
	kr_zonecut_deinit(&cut1);
	kr_zonecut_deinit(&cut2);
}
Beispiel #4
0
static void unload(struct kr_module *module)
{
	struct kr_zonecut *hints = module->data;
	if (hints) {
		kr_zonecut_deinit(hints);
		mp_delete(hints->pool->ctx);
		module->data = NULL;
	}
}
static void test_zonecut_params(void **state)
{
	/* NULL args */
	struct kr_zonecut cut;
	assert_int_not_equal(kr_zonecut_init(NULL, NULL, NULL), 0);
	assert_int_not_equal(kr_zonecut_init(&cut, NULL, NULL), 0);
	kr_zonecut_deinit(NULL);
	kr_zonecut_set(NULL, NULL);
	kr_zonecut_set(&cut, NULL);
	assert_int_not_equal(kr_zonecut_add(NULL, NULL, NULL), 0);
	assert_null((void *)kr_zonecut_find(NULL, NULL));
	assert_null((void *)kr_zonecut_find(&cut, NULL));
	assert_int_not_equal(kr_zonecut_set_sbelt(NULL, NULL), 0);
	assert_int_not_equal(kr_zonecut_find_cached(NULL, NULL, NULL, NULL, 0), 0);
}