aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/ip6_flowlabel.c
diff options
context:
space:
mode:
authorDaniel Lezcano <dlezcano@fr.ibm.com>2007-12-11 05:23:18 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:57:10 -0500
commit0a3e78ac2c555441f5bc00588070058533bc8d6b (patch)
treec5d406c1ea39ae256bc682e5d824682e0a6f6d56 /net/ipv6/ip6_flowlabel.c
parent51602b2a5e849babd94311e555bf1ba58151b8d4 (diff)
[IPV6]: make flowlabel to return an error
This patch makes the flowlab subsystem to return an error code and makes some cleanup with procfs ifdefs. The af_inet6 will use the flowlabel init return code to check the initialization was correct. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_flowlabel.c')
-rw-r--r--net/ipv6/ip6_flowlabel.c30
1 files changed, 23 insertions, 7 deletions
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
index b12cc22e7745..d0babea89819 100644
--- a/net/ipv6/ip6_flowlabel.c
+++ b/net/ipv6/ip6_flowlabel.c
@@ -692,20 +692,36 @@ static const struct file_operations ip6fl_seq_fops = {
692 .llseek = seq_lseek, 692 .llseek = seq_lseek,
693 .release = seq_release_private, 693 .release = seq_release_private,
694}; 694};
695#endif
696 695
696static int ip6_flowlabel_proc_init(struct net *net)
697{
698 if (!proc_net_fops_create(net, "ip6_flowlabel", S_IRUGO, &ip6fl_seq_fops))
699 return -ENOMEM;
700 return 0;
701}
697 702
698void ip6_flowlabel_init(void) 703static void ip6_flowlabel_proc_fini(struct net *net)
699{ 704{
700#ifdef CONFIG_PROC_FS 705 proc_net_remove(net, "ip6_flowlabel");
701 proc_net_fops_create(&init_net, "ip6_flowlabel", S_IRUGO, &ip6fl_seq_fops); 706}
707#else
708static inline int ip6_flowlabel_proc_init(struct net *net)
709{
710 return 0;
711}
712static inline void ip6_flowlabel_proc_fini(struct net *net)
713{
714 return ;
715}
702#endif 716#endif
717
718int ip6_flowlabel_init(void)
719{
720 return ip6_flowlabel_proc_init(&init_net);
703} 721}
704 722
705void ip6_flowlabel_cleanup(void) 723void ip6_flowlabel_cleanup(void)
706{ 724{
707 del_timer(&ip6_fl_gc_timer); 725 del_timer(&ip6_fl_gc_timer);
708#ifdef CONFIG_PROC_FS 726 ip6_flowlabel_proc_fini(&init_net);
709 proc_net_remove(&init_net, "ip6_flowlabel");
710#endif
711} 727}