: Create the /proc/net/raw(6) in each namespace.
Subsystems (2)
PATCH 4/4 : 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 <[email protected]>
--- net/ipv4/raw.c | 22 +++++++++++++++++++--- net/ipv6/raw.c | 22 +++++++++++++++++++--- 2 files changed, 38 insertions(+), 6 deletions(-)
net/ipv4/raw.c +19 -3
@@ -1003,15 +1003,31 @@ static const struct file_operations raw_seq_fops = { .release = seq_release_net, }; -int __init raw_proc_init (void ) +static __net_init int raw_init_net (struct net *net) { -if (!proc_net_fops_create (&init_net,"raw" ,S_IRUGO , &raw_seq_fops)) +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 ) +{ +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 */
net/ipv6/raw.c +19 -3
@@ -1270,16 +1270,32 @@ static const struct file_operations raw6_seq_fops = { .release = seq_release_net, }; -int __init raw6_proc_init (void ) +static int raw6_init_net (struct net *net) { -if (!proc_net_fops_create (&init_net,"raw6" ,S_IRUGO , &raw6_seq_fops)) +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 ) +{ +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 */
Signature · 1 line
1.5.3.4
From: Pavel Emelyanov <[email protected]>
Date: Mon, 14 Jan 2008 16:13:08 +0300
Quoted 6 lines
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 <[email protected]>
Applied.