diff options
author | Hans Schillstrom <hans.schillstrom@ericsson.com> | 2011-01-03 14:44:43 +0100 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2011-01-13 10:30:26 +0900 |
commit | fc723250c9cb046cc19833a2b1c4309bbf59ac36 (patch) | |
tree | fa8cd33ad9e020549dd8c6389f311d25e495ca7d /include/net/netns | |
parent | 61b1ab4583e275af216c8454b9256de680499b19 (diff) | |
download | kernel_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.h | 8 |
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_ */ |