cleanup added

This commit is contained in:
hladu357 2024-06-06 13:51:53 +02:00
parent 9e91d8f826
commit 1624a9a06f
1 changed files with 22 additions and 4 deletions

View File

@ -2,10 +2,10 @@
#define RULES_FILE "../data/routing-data" #define RULES_FILE "../data/routing-data"
#define TEST_FILE "../data/test-data" #define TEST_FILE "../data/test-data"
#define TEST_ROWS 70 /*17217*/ #define TEST_ROWS 11 /*17217*/
#define READ_MODE "r" #define READ_MODE "r"
#define RULE_NOT_FOUND -1 #define RULE_NOT_FOUND -1
#define GET_BIT(key, bit) ( ( key.s[ bit / 16 ] & (1ul << (15 - bit % 16)) ) != 0 ) #define GET_BIT(key, bit) ( ( key.s[ bit / 16 ] & (1u << (15 - bit % 16)) ) != 0 )
trie_node_t create_node() { trie_node_t create_node() {
@ -20,6 +20,20 @@ trie_holder_t create_holder() {
return ret; return ret;
} }
int destory_holder(struct trie_holder* t) {
destory_node(t->_root);
free(t);
return 1;
}
int destory_node(struct trie_node* n) {
int ret = 0;
if (!n) return ret;
ret = destory_node(n->_l) + destory_node(n->_r);
free(n);
return ret;
}
int trie_insert(trie_holder_t t, ipv6_t key, int val, int mask) { int trie_insert(trie_holder_t t, ipv6_t key, int val, int mask) {
trie_node_t iter = t->_root; trie_node_t iter = t->_root;
trie_node_t* next = &t->_root; trie_node_t* next = &t->_root;
@ -103,6 +117,7 @@ int load_input(trie_holder_t t) {
trie_insert(t, key, val, mask); trie_insert(t, key, val, mask);
++cnt; ++cnt;
} }
fclose(f);
return cnt; return cnt;
} }
@ -129,7 +144,8 @@ int load_tests(ipv6_t** rips, int** rref) {
while (fgetc(f) != ' '); while (fgetc(f) != ' ');
fscanf(f, "%d", &(ref[row])); fscanf(f, "%d", &(ref[row]));
} }
fclose(f);
*rips = ips; *rips = ips;
*rref = ref; *rref = ref;
return TEST_ROWS; return TEST_ROWS;
@ -146,6 +162,8 @@ int fire_tests(trie_holder_t t, ipv6_t* ips, int* ref, int num_tests ) {
} }
} }
free(ips);
free(ref);
return wrong; return wrong;
} }
@ -158,6 +176,6 @@ int main() {
printf("Loaded %d tests\n", load_tests(&ips, &ref) ); printf("Loaded %d tests\n", load_tests(&ips, &ref) );
printf("%d tests wrong\n", fire_tests(t, ips, ref, TEST_ROWS) ); printf("%d tests wrong\n", fire_tests(t, ips, ref, TEST_ROWS) );
destory_holder(t);
return 0; return 0;
} }