1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/*
Copyright (c) 2008-2012 Red Hat, Inc. <http://www.redhat.com>
This file is part of GlusterFS.
This file is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3 or
later), or the GNU General Public License, version 2 (GPLv2), in all
cases as published by the Free Software Foundation.
*/
#ifndef _RPCSVC_COMMON_H
#define _RPCSVC_COMMON_H
#include <pthread.h>
#include "list.h"
#include "compat.h"
#include "glusterfs.h"
#include "dict.h"
typedef enum {
RPCSVC_EVENT_ACCEPT,
RPCSVC_EVENT_DISCONNECT,
RPCSVC_EVENT_TRANSPORT_DESTROY,
RPCSVC_EVENT_LISTENER_DEAD,
} rpcsvc_event_t;
struct rpcsvc_state;
typedef int (*rpcsvc_notify_t) (struct rpcsvc_state *, void *mydata,
rpcsvc_event_t, void *data);
struct drc_globals;
typedef struct drc_globals rpcsvc_drc_globals_t;
/* Contains global state required for all the RPC services.
*/
typedef struct rpcsvc_state {
/* Contains list of (program, version) handlers.
* other options.
*/
pthread_mutex_t rpclock;
unsigned int memfactor;
/* List of the authentication schemes available. */
struct list_head authschemes;
/* Reference to the options */
dict_t *options;
/* Allow insecure ports. */
gf_boolean_t allow_insecure;
gf_boolean_t register_portmap;
gf_boolean_t root_squash;
uid_t anonuid;
gid_t anongid;
glusterfs_ctx_t *ctx;
/* list of connections which will listen for incoming connections */
struct list_head listeners;
/* list of programs registered with rpcsvc */
struct list_head programs;
/* list of notification callbacks */
struct list_head notify;
int notify_count;
void *mydata; /* This is xlator */
rpcsvc_notify_t notifyfn;
struct mem_pool *rxpool;
rpcsvc_drc_globals_t *drc;
/* per-client limit of outstanding rpc requests */
int outstanding_rpc_limit;
gf_boolean_t addr_namelookup;
/* determine whether throttling is needed, by default OFF */
gf_boolean_t throttle;
} rpcsvc_t;
/* DRC START */
enum drc_op_type {
DRC_NA = 0,
DRC_IDEMPOTENT = 1,
DRC_NON_IDEMPOTENT = 2
};
typedef enum drc_op_type drc_op_type_t;
enum drc_type {
DRC_TYPE_NONE = 0,
DRC_TYPE_IN_MEMORY = 1
};
typedef enum drc_type drc_type_t;
enum drc_lru_factor {
DRC_LRU_5_PC = 20,
DRC_LRU_10_PC = 10,
DRC_LRU_25_PC = 4,
DRC_LRU_50_PC = 2
};
typedef enum drc_lru_factor drc_lru_factor_t;
enum drc_xid_state {
DRC_XID_MONOTONOUS = 0,
DRC_XID_WRAPPED = 1
};
typedef enum drc_xid_state drc_xid_state_t;
enum drc_op_state {
DRC_OP_IN_TRANSIT = 0,
DRC_OP_CACHED = 1
};
typedef enum drc_op_state drc_op_state_t;
enum drc_policy {
DRC_LRU = 0
};
typedef enum drc_policy drc_policy_t;
/* Default policies for DRC */
#define DRC_DEFAULT_TYPE DRC_TYPE_IN_MEMORY
#define DRC_DEFAULT_CACHE_SIZE 0x20000
#define DRC_DEFAULT_LRU_FACTOR DRC_LRU_25_PC
/* DRC END */
#endif /* #ifndef _RPCSVC_COMMON_H */
|