Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / libadmin / test / util.c
1 /*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 *
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
8 */
9
10 /*
11 * This file implements the util related funtions for afscp
12 */
13
14 #include <afsconfig.h>
15 #include <afs/param.h>
16
17 #include <roken.h>
18
19 #include "util.h"
20
21 int
22 DoUtilErrorTranslate(struct cmd_syndesc *as, void *arock)
23 {
24 enum { ERROR_CODE };
25 afs_status_t st = 0;
26 int err = atoi(as->parms[ERROR_CODE].items->data);
27 const char *err_str = "unknown error";
28
29 if (util_AdminErrorCodeTranslate(err, 0, &err_str, &st)) {
30 printf("%d -> %s\n", err, err_str);
31 } else {
32 ERR_ST_EXT("util_AdminErrorCodeTranslate failed", st);
33 }
34
35 return 0;
36 }
37
38 int
39 DoUtilDatabaseServerList(struct cmd_syndesc *as, void *arock)
40 {
41 enum { CELL_NAME };
42 afs_status_t st = 0;
43 void *iter = NULL;
44 util_databaseServerEntry_t server;
45 const char *cell = as->parms[CELL_NAME].items->data;
46
47 if (util_DatabaseServerGetBegin(cell, &iter, &st)) {
48 printf("listing database servers in cell %s\n", cell);
49 while (util_DatabaseServerGetNext(iter, &server, &st)) {
50 struct in_addr ina;
51 ina.s_addr = htonl((unsigned int)server.serverAddress);
52 printf("%s %s\n", server.serverName, inet_ntoa(ina));
53 }
54 if (st != ADMITERATORDONE) {
55 ERR_ST_EXT("util_DatabaseServerGetNext", st);
56 }
57 if (!util_DatabaseServerGetDone(iter, &st)) {
58 ERR_ST_EXT("util_DatabaseServerGetDone", st);
59 }
60 } else {
61 ERR_ST_EXT("util_DatabaseServerGetBegin", st);
62 }
63
64 return 0;
65 }
66
67 int
68 DoUtilNameToAddress(struct cmd_syndesc *as, void *arock)
69 {
70 enum { SERVER_NAME };
71 afs_status_t st = 0;
72 const char *server = as->parms[SERVER_NAME].items->data;
73 int server_addr = 0;
74
75 if (util_AdminServerAddressGetFromName(server, &server_addr, &st)) {
76 struct in_addr ina;
77 ina.s_addr = htonl((unsigned int)server_addr);
78 printf("address is %s\n", inet_ntoa(ina));
79 } else {
80 ERR_ST_EXT("util_AdminServerAddressGetFromName", st);
81 }
82 return 0;
83 }
84
85 void
86 SetupUtilAdminCmd(void)
87 {
88 struct cmd_syndesc *ts;
89
90 ts = cmd_CreateSyntax("UtilErrorTranslate", DoUtilErrorTranslate, NULL, 0,
91 "translate an error code");
92 cmd_AddParm(ts, "-error", CMD_SINGLE, CMD_REQUIRED, "error code");
93 SetupCommonCmdArgs(ts);
94
95 ts = cmd_CreateSyntax("UtilDatabaseServerList", DoUtilDatabaseServerList,
96 NULL, 0, "list the database servers in a cell");
97 cmd_AddParm(ts, "-cell", CMD_SINGLE, CMD_REQUIRED, "cell to list");
98 SetupCommonCmdArgs(ts);
99
100 ts = cmd_CreateSyntax("UtilNameToAddress", DoUtilNameToAddress, NULL, 0,
101 "translate a host name to an address");
102 cmd_AddParm(ts, "-host", CMD_SINGLE, CMD_REQUIRED, "host name");
103 SetupCommonCmdArgs(ts);
104 }