[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:
Родитель
e5ba31f11f
Коммит
a308da1627
|
@ -1003,15 +1003,31 @@ static const struct file_operations raw_seq_fops = {
|
|||
.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)
|
||||
{
|
||||
if (!proc_net_fops_create(&init_net, "raw", S_IRUGO, &raw_seq_fops))
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
return register_pernet_subsys(&raw_net_ops);
|
||||
}
|
||||
|
||||
void __init raw_proc_exit(void)
|
||||
{
|
||||
proc_net_remove(&init_net, "raw");
|
||||
unregister_pernet_subsys(&raw_net_ops);
|
||||
}
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
|
|
@ -1270,16 +1270,32 @@ static const struct file_operations raw6_seq_fops = {
|
|||
.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)
|
||||
{
|
||||
if (!proc_net_fops_create(&init_net, "raw6", S_IRUGO, &raw6_seq_fops))
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
return register_pernet_subsys(&raw6_net_ops);
|
||||
}
|
||||
|
||||
void raw6_proc_exit(void)
|
||||
{
|
||||
proc_net_remove(&init_net, "raw6");
|
||||
unregister_pernet_subsys(&raw6_net_ops);
|
||||
}
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче