mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-04-13 17:57:40 +07:00
[NETNS][IPV6] udp6 - make proc per namespace
The proc init/exit functions take a new network namespace parameter in order to register/unregister /proc/net/udp6 for a namespace. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f40c8174d3
commit
0c96d8c50b
@ -597,8 +597,8 @@ extern int raw6_proc_init(void);
|
|||||||
extern void raw6_proc_exit(void);
|
extern void raw6_proc_exit(void);
|
||||||
extern int tcp6_proc_init(void);
|
extern int tcp6_proc_init(void);
|
||||||
extern void tcp6_proc_exit(void);
|
extern void tcp6_proc_exit(void);
|
||||||
extern int udp6_proc_init(void);
|
extern int udp6_proc_init(struct net *net);
|
||||||
extern void udp6_proc_exit(void);
|
extern void udp6_proc_exit(struct net *net);
|
||||||
extern int udplite6_proc_init(void);
|
extern int udplite6_proc_init(void);
|
||||||
extern void udplite6_proc_exit(void);
|
extern void udplite6_proc_exit(void);
|
||||||
extern int ipv6_misc_proc_init(void);
|
extern int ipv6_misc_proc_init(void);
|
||||||
|
@ -200,8 +200,8 @@ struct udp_iter_state {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
extern int udp_proc_register(struct udp_seq_afinfo *afinfo);
|
extern int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo);
|
||||||
extern void udp_proc_unregister(struct udp_seq_afinfo *afinfo);
|
extern void udp_proc_unregister(struct net *net, struct udp_seq_afinfo *afinfo);
|
||||||
|
|
||||||
extern int udp4_proc_init(void);
|
extern int udp4_proc_init(void);
|
||||||
extern void udp4_proc_exit(void);
|
extern void udp4_proc_exit(void);
|
||||||
|
@ -1632,7 +1632,7 @@ static int udp_seq_release(struct inode *inode, struct file *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
int udp_proc_register(struct udp_seq_afinfo *afinfo)
|
int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo)
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@ -1645,7 +1645,7 @@ int udp_proc_register(struct udp_seq_afinfo *afinfo)
|
|||||||
afinfo->seq_fops->llseek = seq_lseek;
|
afinfo->seq_fops->llseek = seq_lseek;
|
||||||
afinfo->seq_fops->release = udp_seq_release;
|
afinfo->seq_fops->release = udp_seq_release;
|
||||||
|
|
||||||
p = proc_net_fops_create(&init_net, afinfo->name, S_IRUGO, afinfo->seq_fops);
|
p = proc_net_fops_create(net, afinfo->name, S_IRUGO, afinfo->seq_fops);
|
||||||
if (p)
|
if (p)
|
||||||
p->data = afinfo;
|
p->data = afinfo;
|
||||||
else
|
else
|
||||||
@ -1653,11 +1653,11 @@ int udp_proc_register(struct udp_seq_afinfo *afinfo)
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void udp_proc_unregister(struct udp_seq_afinfo *afinfo)
|
void udp_proc_unregister(struct net *net, struct udp_seq_afinfo *afinfo)
|
||||||
{
|
{
|
||||||
if (!afinfo)
|
if (!afinfo)
|
||||||
return;
|
return;
|
||||||
proc_net_remove(&init_net, afinfo->name);
|
proc_net_remove(net, afinfo->name);
|
||||||
memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops));
|
memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1709,12 +1709,12 @@ static struct udp_seq_afinfo udp4_seq_afinfo = {
|
|||||||
|
|
||||||
int __init udp4_proc_init(void)
|
int __init udp4_proc_init(void)
|
||||||
{
|
{
|
||||||
return udp_proc_register(&udp4_seq_afinfo);
|
return udp_proc_register(&init_net, &udp4_seq_afinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void udp4_proc_exit(void)
|
void udp4_proc_exit(void)
|
||||||
{
|
{
|
||||||
udp_proc_unregister(&udp4_seq_afinfo);
|
udp_proc_unregister(&init_net, &udp4_seq_afinfo);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ void __init udplite4_register(void)
|
|||||||
inet_register_protosw(&udplite4_protosw);
|
inet_register_protosw(&udplite4_protosw);
|
||||||
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
if (udp_proc_register(&udplite4_seq_afinfo)) /* udplite4_proc_init() */
|
if (udp_proc_register(&init_net, &udplite4_seq_afinfo))
|
||||||
printk(KERN_ERR "%s: Cannot register /proc!\n", __func__);
|
printk(KERN_ERR "%s: Cannot register /proc!\n", __func__);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
|
@ -842,6 +842,8 @@ static void cleanup_ipv6_mibs(void)
|
|||||||
|
|
||||||
static int inet6_net_init(struct net *net)
|
static int inet6_net_init(struct net *net)
|
||||||
{
|
{
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
net->ipv6.sysctl.bindv6only = 0;
|
net->ipv6.sysctl.bindv6only = 0;
|
||||||
net->ipv6.sysctl.flush_delay = 0;
|
net->ipv6.sysctl.flush_delay = 0;
|
||||||
net->ipv6.sysctl.ip6_rt_max_size = 4096;
|
net->ipv6.sysctl.ip6_rt_max_size = 4096;
|
||||||
@ -853,12 +855,20 @@ static int inet6_net_init(struct net *net)
|
|||||||
net->ipv6.sysctl.ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40;
|
net->ipv6.sysctl.ip6_rt_min_advmss = IPV6_MIN_MTU - 20 - 40;
|
||||||
net->ipv6.sysctl.icmpv6_time = 1*HZ;
|
net->ipv6.sysctl.icmpv6_time = 1*HZ;
|
||||||
|
|
||||||
return 0;
|
#ifdef CONFIG_PROC_FS
|
||||||
|
err = udp6_proc_init(net);
|
||||||
|
if (err)
|
||||||
|
goto out;
|
||||||
|
out:
|
||||||
|
#endif
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void inet6_net_exit(struct net *net)
|
static void inet6_net_exit(struct net *net)
|
||||||
{
|
{
|
||||||
return;
|
#ifdef CONFIG_PROC_FS
|
||||||
|
udp6_proc_exit(net);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pernet_operations inet6_net_ops = {
|
static struct pernet_operations inet6_net_ops = {
|
||||||
@ -943,8 +953,6 @@ static int __init inet6_init(void)
|
|||||||
goto proc_raw6_fail;
|
goto proc_raw6_fail;
|
||||||
if (tcp6_proc_init())
|
if (tcp6_proc_init())
|
||||||
goto proc_tcp6_fail;
|
goto proc_tcp6_fail;
|
||||||
if (udp6_proc_init())
|
|
||||||
goto proc_udp6_fail;
|
|
||||||
if (udplite6_proc_init())
|
if (udplite6_proc_init())
|
||||||
goto proc_udplite6_fail;
|
goto proc_udplite6_fail;
|
||||||
if (ipv6_misc_proc_init())
|
if (ipv6_misc_proc_init())
|
||||||
@ -1029,8 +1037,6 @@ static int __init inet6_init(void)
|
|||||||
proc_misc6_fail:
|
proc_misc6_fail:
|
||||||
udplite6_proc_exit();
|
udplite6_proc_exit();
|
||||||
proc_udplite6_fail:
|
proc_udplite6_fail:
|
||||||
udp6_proc_exit();
|
|
||||||
proc_udp6_fail:
|
|
||||||
tcp6_proc_exit();
|
tcp6_proc_exit();
|
||||||
proc_tcp6_fail:
|
proc_tcp6_fail:
|
||||||
raw6_proc_exit();
|
raw6_proc_exit();
|
||||||
@ -1092,7 +1098,6 @@ static void __exit inet6_exit(void)
|
|||||||
ac6_proc_exit();
|
ac6_proc_exit();
|
||||||
ipv6_misc_proc_exit();
|
ipv6_misc_proc_exit();
|
||||||
udplite6_proc_exit();
|
udplite6_proc_exit();
|
||||||
udp6_proc_exit();
|
|
||||||
tcp6_proc_exit();
|
tcp6_proc_exit();
|
||||||
raw6_proc_exit();
|
raw6_proc_exit();
|
||||||
#endif
|
#endif
|
||||||
|
@ -989,13 +989,13 @@ static struct udp_seq_afinfo udp6_seq_afinfo = {
|
|||||||
.seq_fops = &udp6_seq_fops,
|
.seq_fops = &udp6_seq_fops,
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init udp6_proc_init(void)
|
int udp6_proc_init(struct net *net)
|
||||||
{
|
{
|
||||||
return udp_proc_register(&udp6_seq_afinfo);
|
return udp_proc_register(net, &udp6_seq_afinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void udp6_proc_exit(void) {
|
void udp6_proc_exit(struct net *net) {
|
||||||
udp_proc_unregister(&udp6_seq_afinfo);
|
udp_proc_unregister(net, &udp6_seq_afinfo);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
|
||||||
|
@ -115,11 +115,11 @@ static struct udp_seq_afinfo udplite6_seq_afinfo = {
|
|||||||
|
|
||||||
int __init udplite6_proc_init(void)
|
int __init udplite6_proc_init(void)
|
||||||
{
|
{
|
||||||
return udp_proc_register(&udplite6_seq_afinfo);
|
return udp_proc_register(&init_net, &udplite6_seq_afinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void udplite6_proc_exit(void)
|
void udplite6_proc_exit(void)
|
||||||
{
|
{
|
||||||
udp_proc_unregister(&udplite6_seq_afinfo);
|
udp_proc_unregister(&init_net, &udplite6_seq_afinfo);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user