ipvs: Pass ipvs not net into [un]register_ip_vs_proto_netns
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Acked-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman <horms@verge.net.au>
This commit is contained in:
parent
b5dd212cc1
commit
c70bd6800a
1 changed files with 7 additions and 8 deletions
|
@ -63,9 +63,8 @@ static int __used __init register_ip_vs_protocol(struct ip_vs_protocol *pp)
|
||||||
* register an ipvs protocols netns related data
|
* register an ipvs protocols netns related data
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
register_ip_vs_proto_netns(struct net *net, struct ip_vs_protocol *pp)
|
register_ip_vs_proto_netns(struct netns_ipvs *ipvs, struct ip_vs_protocol *pp)
|
||||||
{
|
{
|
||||||
struct netns_ipvs *ipvs = net_ipvs(net);
|
|
||||||
unsigned int hash = IP_VS_PROTO_HASH(pp->protocol);
|
unsigned int hash = IP_VS_PROTO_HASH(pp->protocol);
|
||||||
struct ip_vs_proto_data *pd =
|
struct ip_vs_proto_data *pd =
|
||||||
kzalloc(sizeof(struct ip_vs_proto_data), GFP_KERNEL);
|
kzalloc(sizeof(struct ip_vs_proto_data), GFP_KERNEL);
|
||||||
|
@ -79,7 +78,7 @@ register_ip_vs_proto_netns(struct net *net, struct ip_vs_protocol *pp)
|
||||||
atomic_set(&pd->appcnt, 0); /* Init app counter */
|
atomic_set(&pd->appcnt, 0); /* Init app counter */
|
||||||
|
|
||||||
if (pp->init_netns != NULL) {
|
if (pp->init_netns != NULL) {
|
||||||
int ret = pp->init_netns(net, pd);
|
int ret = pp->init_netns(ipvs->net, pd);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* unlink an free proto data */
|
/* unlink an free proto data */
|
||||||
ipvs->proto_data_table[hash] = pd->next;
|
ipvs->proto_data_table[hash] = pd->next;
|
||||||
|
@ -116,9 +115,8 @@ static int unregister_ip_vs_protocol(struct ip_vs_protocol *pp)
|
||||||
* unregister an ipvs protocols netns data
|
* unregister an ipvs protocols netns data
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
unregister_ip_vs_proto_netns(struct net *net, struct ip_vs_proto_data *pd)
|
unregister_ip_vs_proto_netns(struct netns_ipvs *ipvs, struct ip_vs_proto_data *pd)
|
||||||
{
|
{
|
||||||
struct netns_ipvs *ipvs = net_ipvs(net);
|
|
||||||
struct ip_vs_proto_data **pd_p;
|
struct ip_vs_proto_data **pd_p;
|
||||||
unsigned int hash = IP_VS_PROTO_HASH(pd->pp->protocol);
|
unsigned int hash = IP_VS_PROTO_HASH(pd->pp->protocol);
|
||||||
|
|
||||||
|
@ -127,7 +125,7 @@ unregister_ip_vs_proto_netns(struct net *net, struct ip_vs_proto_data *pd)
|
||||||
if (*pd_p == pd) {
|
if (*pd_p == pd) {
|
||||||
*pd_p = pd->next;
|
*pd_p = pd->next;
|
||||||
if (pd->pp->exit_netns != NULL)
|
if (pd->pp->exit_netns != NULL)
|
||||||
pd->pp->exit_netns(net, pd);
|
pd->pp->exit_netns(ipvs->net, pd);
|
||||||
kfree(pd);
|
kfree(pd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -329,9 +327,10 @@ int __net_init ip_vs_protocol_net_init(struct net *net)
|
||||||
&ip_vs_protocol_esp,
|
&ip_vs_protocol_esp,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
struct netns_ipvs *ipvs = net_ipvs(net);
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(protos); i++) {
|
for (i = 0; i < ARRAY_SIZE(protos); i++) {
|
||||||
ret = register_ip_vs_proto_netns(net, protos[i]);
|
ret = register_ip_vs_proto_netns(ipvs, protos[i]);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@ -351,7 +350,7 @@ void __net_exit ip_vs_protocol_net_cleanup(struct net *net)
|
||||||
/* unregister all the ipvs proto data for this netns */
|
/* unregister all the ipvs proto data for this netns */
|
||||||
for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) {
|
for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) {
|
||||||
while ((pd = ipvs->proto_data_table[i]) != NULL)
|
while ((pd = ipvs->proto_data_table[i]) != NULL)
|
||||||
unregister_ip_vs_proto_netns(net, pd);
|
unregister_ip_vs_proto_netns(ipvs, pd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue