Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ipvs: Move userspace definitions to include/linux/ip_vs.h

Current versions of ipvsadm include "/usr/src/linux/include/net/ip_vs.h"
directly. This file also contains kernel-only definitions. Normally, public
definitions should live in include/linux, so this patch moves the
definitions shared with userspace to a new file, "include/linux/ip_vs.h".

This also removes the unused NFC_IPVS_PROPERTY bitmask, which was once
used to point into skb->nfcache.

To make old ipvsadms still compile with this, the old header file includes
the new one.

Thanks to Dave Miller and Horms for noting/adding the missing Kbuild entry
for the new header file.

Signed-off-by: Julius Volz <juliusv@google.com>
Acked-by: Simon Horman <horms@verge.net.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Julius Volz and committed by
David S. Miller
bc4768eb c3f26a26

+254 -245
+1
include/linux/Kbuild
··· 97 97 header-y += ip6_tunnel.h 98 98 header-y += ipmi_msgdefs.h 99 99 header-y += ipsec.h 100 + header-y += ip_vs.h 100 101 header-y += ipx.h 101 102 header-y += irda.h 102 103 header-y += iso_fs.h
+245
include/linux/ip_vs.h
··· 1 + /* 2 + * IP Virtual Server 3 + * data structure and functionality definitions 4 + */ 5 + 6 + #ifndef _IP_VS_H 7 + #define _IP_VS_H 8 + 9 + #include <linux/types.h> /* For __beXX types in userland */ 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 + * Virtual Service Flags 19 + */ 20 + #define IP_VS_SVC_F_PERSISTENT 0x0001 /* persistent port */ 21 + #define IP_VS_SVC_F_HASHED 0x0002 /* hashed entry */ 22 + 23 + /* 24 + * Destination Server Flags 25 + */ 26 + #define IP_VS_DEST_F_AVAILABLE 0x0001 /* server is available */ 27 + #define IP_VS_DEST_F_OVERLOAD 0x0002 /* server is overloaded */ 28 + 29 + /* 30 + * IPVS sync daemon states 31 + */ 32 + #define IP_VS_STATE_NONE 0x0000 /* daemon is stopped */ 33 + #define IP_VS_STATE_MASTER 0x0001 /* started as master */ 34 + #define IP_VS_STATE_BACKUP 0x0002 /* started as backup */ 35 + 36 + /* 37 + * IPVS socket options 38 + */ 39 + #define IP_VS_BASE_CTL (64+1024+64) /* base */ 40 + 41 + #define IP_VS_SO_SET_NONE IP_VS_BASE_CTL /* just peek */ 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) /* not used now */ 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 + * IPVS Connection Flags 72 + */ 73 + #define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */ 74 + #define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */ 75 + #define IP_VS_CONN_F_LOCALNODE 0x0001 /* local node */ 76 + #define IP_VS_CONN_F_TUNNEL 0x0002 /* tunneling */ 77 + #define IP_VS_CONN_F_DROUTE 0x0003 /* direct routing */ 78 + #define IP_VS_CONN_F_BYPASS 0x0004 /* cache bypass */ 79 + #define IP_VS_CONN_F_SYNC 0x0020 /* entry created by sync */ 80 + #define IP_VS_CONN_F_HASHED 0x0040 /* hashed entry */ 81 + #define IP_VS_CONN_F_NOOUTPUT 0x0080 /* no output packets */ 82 + #define IP_VS_CONN_F_INACTIVE 0x0100 /* not established */ 83 + #define IP_VS_CONN_F_OUT_SEQ 0x0200 /* must do output seq adjust */ 84 + #define IP_VS_CONN_F_IN_SEQ 0x0400 /* must do input seq adjust */ 85 + #define IP_VS_CONN_F_SEQ_MASK 0x0600 /* in/out sequence mask */ 86 + #define IP_VS_CONN_F_NO_CPORT 0x0800 /* no client port set yet */ 87 + #define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */ 88 + 89 + #define IP_VS_SCHEDNAME_MAXLEN 16 90 + #define IP_VS_IFNAME_MAXLEN 16 91 + 92 + 93 + /* 94 + * The struct ip_vs_service_user and struct ip_vs_dest_user are 95 + * used to set IPVS rules through setsockopt. 96 + */ 97 + struct ip_vs_service_user { 98 + /* virtual service addresses */ 99 + u_int16_t protocol; 100 + __be32 addr; /* virtual ip address */ 101 + __be16 port; 102 + u_int32_t fwmark; /* firwall mark of service */ 103 + 104 + /* virtual service options */ 105 + char sched_name[IP_VS_SCHEDNAME_MAXLEN]; 106 + unsigned flags; /* virtual service flags */ 107 + unsigned timeout; /* persistent timeout in sec */ 108 + __be32 netmask; /* persistent netmask */ 109 + }; 110 + 111 + 112 + struct ip_vs_dest_user { 113 + /* destination server address */ 114 + __be32 addr; 115 + __be16 port; 116 + 117 + /* real server options */ 118 + unsigned conn_flags; /* connection flags */ 119 + int weight; /* destination weight */ 120 + 121 + /* thresholds for active connections */ 122 + u_int32_t u_threshold; /* upper threshold */ 123 + u_int32_t l_threshold; /* lower threshold */ 124 + }; 125 + 126 + 127 + /* 128 + * IPVS statistics object (for user space) 129 + */ 130 + struct ip_vs_stats_user 131 + { 132 + __u32 conns; /* connections scheduled */ 133 + __u32 inpkts; /* incoming packets */ 134 + __u32 outpkts; /* outgoing packets */ 135 + __u64 inbytes; /* incoming bytes */ 136 + __u64 outbytes; /* outgoing bytes */ 137 + 138 + __u32 cps; /* current connection rate */ 139 + __u32 inpps; /* current in packet rate */ 140 + __u32 outpps; /* current out packet rate */ 141 + __u32 inbps; /* current in byte rate */ 142 + __u32 outbps; /* current out byte rate */ 143 + }; 144 + 145 + 146 + /* The argument to IP_VS_SO_GET_INFO */ 147 + struct ip_vs_getinfo { 148 + /* version number */ 149 + unsigned int version; 150 + 151 + /* size of connection hash table */ 152 + unsigned int size; 153 + 154 + /* number of virtual services */ 155 + unsigned int num_services; 156 + }; 157 + 158 + 159 + /* The argument to IP_VS_SO_GET_SERVICE */ 160 + struct ip_vs_service_entry { 161 + /* which service: user fills in these */ 162 + u_int16_t protocol; 163 + __be32 addr; /* virtual address */ 164 + __be16 port; 165 + u_int32_t fwmark; /* firwall mark of service */ 166 + 167 + /* service options */ 168 + char sched_name[IP_VS_SCHEDNAME_MAXLEN]; 169 + unsigned flags; /* virtual service flags */ 170 + unsigned timeout; /* persistent timeout */ 171 + __be32 netmask; /* persistent netmask */ 172 + 173 + /* number of real servers */ 174 + unsigned int num_dests; 175 + 176 + /* statistics */ 177 + struct ip_vs_stats_user stats; 178 + }; 179 + 180 + 181 + struct ip_vs_dest_entry { 182 + __be32 addr; /* destination address */ 183 + __be16 port; 184 + unsigned conn_flags; /* connection flags */ 185 + int weight; /* destination weight */ 186 + 187 + u_int32_t u_threshold; /* upper threshold */ 188 + u_int32_t l_threshold; /* lower threshold */ 189 + 190 + u_int32_t activeconns; /* active connections */ 191 + u_int32_t inactconns; /* inactive connections */ 192 + u_int32_t persistconns; /* persistent connections */ 193 + 194 + /* statistics */ 195 + struct ip_vs_stats_user stats; 196 + }; 197 + 198 + 199 + /* The argument to IP_VS_SO_GET_DESTS */ 200 + struct ip_vs_get_dests { 201 + /* which service: user fills in these */ 202 + u_int16_t protocol; 203 + __be32 addr; /* virtual address */ 204 + __be16 port; 205 + u_int32_t fwmark; /* firwall mark of service */ 206 + 207 + /* number of real servers */ 208 + unsigned int num_dests; 209 + 210 + /* the real servers */ 211 + struct ip_vs_dest_entry entrytable[0]; 212 + }; 213 + 214 + 215 + /* The argument to IP_VS_SO_GET_SERVICES */ 216 + struct ip_vs_get_services { 217 + /* number of virtual services */ 218 + unsigned int num_services; 219 + 220 + /* service table */ 221 + struct ip_vs_service_entry entrytable[0]; 222 + }; 223 + 224 + 225 + /* The argument to IP_VS_SO_GET_TIMEOUT */ 226 + struct ip_vs_timeout_user { 227 + int tcp_timeout; 228 + int tcp_fin_timeout; 229 + int udp_timeout; 230 + }; 231 + 232 + 233 + /* The argument to IP_VS_SO_GET_DAEMON */ 234 + struct ip_vs_daemon_user { 235 + /* sync daemon state (master/backup) */ 236 + int state; 237 + 238 + /* multicast interface name */ 239 + char mcast_ifn[IP_VS_IFNAME_MAXLEN]; 240 + 241 + /* SyncID we belong to */ 242 + int syncid; 243 + }; 244 + 245 + #endif /* _IP_VS_H */
+8 -245
include/net/ip_vs.h
··· 3 3 * data structure and functionality definitions 4 4 */ 5 5 6 - #ifndef _IP_VS_H 7 - #define _IP_VS_H 6 + #ifndef _NET_IP_VS_H 7 + #define _NET_IP_VS_H 8 8 9 - #include <asm/types.h> /* For __uXX types */ 10 - #include <linux/types.h> /* For __beXX types in userland */ 9 + #include <linux/ip_vs.h> /* definitions shared with userland */ 11 10 12 - #include <linux/sysctl.h> /* For ctl_path */ 13 - 14 - #define IP_VS_VERSION_CODE 0x010201 15 - #define NVERSION(version) \ 16 - (version >> 16) & 0xFF, \ 17 - (version >> 8) & 0xFF, \ 18 - version & 0xFF 19 - 20 - /* 21 - * Virtual Service Flags 22 - */ 23 - #define IP_VS_SVC_F_PERSISTENT 0x0001 /* persistent port */ 24 - #define IP_VS_SVC_F_HASHED 0x0002 /* hashed entry */ 25 - 26 - /* 27 - * Destination Server Flags 28 - */ 29 - #define IP_VS_DEST_F_AVAILABLE 0x0001 /* server is available */ 30 - #define IP_VS_DEST_F_OVERLOAD 0x0002 /* server is overloaded */ 31 - 32 - /* 33 - * IPVS sync daemon states 34 - */ 35 - #define IP_VS_STATE_NONE 0x0000 /* daemon is stopped */ 36 - #define IP_VS_STATE_MASTER 0x0001 /* started as master */ 37 - #define IP_VS_STATE_BACKUP 0x0002 /* started as backup */ 38 - 39 - /* 40 - * IPVS socket options 41 - */ 42 - #define IP_VS_BASE_CTL (64+1024+64) /* base */ 43 - 44 - #define IP_VS_SO_SET_NONE IP_VS_BASE_CTL /* just peek */ 45 - #define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1) 46 - #define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2) 47 - #define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3) 48 - #define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4) 49 - #define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5) 50 - #define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6) 51 - #define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7) 52 - #define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8) 53 - #define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9) 54 - #define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10) 55 - #define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11) 56 - #define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12) 57 - #define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13) 58 - #define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14) 59 - #define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15) 60 - #define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO 61 - 62 - #define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL 63 - #define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1) 64 - #define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2) 65 - #define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3) 66 - #define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4) 67 - #define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5) /* not used now */ 68 - #define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6) 69 - #define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7) 70 - #define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON 71 - 72 - 73 - /* 74 - * IPVS Connection Flags 75 - */ 76 - #define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */ 77 - #define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */ 78 - #define IP_VS_CONN_F_LOCALNODE 0x0001 /* local node */ 79 - #define IP_VS_CONN_F_TUNNEL 0x0002 /* tunneling */ 80 - #define IP_VS_CONN_F_DROUTE 0x0003 /* direct routing */ 81 - #define IP_VS_CONN_F_BYPASS 0x0004 /* cache bypass */ 82 - #define IP_VS_CONN_F_SYNC 0x0020 /* entry created by sync */ 83 - #define IP_VS_CONN_F_HASHED 0x0040 /* hashed entry */ 84 - #define IP_VS_CONN_F_NOOUTPUT 0x0080 /* no output packets */ 85 - #define IP_VS_CONN_F_INACTIVE 0x0100 /* not established */ 86 - #define IP_VS_CONN_F_OUT_SEQ 0x0200 /* must do output seq adjust */ 87 - #define IP_VS_CONN_F_IN_SEQ 0x0400 /* must do input seq adjust */ 88 - #define IP_VS_CONN_F_SEQ_MASK 0x0600 /* in/out sequence mask */ 89 - #define IP_VS_CONN_F_NO_CPORT 0x0800 /* no client port set yet */ 90 - #define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */ 91 - 92 - /* Move it to better place one day, for now keep it unique */ 93 - #define NFC_IPVS_PROPERTY 0x10000 94 - 95 - #define IP_VS_SCHEDNAME_MAXLEN 16 96 - #define IP_VS_IFNAME_MAXLEN 16 97 - 98 - 99 - /* 100 - * The struct ip_vs_service_user and struct ip_vs_dest_user are 101 - * used to set IPVS rules through setsockopt. 102 - */ 103 - struct ip_vs_service_user { 104 - /* virtual service addresses */ 105 - u_int16_t protocol; 106 - __be32 addr; /* virtual ip address */ 107 - __be16 port; 108 - u_int32_t fwmark; /* firwall mark of service */ 109 - 110 - /* virtual service options */ 111 - char sched_name[IP_VS_SCHEDNAME_MAXLEN]; 112 - unsigned flags; /* virtual service flags */ 113 - unsigned timeout; /* persistent timeout in sec */ 114 - __be32 netmask; /* persistent netmask */ 115 - }; 116 - 117 - 118 - struct ip_vs_dest_user { 119 - /* destination server address */ 120 - __be32 addr; 121 - __be16 port; 122 - 123 - /* real server options */ 124 - unsigned conn_flags; /* connection flags */ 125 - int weight; /* destination weight */ 126 - 127 - /* thresholds for active connections */ 128 - u_int32_t u_threshold; /* upper threshold */ 129 - u_int32_t l_threshold; /* lower threshold */ 130 - }; 131 - 132 - 133 - /* 134 - * IPVS statistics object (for user space) 135 - */ 136 - struct ip_vs_stats_user 137 - { 138 - __u32 conns; /* connections scheduled */ 139 - __u32 inpkts; /* incoming packets */ 140 - __u32 outpkts; /* outgoing packets */ 141 - __u64 inbytes; /* incoming bytes */ 142 - __u64 outbytes; /* outgoing bytes */ 143 - 144 - __u32 cps; /* current connection rate */ 145 - __u32 inpps; /* current in packet rate */ 146 - __u32 outpps; /* current out packet rate */ 147 - __u32 inbps; /* current in byte rate */ 148 - __u32 outbps; /* current out byte rate */ 149 - }; 150 - 151 - 152 - /* The argument to IP_VS_SO_GET_INFO */ 153 - struct ip_vs_getinfo { 154 - /* version number */ 155 - unsigned int version; 156 - 157 - /* size of connection hash table */ 158 - unsigned int size; 159 - 160 - /* number of virtual services */ 161 - unsigned int num_services; 162 - }; 163 - 164 - 165 - /* The argument to IP_VS_SO_GET_SERVICE */ 166 - struct ip_vs_service_entry { 167 - /* which service: user fills in these */ 168 - u_int16_t protocol; 169 - __be32 addr; /* virtual address */ 170 - __be16 port; 171 - u_int32_t fwmark; /* firwall mark of service */ 172 - 173 - /* service options */ 174 - char sched_name[IP_VS_SCHEDNAME_MAXLEN]; 175 - unsigned flags; /* virtual service flags */ 176 - unsigned timeout; /* persistent timeout */ 177 - __be32 netmask; /* persistent netmask */ 178 - 179 - /* number of real servers */ 180 - unsigned int num_dests; 181 - 182 - /* statistics */ 183 - struct ip_vs_stats_user stats; 184 - }; 185 - 186 - 187 - struct ip_vs_dest_entry { 188 - __be32 addr; /* destination address */ 189 - __be16 port; 190 - unsigned conn_flags; /* connection flags */ 191 - int weight; /* destination weight */ 192 - 193 - u_int32_t u_threshold; /* upper threshold */ 194 - u_int32_t l_threshold; /* lower threshold */ 195 - 196 - u_int32_t activeconns; /* active connections */ 197 - u_int32_t inactconns; /* inactive connections */ 198 - u_int32_t persistconns; /* persistent connections */ 199 - 200 - /* statistics */ 201 - struct ip_vs_stats_user stats; 202 - }; 203 - 204 - 205 - /* The argument to IP_VS_SO_GET_DESTS */ 206 - struct ip_vs_get_dests { 207 - /* which service: user fills in these */ 208 - u_int16_t protocol; 209 - __be32 addr; /* virtual address */ 210 - __be16 port; 211 - u_int32_t fwmark; /* firwall mark of service */ 212 - 213 - /* number of real servers */ 214 - unsigned int num_dests; 215 - 216 - /* the real servers */ 217 - struct ip_vs_dest_entry entrytable[0]; 218 - }; 219 - 220 - 221 - /* The argument to IP_VS_SO_GET_SERVICES */ 222 - struct ip_vs_get_services { 223 - /* number of virtual services */ 224 - unsigned int num_services; 225 - 226 - /* service table */ 227 - struct ip_vs_service_entry entrytable[0]; 228 - }; 229 - 230 - 231 - /* The argument to IP_VS_SO_GET_TIMEOUT */ 232 - struct ip_vs_timeout_user { 233 - int tcp_timeout; 234 - int tcp_fin_timeout; 235 - int udp_timeout; 236 - }; 237 - 238 - 239 - /* The argument to IP_VS_SO_GET_DAEMON */ 240 - struct ip_vs_daemon_user { 241 - /* sync daemon state (master/backup) */ 242 - int state; 243 - 244 - /* multicast interface name */ 245 - char mcast_ifn[IP_VS_IFNAME_MAXLEN]; 246 - 247 - /* SyncID we belong to */ 248 - int syncid; 249 - }; 250 - 251 - 11 + /* old ipvsadm versions still include this file directly */ 252 12 #ifdef __KERNEL__ 253 13 14 + #include <asm/types.h> /* for __uXX types */ 15 + 16 + #include <linux/sysctl.h> /* for ctl_path */ 254 17 #include <linux/list.h> /* for struct list_head */ 255 18 #include <linux/spinlock.h> /* for struct rwlock_t */ 256 19 #include <asm/atomic.h> /* for struct atomic_t */ ··· 744 981 745 982 #endif /* __KERNEL__ */ 746 983 747 - #endif /* _IP_VS_H */ 984 + #endif /* _NET_IP_VS_H */