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 | ||
