~ubuntu-branches/ubuntu/warty/openafs/warty

« back to all changes in this revision

Viewing changes to src/WINNT/afsd/cm_server.h

  • Committer: Bazaar Package Importer
  • Author(s): Sam Hartman
  • Date: 2004-01-10 16:37:33 UTC
  • Revision ID: james.westby@ubuntu.com-20040110163733-jvr0n1uahshlb1uu
Tags: upstream-1.2.11
ImportĀ upstreamĀ versionĀ 1.2.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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 __CM_SERVER_H_ENV__
 
11
#define __CM_SERVER_H_ENV__ 1
 
12
 
 
13
#ifndef DJGPP
 
14
#include <winsock2.h>
 
15
#else /* DJGPP */
 
16
#include <netinet/in.h>
 
17
#endif /* !DJGPP */
 
18
#include <osi.h>
 
19
 
 
20
/* pointed to by volumes and cells without holds; cm_serverLock is obtained
 
21
 * at the appropriate times to change the pointers to these servers.
 
22
 */
 
23
typedef struct cm_server {
 
24
        struct cm_server *allNextp;             /* locked by cm_serverLock */
 
25
        struct sockaddr_in addr;                /* by mx */
 
26
        int type;                               /* by mx */
 
27
        struct cm_conn *connsp;                 /* locked by cm_connLock */
 
28
        long flags;                             /* by mx */
 
29
        struct cm_cell *cellp;                  /* cell containing this server */
 
30
        int refCount;                           /* locked by cm_serverLock */
 
31
        osi_mutex_t mx;
 
32
        unsigned short ipRank;                  /* server priority */
 
33
} cm_server_t;
 
34
 
 
35
enum repstate {not_busy, busy, offline};
 
36
 
 
37
typedef struct cm_serverRef {
 
38
        struct cm_serverRef *next;
 
39
        struct cm_server *server;
 
40
        enum repstate status;
 
41
} cm_serverRef_t;
 
42
 
 
43
/* types */
 
44
#define CM_SERVER_VLDB          1       /* a VLDB server */
 
45
#define CM_SERVER_FILE          2       /* a file server */
 
46
 
 
47
/* flags */
 
48
#define CM_SERVERFLAG_DOWN      1       /* server is down */
 
49
 
 
50
/* flags for procedures */
 
51
#define CM_FLAG_CHECKUPSERVERS          1       /* check working servers */
 
52
#define CM_FLAG_CHECKDOWNSERVERS        2       /* check down servers */
 
53
 
 
54
/* values for ipRank */
 
55
#define CM_IPRANK_TOP   5000    /* on same machine */
 
56
#define CM_IPRANK_HI    20000   /* on same subnet  */
 
57
#define CM_IPRANK_MED   30000   /* on same network */
 
58
#define CM_IPRANK_LOW   40000   /* on different networks */
 
59
 
 
60
/* the maximum number of network interfaces that this client has */ 
 
61
 
 
62
#define CM_MAXINTERFACE_ADDR          16
 
63
extern int cm_noIPAddr;         /* number of client network interfaces */
 
64
extern int cm_IPAddr[CM_MAXINTERFACE_ADDR];    /* client's IP address */
 
65
extern int cm_SubnetMask[CM_MAXINTERFACE_ADDR];/* client's subnet mask*/ 
 
66
extern int cm_NetMtu[CM_MAXINTERFACE_ADDR];    /* client's MTU sizes */
 
67
extern int cm_NetFlags[CM_MAXINTERFACE_ADDR];  /* network flags */
 
68
 
 
69
extern cm_server_t *cm_NewServer(struct sockaddr_in *addrp, int type,
 
70
        struct cm_cell *cellp);
 
71
 
 
72
extern cm_serverRef_t *cm_NewServerRef(struct cm_server *serverp);
 
73
 
 
74
extern long cm_ChecksumServerList(cm_serverRef_t *serversp);
 
75
 
 
76
extern void cm_PutServer(cm_server_t *);
 
77
 
 
78
extern cm_server_t *cm_FindServer(struct sockaddr_in *addrp, int type);
 
79
 
 
80
extern osi_rwlock_t cm_serverLock;
 
81
 
 
82
extern void cm_InitServer(void);
 
83
 
 
84
extern void cm_CheckServers(long flags, struct cm_cell *cellp);
 
85
 
 
86
extern cm_server_t *cm_allServersp;
 
87
 
 
88
extern void cm_SetServerPrefs(cm_server_t * serverp);
 
89
 
 
90
extern void cm_InsertServerList(cm_serverRef_t** list,cm_serverRef_t* element);
 
91
 
 
92
extern long cm_ChangeRankServer(cm_serverRef_t** list, cm_server_t* server); 
 
93
 
 
94
extern void cm_RandomizeServer(cm_serverRef_t** list); 
 
95
 
 
96
#endif /*  __CM_SERVER_H_ENV__ */