1 | /* $NetBSD: if_tun.h,v 1.19 2015/09/06 06:01:01 dholland Exp $ */ |
2 | |
3 | /* |
4 | * Copyright (c) 1988, Julian Onions <jpo@cs.nott.ac.uk> |
5 | * Nottingham University 1987. |
6 | * |
7 | * This source may be freely distributed, however I would be interested |
8 | * in any changes that are made. |
9 | * |
10 | * This driver takes packets off the IP i/f and hands them up to a |
11 | * user process to have its wicked way with. This driver has its |
12 | * roots in a similar driver written by Phil Cockcroft (formerly) at |
13 | * UCL. This driver is based much more on read/write/select mode of |
14 | * operation though. |
15 | * |
16 | * from: Header: if_tnreg.h,v 1.1.2.1 1992/07/16 22:39:16 friedl Exp |
17 | */ |
18 | |
19 | #ifndef _NET_IF_TUN_H_ |
20 | #define _NET_IF_TUN_H_ |
21 | |
22 | #include <sys/ioccom.h> |
23 | |
24 | #ifdef _KERNEL |
25 | struct tun_softc { |
26 | struct ifnet tun_if; /* the interface */ |
27 | |
28 | u_short tun_flags; /* misc flags */ |
29 | #define TUN_OPEN 0x0001 |
30 | #define TUN_INITED 0x0002 |
31 | #define TUN_RCOLL 0x0004 |
32 | #define TUN_IASET 0x0008 |
33 | #define TUN_DSTADDR 0x0010 |
34 | #define TUN_RWAIT 0x0040 |
35 | #define TUN_ASYNC 0x0080 |
36 | #define TUN_NBIO 0x0100 |
37 | #define TUN_PREPADDR 0x0200 |
38 | #define TUN_IFHEAD 0x0400 |
39 | |
40 | #define TUN_READY (TUN_OPEN | TUN_INITED | TUN_IASET) |
41 | |
42 | pid_t tun_pgid; /* PID or process group ID */ |
43 | struct selinfo tun_rsel; /* read select */ |
44 | struct selinfo tun_wsel; /* write select (not used) */ |
45 | int tun_unit; /* the tunnel unit number */ |
46 | kmutex_t tun_lock; /* lock for this tunnel */ |
47 | LIST_ENTRY(tun_softc) tun_list; /* list of all tuns */ |
48 | void *tun_osih; /* soft interrupt handle */ |
49 | void *tun_isih; /* soft interrupt handle */ |
50 | }; |
51 | #endif /* _KERNEL */ |
52 | |
53 | /* Maximum packet size */ |
54 | #define TUNMTU 1500 |
55 | |
56 | /* ioctl's for get/set debug */ |
57 | #define TUNSDEBUG _IOW('t', 90, int) |
58 | #define TUNGDEBUG _IOR('t', 89, int) |
59 | #define TUNSIFMODE _IOW('t', 88, int) |
60 | #define TUNSLMODE _IOW('t', 87, int) |
61 | #define TUNSIFHEAD _IOW('t', 66, int) |
62 | #define TUNGIFHEAD _IOR('t', 65, int) |
63 | |
64 | #endif /* !_NET_IF_TUN_H_ */ |
65 | |