diff options
Diffstat (limited to 'net/ipv4/raw.c')
| -rw-r--r-- | net/ipv4/raw.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index a3d5ab786e8..6390ba299b3 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c @@ -76,6 +76,7 @@  #include <linux/seq_file.h>  #include <linux/netfilter.h>  #include <linux/netfilter_ipv4.h> +#include <linux/compat.h>  static struct raw_hashinfo raw_v4_hashinfo = {  	.lock = __RW_LOCK_UNLOCKED(raw_v4_hashinfo.lock), @@ -838,6 +839,23 @@ static int raw_ioctl(struct sock *sk, int cmd, unsigned long arg)  	}  } +#ifdef CONFIG_COMPAT +static int compat_raw_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg) +{ +	switch (cmd) { +	case SIOCOUTQ: +	case SIOCINQ: +		return -ENOIOCTLCMD; +	default: +#ifdef CONFIG_IP_MROUTE +		return ipmr_compat_ioctl(sk, cmd, compat_ptr(arg)); +#else +		return -ENOIOCTLCMD; +#endif +	} +} +#endif +  struct proto raw_prot = {  	.name		   = "RAW",  	.owner		   = THIS_MODULE, @@ -860,6 +878,7 @@ struct proto raw_prot = {  #ifdef CONFIG_COMPAT  	.compat_setsockopt = compat_raw_setsockopt,  	.compat_getsockopt = compat_raw_getsockopt, +	.compat_ioctl	   = compat_raw_ioctl,  #endif  };  |