if_tun: add TUNSETVNETLE/TUNGETVNETLE
authorMichael S. Tsirkin <mst@redhat.com>
Tue, 16 Dec 2014 13:05:01 +0000 (15:05 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Dec 2014 16:19:41 +0000 (11:19 -0500)
ifreq flags field is only 16 bit wide, so setting IFF_VNET_LE there has
no effect:
doesn't fit in two bytes.

The tests passed apparently because they have an even number of bugs,
all cancelling out.

Luckily we didn't release a kernel with this flag, so it's
not too late to fix this.

Add TUNSETVNETLE/TUNGETVNETLE to really achieve the purpose
of IFF_VNET_LE.

This has an added benefit that if we ever want a BE flag,
we won't have to deal with weird configurations like
setting both LE and BE at the same time.

IFF_VNET_LE will be dropped in a follow-up patch.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/if_tun.h

index 18b2403982f939d5cd2e91ad2822693c8b0a5f20..274630caa276a4d744779a6a1d7171ba940c06ed 100644 (file)
@@ -48,6 +48,8 @@
 #define TUNSETQUEUE  _IOW('T', 217, int)
 #define TUNSETIFINDEX  _IOW('T', 218, unsigned int)
 #define TUNGETFILTER _IOR('T', 219, struct sock_fprog)
+#define TUNSETVNETLE _IOW('T', 220, int)
+#define TUNGETVNETLE _IOR('T', 221, int)
 
 /* TUNSETIFF ifr flags */
 #define IFF_TUN                0x0001