aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/netns
diff options
context:
space:
mode:
authorHans Schillstrom <hans.schillstrom@ericsson.com>2011-01-03 14:44:43 +0100
committerSimon Horman <horms@verge.net.au>2011-01-13 10:30:26 +0900
commitfc723250c9cb046cc19833a2b1c4309bbf59ac36 (patch)
treefa8cd33ad9e020549dd8c6389f311d25e495ca7d /include/net/netns
parent61b1ab4583e275af216c8454b9256de680499b19 (diff)
downloadkernel_goldelico_gta04-fc723250c9cb046cc19833a2b1c4309bbf59ac36.zip
kernel_goldelico_gta04-fc723250c9cb046cc19833a2b1c4309bbf59ac36.tar.gz
kernel_goldelico_gta04-fc723250c9cb046cc19833a2b1c4309bbf59ac36.tar.bz2
IPVS: netns to services part 1
Services hash tables got netns ptr a hash arg, While Real Servers (rs) has been moved to ipvs struct. Two new inline functions added to get net ptr from skb. Since ip_vs is called from different contexts there is two places to dig for the net ptr skb->dev or skb->sk this is handled in skb_net() and skb_sknet() Global functions, ip_vs_service_get() ip_vs_lookup_real_service() etc have got struct net *net as first param. If possible get net ptr skb etc, - if not &init_net is used at this early stage of patching. ip_vs_ctl.c procfs not ready for netns yet. *v3 Comments by Julian - __ip_vs_service_find and __ip_vs_svc_fwm_find are fast path, net_eq(svc->net, net) so the check is at the end now. - net = skb_net(skb) in ip_vs_out moved after check for skb_dst. Signed-off-by: Hans Schillstrom <hans.schillstrom@ericsson.com> Acked-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'include/net/netns')
-rw-r--r--include/net/netns/ip_vs.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/net/netns/ip_vs.h b/include/net/netns/ip_vs.h
index 12fe840..5b87d22 100644
--- a/include/net/netns/ip_vs.h
+++ b/include/net/netns/ip_vs.h
@@ -20,6 +20,14 @@ struct ctl_table_header;
struct netns_ipvs {
int gen; /* Generation */
+ /*
+ * Hash table: for real service lookups
+ */
+ #define IP_VS_RTAB_BITS 4
+ #define IP_VS_RTAB_SIZE (1 << IP_VS_RTAB_BITS)
+ #define IP_VS_RTAB_MASK (IP_VS_RTAB_SIZE - 1)
+
+ struct list_head rs_table[IP_VS_RTAB_SIZE];
};
#endif /* IP_VS_H_ */