/*
* $Id: demo.c,v 1.4 2005/12/07 20:55:52 dplonka Exp $
*
* This is based on "demo.c" provided with MRT-2.2.2a.
*/
#include "patricia.h"
#include <stdio.h> /* printf */
#include <stdlib.h> /* exit */
void func(prefix_t *prefix) {
printf("node: %s/%d\n", prefix_toa(prefix), prefix->bitlen);
}
int
main(void)
{
prefix_t *prefix;
patricia_tree_t *tree;
patricia_node_t *node;
tree = New_Patricia(32);
make_and_lookup(tree, "127.0.0.0/8");
try_search_best(tree, "127.0.0.1");
try_search_best(tree, "10.0.0.1");
make_and_lookup(tree, "10.42.42.0/24");
make_and_lookup(tree, "10.42.69.0/24");
make_and_lookup(tree, "10.0.0.0/8");
make_and_lookup(tree, "10.0.0.0/9");
try_search_best(tree, "10.42.42.0/24");
try_search_best(tree, "10.10.10.10");
try_search_best(tree, "10.10.10.1");
try_search_exact(tree, "10.0.0.0");
try_search_exact(tree, "10.0.0.0/8");
#if 0
PATRICIA_WALK(tree->head, node) {
printf("node: %s/%d\n",
prefix_toa(node->prefix), node->prefix->bitlen);
} PATRICIA_WALK_END;
#else
printf("%u total nodes.\n", patricia_walk_inorder(tree->head, func));
#endif
lookup_then_remove(tree, "42.0.0.0/8");
lookup_then_remove(tree, "10.0.0.0/8");
try_search_exact(tree, "10.0.0.0");
#if 0
PATRICIA_WALK(tree->head, node) {
printf("node: %s/%d\n",
prefix_toa(node->prefix), node->prefix->bitlen);
} PATRICIA_WALK_END;
#else
printf("%u total nodes.\n", patricia_walk_inorder(tree->head, func));
#endif
Destroy_Patricia(tree, (void *)0);
exit(0);
}