diff options
author | 2003-03-09 01:19:33 +0000 | |
---|---|---|
committer | 2003-03-09 01:19:33 +0000 | |
commit | 6acd60505e6d811aa4321968d0bfba980c615700 (patch) | |
tree | 0dcc0440987666cb2fcec5e7e000ea204370d772 | |
parent | if fopen fails, do not bork; rob@animoid-row.org (diff) | |
download | wireguard-openbsd-6acd60505e6d811aa4321968d0bfba980c615700.tar.xz wireguard-openbsd-6acd60505e6d811aa4321968d0bfba980c615700.zip |
der Mouse, ie. "Mike Parker", adamantly refuses to let us put his real
name on a copyright notice, therefore legally this file is not free
software. Mike thinks I am rude for saying that a non-legal license
is not free software. Well, I am sorry, but legally we *must* remove
it. I can't believe how IRC some people are...
Anyone want to step up and write a free replacement for this page? If
you can write a free replacement in a day or so, that would be awesome.
-rw-r--r-- | share/man/man4/Makefile | 4 | ||||
-rw-r--r-- | share/man/man4/tun.4 | 420 |
2 files changed, 2 insertions, 422 deletions
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index b052db4d109..61552380cce 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.234 2003/03/06 21:58:03 jason Exp $ +# $OpenBSD: Makefile,v 1.235 2003/03/09 01:19:33 deraadt Exp $ MAN= aac.4 ac97.4 addcom.4 adv.4 aha.4 ahb.4 ahc.4 aic.4 \ ami.4 amdpm.4 amphy.4 an.4 aria.4 ast.4 atalk.4 atapiscsi.4 \ @@ -28,7 +28,7 @@ MAN= aac.4 ac97.4 addcom.4 adv.4 aha.4 ahb.4 ahc.4 aic.4 \ sl.4 sm.4 spp.4 sppp.4 sqphy.4 ss.4 st.4 ste.4 stge.4 sti.4 stp.4 \ sv.4 systrace.4 \ tb.4 tcic.4 tcp.4 termios.4 ti.4 tl.4 tlphy.4 \ - tp.4 tqphy.4 trm.4 tty.4 tun.4 twe.4 tx.4 txp.4 txphy.4 \ + tp.4 tqphy.4 trm.4 tty.4 twe.4 tx.4 txp.4 txphy.4 \ uaudio.4 ubsa.4 ubsec.4 ucom.4 udp.4 udsbr.4 uftdi.4 ugen.4 uhci.4 \ uhid.4 uhidev.4 uk.4 ukbd.4 \ ukphy.4 ulpt.4 umct.4 umidi.4 umodem.4 ums.4 umass.4 unix.4 upl.4 \ diff --git a/share/man/man4/tun.4 b/share/man/man4/tun.4 deleted file mode 100644 index cba89cebbe7..00000000000 --- a/share/man/man4/tun.4 +++ /dev/null @@ -1,420 +0,0 @@ -.\" $OpenBSD: tun.4,v 1.21 2003/02/18 07:54:53 jmc Exp $ -.\" -.\" -.\" Copyright (c) 1996 der Mouse -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by der Mouse. -.\" 4. The name of the author may not be used to endorse or promote products -.\" derived from this software without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd March 10, 1996 -.Dt TUN 4 -.Os -.Sh NAME -.Nm tun -.Nd Tunnel Network Interface -.Sh SYNOPSIS -.Cd "pseudo-device tun 4" -.Sh DESCRIPTION -The -.Nm -interface is a software loopback mechanism that can be loosely -described as the network interface analog of the -.Xr pty 4 , -that is, -.Nm -does for network interfaces what the -.Nm pty -driver does for terminals. -.Pp -The -.Nm -driver, like the -.Nm pty -driver, provides two interfaces: an interface like the usual facility -it is simulating (a network interface in the case of -.Nm tun , -or a terminal for -.Nm pty ) , -and a character-special device -.Dq control -interface. -.Pp -The network interfaces are named -.Sy tun Ns Ar 0 , -.Sy tun Ns Ar 1 , -etc, as many in all as the -.Ar count -figure given on the -.Sy pseudo-device -line. -Each one supports the usual network-interface -.Xr ioctl 2 Ns s , -such as -.Dv SIOCSIFADDR -and -.Dv SIOCSIFNETMASK , -and thus can be used with -.Xr ifconfig 8 -like any other interface. -At boot time, they are -.Dv POINTOPOINT -interfaces, but this can be changed; see the description of the control -device, below. -When the system chooses to transmit a packet on the network interface, -the packet can be read from the control device (it appears as -.Dq input -there); writing a packet to the control device generates an input -packet on the network interface, as if the (nonexistent) hardware had -just received it. -.Pp -There are two control interfaces. -The -.Em data -interface, normally -.Pa /dev/tun Ns Sy N , -is exclusive-open (it cannot be opened if it is already open), is -normally restricted to the superuser, and can -.Dq transmit -and -.Dq receive -packets. -The -.Em control -interface, normally -.Pa /dev/tunc Ns Sy N , -cannot send and receive packets, but can be opened by many processes at -once; it is intended for status queries and changes (many of which can -also be implemented with -.Fn ioctl -calls on the data interface). -There are a number of status bits that can be set or cleared via the control -interfaces; they are mentioned below where applicable, and they are all -summarized in the discussions of the control interfaces. -.\" Why isn't .Ss documented in mdoc(7) and mdoc.samples(7)? -.Ss The data interface -The data interface supports -.Xr read 2 , -.Xr write 2 , -and -.Xr ioctl 2 -calls to, respectively, collect -.Dq output -packets, generate -.Dq input -packets, and perform control functions. -As mentioned above, this interface is exclusive-open; if the -.Dv SUONLY -bit is set (which it is by default), it cannot be opened at all except -by the superuser. -By default, a -.Fn read -call will return an error -.Pf ( Er EHOSTDOWN ) -if the interface is not -.Dq ready -(which means that the control device is open and the interface's -address has been set); if preferred, the -.Dv RRWAIT -bit can be set, in which case a -.Fn read -call will block (even if non-blocking I/O has been enabled) until the -interface is ready. -Once the interface is ready, -.Fn read -will return a packet if one is available; if not, it will either block -until one is or return -.Er EWOULDBLOCK , -depending on whether non-blocking I/O has been enabled. -If the packet is longer than is allowed for in the buffer passed to -.Fn read , -the extra data will be silently dropped. -.Pp -The first u_int32_t of data will always be the address family (eg, -.Dv AF_INET ) -of the packet in network byte order. -By default, the packet data follows immediately, but if -the -.Dv PREPADDR -bit is set, the address to which the packet is to be sent is placed -after the address family u_int32_t and before the packet data. -The size and layout of the address depends on the address family; for -.Dv AF_INET , -for example, it is a -.Va struct in_addr . -A -.Xr write 2 -call passes a packet in to be -.Dq received -on the pseudo-interface. -Each -.Fn write -call supplies exactly one packet; the packet length is taken from the -amount of data provided to -.Fn write . -The first u_int32_t must be the address family of the packet in network -byte order, much as in packets returned by -.Fn read ; -the packet data always follows immediately. -A -.Fn write -with an invalid address family (e.g. -not specified or in the wrong byte order) will return -.Er ENOSUPPORT . -A large number of -.Xr ioctl 2 -calls are also supported. -They are defined in -.Aq Pa net/if_tun.h Ns . -.Bl -tag -width TUN_PREPADDR -.It Dv TUNSDEBUG -The argument should be a pointer to an -.Va int ; -this sets the internal debugging variable to that value. -What, if anything, this variable controls is not documented here; -see the source code. -.It Dv TUNGDEBUG -The argument should be a pointer to an -.Va int ; -this stores the internal debugging variable's value into it. -.It Dv TUNSIFMODE -The argument should be a pointer to an -.Va int ; -its value must be -.Dv IFF_POINTOPOINT -or -.Dv IFF_BROADCAST . -The type of the corresponding -.Em tun Ns Sy n -interface is set to the supplied type. -If the value is anything else, an -.Er EINVAL -error occurs. -The interface must be down at the time; if it is up, an -.Er EBUSY -error occurs. -.\" X .It Dv TUNSFLAG -.\" X The interface's flag bits are set as specified in the -.\" X .Va int -.\" X argument. Only some of the bits can be modified; the rest are -.\" X read-only. The bits are defined in -.\" X .Aq Pa net/if_tun.h -.\" X with a -.\" X .Dv TUN_ -.\" X prefix; for example, the bit called -.\" X .Dv RRWAIT -.\" X in this document would be referred to in source code as -.\" X .Dv TUN_RRWAIT . -.\" X The bits are: -.\" X .\" Why isn't the way to create a table like this documented in mdoc(7) -.\" X .\" or mdoc.samples(7)?! -.\" X .Bl -column "TUN_PREPADDR" "RO/RW" -compact -indent-two -.\" X .It Name Ta RO/RW Ta Meaning -.\" X .It Dv TUN_OPEN Ta RO Ta "Data control device is open." -.\" X .It Dv TUN_INITED Ta RO Ta "Initialized." -.\" X .It Dv TUN_RCOLL Ta RO Ta "Select-for-read collision." -.\" X .It Dv TUN_IASET Ta RO Ta "Address has been set." -.\" X .It Dv TUN_DSTADDR Ta RO Ta "Destination address has been set." -.\" X .It Dv TUN_RWAIT Ta RO Ta "A process is blocked in Fn read Ns ." -.\" X .It Dv TUN_ASYNC Ta RO Ta "Generate Dv SIGIO No for readers." -.\" X .It Dv TUN_NBIO Ta RO Ta "Non-blocking I/O for reads." -.\" X .It Dv TUN_BRDADDR Ta RO Ta "Broadcast address has been set." -.\" X .It Dv TUN_PREPADDR Ta RW Ta "Prepend sent-to address for reads." -.\" X .It Dv TUN_STAYUP Ta RW Ta "Don't take interface down on close." -.\" X .It Dv TUN_SUONLY Ta RW Ta "Data control device is superuser only." -.\" X .It Dv TUN_RRWAIT Ta RW Ta "Wait for ready when reading." -.\" X .El -.\" X .It Dv TUNGFLAG -.\" X The interface's flag bits are fetched into the argument -.\" X .Va int . -.\" X The flags and their meanings are as for -.\" X .Dv TUNSFLAG . -.\" X .It Dv FIONBIO -.\" X Turn non-blocking I/O for reads off or on, according as the argument -.\" X .Va int Ns 's -.\" X value is or isn't zero. (Writes are always nonblocking.) -.\" X .It Dv FIOASYNC -.\" X Turn asynchronous I/O for reads (ie, generation of -.\" X .Dv SIGIO -.\" X when data is available to be read) off or on, according as the argument -.\" X .Va int Ns 's -.\" X value is or isn't zero. -.\" X .It Dv FIONREAD -.\" X If any packets are queued to be read, store the size of the first one -.\" X into the argument -.\" X .Va int ; -.\" X otherwise, store zero. -.\" X .It Dv TIOCSPGRP -.\" X Set the process group to receive -.\" X .Dv SIGIO -.\" X signals, when asynchronous I/O is enabled, to the argument -.\" X .Va int -.\" X value. -.\" X .It Dv TIOCGPGRP -.\" X Retrieve the process group value for -.\" X .Dv SIGIO -.\" X signals into the argument -.\" X .Va int -.\" X value. -.El -The data control device also supports -.Xr select 2 -for read; selecting for write is pointless, and always succeeds, since -writes are always nonblocking (if the packet cannot be accepted for a -transient reason (e.g., no buffer space available), it is silently -dropped; if the reason is not transient (e.g., packet too large), an -error is returned). -.Pp -On the last close of the data device, by default, the interface is -brought down (as if with -.Dq ifconfig tun Ns Sy n down ) ; -if the -.Dv STAYUP -bit is set, this is not done. -In either case, all queued packets are thrown away. -(If the interface is up when the data device is not open, either -because of -.Dv STAYUP -or because it was explicitly brought up, output packets are always -thrown away rather than letting them pile up.) -.Ss The control interface -The alternative control interface is a text-based interface designed -for shell-script or human use; it allows control of many of the things -that can be done with -.Fn ioctl -calls on the data interface, and a few more as well. -.Pp -.Fn read Ns s -on the control interface always return a single line of text (or just -the beginning of the line, if the buffer passed to -.Xr read 2 -was too small to take the whole line). -The line contains items in the general format -.Do -.Li item=value -.Dc , -where -.Li item -is a keyword and -.Li value -is a value appropriate to the keyword. -This line is intended for human use; programs should use the -.Fn ioctl -interface. -Here is an actual example (broken because of width restrictions): -.Bd -literal -unit=0 flags=(open,inited,!rcoll,iaset,!dstaddr,!rwait,!async, -!nbio,!brdaddr,prepaddr,stayup,suonly,rrwait) type=broadcast -mtu=1500 coll=0 ipkts=0/0 opkts=0/0 pgrp=0 -.Ed -.Pp -Note that the current file offset is ignored for reads, so using a tool like -.Xr cat 1 -will result in infinite output. -Use something more like -.Dq head\ \&-1 -for command-line use. -It is possible to -.Xr select 2 -for reading on this device, which will indicate that the device is -readable whenever the state is changed. -.Pp -Writes to the control interface are interpreted as modifications to the -state. -Each -.Fn write -call is treated separately. -The data written is broken at whitespace (blanks, tabs, newlines); -each resulting fragment has its first character examined. -If this character is a -.Ql \&+ -or -.Ql \&\- , -the rest of the fragment is taken as a flag name, and the flag is -turned on (for -.Ql \&+ ) -or off (for -.Ql \&\- ) . -(Flag names are as generated on reads; they are the same as the -.Dv TUN_ Ns Em xxx -constants, with the leading -.Dv TUN_ -removed and the rest lowercased.) -If the first character is -.Ql t , -the second character must be -.Ql b -or -.Ql p , -and the interface type is set to -.Dv IFF_BROADCAST -or -.Dv IFF_POINTOPOINT , -respectively. -If the first character is -.Ql g -or -.Ql m , -the rest of the fragment is taken as a number in decimal (possibly with -a leading \&\- sign) and the result is taken as a new process group, -for -.Ql g -or MTU, for -.Ql m . -(The MTU must not be less than 1; attempts to set it so return -.Er EIO . ) -.Sh SEE ALSO -.Xr inet 4 , -.Xr inet6 4 , -.Xr netintro 4 -.Sh BUGS -The -.Dv SUONLY -bit is a botch, especially since the control interface, which is never -restricted by the kernel, can change it. -Access control really should be handled by the permission bits on the -.Pa /dev -entries for the data and control devices; this bit is a historical -artifact. -.Pp -The process-group values for -.Dv SIGIO -signals should be checked; as it stands, the driver can be used (by -anyone who can open the control or data device) to send any desired -signal to an arbitrary process or process group. -(Until this is fixed, you should be careful to set the permission bits to -allow only root to open the control device, and either do the same for -the data device or leave the -.Dv SUONLY -bit set.) -.Sh NOTES -Very old versions of the tunnel device did not include the address -family at the start of the packet. -More recent versions passed the address family as a single byte, but this -caused problems with bpf, hence the current version passes a u_int32_t -of address family. -This was initially pass in host byte order, but the current version now uses -network byte order. |