예제 #1
0
파일: try.c 프로젝트: furquans/generic
int main()
{
	struct tree_node *root;
	struct tree_node *left, *right;
	int i = 1,j=2,k=3;

	root = create_tree_node(&i);
	left = create_tree_node(&j);
	right = create_tree_node(&k);

	TREE_ADD(root, left, left);
	TREE_ADD(root, right, right);

	traverse_path(root,traverse);
	destroy_tree(root,NULL);
}
예제 #2
0
static void test_print(void)
{
	struct kz_lookup_ipv6_node *root = ipv6_node_new();

	TREE_CHECK(root, "0|::/0\n");

	TREE_ADD(root, "::", 32);
	TREE_ADD(root, "::", 64);
	TREE_ADD(root, "ffff::", 16);
	TREE_ADD(root, "ffff:ff00::", 32);
	TREE_ADD(root, "ffff:f000::", 32);
	TREE_CHECK(root,
		   "0|::/0\n"
		   " 1|::/32\n"
		   "   2|::/64\n"
		   " 1|ffff::/16\n"
		   "   2|ffff:f000::/20\n"
		   "     3|ffff:f000::/32\n" "     3|ffff:ff00::/32\n");

	ipv6_destroy(root);
}
예제 #3
0
static void test_add(void)
{
	struct kz_lookup_ipv6_node *root = NULL;

	/* construct an empty tree */
	TREE_NEW(root);
	TREE_CHECK(root, "0|::/0\n");

	/* postfix insertion */
	TREE_ADD(root, "ffff::", 15);
	TREE_ADD(root, "ffff:ffff::", 31);
	TREE_CHECK(root,
		   "0|::/0\n" " 1|ffff::/15\n" "   2|ffff:ffff::/31\n");

	TREE_NEW(root);
	TREE_ADD(root, "::", 15);
	TREE_ADD(root, "::", 31);
	TREE_CHECK(root, "0|::/0\n" " 1|::/15\n" "   2|::/31\n");

	/* inserting shorter prefix */
	TREE_NEW(root);
	TREE_ADD(root, "ffff:ffff::", 31);
	TREE_ADD(root, "ffff::", 15);
	TREE_CHECK(root,
		   "0|::/0\n" " 1|ffff::/15\n" "   2|ffff:ffff::/31\n");

	TREE_NEW(root);
	TREE_ADD(root, "::", 31);
	TREE_ADD(root, "::", 15);
	TREE_CHECK(root, "0|::/0\n" " 1|::/15\n" "   2|::/31\n");

	/* same prefix length, but different prefix */
	TREE_NEW(root);
	TREE_ADD(root, "ffff::", 16);
	TREE_ADD(root, "f0ff::", 16);
	TREE_CHECK(root,
		   "0|::/0\n"
		   " 1|f0ff::/4\n" "   2|f0ff::/16\n" "   2|ffff::/16\n");

	TREE_NEW(root);
	TREE_ADD(root, "00ff::", 16);
	TREE_ADD(root, "0fff::", 16);
	TREE_CHECK(root,
		   "0|::/0\n"
		   " 1|fff::/4\n" "   2|ff::/16\n" "   2|fff::/16\n");

	/* adding a node already present */
	TREE_NEW(root);
	TREE_ADD(root, "fe80::", 10);
	TREE_ADD(root, "fe80::", 10);
	TREE_ADD(root, "fe8f::", 10);
	TREE_CHECK(root, "0|::/0\n" " 1|fe80::/10\n");

	ipv6_destroy(root);
}