aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/net/ip_vs.h20
-rw-r--r--include/net/netns/ip_vs.h3
2 files changed, 22 insertions, 1 deletions
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index d551e0d8fd9a..88d4e40b538a 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -352,6 +352,7 @@ struct iphdr;
352struct ip_vs_conn; 352struct ip_vs_conn;
353struct ip_vs_app; 353struct ip_vs_app;
354struct sk_buff; 354struct sk_buff;
355struct ip_vs_proto_data;
355 356
356struct ip_vs_protocol { 357struct ip_vs_protocol {
357 struct ip_vs_protocol *next; 358 struct ip_vs_protocol *next;
@@ -366,6 +367,10 @@ struct ip_vs_protocol {
366 367
367 void (*exit)(struct ip_vs_protocol *pp); 368 void (*exit)(struct ip_vs_protocol *pp);
368 369
370 void (*init_netns)(struct net *net, struct ip_vs_proto_data *pd);
371
372 void (*exit_netns)(struct net *net, struct ip_vs_proto_data *pd);
373
369 int (*conn_schedule)(int af, struct sk_buff *skb, 374 int (*conn_schedule)(int af, struct sk_buff *skb,
370 struct ip_vs_protocol *pp, 375 struct ip_vs_protocol *pp,
371 int *verdict, struct ip_vs_conn **cpp); 376 int *verdict, struct ip_vs_conn **cpp);
@@ -417,7 +422,20 @@ struct ip_vs_protocol {
417 int (*set_state_timeout)(struct ip_vs_protocol *pp, char *sname, int to); 422 int (*set_state_timeout)(struct ip_vs_protocol *pp, char *sname, int to);
418}; 423};
419 424
420extern struct ip_vs_protocol * ip_vs_proto_get(unsigned short proto); 425/*
426 * protocol data per netns
427 */
428struct ip_vs_proto_data {
429 struct ip_vs_proto_data *next;
430 struct ip_vs_protocol *pp;
431 int *timeout_table; /* protocol timeout table */
432 atomic_t appcnt; /* counter of proto app incs. */
433 struct tcp_states_t *tcp_state_table;
434};
435
436extern struct ip_vs_protocol *ip_vs_proto_get(unsigned short proto);
437extern struct ip_vs_proto_data *ip_vs_proto_data_get(struct net *net,
438 unsigned short proto);
421 439
422struct ip_vs_conn_param { 440struct ip_vs_conn_param {
423 const union nf_inet_addr *caddr; 441 const union nf_inet_addr *caddr;
diff --git a/include/net/netns/ip_vs.h b/include/net/netns/ip_vs.h
index d14581cc4fe0..6f4e089b8db2 100644
--- a/include/net/netns/ip_vs.h
+++ b/include/net/netns/ip_vs.h
@@ -28,6 +28,9 @@ struct netns_ipvs {
28 #define IP_VS_RTAB_MASK (IP_VS_RTAB_SIZE - 1) 28 #define IP_VS_RTAB_MASK (IP_VS_RTAB_SIZE - 1)
29 29
30 struct list_head rs_table[IP_VS_RTAB_SIZE]; 30 struct list_head rs_table[IP_VS_RTAB_SIZE];
31 /* ip_vs_proto */
32 #define IP_VS_PROTO_TAB_SIZE 32 /* must be power of 2 */
33 struct ip_vs_proto_data *proto_data_table[IP_VS_PROTO_TAB_SIZE];
31 34
32 /* ip_vs_lblc */ 35 /* ip_vs_lblc */
33 int sysctl_lblc_expiration; 36 int sysctl_lblc_expiration;