aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/ip_vs.h
diff options
context:
space:
mode:
authorSimon Horman <horms@verge.net.au>2010-11-08 06:05:57 -0500
committerSimon Horman <horms@verge.net.au>2010-11-15 18:13:07 -0500
commite9e5eee8733739f13a204132b502494b3f494f3b (patch)
tree916fbec7bdcea22c44565eab7582f3a71d0308e0 /include/net/ip_vs.h
parentc5d277d29ad1ae9add8d6984025ccd2e835971ce (diff)
IPVS: Add persistence engine to connection entry
The dest of a connection may not exist if it has been created as the result of connection synchronisation. But in order for connection entries for templates with persistence engine data created through connection synchronisation to be valid access to the persistence engine pointer is required. So add the persistence engine to the connection itself. Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'include/net/ip_vs.h')
-rw-r--r--include/net/ip_vs.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
index b7bbd6c28cf..be2b5690f89 100644
--- a/include/net/ip_vs.h
+++ b/include/net/ip_vs.h
@@ -422,6 +422,7 @@ struct ip_vs_conn {
422 struct ip_vs_seq in_seq; /* incoming seq. struct */ 422 struct ip_vs_seq in_seq; /* incoming seq. struct */
423 struct ip_vs_seq out_seq; /* outgoing seq. struct */ 423 struct ip_vs_seq out_seq; /* outgoing seq. struct */
424 424
425 const struct ip_vs_pe *pe;
425 char *pe_data; 426 char *pe_data;
426 __u8 pe_data_len; 427 __u8 pe_data_len;
427}; 428};
@@ -814,8 +815,19 @@ void ip_vs_bind_pe(struct ip_vs_service *svc, struct ip_vs_pe *pe);
814void ip_vs_unbind_pe(struct ip_vs_service *svc); 815void ip_vs_unbind_pe(struct ip_vs_service *svc);
815int register_ip_vs_pe(struct ip_vs_pe *pe); 816int register_ip_vs_pe(struct ip_vs_pe *pe);
816int unregister_ip_vs_pe(struct ip_vs_pe *pe); 817int unregister_ip_vs_pe(struct ip_vs_pe *pe);
817extern struct ip_vs_pe *ip_vs_pe_get(const char *name); 818struct ip_vs_pe *ip_vs_pe_getbyname(const char *name);
818extern void ip_vs_pe_put(struct ip_vs_pe *pe); 819
820static inline void ip_vs_pe_get(const struct ip_vs_pe *pe)
821{
822 if (pe && pe->module)
823 __module_get(pe->module);
824}
825
826static inline void ip_vs_pe_put(const struct ip_vs_pe *pe)
827{
828 if (pe && pe->module)
829 module_put(pe->module);
830}
819 831
820/* 832/*
821 * IPVS protocol functions (from ip_vs_proto.c) 833 * IPVS protocol functions (from ip_vs_proto.c)