libadmin: minor warning fix
[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     typedef enum { ERROR_CODE } DoUtilErrorTranslate_parm_t;
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     typedef enum { CELL_NAME } DoUtilDatabaseServerList_parm_t;
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     typedef enum { SERVER_NAME } DoUtilNameToAddress_parm_t;
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,
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, "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,
101                           "translate a host name to an address");
102     cmd_AddParm(ts, "-host", CMD_SINGLE, CMD_REQUIRED, "host name");
103     SetupCommonCmdArgs(ts);
104 }