ip_vs.h
001:
002:
003:
004:
005:
006: #ifndef _IP_VS_H
007: #define _IP_VS_H
008:
009: #include <linux/types.h>
010:
011: #define IP_VS_VERSION_CODE 0x010201
012: #define NVERSION(version) \
013: (version >> 16) & 0xFF, \
014: (version >> 8) & 0xFF, \
015: version & 0xFF
016:
017:
018:
019:
020: #define IP_VS_SVC_F_PERSISTENT 0x0001
021: #define IP_VS_SVC_F_HASHED 0x0002
022: #define IP_VS_SVC_F_ONEPACKET 0x0004
023:
024:
025:
026:
027: #define IP_VS_DEST_F_AVAILABLE 0x0001
028: #define IP_VS_DEST_F_OVERLOAD 0x0002
029:
030:
031:
032:
033: #define IP_VS_STATE_NONE 0x0000
034: #define IP_VS_STATE_MASTER 0x0001
035: #define IP_VS_STATE_BACKUP 0x0002
036:
037:
038:
039:
040: #define IP_VS_BASE_CTL (64+1024+64)
041:
042: #define IP_VS_SO_SET_NONE IP_VS_BASE_CTL
043: #define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1)
044: #define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2)
045: #define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3)
046: #define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4)
047: #define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5)
048: #define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6)
049: #define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7)
050: #define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8)
051: #define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9)
052: #define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10)
053: #define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11)
054: #define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12)
055: #define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13)
056: #define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14)
057: #define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15)
058: #define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
059:
060: #define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
061: #define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1)
062: #define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2)
063: #define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3)
064: #define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4)
065: #define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5)
066: #define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6)
067: #define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7)
068: #define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
069:
070:
071:
072:
073:
074:
075: #define IP_VS_CONN_F_FWD_MASK 0x0007
076: #define IP_VS_CONN_F_MASQ 0x0000
077: #define IP_VS_CONN_F_LOCALNODE 0x0001
078: #define IP_VS_CONN_F_TUNNEL 0x0002
079: #define IP_VS_CONN_F_DROUTE 0x0003
080: #define IP_VS_CONN_F_BYPASS 0x0004
081: #define IP_VS_CONN_F_SYNC 0x0020
082: #define IP_VS_CONN_F_HASHED 0x0040
083: #define IP_VS_CONN_F_NOOUTPUT 0x0080
084: #define IP_VS_CONN_F_INACTIVE 0x0100
085: #define IP_VS_CONN_F_OUT_SEQ 0x0200
086: #define IP_VS_CONN_F_IN_SEQ 0x0400
087: #define IP_VS_CONN_F_SEQ_MASK 0x0600
088: #define IP_VS_CONN_F_NO_CPORT 0x0800
089: #define IP_VS_CONN_F_TEMPLATE 0x1000
090: #define IP_VS_CONN_F_ONE_PACKET 0x2000
091:
092: #define IP_VS_CONN_F_BACKUP_MASK (IP_VS_CONN_F_FWD_MASK | \
093: IP_VS_CONN_F_NOOUTPUT | \
094: IP_VS_CONN_F_INACTIVE | \
095: IP_VS_CONN_F_SEQ_MASK | \
096: IP_VS_CONN_F_NO_CPORT | \
097: IP_VS_CONN_F_TEMPLATE \
098: )
099:
100:
101: #define IP_VS_CONN_F_NFCT (1 << 16)
102:
103:
104: #define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK | \
105: IP_VS_CONN_F_ONE_PACKET | \
106: IP_VS_CONN_F_NFCT | \
107: 0)
108:
109: #define IP_VS_SCHEDNAME_MAXLEN 16
110: #define IP_VS_PENAME_MAXLEN 16
111: #define IP_VS_IFNAME_MAXLEN 16
112:
113: #define IP_VS_PEDATA_MAXLEN 255
114:
115:
116:
117:
118:
119: struct ip_vs_service_user {
120:
121: __u16 protocol;
122: __be32 addr;
123: __be16 port;
124: __u32 fwmark;
125:
126:
127: char sched_name[IP_VS_SCHEDNAME_MAXLEN];
128: unsigned flags;
129: unsigned timeout;
130: __be32 netmask;
131: };
132:
133:
134: struct ip_vs_dest_user {
135:
136: __be32 addr;
137: __be16 port;
138:
139:
140: unsigned conn_flags;
141: int weight;
142:
143:
144: __u32 u_threshold;
145: __u32 l_threshold;
146: };
147:
148:
149:
150:
151:
152: struct ip_vs_stats_user {
153: __u32 conns;
154: __u32 inpkts;
155: __u32 outpkts;
156: __u64 inbytes;
157: __u64 outbytes;
158:
159: __u32 cps;
160: __u32 inpps;
161: __u32 outpps;
162: __u32 inbps;
163: __u32 outbps;
164: };
165:
166:
167:
168: struct ip_vs_getinfo {
169:
170: unsigned int version;
171:
172:
173: unsigned int size;
174:
175:
176: unsigned int num_services;
177: };
178:
179:
180:
181: struct ip_vs_service_entry {
182:
183: __u16 protocol;
184: __be32 addr;
185: __be16 port;
186: __u32 fwmark;
187:
188:
189: char sched_name[IP_VS_SCHEDNAME_MAXLEN];
190: unsigned flags;
191: unsigned timeout;
192: __be32 netmask;
193:
194:
195: unsigned int num_dests;
196:
197:
198: struct ip_vs_stats_user stats;
199: };
200:
201:
202: struct ip_vs_dest_entry {
203: __be32 addr;
204: __be16 port;
205: unsigned conn_flags;
206: int weight;
207:
208: __u32 u_threshold;
209: __u32 l_threshold;
210:
211: __u32 activeconns;
212: __u32 inactconns;
213: __u32 persistconns;
214:
215:
216: struct ip_vs_stats_user stats;
217: };
218:
219:
220:
221: struct ip_vs_get_dests {
222:
223: __u16 protocol;
224: __be32 addr;
225: __be16 port;
226: __u32 fwmark;
227:
228:
229: unsigned int num_dests;
230:
231:
232: struct ip_vs_dest_entry entrytable[0];
233: };
234:
235:
236:
237: struct ip_vs_get_services {
238:
239: unsigned int num_services;
240:
241:
242: struct ip_vs_service_entry entrytable[0];
243: };
244:
245:
246:
247: struct ip_vs_timeout_user {
248: int tcp_timeout;
249: int tcp_fin_timeout;
250: int udp_timeout;
251: };
252:
253:
254:
255: struct ip_vs_daemon_user {
256:
257: int state;
258:
259:
260: char mcast_ifn[IP_VS_IFNAME_MAXLEN];
261:
262:
263: int syncid;
264: };
265:
266:
267:
268:
269:
270:
271:
272:
273:
274: #define IPVS_GENL_NAME "IPVS"
275: #define IPVS_GENL_VERSION 0x1
276:
277: struct ip_vs_flags {
278: __be32 flags;
279: __be32 mask;
280: };
281:
282:
283: enum {
284: IPVS_CMD_UNSPEC = 0,
285:
286: IPVS_CMD_NEW_SERVICE,
287: IPVS_CMD_SET_SERVICE,
288: IPVS_CMD_DEL_SERVICE,
289: IPVS_CMD_GET_SERVICE,
290:
291: IPVS_CMD_NEW_DEST,
292: IPVS_CMD_SET_DEST,
293: IPVS_CMD_DEL_DEST,
294: IPVS_CMD_GET_DEST,
295:
296: IPVS_CMD_NEW_DAEMON,
297: IPVS_CMD_DEL_DAEMON,
298: IPVS_CMD_GET_DAEMON,
299:
300: IPVS_CMD_SET_CONFIG,
301: IPVS_CMD_GET_CONFIG,
302:
303: IPVS_CMD_SET_INFO,
304: IPVS_CMD_GET_INFO,
305:
306: IPVS_CMD_ZERO,
307: IPVS_CMD_FLUSH,
308:
309: __IPVS_CMD_MAX,
310: };
311:
312: #define IPVS_CMD_MAX (__IPVS_CMD_MAX - 1)
313:
314:
315: enum {
316: IPVS_CMD_ATTR_UNSPEC = 0,
317: IPVS_CMD_ATTR_SERVICE,
318: IPVS_CMD_ATTR_DEST,
319: IPVS_CMD_ATTR_DAEMON,
320: IPVS_CMD_ATTR_TIMEOUT_TCP,
321: IPVS_CMD_ATTR_TIMEOUT_TCP_FIN,
322: IPVS_CMD_ATTR_TIMEOUT_UDP,
323: __IPVS_CMD_ATTR_MAX,
324: };
325:
326: #define IPVS_CMD_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
327:
328:
329:
330:
331:
332:
333: enum {
334: IPVS_SVC_ATTR_UNSPEC = 0,
335: IPVS_SVC_ATTR_AF,
336: IPVS_SVC_ATTR_PROTOCOL,
337: IPVS_SVC_ATTR_ADDR,
338: IPVS_SVC_ATTR_PORT,
339: IPVS_SVC_ATTR_FWMARK,
340:
341: IPVS_SVC_ATTR_SCHED_NAME,
342: IPVS_SVC_ATTR_FLAGS,
343: IPVS_SVC_ATTR_TIMEOUT,
344: IPVS_SVC_ATTR_NETMASK,
345:
346: IPVS_SVC_ATTR_STATS,
347:
348: IPVS_SVC_ATTR_PE_NAME,
349:
350: __IPVS_SVC_ATTR_MAX,
351: };
352:
353: #define IPVS_SVC_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
354:
355:
356:
357:
358:
359:
360: enum {
361: IPVS_DEST_ATTR_UNSPEC = 0,
362: IPVS_DEST_ATTR_ADDR,
363: IPVS_DEST_ATTR_PORT,
364:
365: IPVS_DEST_ATTR_FWD_METHOD,
366: IPVS_DEST_ATTR_WEIGHT,
367:
368: IPVS_DEST_ATTR_U_THRESH,
369: IPVS_DEST_ATTR_L_THRESH,
370:
371: IPVS_DEST_ATTR_ACTIVE_CONNS,
372: IPVS_DEST_ATTR_INACT_CONNS,
373: IPVS_DEST_ATTR_PERSIST_CONNS,
374:
375: IPVS_DEST_ATTR_STATS,
376: __IPVS_DEST_ATTR_MAX,
377: };
378:
379: #define IPVS_DEST_ATTR_MAX (__IPVS_DEST_ATTR_MAX - 1)
380:
381:
382:
383:
384:
385:
386: enum {
387: IPVS_DAEMON_ATTR_UNSPEC = 0,
388: IPVS_DAEMON_ATTR_STATE,
389: IPVS_DAEMON_ATTR_MCAST_IFN,
390: IPVS_DAEMON_ATTR_SYNC_ID,
391: __IPVS_DAEMON_ATTR_MAX,
392: };
393:
394: #define IPVS_DAEMON_ATTR_MAX (__IPVS_DAEMON_ATTR_MAX - 1)
395:
396:
397:
398:
399:
400:
401: enum {
402: IPVS_STATS_ATTR_UNSPEC = 0,
403: IPVS_STATS_ATTR_CONNS,
404: IPVS_STATS_ATTR_INPKTS,
405: IPVS_STATS_ATTR_OUTPKTS,
406: IPVS_STATS_ATTR_INBYTES,
407: IPVS_STATS_ATTR_OUTBYTES,
408:
409: IPVS_STATS_ATTR_CPS,
410: IPVS_STATS_ATTR_INPPS,
411: IPVS_STATS_ATTR_OUTPPS,
412: IPVS_STATS_ATTR_INBPS,
413: IPVS_STATS_ATTR_OUTBPS,
414: __IPVS_STATS_ATTR_MAX,
415: };
416:
417: #define IPVS_STATS_ATTR_MAX (__IPVS_STATS_ATTR_MAX - 1)
418:
419:
420: enum {
421: IPVS_INFO_ATTR_UNSPEC = 0,
422: IPVS_INFO_ATTR_VERSION,
423: IPVS_INFO_ATTR_CONN_TAB_SIZE,
424: __IPVS_INFO_ATTR_MAX,
425: };
426:
427: #define IPVS_INFO_ATTR_MAX (__IPVS_INFO_ATTR_MAX - 1)
428:
429: #endif
430:
© Andrew Scott 2006 -
2025,
All Rights Reserved