diff options
author | Pavel Emelyanov <xemul@parallels.com> | 2013-06-11 14:41:24 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-12 15:07:21 -0700 |
commit | 274038f8c94c493e2977983e2aecb5f5f0778479 (patch) | |
tree | 59c639c040acb5af3eafe2a2eb7787c03dd5bfbf | |
parent | 7c0cadc69ca2ac8893aa162ee80d92a805840909 (diff) | |
download | op-kernel-dev-274038f8c94c493e2977983e2aecb5f5f0778479.zip op-kernel-dev-274038f8c94c493e2977983e2aecb5f5f0778479.tar.gz |
tun: Report "persist" flag to userspace
The TUN_PERSIST flag is not reported at all -- both TUNGETIFF, and sysfs
"flags" attribute skip one. Knowing whether a device is persistent or not
is critical for checkpoint-restore, thus I propose to add the read-only
IFF_PERSIST one for this.
Setting this new IFF_PERSIST is hardly possible, as TUNSETIFF doesn't check
for unknown flags being zero and thus there can be trash.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/tun.c | 3 | ||||
-rw-r--r-- | include/uapi/linux/if_tun.h | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 89776c5..b90a731 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1530,6 +1530,9 @@ static int tun_flags(struct tun_struct *tun) if (tun->flags & TUN_TAP_MQ) flags |= IFF_MULTI_QUEUE; + if (tun->flags & TUN_PERSIST) + flags |= IFF_PERSIST; + return flags; } diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h index 2835b85..82334f8 100644 --- a/include/uapi/linux/if_tun.h +++ b/include/uapi/linux/if_tun.h @@ -68,6 +68,8 @@ #define IFF_MULTI_QUEUE 0x0100 #define IFF_ATTACH_QUEUE 0x0200 #define IFF_DETACH_QUEUE 0x0400 +/* read-only flag */ +#define IFF_PERSIST 0x0800 /* Features for GSO (TUNSETOFFLOAD). */ #define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */ |