diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-07-03 03:51:22 -0400 |
---|---|---|
committer | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-07-03 04:51:57 -0400 |
commit | e0835f8fa56d2d308486f8a34cf1c4480cd27f4e (patch) | |
tree | 8b9e2f60795dbc6e0e0138c8e7c362efecb568e8 | |
parent | 03d2f897e9fb3218989baa2139a951ce7f5414bf (diff) |
ipv4,ipv6 mroute: Add some helper inline functions to remove ugly ifdefs.
ip{,v6}_mroute_{set,get}sockopt() should not matter by optimization but
it would be better not to depend on optimization semantically.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
-rw-r--r-- | include/linux/mroute.h | 27 | ||||
-rw-r--r-- | include/linux/mroute6.h | 32 | ||||
-rw-r--r-- | net/ipv6/af_inet6.c | 8 |
3 files changed, 59 insertions, 8 deletions
diff --git a/include/linux/mroute.h b/include/linux/mroute.h index df8efd42bf8a..07112ee9293a 100644 --- a/include/linux/mroute.h +++ b/include/linux/mroute.h | |||
@@ -144,10 +144,37 @@ static inline int ip_mroute_opt(int opt) | |||
144 | } | 144 | } |
145 | #endif | 145 | #endif |
146 | 146 | ||
147 | #ifdef CONFIG_IP_MROUTE | ||
147 | extern int ip_mroute_setsockopt(struct sock *, int, char __user *, int); | 148 | extern int ip_mroute_setsockopt(struct sock *, int, char __user *, int); |
148 | extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *); | 149 | extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *); |
149 | extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg); | 150 | extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg); |
150 | extern int ip_mr_init(void); | 151 | extern int ip_mr_init(void); |
152 | #else | ||
153 | static inline | ||
154 | int ip_mroute_setsockopt(struct sock *sock, | ||
155 | int optname, char __user *optval, int optlen) | ||
156 | { | ||
157 | return -ENOPROTOOPT; | ||
158 | } | ||
159 | |||
160 | static inline | ||
161 | int ip_mroute_getsockopt(struct sock *sock, | ||
162 | int optname, char __user *optval, int __user *optlen) | ||
163 | { | ||
164 | return -ENOPROTOOPT; | ||
165 | } | ||
166 | |||
167 | static inline | ||
168 | int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg) | ||
169 | { | ||
170 | return -ENOIOCTLCMD; | ||
171 | } | ||
172 | |||
173 | static inline int ip_mr_init(void) | ||
174 | { | ||
175 | return 0; | ||
176 | } | ||
177 | #endif | ||
151 | 178 | ||
152 | struct vif_device | 179 | struct vif_device |
153 | { | 180 | { |
diff --git a/include/linux/mroute6.h b/include/linux/mroute6.h index 4c4d6f57d5c5..5cf50473a10f 100644 --- a/include/linux/mroute6.h +++ b/include/linux/mroute6.h | |||
@@ -131,12 +131,44 @@ static inline int ip6_mroute_opt(int opt) | |||
131 | 131 | ||
132 | struct sock; | 132 | struct sock; |
133 | 133 | ||
134 | #ifdef CONFIG_IPV6_MROUTE | ||
134 | extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, int); | 135 | extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, int); |
135 | extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *); | 136 | extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *); |
136 | extern int ip6_mr_input(struct sk_buff *skb); | 137 | extern int ip6_mr_input(struct sk_buff *skb); |
137 | extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg); | 138 | extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg); |
138 | extern int ip6_mr_init(void); | 139 | extern int ip6_mr_init(void); |
139 | extern void ip6_mr_cleanup(void); | 140 | extern void ip6_mr_cleanup(void); |
141 | #else | ||
142 | static inline | ||
143 | int ip6_mroute_setsockopt(struct sock *sock, | ||
144 | int optname, char __user *optval, int optlen) | ||
145 | { | ||
146 | return -ENOPROTOOPT; | ||
147 | } | ||
148 | |||
149 | static inline | ||
150 | int ip6_mroute_getsockopt(struct sock *sock, | ||
151 | int optname, char __user *optval, int __user *optlen) | ||
152 | { | ||
153 | return -ENOPROTOOPT; | ||
154 | } | ||
155 | |||
156 | static inline | ||
157 | int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg) | ||
158 | { | ||
159 | return -ENOIOCTLCMD; | ||
160 | } | ||
161 | |||
162 | static inline int ip6_mr_init(void) | ||
163 | { | ||
164 | return 0; | ||
165 | } | ||
166 | |||
167 | static inline void ip6_mr_cleanup(void) | ||
168 | { | ||
169 | return; | ||
170 | } | ||
171 | #endif | ||
140 | 172 | ||
141 | struct mif_device | 173 | struct mif_device |
142 | { | 174 | { |
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 6b39af1acb5e..3d828bc4b1cf 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -59,9 +59,7 @@ | |||
59 | 59 | ||
60 | #include <asm/uaccess.h> | 60 | #include <asm/uaccess.h> |
61 | #include <asm/system.h> | 61 | #include <asm/system.h> |
62 | #ifdef CONFIG_IPV6_MROUTE | ||
63 | #include <linux/mroute6.h> | 62 | #include <linux/mroute6.h> |
64 | #endif | ||
65 | 63 | ||
66 | MODULE_AUTHOR("Cast of dozens"); | 64 | MODULE_AUTHOR("Cast of dozens"); |
67 | MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); | 65 | MODULE_DESCRIPTION("IPv6 protocol stack for Linux"); |
@@ -952,11 +950,9 @@ static int __init inet6_init(void) | |||
952 | err = icmpv6_init(); | 950 | err = icmpv6_init(); |
953 | if (err) | 951 | if (err) |
954 | goto icmp_fail; | 952 | goto icmp_fail; |
955 | #ifdef CONFIG_IPV6_MROUTE | ||
956 | err = ip6_mr_init(); | 953 | err = ip6_mr_init(); |
957 | if (err) | 954 | if (err) |
958 | goto ipmr_fail; | 955 | goto ipmr_fail; |
959 | #endif | ||
960 | err = ndisc_init(); | 956 | err = ndisc_init(); |
961 | if (err) | 957 | if (err) |
962 | goto ndisc_fail; | 958 | goto ndisc_fail; |
@@ -1059,10 +1055,8 @@ netfilter_fail: | |||
1059 | igmp_fail: | 1055 | igmp_fail: |
1060 | ndisc_cleanup(); | 1056 | ndisc_cleanup(); |
1061 | ndisc_fail: | 1057 | ndisc_fail: |
1062 | #ifdef CONFIG_IPV6_MROUTE | ||
1063 | ip6_mr_cleanup(); | 1058 | ip6_mr_cleanup(); |
1064 | ipmr_fail: | 1059 | ipmr_fail: |
1065 | #endif | ||
1066 | icmpv6_cleanup(); | 1060 | icmpv6_cleanup(); |
1067 | icmp_fail: | 1061 | icmp_fail: |
1068 | unregister_pernet_subsys(&inet6_net_ops); | 1062 | unregister_pernet_subsys(&inet6_net_ops); |
@@ -1117,9 +1111,7 @@ static void __exit inet6_exit(void) | |||
1117 | ipv6_netfilter_fini(); | 1111 | ipv6_netfilter_fini(); |
1118 | igmp6_cleanup(); | 1112 | igmp6_cleanup(); |
1119 | ndisc_cleanup(); | 1113 | ndisc_cleanup(); |
1120 | #ifdef CONFIG_IPV6_MROUTE | ||
1121 | ip6_mr_cleanup(); | 1114 | ip6_mr_cleanup(); |
1122 | #endif | ||
1123 | icmpv6_cleanup(); | 1115 | icmpv6_cleanup(); |
1124 | rawv6_exit(); | 1116 | rawv6_exit(); |
1125 | 1117 | ||