diff options
author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2008-03-21 07:14:17 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-21 07:14:17 -0400 |
commit | 0c96d8c50bffb7f02690dd8a8cf1adb8e07e100f (patch) | |
tree | 9add3d8686b41aa3022b49d9cc57710865245e26 /net/ipv4/udp.c | |
parent | f40c8174d3c21bf178283f3ef3aa8c7bf238fdec (diff) |
[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>
Diffstat (limited to 'net/ipv4/udp.c')
-rw-r--r-- | net/ipv4/udp.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 049e92519616..a98c43c0a89c 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1632,7 +1632,7 @@ static int udp_seq_release(struct inode *inode, struct file *file) | |||
1632 | } | 1632 | } |
1633 | 1633 | ||
1634 | /* ------------------------------------------------------------------------ */ | 1634 | /* ------------------------------------------------------------------------ */ |
1635 | int udp_proc_register(struct udp_seq_afinfo *afinfo) | 1635 | int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo) |
1636 | { | 1636 | { |
1637 | struct proc_dir_entry *p; | 1637 | struct proc_dir_entry *p; |
1638 | int rc = 0; | 1638 | int rc = 0; |
@@ -1645,7 +1645,7 @@ int udp_proc_register(struct udp_seq_afinfo *afinfo) | |||
1645 | afinfo->seq_fops->llseek = seq_lseek; | 1645 | afinfo->seq_fops->llseek = seq_lseek; |
1646 | afinfo->seq_fops->release = udp_seq_release; | 1646 | afinfo->seq_fops->release = udp_seq_release; |
1647 | 1647 | ||
1648 | p = proc_net_fops_create(&init_net, afinfo->name, S_IRUGO, afinfo->seq_fops); | 1648 | p = proc_net_fops_create(net, afinfo->name, S_IRUGO, afinfo->seq_fops); |
1649 | if (p) | 1649 | if (p) |
1650 | p->data = afinfo; | 1650 | p->data = afinfo; |
1651 | else | 1651 | else |
@@ -1653,11 +1653,11 @@ int udp_proc_register(struct udp_seq_afinfo *afinfo) | |||
1653 | return rc; | 1653 | return rc; |
1654 | } | 1654 | } |
1655 | 1655 | ||
1656 | void udp_proc_unregister(struct udp_seq_afinfo *afinfo) | 1656 | void udp_proc_unregister(struct net *net, struct udp_seq_afinfo *afinfo) |
1657 | { | 1657 | { |
1658 | if (!afinfo) | 1658 | if (!afinfo) |
1659 | return; | 1659 | return; |
1660 | proc_net_remove(&init_net, afinfo->name); | 1660 | proc_net_remove(net, afinfo->name); |
1661 | memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops)); | 1661 | memset(afinfo->seq_fops, 0, sizeof(*afinfo->seq_fops)); |
1662 | } | 1662 | } |
1663 | 1663 | ||
@@ -1709,12 +1709,12 @@ static struct udp_seq_afinfo udp4_seq_afinfo = { | |||
1709 | 1709 | ||
1710 | int __init udp4_proc_init(void) | 1710 | int __init udp4_proc_init(void) |
1711 | { | 1711 | { |
1712 | return udp_proc_register(&udp4_seq_afinfo); | 1712 | return udp_proc_register(&init_net, &udp4_seq_afinfo); |
1713 | } | 1713 | } |
1714 | 1714 | ||
1715 | void udp4_proc_exit(void) | 1715 | void udp4_proc_exit(void) |
1716 | { | 1716 | { |
1717 | udp_proc_unregister(&udp4_seq_afinfo); | 1717 | udp_proc_unregister(&init_net, &udp4_seq_afinfo); |
1718 | } | 1718 | } |
1719 | #endif /* CONFIG_PROC_FS */ | 1719 | #endif /* CONFIG_PROC_FS */ |
1720 | 1720 | ||