613e6a4cccbcd36e1ae25ad0a5f415f18eb10b26
[openafs.git] / src / xstat / xstat_fs.h
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 #ifndef _xstat_fs_h_
11 #define _xstat_fs_h_  1
12
13 /*------------------------------------------------------------------------
14  * xstat_fs.h
15  *
16  * Interface to the AFS File Server extended statistics facility.  With
17  * the routines defined here, the importer can gather extended statistics
18  * from the given group of File Servers at regular intervals, or force
19  * immediate collection.
20  *
21  *------------------------------------------------------------------------*/
22
23 #include <sys/types.h>          /*Basic system types */
24 #ifndef IPPROTO_IP
25 #include <netinet/in.h>         /*Internet definitions */
26 #endif
27
28 #ifndef _netdb_h_
29 #define _netdb_h_
30 #include <netdb.h>              /*Network database library */
31 #endif
32
33 #ifndef _socket_h_
34 #define _socket_h_
35 #include <sys/socket.h>         /*Socket definitions */
36 #endif
37
38 #include <rx/rx.h>              /*Rx definitions */
39 #include <afs/afsint.h>         /*AFS FileServer interface */
40 #define FSINT_COMMON_XG         /* to allow the inclusion of
41                                  * xstat_cm.h with this file in an application. */
42 #include <afs/fs_stats.h>       /*AFS FileServer statistics interface */
43
44
45 /*
46  * ---------------------- Exported definitions ------------------------
47  */
48 /*
49  * Define the initialization flags used within the xstat_fs_Init() call.
50  *      XSTAT_FS_INITFLAG_DEBUGGING     Turn debugging output on?
51  *      XSTAT_FS_INITFLAG_ONE_SHOT      Do a one-shot collection?
52  */
53 #define XSTAT_FS_INITFLAG_DEBUGGING     0x1
54 #define XSTAT_FS_INITFLAG_ONE_SHOT      0x2
55
56
57 /*
58  * ----------------------- Exported structures ------------------------
59  */
60 /*
61  * Connection information per File Server host being probed.
62  */
63 struct xstat_fs_ConnectionInfo {
64     struct sockaddr_in skt;     /*Socket info */
65     struct rx_connection *rxconn;       /*Rx connection */
66     char hostName[256];         /*Computed hostname */
67 };
68
69 /*
70  * The results of a probe of one of the File Servers in the set being
71  * watched.
72  */
73 struct xstat_fs_ProbeResults {
74     int probeNum;               /*Probe number */
75     afs_int32 probeTime;        /*Time probe initiated */
76     struct xstat_fs_ConnectionInfo *connP;      /*Connection polled */
77     afs_int32 collectionNumber; /*Collection received */
78     AFS_CollData data;          /*Ptr to data collected */
79     int probeOK;                /*Latest probe successful? */
80 };
81
82 /*
83  * ------------------- Externally-visible variables -------------------
84  */
85 extern int xstat_fs_numServers; /*# connected servers */
86 extern struct xstat_fs_ConnectionInfo
87  *xstat_fs_ConnInfo;            /*Ptr to connections */
88 extern int numCollections;      /*Num data collections */
89 extern struct xstat_fs_ProbeResults
90   xstat_fs_Results;             /*Latest probe results */
91 extern char terminationEvent;   /*One-shot termination event */
92
93 /*
94  * ------------------------ Exported functions ------------------------
95  */
96 extern int xstat_fs_Init();
97     /*
98      * Summary:
99      *    Initialize the xstat_fs module: set up Rx connections to the
100      *    given set of File Servers, start up the probe and callback LWPs,
101      *    and associate the routine to be called when a probe completes.
102      *    Also, let it know which collections you're interested in.
103      *
104      * Args:
105      *    int a_numServers                  : Num. servers to connect.
106      *    struct sockaddr_in *a_socketArray : Array of server sockets.
107      *    int a_ProbeFreqInSecs             : Probe frequency in seconds.
108      *    int (*a_ProbeHandler)()           : Ptr to probe handler fcn.
109      *    int a_flags                       : Various flags.
110      *    int a_numCollections              : Number of collections desired.
111      *    afs_int32 *a_collIDP              : Ptr to collection IDs.
112      *
113      * Returns:
114      *    0 on success,
115      *    Error value otherwise.
116      */
117
118 extern int xstat_fs_ForceProbeNow();
119     /*
120      * Summary:
121      *    Force an immediate probe to the connected File Servers.
122      *
123      * Args:
124      *    None.
125      *
126      * Returns:
127      *    0 on success,
128      *    Error value otherwise.
129      */
130
131 extern int xstat_fs_Cleanup();
132     /*
133      * Summary:
134      *    Clean up our memory and connection state.
135      *
136      * Args:
137      *    int a_releaseMem : Should we free up malloc'ed areas?
138      *
139      * Returns:
140      *    0 on total success,
141      *    -1 if the module was never initialized, or there was a problem
142      *          with the xstat_fs connection array.
143      */
144
145 #endif /* _xstat_fs_h_ */