9a5901aa24de5706dc366d314a933c0507c9f6fe
[trust_router.git] / trp / test / rtbl_test.c
1 #include <stdio.h>
2 #include <talloc.h>
3
4 #include <trust_router/tr_name.h>
5 #include <trp_rtable.h>
6
7 char *apc[]={"apc1", "apc2", "apc3"};
8 size_t n_apc=sizeof(apc)/sizeof(apc[0]);
9 char *realm[]={"realm1", "realm2", "realm3"};
10 size_t n_realm=sizeof(realm)/sizeof(realm[0]);
11 char *peer[]={"peer1", "peer2", "peer3"};
12 size_t n_peer=sizeof(peer)/sizeof(peer[0]);
13
14 static void populate_rtable(TRP_RTABLE *table)
15 {
16   TRP_RENTRY *entry=NULL;
17   size_t ii=0, jj=0, kk=0;
18
19   for (ii=0; ii<n_apc; ii++) {
20     for (jj=0; jj<n_realm; jj++) {
21       for (kk=0; kk<n_peer; kk++) {
22         entry=trp_rentry_new(NULL);
23         trp_rentry_set_apc(entry, tr_new_name(apc[ii]));
24         trp_rentry_set_realm(entry, tr_new_name(realm[jj]));
25         trp_rentry_set_trust_router(entry, tr_new_name(realm[jj]));
26         trp_rentry_set_peer(entry, tr_new_name(peer[kk]));
27         trp_rentry_set_metric(entry, ii+jj+kk);
28         trp_rentry_set_next_hop(entry, tr_new_name(peer[kk]));
29         trp_rtable_add(table, entry);
30         entry=NULL; /* entry belongs to the table now */
31       }
32     }
33   }
34 }
35
36 static void print_rentry(TRP_RENTRY *entry)
37 {
38   printf("apc: %s\n", trp_rentry_get_apc(entry)->buf);
39   printf("realm: %s\n", trp_rentry_get_realm(entry)->buf);
40   printf("trust_router: %s\n", trp_rentry_get_trust_router(entry)->buf);
41   printf("peer: %s\n", trp_rentry_get_peer(entry)->buf);
42   printf("next_hop: %s\n", trp_rentry_get_next_hop(entry)->buf);
43   printf("metric: %d\n", trp_rentry_get_metric(entry));
44   printf("\n");
45 }
46
47 static void print_rtable(TRP_RTABLE *table)
48 {
49   size_t ii=0, jj=0;
50   TRP_RENTRY *apc_entry=NULL;
51   size_t len=0;
52   TR_NAME *n=0;
53
54   for (ii=0; ii<n_apc; ii++) {
55     len=trp_rtable_get_apc(table, n=tr_new_name(apc[ii]), &apc_entry);
56     tr_free_name(n); n=NULL;
57     for (jj=0; jj<len; jj++)
58       print_rentry(apc_entry+jj);
59     talloc_free(apc_entry);
60   }
61 }
62
63 int main(void)
64 {
65   TRP_RTABLE *table=NULL;
66   table=trp_rtable_new();
67   populate_rtable(table);
68   print_rtable(table);
69   trp_rtable_free(table);
70   return 0;
71 }