afsconfig-and-rcsid-all-around-20010705
[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 <afs/param.h>
15 #include <afsconfig.h>
16
17 RCSID("$Header$");
18
19 #include "util.h"
20
21 int
22 DoUtilErrorTranslate(struct cmd_syndesc *as, char *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, char *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,
53                               inet_ntoa(ina));
54         }
55         if (st != ADMITERATORDONE) {
56             ERR_ST_EXT("util_DatabaseServerGetNext", st);
57         }
58         if (!util_DatabaseServerGetDone(iter, &st)) {
59             ERR_ST_EXT("util_DatabaseServerGetDone", st);
60         }
61     } else {
62         ERR_ST_EXT("util_DatabaseServerGetBegin", st);
63     }
64
65     return 0;
66 }
67
68 int
69 DoUtilNameToAddress(struct cmd_syndesc *as, char *arock)
70 {
71     typedef enum {SERVER_NAME} DoUtilNameToAddress_parm_t;
72     afs_status_t st = 0;
73     const char *server = as->parms[SERVER_NAME].items->data;
74     int server_addr = 0;
75
76     if (util_AdminServerAddressGetFromName(server, &server_addr, &st)) {
77         struct in_addr ina;
78         ina.s_addr = htonl((unsigned int)server_addr);
79         printf("address is %s\n", inet_ntoa(ina));
80     } else {
81         ERR_ST_EXT("util_AdminServerAddressGetFromName", st);
82     }
83     return 0;
84 }
85
86 void
87 SetupUtilAdminCmd(void)
88 {
89     struct cmd_syndesc  *ts;
90
91     ts = cmd_CreateSyntax("UtilErrorTranslate", DoUtilErrorTranslate, 0,
92                           "translate an error code");
93     cmd_AddParm(ts,
94                 "-error", CMD_SINGLE, CMD_REQUIRED, "error code");
95     SetupCommonCmdArgs(ts);
96
97     ts = cmd_CreateSyntax("UtilDatabaseServerList", DoUtilDatabaseServerList, 0,
98                           "list the database servers in a cell");
99     cmd_AddParm(ts,
100                 "-cell", CMD_SINGLE, CMD_REQUIRED, "cell to list");
101     SetupCommonCmdArgs(ts);
102
103     ts = cmd_CreateSyntax("UtilNameToAddress", DoUtilNameToAddress, 0,
104                           "translate a host name to an address");
105     cmd_AddParm(ts, "-host", CMD_SINGLE, CMD_REQUIRED, "host name");
106     SetupCommonCmdArgs(ts);
107 }