File Index
Files and directories
Sign in
FILE

if_tun.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/if_tun.h C
 1/* SPDX-License-Identifier: GPL-2.0-or-later */
 2/*
 3 *  Universal TUN/TAP device driver.
 4 *  Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
 5 */
 6#ifndef __IF_TUN_H
 7#define __IF_TUN_H
 8
 9#include <uapi/linux/if_tun.h>
10#include <uapi/linux/virtio_net.h>
11
12#define TUN_XDP_FLAG 0x1UL
13
14#define TUN_MSG_UBUF 1
15#define TUN_MSG_PTR  2
16struct tun_msg_ctl {
17	unsigned short type;
18	unsigned short num;
19	void *ptr;
20};
21
22#if defined(CONFIG_TUN) || defined(CONFIG_TUN_MODULE)
23struct socket *tun_get_socket(struct file *);
24struct ptr_ring *tun_get_tx_ring(struct file *file);
25
26static inline bool tun_is_xdp_frame(void *ptr)
27{
28	return (unsigned long)ptr & TUN_XDP_FLAG;
29}
30
31static inline void *tun_xdp_to_ptr(struct xdp_frame *xdp)
32{
33	return (void *)((unsigned long)xdp | TUN_XDP_FLAG);
34}
35
36static inline struct xdp_frame *tun_ptr_to_xdp(void *ptr)
37{
38	return (void *)((unsigned long)ptr & ~TUN_XDP_FLAG);
39}
40
41void tun_ptr_free(void *ptr);
42#else
43#include <linux/err.h>
44#include <linux/errno.h>
45struct file;
46struct socket;
47
48static inline struct socket *tun_get_socket(struct file *f)
49{
50	return ERR_PTR(-EINVAL);
51}
52
53static inline struct ptr_ring *tun_get_tx_ring(struct file *f)
54{
55	return ERR_PTR(-EINVAL);
56}
57
58static inline bool tun_is_xdp_frame(void *ptr)
59{
60	return false;
61}
62
63static inline void *tun_xdp_to_ptr(struct xdp_frame *xdp)
64{
65	return NULL;
66}
67
68static inline struct xdp_frame *tun_ptr_to_xdp(void *ptr)
69{
70	return NULL;
71}
72
73static inline void tun_ptr_free(void *ptr)
74{
75}
76#endif /* CONFIG_TUN */
77#endif /* __IF_TUN_H */
~/ Read-only file preview.