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