1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ 2 /* 3 * t_walk_rtree.c --- test krb5_walk_realm_tree 4 */ 5 6 #include "k5-int.h" 7 #include <stdio.h> 8 #include "com_err.h" 9 10 int 11 main(int argc, char **argv) 12 { 13 krb5_data client, server; 14 char realm_branch_char = '.'; 15 krb5_principal *tree, *p; 16 char *name; 17 krb5_error_code retval; 18 krb5_context context; 19 20 krb5_init_context(&context); 21 22 if (argc < 3 || argc > 4) { 23 fprintf(stderr, 24 "Usage: %s client-realm server-realm [sep_char]\n", 25 argv[0]); 26 exit(99); 27 } 28 client.data = argv[1]; 29 client.length = strlen(client.data); 30 31 server.data = argv[2]; 32 server.length = strlen(server.data); 33 34 if (argc == 4) 35 realm_branch_char = argv[3][0]; 36 37 retval = krb5_walk_realm_tree(context, &client, &server, &tree, 38 realm_branch_char); 39 if (retval) { 40 com_err("krb5_walk_realm_tree", retval, " "); 41 exit(1); 42 } 43 44 for (p = tree; *p; p++) { 45 retval = krb5_unparse_name(context, *p, &name); 46 if (retval) { 47 com_err("krb5_unprase_name", retval, " "); 48 exit(2); 49 } 50 printf("%s\n", name); 51 free(name); 52 } 53 54 krb5_free_realm_tree(context, tree); 55 krb5_free_context(context); 56 57 exit(0); 58 } 59