diff options
| author | Michael S. Tsirkin <mst@redhat.com> | 2010-01-14 01:17:09 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-01-15 04:43:28 -0500 |
| commit | 05c2828c72c4eabf62376adfe27bd24797621f62 (patch) | |
| tree | 4db94de98ef8e75d5038f6a889dd434f3747c9d3 /include/linux | |
| parent | ad72c347e56bf3a0231b9d686e17764157d2961c (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')
| -rw-r--r-- | include/linux/if_tun.h | 14 |
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) | ||
| 91 | struct socket *tun_get_socket(struct file *); | ||
| 92 | #else | ||
| 93 | #include <linux/err.h> | ||
| 94 | #include <linux/errno.h> | ||
| 95 | struct file; | ||
| 96 | struct socket; | ||
| 97 | static 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 */ |
