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