diff options
author | Hans Schillstrom <hans.schillstrom@ericsson.com> | 2011-01-03 08:44:51 -0500 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2011-01-12 20:30:27 -0500 |
commit | 9330419d9aa4f97df412ac9be9fc0388c67dd315 (patch) | |
tree | 3fdd9103f299fcd2dfafcf0f51d1b5c4430987c2 /net/netfilter/ipvs/ip_vs_proto.c | |
parent | 88fe2d372793a71ae4f6319a16f537d56a83906c (diff) |
IPVS: netns, use ip_vs_proto_data as param.
ip_vs_protocol *pp is replaced by ip_vs_proto_data *pd in
function call in ip_vs_protocol struct i.e. :,
- timeout_change()
- state_transition()
ip_vs_protocol_timeout_change() got ipvs as param, due to above
and a upcoming patch - defence work
Most of this changes are triggered by Julians comment:
"tcp_timeout_change should work with the new struct ip_vs_proto_data
so that tcp_state_table will go to pd->state_table
and set_tcp_state will get pd instead of pp"
*v3
Mostly comments from Julian
The pp -> pd conversion should start from functions like
ip_vs_out() that use pp = ip_vs_proto_get(iph.protocol),
now they should use ip_vs_proto_data_get(net, iph.protocol).
conn_in_get() and conn_out_get() unused param *pp, removed.
*v4
ip_vs_protocol_timeout_change() walk the proto_data path.
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 'net/netfilter/ipvs/ip_vs_proto.c')
-rw-r--r-- | net/netfilter/ipvs/ip_vs_proto.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/net/netfilter/ipvs/ip_vs_proto.c b/net/netfilter/ipvs/ip_vs_proto.c index 9f609d4d5d5..6ac986cdcff 100644 --- a/net/netfilter/ipvs/ip_vs_proto.c +++ b/net/netfilter/ipvs/ip_vs_proto.c | |||
@@ -152,9 +152,8 @@ EXPORT_SYMBOL(ip_vs_proto_get); | |||
152 | * get ip_vs_protocol object data by netns and proto | 152 | * get ip_vs_protocol object data by netns and proto |
153 | */ | 153 | */ |
154 | struct ip_vs_proto_data * | 154 | struct ip_vs_proto_data * |
155 | ip_vs_proto_data_get(struct net *net, unsigned short proto) | 155 | __ipvs_proto_data_get(struct netns_ipvs *ipvs, unsigned short proto) |
156 | { | 156 | { |
157 | struct netns_ipvs *ipvs = net_ipvs(net); | ||
158 | struct ip_vs_proto_data *pd; | 157 | struct ip_vs_proto_data *pd; |
159 | unsigned hash = IP_VS_PROTO_HASH(proto); | 158 | unsigned hash = IP_VS_PROTO_HASH(proto); |
160 | 159 | ||
@@ -165,20 +164,28 @@ ip_vs_proto_data_get(struct net *net, unsigned short proto) | |||
165 | 164 | ||
166 | return NULL; | 165 | return NULL; |
167 | } | 166 | } |
167 | |||
168 | struct ip_vs_proto_data * | ||
169 | ip_vs_proto_data_get(struct net *net, unsigned short proto) | ||
170 | { | ||
171 | struct netns_ipvs *ipvs = net_ipvs(net); | ||
172 | |||
173 | return __ipvs_proto_data_get(ipvs, proto); | ||
174 | } | ||
168 | EXPORT_SYMBOL(ip_vs_proto_data_get); | 175 | EXPORT_SYMBOL(ip_vs_proto_data_get); |
169 | 176 | ||
170 | /* | 177 | /* |
171 | * Propagate event for state change to all protocols | 178 | * Propagate event for state change to all protocols |
172 | */ | 179 | */ |
173 | void ip_vs_protocol_timeout_change(int flags) | 180 | void ip_vs_protocol_timeout_change(struct netns_ipvs *ipvs, int flags) |
174 | { | 181 | { |
175 | struct ip_vs_protocol *pp; | 182 | struct ip_vs_proto_data *pd; |
176 | int i; | 183 | int i; |
177 | 184 | ||
178 | for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) { | 185 | for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) { |
179 | for (pp = ip_vs_proto_table[i]; pp; pp = pp->next) { | 186 | for (pd = ipvs->proto_data_table[i]; pd; pd = pd->next) { |
180 | if (pp->timeout_change) | 187 | if (pd->pp->timeout_change) |
181 | pp->timeout_change(pp, flags); | 188 | pd->pp->timeout_change(pd, flags); |
182 | } | 189 | } |
183 | } | 190 | } |
184 | } | 191 | } |