1/* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6#ifndef _IP_VS_H 7#define _IP_VS_H 8#include <linux/types.h> 9#define IP_VS_VERSION_CODE 0x010201 10#define NVERSION(version) \ 11 (version >> 16) & 0xFF, \ 12 (version >> 8) & 0xFF, \ 13 version & 0xFF 14#define IP_VS_SVC_F_PERSISTENT 0x0001 15#define IP_VS_SVC_F_HASHED 0x0002 16#define IP_VS_SVC_F_ONEPACKET 0x0004 17#define IP_VS_SVC_F_SCHED1 0x0008 18#define IP_VS_SVC_F_SCHED2 0x0010 19#define IP_VS_SVC_F_SCHED3 0x0020 20#define IP_VS_SVC_F_SCHED_SH_FALLBACK IP_VS_SVC_F_SCHED1 21#define IP_VS_SVC_F_SCHED_SH_PORT IP_VS_SVC_F_SCHED2 22#define IP_VS_DEST_F_AVAILABLE 0x0001 23#define IP_VS_DEST_F_OVERLOAD 0x0002 24#define IP_VS_STATE_NONE 0x0000 25#define IP_VS_STATE_MASTER 0x0001 26#define IP_VS_STATE_BACKUP 0x0002 27#define IP_VS_BASE_CTL (64+1024+64) 28#define IP_VS_SO_SET_NONE IP_VS_BASE_CTL 29#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1) 30#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2) 31#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3) 32#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4) 33#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5) 34#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6) 35#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7) 36#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8) 37#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9) 38#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10) 39#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11) 40#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12) 41#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13) 42#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14) 43#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15) 44#define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO 45#define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL 46#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1) 47#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2) 48#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3) 49#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4) 50#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5) 51#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6) 52#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7) 53#define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON 54#define IP_VS_CONN_F_FWD_MASK 0x0007 55#define IP_VS_CONN_F_MASQ 0x0000 56#define IP_VS_CONN_F_LOCALNODE 0x0001 57#define IP_VS_CONN_F_TUNNEL 0x0002 58#define IP_VS_CONN_F_DROUTE 0x0003 59#define IP_VS_CONN_F_BYPASS 0x0004 60#define IP_VS_CONN_F_SYNC 0x0020 61#define IP_VS_CONN_F_HASHED 0x0040 62#define IP_VS_CONN_F_NOOUTPUT 0x0080 63#define IP_VS_CONN_F_INACTIVE 0x0100 64#define IP_VS_CONN_F_OUT_SEQ 0x0200 65#define IP_VS_CONN_F_IN_SEQ 0x0400 66#define IP_VS_CONN_F_SEQ_MASK 0x0600 67#define IP_VS_CONN_F_NO_CPORT 0x0800 68#define IP_VS_CONN_F_TEMPLATE 0x1000 69#define IP_VS_CONN_F_ONE_PACKET 0x2000 70#define IP_VS_CONN_F_BACKUP_MASK (IP_VS_CONN_F_FWD_MASK | \ 71 IP_VS_CONN_F_NOOUTPUT | \ 72 IP_VS_CONN_F_INACTIVE | \ 73 IP_VS_CONN_F_SEQ_MASK | \ 74 IP_VS_CONN_F_NO_CPORT | \ 75 IP_VS_CONN_F_TEMPLATE \ 76 ) 77#define IP_VS_CONN_F_BACKUP_UPD_MASK (IP_VS_CONN_F_INACTIVE | \ 78 IP_VS_CONN_F_SEQ_MASK) 79#define IP_VS_CONN_F_NFCT (1 << 16) 80#define IP_VS_CONN_F_DEST_MASK (IP_VS_CONN_F_FWD_MASK | \ 81 IP_VS_CONN_F_ONE_PACKET | \ 82 IP_VS_CONN_F_NFCT | \ 83 0) 84#define IP_VS_SCHEDNAME_MAXLEN 16 85#define IP_VS_PENAME_MAXLEN 16 86#define IP_VS_IFNAME_MAXLEN 16 87#define IP_VS_PEDATA_MAXLEN 255 88struct ip_vs_service_user { 89 90 __u16 protocol; 91 __be32 addr; 92 __be16 port; 93 __u32 fwmark; 94 95 char sched_name[IP_VS_SCHEDNAME_MAXLEN]; 96 unsigned int flags; 97 unsigned int timeout; 98 __be32 netmask; 99}; 100struct ip_vs_dest_user { 101 102 __be32 addr; 103 __be16 port; 104 105 unsigned int conn_flags; 106 int weight; 107 108 __u32 u_threshold; 109 __u32 l_threshold; 110}; 111struct ip_vs_stats_user { 112 __u32 conns; 113 __u32 inpkts; 114 __u32 outpkts; 115 __u64 inbytes; 116 __u64 outbytes; 117 __u32 cps; 118 __u32 inpps; 119 __u32 outpps; 120 __u32 inbps; 121 __u32 outbps; 122}; 123struct ip_vs_getinfo { 124 125 unsigned int version; 126 127 unsigned int size; 128 129 unsigned int num_services; 130}; 131struct ip_vs_service_entry { 132 133 __u16 protocol; 134 __be32 addr; 135 __be16 port; 136 __u32 fwmark; 137 138 char sched_name[IP_VS_SCHEDNAME_MAXLEN]; 139 unsigned int flags; 140 unsigned int timeout; 141 __be32 netmask; 142 143 unsigned int num_dests; 144 145 struct ip_vs_stats_user stats; 146}; 147struct ip_vs_dest_entry { 148 __be32 addr; 149 __be16 port; 150 unsigned int conn_flags; 151 int weight; 152 __u32 u_threshold; 153 __u32 l_threshold; 154 __u32 activeconns; 155 __u32 inactconns; 156 __u32 persistconns; 157 158 struct ip_vs_stats_user stats; 159}; 160struct ip_vs_get_dests { 161 162 __u16 protocol; 163 __be32 addr; 164 __be16 port; 165 __u32 fwmark; 166 167 unsigned int num_dests; 168 169 struct ip_vs_dest_entry entrytable[0]; 170}; 171struct ip_vs_get_services { 172 173 unsigned int num_services; 174 175 struct ip_vs_service_entry entrytable[0]; 176}; 177struct ip_vs_timeout_user { 178 int tcp_timeout; 179 int tcp_fin_timeout; 180 int udp_timeout; 181}; 182struct ip_vs_daemon_user { 183 184 int state; 185 186 char mcast_ifn[IP_VS_IFNAME_MAXLEN]; 187 188 int syncid; 189}; 190#define IPVS_GENL_NAME "IPVS" 191#define IPVS_GENL_VERSION 0x1 192struct ip_vs_flags { 193 __u32 flags; 194 __u32 mask; 195}; 196enum { 197 IPVS_CMD_UNSPEC = 0, 198 IPVS_CMD_NEW_SERVICE, 199 IPVS_CMD_SET_SERVICE, 200 IPVS_CMD_DEL_SERVICE, 201 IPVS_CMD_GET_SERVICE, 202 IPVS_CMD_NEW_DEST, 203 IPVS_CMD_SET_DEST, 204 IPVS_CMD_DEL_DEST, 205 IPVS_CMD_GET_DEST, 206 IPVS_CMD_NEW_DAEMON, 207 IPVS_CMD_DEL_DAEMON, 208 IPVS_CMD_GET_DAEMON, 209 IPVS_CMD_SET_CONFIG, 210 IPVS_CMD_GET_CONFIG, 211 IPVS_CMD_SET_INFO, 212 IPVS_CMD_GET_INFO, 213 IPVS_CMD_ZERO, 214 IPVS_CMD_FLUSH, 215 __IPVS_CMD_MAX, 216}; 217#define IPVS_CMD_MAX (__IPVS_CMD_MAX - 1) 218enum { 219 IPVS_CMD_ATTR_UNSPEC = 0, 220 IPVS_CMD_ATTR_SERVICE, 221 IPVS_CMD_ATTR_DEST, 222 IPVS_CMD_ATTR_DAEMON, 223 IPVS_CMD_ATTR_TIMEOUT_TCP, 224 IPVS_CMD_ATTR_TIMEOUT_TCP_FIN, 225 IPVS_CMD_ATTR_TIMEOUT_UDP, 226 __IPVS_CMD_ATTR_MAX, 227}; 228#define IPVS_CMD_ATTR_MAX (__IPVS_CMD_ATTR_MAX - 1) 229enum { 230 IPVS_SVC_ATTR_UNSPEC = 0, 231 IPVS_SVC_ATTR_AF, 232 IPVS_SVC_ATTR_PROTOCOL, 233 IPVS_SVC_ATTR_ADDR, 234 IPVS_SVC_ATTR_PORT, 235 IPVS_SVC_ATTR_FWMARK, 236 IPVS_SVC_ATTR_SCHED_NAME, 237 IPVS_SVC_ATTR_FLAGS, 238 IPVS_SVC_ATTR_TIMEOUT, 239 IPVS_SVC_ATTR_NETMASK, 240 IPVS_SVC_ATTR_STATS, 241 IPVS_SVC_ATTR_PE_NAME, 242 IPVS_SVC_ATTR_STATS64, 243 __IPVS_SVC_ATTR_MAX, 244}; 245#define IPVS_SVC_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1) 246enum { 247 IPVS_DEST_ATTR_UNSPEC = 0, 248 IPVS_DEST_ATTR_ADDR, 249 IPVS_DEST_ATTR_PORT, 250 IPVS_DEST_ATTR_FWD_METHOD, 251 IPVS_DEST_ATTR_WEIGHT, 252 IPVS_DEST_ATTR_U_THRESH, 253 IPVS_DEST_ATTR_L_THRESH, 254 IPVS_DEST_ATTR_ACTIVE_CONNS, 255 IPVS_DEST_ATTR_INACT_CONNS, 256 IPVS_DEST_ATTR_PERSIST_CONNS, 257 IPVS_DEST_ATTR_STATS, 258 IPVS_DEST_ATTR_ADDR_FAMILY, 259 IPVS_DEST_ATTR_STATS64, 260 __IPVS_DEST_ATTR_MAX, 261}; 262#define IPVS_DEST_ATTR_MAX (__IPVS_DEST_ATTR_MAX - 1) 263enum { 264 IPVS_DAEMON_ATTR_UNSPEC = 0, 265 IPVS_DAEMON_ATTR_STATE, 266 IPVS_DAEMON_ATTR_MCAST_IFN, 267 IPVS_DAEMON_ATTR_SYNC_ID, 268 IPVS_DAEMON_ATTR_SYNC_MAXLEN, 269 IPVS_DAEMON_ATTR_MCAST_GROUP, 270 IPVS_DAEMON_ATTR_MCAST_GROUP6, 271 IPVS_DAEMON_ATTR_MCAST_PORT, 272 IPVS_DAEMON_ATTR_MCAST_TTL, 273 __IPVS_DAEMON_ATTR_MAX, 274}; 275#define IPVS_DAEMON_ATTR_MAX (__IPVS_DAEMON_ATTR_MAX - 1) 276enum { 277 IPVS_STATS_ATTR_UNSPEC = 0, 278 IPVS_STATS_ATTR_CONNS, 279 IPVS_STATS_ATTR_INPKTS, 280 IPVS_STATS_ATTR_OUTPKTS, 281 IPVS_STATS_ATTR_INBYTES, 282 IPVS_STATS_ATTR_OUTBYTES, 283 IPVS_STATS_ATTR_CPS, 284 IPVS_STATS_ATTR_INPPS, 285 IPVS_STATS_ATTR_OUTPPS, 286 IPVS_STATS_ATTR_INBPS, 287 IPVS_STATS_ATTR_OUTBPS, 288 IPVS_STATS_ATTR_PAD, 289 __IPVS_STATS_ATTR_MAX, 290}; 291#define IPVS_STATS_ATTR_MAX (__IPVS_STATS_ATTR_MAX - 1) 292enum { 293 IPVS_INFO_ATTR_UNSPEC = 0, 294 IPVS_INFO_ATTR_VERSION, 295 IPVS_INFO_ATTR_CONN_TAB_SIZE, 296 __IPVS_INFO_ATTR_MAX, 297}; 298#define IPVS_INFO_ATTR_MAX (__IPVS_INFO_ATTR_MAX - 1) 299#endif 300