#include <afsconfig.h>
#include <afs/param.h>
-RCSID
- ("$Header$");
+#include <roken.h>
#include "client.h"
#include <afs/cellconfig.h>
#include <ubik.h>
#include <ubik_int.h>
#ifdef AFS_NT40_ENV
-#include <winsock2.h>
#include <pthread.h>
#endif
-/* These aren't coming from a header, currently, so they must stay here.
- Fix elsewhere, or leave alone. */
-extern int RXSTATS_RetrieveProcessRPCStats();
-extern int RXSTATS_RetrievePeerRPCStats();
-extern int RXSTATS_QueryProcessRPCStats();
-extern int RXSTATS_QueryPeerRPCStats();
-extern int RXSTATS_EnableProcessRPCStats();
-extern int RXSTATS_EnablePeerRPCStats();
-extern int RXSTATS_DisableProcessRPCStats();
-extern int RXSTATS_DisablePeerRPCStats();
-extern int RXSTATS_ClearProcessRPCStats();
-extern int RXSTATS_ClearPeerRPCStats();
-
/*
* This structure stores the client and server function lists.
* This is kept separate from the actual interface definitions
int
DoClientMountPointCreate(struct cmd_syndesc *as, void *arock)
{
- typedef enum { DIRECTORY, VOLUME, READWRITE,
+ enum { DIRECTORY, VOLUME, READWRITE,
CHECK
- } DoClientMountPointCreate_parm_t;
+ };
afs_status_t st = 0;
const char *directory = NULL;
const char *volume = NULL;
int
DoClientAFSServerGet(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER } DoClientAFSServerGet_parm_t;
+ enum { SERVER };
afs_status_t st = 0;
const char *server = NULL;
afs_serverEntry_t entry;
typedef enum {
AFS_PEER_STATS,
- AFS_PROCESS_STATS
+ afs_proc_tESS_STATS
} afs_stat_type_t, *afs_stat_type_p;
static afs_stat_type_t
if (!strcmp(type, "peer")) {
rc = AFS_PEER_STATS;
} else if (!strcmp(type, "process")) {
- rc = AFS_PROCESS_STATS;
+ rc = afs_proc_tESS_STATS;
} else {
ERR_EXT("stat_type must be process or peer");
}
int
DoClientRPCStatsStateGet(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER, PROCESS,
+ enum { SERVER, PROCESS,
STAT_TYPE
- } DoClientRPCStatsStateGet_parm_t;
+ };
afs_status_t st = 0;
struct rx_connection *conn;
- int servAddr = 0;
afs_stat_source_t type;
int srvrPort;
int typeIsValid = 0;
afs_stat_type_t which = 0;
afs_RPCStatsState_t state;
- if (as->parms[PROCESS].items) {
- typeIsValid =
- GetStatSourceFromString(as->parms[PROCESS].items->data, &type,
- &srvrPort);
- }
+ typeIsValid = GetStatSourceFromString(as->parms[PROCESS].items->data,
+ &type, &srvrPort);
- if (as->parms[STAT_TYPE].items) {
- which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- }
+ which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- if (as->parms[SERVER].items) {
- if (typeIsValid) {
- if (!afsclient_RPCStatOpen
- (cellHandle, as->parms[SERVER].items->data, type, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpen", st);
- }
- } else {
- if (!afsclient_RPCStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
- }
+ if (typeIsValid) {
+ if (!afsclient_RPCStatOpen(cellHandle,
+ as->parms[SERVER].items->data,
+ type, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpen", st);
+ }
+ } else {
+ if (!afsclient_RPCStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
}
}
int
DoClientRPCStatsStateEnable(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER, PROCESS, STAT_TYPE } DoClientRPCStatsEnable_parm_t;
+ enum { SERVER, PROCESS, STAT_TYPE };
afs_status_t st = 0;
struct rx_connection *conn;
- int servAddr = 0;
afs_stat_source_t type;
int srvrPort;
- int typeIsValid = 0;
- afs_stat_type_t which = 0;
+ int typeIsValid;
+ afs_stat_type_t which;
- if (as->parms[PROCESS].items) {
- typeIsValid =
- GetStatSourceFromString(as->parms[PROCESS].items->data, &type,
- &srvrPort);
- }
+ typeIsValid = GetStatSourceFromString(as->parms[PROCESS].items->data,
+ &type, &srvrPort);
- if (as->parms[STAT_TYPE].items) {
- which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- }
+ which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- if (as->parms[SERVER].items) {
- if (typeIsValid) {
- if (!afsclient_RPCStatOpen
- (cellHandle, as->parms[SERVER].items->data, type, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpen", st);
- }
- } else {
- if (!afsclient_RPCStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
- }
+ if (typeIsValid) {
+ if (!afsclient_RPCStatOpen(cellHandle,
+ as->parms[SERVER].items->data,
+ type, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpen", st);
+ }
+ } else {
+ if (!afsclient_RPCStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
}
}
int
DoClientRPCStatsStateDisable(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER, PROCESS,
+ enum { SERVER, PROCESS,
STAT_TYPE
- } DoClientRPCStatsDisable_parm_t;
+ };
afs_status_t st = 0;
struct rx_connection *conn;
- int servAddr = 0;
afs_stat_source_t type;
int srvrPort;
- int typeIsValid = 0;
- afs_stat_type_t which = 0;
+ int typeIsValid;
+ afs_stat_type_t which;
- if (as->parms[PROCESS].items) {
- typeIsValid =
- GetStatSourceFromString(as->parms[PROCESS].items->data, &type,
- &srvrPort);
- }
+ typeIsValid = GetStatSourceFromString(as->parms[PROCESS].items->data,
+ &type, &srvrPort);
- if (as->parms[STAT_TYPE].items) {
- which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- }
+ which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- if (as->parms[SERVER].items) {
- if (typeIsValid) {
- if (!afsclient_RPCStatOpen
- (cellHandle, as->parms[SERVER].items->data, type, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpen", st);
- }
- } else {
- if (!afsclient_RPCStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
- }
+ if (typeIsValid) {
+ if (!afsclient_RPCStatOpen(cellHandle,
+ as->parms[SERVER].items->data,
+ type, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpen", st);
+ }
+ } else {
+ if (!afsclient_RPCStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
}
}
f_list->functionList[stat->s.stats_v1.func_index]);
}
- if (!hiszero(stat->s.stats_v1.invocations)) {
- printf("%sinvoc (%u.%u) bytes_sent (%u.%u) bytes_rcvd (%u.%u)\n",
- prefix, hgethi(stat->s.stats_v1.invocations),
- hgetlo(stat->s.stats_v1.invocations),
- hgethi(stat->s.stats_v1.bytes_sent),
- hgetlo(stat->s.stats_v1.bytes_sent),
- hgethi(stat->s.stats_v1.bytes_rcvd),
- hgetlo(stat->s.stats_v1.bytes_rcvd)
- );
+ if (stat->s.stats_v1.invocations != 0) {
+ printf("%sinvoc %"AFS_UINT64_FMT
+ " bytes_sent %"AFS_UINT64_FMT
+ " bytes_rcvd %"AFS_UINT64_FMT"\n",
+ prefix,
+ stat->s.stats_v1.invocations,
+ stat->s.stats_v1.bytes_sent,
+ stat->s.stats_v1.bytes_rcvd
+ );
printf("\tqsum %d.%06d\tqsqr %d.%06d"
"\tqmin %d.%06d\tqmax %d.%06d\n",
stat->s.stats_v1.queue_time_sum.sec,
int
DoClientRPCStatsList(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER, PROCESS, STAT_TYPE } DoClientRPCStatsList_parm_t;
+ enum { SERVER, PROCESS, STAT_TYPE };
afs_status_t st = 0;
struct rx_connection *conn;
- int servAddr = 0;
afs_stat_source_t type;
int srvrPort;
- int typeIsValid = 0;
- afs_stat_type_t which = 0;
+ int typeIsValid;
+ afs_stat_type_t which;
afs_RPCStats_t stats;
void *iter;
int i = 0;
|| pthread_once(&pthread_func_list_once, cr_list));
#endif
- if (as->parms[PROCESS].items) {
- typeIsValid =
- GetStatSourceFromString(as->parms[PROCESS].items->data, &type,
- &srvrPort);
- }
+ typeIsValid = GetStatSourceFromString(as->parms[PROCESS].items->data,
+ &type, &srvrPort);
- if (as->parms[STAT_TYPE].items) {
- which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- }
+ which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- if (as->parms[SERVER].items) {
- if (typeIsValid) {
- if (!afsclient_RPCStatOpen
- (cellHandle, as->parms[SERVER].items->data, type, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpen", st);
- }
- } else {
- if (!afsclient_RPCStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
- }
+ if (typeIsValid) {
+ if (!afsclient_RPCStatOpen(cellHandle,
+ as->parms[SERVER].items->data,
+ type, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpen", st);
+ }
+ } else {
+ if (!afsclient_RPCStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
}
}
int
DoClientRPCStatsClear(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER, PROCESS, STAT_TYPE, CLEAR_ALL, CLEAR_INVOCATIONS,
+ enum { SERVER, PROCESS, STAT_TYPE, CLEAR_ALL, CLEAR_INVOCATIONS,
CLEAR_BYTES_SENT, CLEAR_BYTES_RCVD,
CLEAR_QUEUE_TIME_SUM, CLEAR_QUEUE_TIME_SQUARE,
CLEAR_QUEUE_TIME_MIN, CLEAR_QUEUE_TIME_MAX,
CLEAR_EXEC_TIME_SUM, CLEAR_EXEC_TIME_SQUARE,
CLEAR_EXEC_TIME_MIN, CLEAR_EXEC_TIME_MAX
- } DoClientRPCStatsClear_parm_t;
+ };
afs_status_t st = 0;
struct rx_connection *conn;
- int servAddr = 0;
afs_stat_source_t type;
int srvrPort;
- int typeIsValid = 0;
- afs_stat_type_t which = 0;
+ int typeIsValid;
+ afs_stat_type_t which;
afs_RPCStatsClearFlag_t flag = 0;
int seen_all = 0;
int seen_any = 0;
- if (as->parms[PROCESS].items) {
- typeIsValid =
- GetStatSourceFromString(as->parms[PROCESS].items->data, &type,
- &srvrPort);
- }
+ typeIsValid = GetStatSourceFromString(as->parms[PROCESS].items->data,
+ &type, &srvrPort);
- if (as->parms[STAT_TYPE].items) {
- which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- }
+ which = GetStatTypeFromString(as->parms[STAT_TYPE].items->data);
- if (as->parms[SERVER].items) {
- if (typeIsValid) {
- if (!afsclient_RPCStatOpen
- (cellHandle, as->parms[SERVER].items->data, type, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpen", st);
- }
- } else {
- if (!afsclient_RPCStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
- }
+ if (typeIsValid) {
+ if (!afsclient_RPCStatOpen(cellHandle,
+ as->parms[SERVER].items->data,
+ type, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpen", st);
+ }
+ } else {
+ if (!afsclient_RPCStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
}
}
int
DoClientRPCStatsVersionGet(struct cmd_syndesc *as, void *arock)
{
- typedef enum { SERVER, PROCESS } DoClientRPCStatsVersionGet_parm_t;
+ enum { SERVER, PROCESS };
afs_status_t st = 0;
struct rx_connection *conn;
afs_stat_source_t type;
- int servAddr = 0;
int srvrPort;
- int typeIsValid = 0;
+ int typeIsValid;
afs_RPCStatsVersion_t version;
- if (as->parms[PROCESS].items) {
- typeIsValid =
- GetStatSourceFromString(as->parms[PROCESS].items->data, &type,
- &srvrPort);
- }
+ typeIsValid = GetStatSourceFromString(as->parms[PROCESS].items->data,
+ &type, &srvrPort);
- if (as->parms[SERVER].items) {
- if (typeIsValid) {
- if (!afsclient_RPCStatOpen
- (cellHandle, as->parms[SERVER].items->data, type, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpen", st);
- }
- } else {
- if (!afsclient_RPCStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
- }
+ if (typeIsValid) {
+ if (!afsclient_RPCStatOpen(cellHandle,
+ as->parms[SERVER].items->data,
+ type, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpen", st);
+ }
+ } else {
+ if (!afsclient_RPCStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_RPCStatOpenPort", st);
}
}
DoClientCMGetServerPrefs(struct cmd_syndesc *as, void *arock)
{
afs_status_t st = 0;
- typedef enum { SERVER, PORT } DoClientCMGetServerPrefs_parm_t;
+ enum { SERVER, PORT };
struct rx_connection *conn;
- int servAddr = 0;
int srvrPort = AFSCONF_CALLBACKPORT;
afs_CMServerPref_t prefs;
void *iter;
}
}
- if (as->parms[SERVER].items) {
- if (!afsclient_CMStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_CMStatOpenPort", st);
- }
+ if (!afsclient_CMStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_CMStatOpenPort", st);
}
if (!util_CMGetServerPrefsBegin(conn, &iter, &st)) {
DoClientCMListCells(struct cmd_syndesc *as, void *arock)
{
afs_status_t st = 0;
- typedef enum { SERVER, PORT } DoClientCMListCells_parm_t;
+ enum { SERVER, PORT };
struct rx_connection *conn;
- int servAddr = 0;
int srvrPort = AFSCONF_CALLBACKPORT;
afs_CMListCell_t cellInfo;
void *iter;
}
}
- if (as->parms[SERVER].items) {
- if (!afsclient_CMStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_CMStatOpenPort", st);
- }
+ if (!afsclient_CMStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_CMStatOpenPort", st);
}
if (!util_CMListCellsBegin(conn, &iter, &st)) {
DoClientCMLocalCell(struct cmd_syndesc *as, void *arock)
{
afs_status_t st = 0;
- typedef enum { SERVER, PORT } DoClientCMLocalCell_parm_t;
+ enum { SERVER, PORT };
struct rx_connection *conn;
- int servAddr = 0;
int srvrPort = AFSCONF_CALLBACKPORT;
afs_CMCellName_t cellname;
}
}
- if (as->parms[SERVER].items) {
- if (!afsclient_CMStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_CMStatOpenPort", st);
- }
+ if (!afsclient_CMStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_CMStatOpenPort", st);
}
if (!util_CMLocalCell(conn, cellname, &st)) {
DoClientCMClientConfig(struct cmd_syndesc *as, void *arock)
{
afs_status_t st = 0;
- typedef enum { SERVER, PORT } DoClientCMLocalCell_parm_t;
+ enum { SERVER, PORT };
struct rx_connection *conn;
- int servAddr = 0;
int srvrPort = AFSCONF_CALLBACKPORT;
afs_ClientConfig_t config;
}
}
- if (as->parms[SERVER].items) {
- if (!afsclient_CMStatOpenPort
- (cellHandle, as->parms[SERVER].items->data, srvrPort, &conn,
- &st)) {
- ERR_ST_EXT("afsclient_CMStatOpenPort", st);
- }
+ if (!afsclient_CMStatOpenPort(cellHandle,
+ as->parms[SERVER].items->data,
+ srvrPort, &conn, &st)) {
+ ERR_ST_EXT("afsclient_CMStatOpenPort", st);
}
if (!util_CMClientConfig(conn, &config, &st)) {