diff options
author | Christian Pointner <equinox@anytun.org> | 2017-08-13 16:47:59 +0200 |
---|---|---|
committer | Christian Pointner <equinox@anytun.org> | 2017-08-13 16:47:59 +0200 |
commit | 2525c8ef05adcc8d82582b830975f0d17a9f22c7 (patch) | |
tree | 52f660ee43bf6e1474fbe5d212203c451ba2b63b /tuntap | |
parent | basic tun/tap handling (diff) |
added minimalistc tuntap device
Diffstat (limited to 'tuntap')
-rw-r--r-- | tuntap/tuntap.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tuntap/tuntap.go b/tuntap/tuntap.go new file mode 100644 index 0000000..6b4fdea --- /dev/null +++ b/tuntap/tuntap.go @@ -0,0 +1,63 @@ +// +// Copyright (c) 2017 anygone contributors (see AUTHORS file) +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// * 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. +// +// * Neither the name of anygone nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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. +// + +package tuntap + +import ( + extlib "github.com/lab11/go-tuntap/tuntap" +) + +type Device struct { + iface *extlib.Interface +} + +func (dev *Device) ReadPacket() (*extlib.Packet, error) { + return dev.iface.ReadPacket() +} + +func (dev *Device) WritePacket(pkt *extlib.Packet) error { + return dev.iface.WritePacket(pkt) +} + +func NewTunDevice(name string) (dev *Device, err error) { + dev = &Device{} + if dev.iface, err = extlib.Open(name, extlib.DevTun, true); err != nil { + return + } + return +} + +func NewTapDevice(name string) (dev *Device, err error) { + dev = &Device{} + if dev.iface, err = extlib.Open(name, extlib.DevTap, false); err != nil { + return + } + return +} |