1
2
3
4
5
6#ifndef _IP_VS_H
7#define _IP_VS_H
8
9#include <linux/types.h>
10
11#define IP_VS_VERSION_CODE 0x010201
12#define NVERSION(version) \
13 (version >> 16) & 0xFF, \
14 (version >> 8) & 0xFF, \
15 version & 0xFF
16
17
18
19
20#define IP_VS_SVC_F_PERSISTENT 0x0001
21#define IP_VS_SVC_F_HASHED 0x0002
22
23
24
25
26#define IP_VS_DEST_F_AVAILABLE 0x0001
27#define IP_VS_DEST_F_OVERLOAD 0x0002
28
29
30
31
32#define IP_VS_STATE_NONE 0x0000
33#define IP_VS_STATE_MASTER 0x0001
34#define IP_VS_STATE_BACKUP 0x0002
35
36
37
38
39#define IP_VS_BASE_CTL (64+1024+64)
40
41#define IP_VS_SO_SET_NONE IP_VS_BASE_CTL
42#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1)
43#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2)
44#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3)
45#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4)
46#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5)
47#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6)
48#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7)
49#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8)
50#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9)
51#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10)
52#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11)
53#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12)
54#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13)
55#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14)
56#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15)
57#define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
58
59#define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
60#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1)
61#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2)
62#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3)
63#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4)
64#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5)
65#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6)
66#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7)
67#define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
68
69
70
71
72
73#define IP_VS_CONN_F_FWD_MASK 0x0007
74#define IP_VS_CONN_F_MASQ 0x0000
75#define IP_VS_CONN_F_LOCALNODE 0x0001
76#define IP_VS_CONN_F_TUNNEL 0x0002
77#define IP_VS_CONN_F_DROUTE 0x0003
78#define IP_VS_CONN_F_BYPASS 0x0004
79#define IP_VS_CONN_F_SYNC 0x0020
80#define IP_VS_CONN_F_HASHED 0x0040
81#define IP_VS_CONN_F_NOOUTPUT 0x0080
82#define IP_VS_CONN_F_INACTIVE 0x0100
83#define IP_VS_CONN_F_OUT_SEQ 0x0200
84#define IP_VS_CONN_F_IN_SEQ 0x0400
85#define IP_VS_CONN_F_SEQ_MASK 0x0600
86#define IP_VS_CONN_F_NO_CPORT 0x0800
87#define IP_VS_CONN_F_TEMPLATE 0x1000
88
89#define IP_VS_SCHEDNAME_MAXLEN 16
90#define IP_VS_IFNAME_MAXLEN 16
91
92
93
94
95
96
97struct ip_vs_service_user {
98
99 __u16 protocol;
100 __be32 addr;
101 __be16 port;
102 __u32 fwmark;
103
104
105 char sched_name[IP_VS_SCHEDNAME_MAXLEN];
106 unsigned flags;
107 unsigned timeout;
108 __be32 netmask;
109};
110
111
112struct ip_vs_dest_user {
113
114 __be32 addr;
115 __be16 port;
116
117
118 unsigned conn_flags;
119 int weight;
120
121
122 __u32 u_threshold;
123 __u32 l_threshold;
124};
125
126
127
128
129
130struct ip_vs_stats_user
131{
132 __u32 conns;
133 __u32 inpkts;
134 __u32 outpkts;
135 __u64 inbytes;
136 __u64 outbytes;
137
138 __u32 cps;
139 __u32 inpps;
140 __u32 outpps;
141 __u32 inbps;
142 __u32 outbps;
143};
144
145
146
147struct ip_vs_getinfo {
148
149 unsigned int version;
150
151
152 unsigned int size;
153
154
155 unsigned int num_services;
156};
157
158
159
160struct ip_vs_service_entry {
161
162 __u16 protocol;
163 __be32 addr;
164 __be16 port;
165 __u32 fwmark;
166
167
168 char sched_name[IP_VS_SCHEDNAME_MAXLEN];
169 unsigned flags;
170 unsigned timeout;
171 __be32 netmask;
172
173
174 unsigned int num_dests;
175
176
177 struct ip_vs_stats_user stats;
178};
179
180
181struct ip_vs_dest_entry {
182 __be32 addr;
183 __be16 port;
184 unsigned conn_flags;
185 int weight;
186
187 __u32 u_threshold;
188 __u32 l_threshold;
189
190 __u32 activeconns;
191 __u32 inactconns;
192 __u32 persistconns;
193
194
195 struct ip_vs_stats_user stats;
196};
197
198
199
200struct ip_vs_get_dests {
201
202 __u16 protocol;
203 __be32 addr;
204 __be16 port;
205 __u32 fwmark;
206
207
208 unsigned int num_dests;
209
210
211 struct ip_vs_dest_entry entrytable[0];
212};
213
214
215
216struct ip_vs_get_services {
217
218 unsigned int num_services;
219
220
221 struct ip_vs_service_entry entrytable[0];
222};
223
224
225
226struct ip_vs_timeout_user {
227 int tcp_timeout;
228 int tcp_fin_timeout;
229 int udp_timeout;
230};
231
232
233
234struct ip_vs_daemon_user {
235
236 int state;
237
238
239 char mcast_ifn[IP_VS_IFNAME_MAXLEN];
240
241
242 int syncid;
243};
244
245
246
247
248
249
250
251
252
253#define IPVS_GENL_NAME "IPVS"
254#define IPVS_GENL_VERSION 0x1
255
256struct ip_vs_flags {
257 __be32 flags;
258 __be32 mask;
259};
260
261
262enum {
263 IPVS_CMD_UNSPEC = 0,
264
265 IPVS_CMD_NEW_SERVICE,
266 IPVS_CMD_SET_SERVICE,
267 IPVS_CMD_DEL_SERVICE,
268 IPVS_CMD_GET_SERVICE,
269
270 IPVS_CMD_NEW_DEST,
271 IPVS_CMD_SET_DEST,
272 IPVS_CMD_DEL_DEST,
273 IPVS_CMD_GET_DEST,
274
275 IPVS_CMD_NEW_DAEMON,
276 IPVS_CMD_DEL_DAEMON,
277 IPVS_CMD_GET_DAEMON,
278
279 IPVS_CMD_SET_CONFIG,
280 IPVS_CMD_GET_CONFIG,
281
282 IPVS_CMD_SET_INFO,
283 IPVS_CMD_GET_INFO,
284
285 IPVS_CMD_ZERO,
286 IPVS_CMD_FLUSH,
287
288 __IPVS_CMD_MAX,
289};
290
291#define IPVS_CMD_MAX (__IPVS_CMD_MAX - 1)
292
293
294enum {
295 IPVS_CMD_ATTR_UNSPEC = 0,
296 IPVS_CMD_ATTR_SERVICE,
297 IPVS_CMD_ATTR_DEST,
298 IPVS_CMD_ATTR_DAEMON,
299 IPVS_CMD_ATTR_TIMEOUT_TCP,
300 IPVS_CMD_ATTR_TIMEOUT_TCP_FIN,
301 IPVS_CMD_ATTR_TIMEOUT_UDP,
302 __IPVS_CMD_ATTR_MAX,
303};
304
305#define IPVS_CMD_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
306
307
308
309
310
311
312enum {
313 IPVS_SVC_ATTR_UNSPEC = 0,
314 IPVS_SVC_ATTR_AF,
315 IPVS_SVC_ATTR_PROTOCOL,
316 IPVS_SVC_ATTR_ADDR,
317 IPVS_SVC_ATTR_PORT,
318 IPVS_SVC_ATTR_FWMARK,
319
320 IPVS_SVC_ATTR_SCHED_NAME,
321 IPVS_SVC_ATTR_FLAGS,
322 IPVS_SVC_ATTR_TIMEOUT,
323 IPVS_SVC_ATTR_NETMASK,
324
325 IPVS_SVC_ATTR_STATS,
326 __IPVS_SVC_ATTR_MAX,
327};
328
329#define IPVS_SVC_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
330
331
332
333
334
335
336enum {
337 IPVS_DEST_ATTR_UNSPEC = 0,
338 IPVS_DEST_ATTR_ADDR,
339 IPVS_DEST_ATTR_PORT,
340
341 IPVS_DEST_ATTR_FWD_METHOD,
342 IPVS_DEST_ATTR_WEIGHT,
343
344 IPVS_DEST_ATTR_U_THRESH,
345 IPVS_DEST_ATTR_L_THRESH,
346
347 IPVS_DEST_ATTR_ACTIVE_CONNS,
348 IPVS_DEST_ATTR_INACT_CONNS,
349 IPVS_DEST_ATTR_PERSIST_CONNS,
350
351 IPVS_DEST_ATTR_STATS,
352 __IPVS_DEST_ATTR_MAX,
353};
354
355#define IPVS_DEST_ATTR_MAX (__IPVS_DEST_ATTR_MAX - 1)
356
357
358
359
360
361
362enum {
363 IPVS_DAEMON_ATTR_UNSPEC = 0,
364 IPVS_DAEMON_ATTR_STATE,
365 IPVS_DAEMON_ATTR_MCAST_IFN,
366 IPVS_DAEMON_ATTR_SYNC_ID,
367 __IPVS_DAEMON_ATTR_MAX,
368};
369
370#define IPVS_DAEMON_ATTR_MAX (__IPVS_DAEMON_ATTR_MAX - 1)
371
372
373
374
375
376
377enum {
378 IPVS_STATS_ATTR_UNSPEC = 0,
379 IPVS_STATS_ATTR_CONNS,
380 IPVS_STATS_ATTR_INPKTS,
381 IPVS_STATS_ATTR_OUTPKTS,
382 IPVS_STATS_ATTR_INBYTES,
383 IPVS_STATS_ATTR_OUTBYTES,
384
385 IPVS_STATS_ATTR_CPS,
386 IPVS_STATS_ATTR_INPPS,
387 IPVS_STATS_ATTR_OUTPPS,
388 IPVS_STATS_ATTR_INBPS,
389 IPVS_STATS_ATTR_OUTBPS,
390 __IPVS_STATS_ATTR_MAX,
391};
392
393#define IPVS_STATS_ATTR_MAX (__IPVS_STATS_ATTR_MAX - 1)
394
395
396enum {
397 IPVS_INFO_ATTR_UNSPEC = 0,
398 IPVS_INFO_ATTR_VERSION,
399 IPVS_INFO_ATTR_CONN_TAB_SIZE,
400 __IPVS_INFO_ATTR_MAX,
401};
402
403#define IPVS_INFO_ATTR_MAX (__IPVS_INFO_ATTR_MAX - 1)
404
405#endif
406