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); }
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); }
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); }