summaryrefslogtreecommitdiff
path: root/tuntap
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2017-08-13 16:47:59 +0200
committerChristian Pointner <equinox@anytun.org>2017-08-13 16:47:59 +0200
commit2525c8ef05adcc8d82582b830975f0d17a9f22c7 (patch)
tree52f660ee43bf6e1474fbe5d212203c451ba2b63b /tuntap
parentbasic tun/tap handling (diff)
added minimalistc tuntap device
Diffstat (limited to 'tuntap')
-rw-r--r--tuntap/tuntap.go63
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
+}