WvStreams
if_tun.h
1/*
2 * Universal TUN/TAP device driver.
3 * Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#ifndef __IF_TUN_H
18#define __IF_TUN_H
19
20/* Uncomment to enable debugging */
21/* #define TUN_DEBUG 1 */
22
23#ifdef __KERNEL__
24
25#ifdef TUN_DEBUG
26#define DBG if(tun->debug)printk
27#define DBG1 if(debug==2)printk
28#else
29#define DBG( a... )
30#define DBG1( a... )
31#endif
32
33struct tun_struct {
34 char *name;
35 unsigned long flags;
36 int attached;
37 uid_t owner;
38
39 wait_queue_head_t read_wait;
40 struct sk_buff_head readq;
41
42 struct net_device dev;
43 struct net_device_stats stats;
44
45 struct fasync_struct *fasync;
46
47#ifdef TUN_DEBUG
48 int debug;
49#endif
50};
51
52#ifndef MIN
53#define MIN(a,b) ( (a)<(b) ? (a):(b) )
54#endif
55
56#endif /* __KERNEL__ */
57
58/* Read queue size */
59#define TUN_READQ_SIZE 10
60
61/* TUN device flags */
62#define TUN_TUN_DEV 0x0001
63#define TUN_TAP_DEV 0x0002
64#define TUN_TYPE_MASK 0x000f
65
66#define TUN_FASYNC 0x0010
67#define TUN_NOCHECKSUM 0x0020
68#define TUN_NO_PI 0x0040
69#define TUN_ONE_QUEUE 0x0080
70#define TUN_PERSIST 0x0100
71
72/* Ioctl defines */
73#define TUNSETNOCSUM _IOW('T', 200, int)
74#define TUNSETDEBUG _IOW('T', 201, int)
75#define TUNSETIFF _IOW('T', 202, int)
76#define TUNSETPERSIST _IOW('T', 203, int)
77#define TUNSETOWNER _IOW('T', 204, int)
78
79/* TUNSETIFF ifr flags */
80#define IFF_TUN 0x0001
81#define IFF_TAP 0x0002
82#define IFF_NO_PI 0x1000
83#define IFF_ONE_QUEUE 0x2000
84
85struct tun_pi {
86 unsigned short flags;
87 unsigned short proto;
88};
89#define TUN_PKT_STRIP 0x0001
90
91#endif /* __IF_TUN_H */