diff options
author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2007-12-11 05:23:18 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:57:10 -0500 |
commit | 0a3e78ac2c555441f5bc00588070058533bc8d6b (patch) | |
tree | c5d406c1ea39ae256bc682e5d824682e0a6f6d56 /net/ipv6/ip6_flowlabel.c | |
parent | 51602b2a5e849babd94311e555bf1ba58151b8d4 (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.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index b12cc22e774..d0babea8981 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 | ||
696 | static 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 | ||
698 | void ip6_flowlabel_init(void) | 703 | static 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 | ||
708 | static inline int ip6_flowlabel_proc_init(struct net *net) | ||
709 | { | ||
710 | return 0; | ||
711 | } | ||
712 | static inline void ip6_flowlabel_proc_fini(struct net *net) | ||
713 | { | ||
714 | return ; | ||
715 | } | ||
702 | #endif | 716 | #endif |
717 | |||
718 | int ip6_flowlabel_init(void) | ||
719 | { | ||
720 | return ip6_flowlabel_proc_init(&init_net); | ||
703 | } | 721 | } |
704 | 722 | ||
705 | void ip6_flowlabel_cleanup(void) | 723 | void 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 | } |