Standardize License information
[openafs.git] / src / libadmin / samples / rxstat_clear_peer.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 contains sample code for the rxstats interface 
12  */
13
14 #ifdef AFS_NT40_ENV
15 #include <winsock2.h>
16 #include <pthread.h>
17 #endif
18 #include <afs/afs_Admin.h>
19 #include <afs/afs_clientAdmin.h>
20 #include <afs/afs_utilAdmin.h>
21
22 extern int RXSTATS_ClearPeerRPCStats();
23
24 void Usage()
25 {
26     fprintf(stderr,
27             "Usage: rxstat_clear_peer <cell> <host> <port>\n");
28     exit(1);
29 }
30
31 void ParseArgs(
32     int argc,
33     char *argv[],
34     char **cellName,
35     char **srvrName,
36     long *srvrPort)
37 {
38     char **argp = argv;
39
40     if (!*(++argp))
41         Usage();
42     *cellName = *(argp++);
43     if (!*(argp))
44         Usage();
45     *srvrName = *(argp++);
46     if (!*(argp))
47         Usage();
48     *srvrPort = strtol(*(argp++), NULL, 0);
49     if (*srvrPort <= 0 || *srvrPort >= 65536)
50         Usage();
51     if (*(argp))
52         Usage();
53 }
54
55 int main(int argc, char *argv[])
56 {
57     int rc;
58     afs_status_t st = 0;
59     struct rx_connection *conn;
60     char *srvrName;
61     long srvrPort;
62     char *cellName;
63     void *tokenHandle;
64     void *cellHandle;
65
66     ParseArgs(argc, argv, &cellName, &srvrName, &srvrPort);
67
68     rc = afsclient_Init(&st);
69     if (!rc) {
70         fprintf(stderr, "afsclient_Init, status %d\n", st);
71         exit(1);
72     }
73
74     rc = afsclient_TokenGetExisting(cellName, &tokenHandle, &st);
75     if (!rc) {
76         fprintf(stderr, "afsclient_TokenGetExisting, status %d\n", st);
77         exit(1);
78     }
79
80     rc = afsclient_CellOpen(cellName, tokenHandle, &cellHandle, &st);
81     if (!rc) {
82         fprintf(stderr, "afsclient_CellOpen, status %d\n", st);
83         exit(1);
84     }
85
86     rc = afsclient_RPCStatOpenPort(cellHandle, srvrName, srvrPort, &conn, &st);
87     if (!rc) {
88         fprintf(stderr, "afsclient_RPCStatOpenPort, status %d\n", st);
89         exit(1);
90     }
91
92     rc = util_RPCStatsClear(conn, RXSTATS_ClearPeerRPCStats,
93                             AFS_RX_STATS_CLEAR_ALL, &st);
94     if (!rc) {
95         fprintf(stderr, "util_RPCStatsClear, status %d\n", st);
96         exit(1);
97     }
98
99     rc = afsclient_RPCStatClose(conn, &st);
100     if (!rc) {
101         fprintf(stderr, "afsclient_RPCStatClose, status %d\n", st);
102         exit(1);
103     }
104
105     rc = afsclient_CellClose(cellHandle, &st);
106     if (!rc) {
107         fprintf(stderr, "afsclient_CellClose, status %d\n", st);
108         exit(1);
109     }
110
111     rc = afsclient_TokenClose(tokenHandle, &st);
112     if (!rc) {
113         fprintf(stderr, "afsclient_TokenClose, status %d\n", st);
114         exit(1);
115     }
116
117     exit(0);
118 }