mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-09-21 03:43:03 +00:00
[NETNS][RAW]: Create the /proc/net/raw(6) in each namespace.
To do so, just register the proper subsystem and create files in ->init callbacks. No other special per-namespace handling for raw sockets is required. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e5ba31f11f
commit
a308da1627
|
@ -1003,15 +1003,31 @@ static const struct file_operations raw_seq_fops = {
|
||||||
.release = seq_release_net,
|
.release = seq_release_net,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static __net_init int raw_init_net(struct net *net)
|
||||||
|
{
|
||||||
|
if (!proc_net_fops_create(net, "raw", S_IRUGO, &raw_seq_fops))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __net_exit void raw_exit_net(struct net *net)
|
||||||
|
{
|
||||||
|
proc_net_remove(net, "raw");
|
||||||
|
}
|
||||||
|
|
||||||
|
static __net_initdata struct pernet_operations raw_net_ops = {
|
||||||
|
.init = raw_init_net,
|
||||||
|
.exit = raw_exit_net,
|
||||||
|
};
|
||||||
|
|
||||||
int __init raw_proc_init(void)
|
int __init raw_proc_init(void)
|
||||||
{
|
{
|
||||||
if (!proc_net_fops_create(&init_net, "raw", S_IRUGO, &raw_seq_fops))
|
return register_pernet_subsys(&raw_net_ops);
|
||||||
return -ENOMEM;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init raw_proc_exit(void)
|
void __init raw_proc_exit(void)
|
||||||
{
|
{
|
||||||
proc_net_remove(&init_net, "raw");
|
unregister_pernet_subsys(&raw_net_ops);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
|
@ -1270,16 +1270,32 @@ static const struct file_operations raw6_seq_fops = {
|
||||||
.release = seq_release_net,
|
.release = seq_release_net,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int raw6_init_net(struct net *net)
|
||||||
|
{
|
||||||
|
if (!proc_net_fops_create(net, "raw6", S_IRUGO, &raw6_seq_fops))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void raw6_exit_net(struct net *net)
|
||||||
|
{
|
||||||
|
proc_net_remove(net, "raw6");
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct pernet_operations raw6_net_ops = {
|
||||||
|
.init = raw6_init_net,
|
||||||
|
.exit = raw6_exit_net,
|
||||||
|
};
|
||||||
|
|
||||||
int __init raw6_proc_init(void)
|
int __init raw6_proc_init(void)
|
||||||
{
|
{
|
||||||
if (!proc_net_fops_create(&init_net, "raw6", S_IRUGO, &raw6_seq_fops))
|
return register_pernet_subsys(&raw6_net_ops);
|
||||||
return -ENOMEM;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void raw6_proc_exit(void)
|
void raw6_proc_exit(void)
|
||||||
{
|
{
|
||||||
proc_net_remove(&init_net, "raw6");
|
unregister_pernet_subsys(&raw6_net_ops);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue