|
@@ -437,10 +437,8 @@ static int do_ip_setsockopt(struct sock *sk, int level,
|
|
|
|
|
|
/* If optlen==0, it is equivalent to val == 0 */
|
|
|
|
|
|
-#ifdef CONFIG_IP_MROUTE
|
|
|
- if (optname >= MRT_BASE && optname <= (MRT_BASE + 10))
|
|
|
+ if (ip_mroute_opt(optname))
|
|
|
return ip_mroute_setsockopt(sk,optname,optval,optlen);
|
|
|
-#endif
|
|
|
|
|
|
err = 0;
|
|
|
lock_sock(sk);
|
|
@@ -909,11 +907,9 @@ int ip_setsockopt(struct sock *sk, int level,
|
|
|
#ifdef CONFIG_NETFILTER
|
|
|
/* we need to exclude all possible ENOPROTOOPTs except default case */
|
|
|
if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
|
|
|
- optname != IP_IPSEC_POLICY && optname != IP_XFRM_POLICY
|
|
|
-#ifdef CONFIG_IP_MROUTE
|
|
|
- && (optname < MRT_BASE || optname > (MRT_BASE + 10))
|
|
|
-#endif
|
|
|
- ) {
|
|
|
+ optname != IP_IPSEC_POLICY &&
|
|
|
+ optname != IP_XFRM_POLICY &&
|
|
|
+ !ip_mroute_opt(optname)) {
|
|
|
lock_sock(sk);
|
|
|
err = nf_setsockopt(sk, PF_INET, optname, optval, optlen);
|
|
|
release_sock(sk);
|
|
@@ -935,11 +931,9 @@ int compat_ip_setsockopt(struct sock *sk, int level, int optname,
|
|
|
#ifdef CONFIG_NETFILTER
|
|
|
/* we need to exclude all possible ENOPROTOOPTs except default case */
|
|
|
if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
|
|
|
- optname != IP_IPSEC_POLICY && optname != IP_XFRM_POLICY
|
|
|
-#ifdef CONFIG_IP_MROUTE
|
|
|
- && (optname < MRT_BASE || optname > (MRT_BASE + 10))
|
|
|
-#endif
|
|
|
- ) {
|
|
|
+ optname != IP_IPSEC_POLICY &&
|
|
|
+ optname != IP_XFRM_POLICY &&
|
|
|
+ !ip_mroute_opt(optname)) {
|
|
|
lock_sock(sk);
|
|
|
err = compat_nf_setsockopt(sk, PF_INET, optname,
|
|
|
optval, optlen);
|
|
@@ -967,11 +961,8 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
|
|
|
if (level != SOL_IP)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
-#ifdef CONFIG_IP_MROUTE
|
|
|
- if (optname >= MRT_BASE && optname <= MRT_BASE+10) {
|
|
|
+ if (ip_mroute_opt(optname))
|
|
|
return ip_mroute_getsockopt(sk,optname,optval,optlen);
|
|
|
- }
|
|
|
-#endif
|
|
|
|
|
|
if (get_user(len,optlen))
|
|
|
return -EFAULT;
|
|
@@ -1171,11 +1162,8 @@ int ip_getsockopt(struct sock *sk, int level,
|
|
|
err = do_ip_getsockopt(sk, level, optname, optval, optlen);
|
|
|
#ifdef CONFIG_NETFILTER
|
|
|
/* we need to exclude all possible ENOPROTOOPTs except default case */
|
|
|
- if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS
|
|
|
-#ifdef CONFIG_IP_MROUTE
|
|
|
- && (optname < MRT_BASE || optname > MRT_BASE+10)
|
|
|
-#endif
|
|
|
- ) {
|
|
|
+ if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS &&
|
|
|
+ !ip_mroute_opt(optname)) {
|
|
|
int len;
|
|
|
|
|
|
if (get_user(len,optlen))
|
|
@@ -1200,11 +1188,8 @@ int compat_ip_getsockopt(struct sock *sk, int level, int optname,
|
|
|
int err = do_ip_getsockopt(sk, level, optname, optval, optlen);
|
|
|
#ifdef CONFIG_NETFILTER
|
|
|
/* we need to exclude all possible ENOPROTOOPTs except default case */
|
|
|
- if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS
|
|
|
-#ifdef CONFIG_IP_MROUTE
|
|
|
- && (optname < MRT_BASE || optname > MRT_BASE+10)
|
|
|
-#endif
|
|
|
- ) {
|
|
|
+ if (err == -ENOPROTOOPT && optname != IP_PKTOPTIONS &&
|
|
|
+ !ip_mroute_opt(optname)) {
|
|
|
int len;
|
|
|
|
|
|
if (get_user(len, optlen))
|