aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/if_tun.h
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2010-01-14 01:17:09 -0500
committerDavid S. Miller <davem@davemloft.net>2010-01-15 04:43:28 -0500
commit05c2828c72c4eabf62376adfe27bd24797621f62 (patch)
tree4db94de98ef8e75d5038f6a889dd434f3747c9d3 /include/linux/if_tun.h
parentad72c347e56bf3a0231b9d686e17764157d2961c (diff)
tun: export underlying socket
Tun device looks similar to a packet socket in that both pass complete frames from/to userspace. This patch fills in enough fields in the socket underlying tun driver to support sendmsg/recvmsg operations, and message flags MSG_TRUNC and MSG_DONTWAIT, and exports access to this socket to modules. Regular read/write behaviour is unchanged. This way, code using raw sockets to inject packets into a physical device, can support injecting packets into host network stack almost without modification. First user of this interface will be vhost virtualization accelerator. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/if_tun.h')
-rw-r--r--include/linux/if_tun.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h
index 3f5fd523b49d..404abe00162c 100644
--- a/include/linux/if_tun.h
+++ b/include/linux/if_tun.h
@@ -86,4 +86,18 @@ struct tun_filter {
86 __u8 addr[0][ETH_ALEN]; 86 __u8 addr[0][ETH_ALEN];
87}; 87};
88 88
89#ifdef __KERNEL__
90#if defined(CONFIG_TUN) || defined(CONFIG_TUN_MODULE)
91struct socket *tun_get_socket(struct file *);
92#else
93#include <linux/err.h>
94#include <linux/errno.h>
95struct file;
96struct socket;
97static inline struct socket *tun_get_socket(struct file *f)
98{
99 return ERR_PTR(-EINVAL);
100}
101#endif /* CONFIG_TUN */
102#endif /* __KERNEL__ */
89#endif /* __IF_TUN_H */ 103#endif /* __IF_TUN_H */