summaryrefslogtreecommitdiffhomepage
path: root/tun/tun_windows.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-03-01 00:05:57 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2019-03-01 00:05:57 +0100
commit967d1a0f3d7aae4a0720895a2f6e35156b34214b (patch)
treeafdab5366c92206c77b98cee7e5bbe782f9a7c17 /tun/tun_windows.go
parent88ff67fb6f55456e46877b71aa5d33060468f95e (diff)
tun: allow special methods in NativeTun
Diffstat (limited to 'tun/tun_windows.go')
-rw-r--r--tun/tun_windows.go28
1 files changed, 14 insertions, 14 deletions
diff --git a/tun/tun_windows.go b/tun/tun_windows.go
index e9bf0b7..ed6d7d2 100644
--- a/tun/tun_windows.go
+++ b/tun/tun_windows.go
@@ -34,7 +34,7 @@ type exchgBufWrite struct {
packetNum uint32
}
-type nativeTun struct {
+type NativeTun struct {
wt *wintun.Wintun
tunName string
signalName *uint16
@@ -88,7 +88,7 @@ func CreateTUN(ifname string) (TUNDevice, error) {
}
// Create instance.
- tun := &nativeTun{
+ tun := &NativeTun{
wt: wt,
tunName: wt.DataFileName(),
signalName: signalNameUTF16,
@@ -108,7 +108,7 @@ func CreateTUN(ifname string) (TUNDevice, error) {
return tun, nil
}
-func (tun *nativeTun) openTUN() error {
+func (tun *NativeTun) openTUN() error {
for {
// Open interface data pipe.
// Data pipe must be opened first, as the interface data available event is created when somebody actually connects to the data pipe.
@@ -140,7 +140,7 @@ func (tun *nativeTun) openTUN() error {
}
}
-func (tun *nativeTun) closeTUN() (err error) {
+func (tun *NativeTun) closeTUN() (err error) {
tun.tunLock.Lock()
defer tun.tunLock.Unlock()
@@ -167,7 +167,7 @@ func (tun *nativeTun) closeTUN() (err error) {
return
}
-func (tun *nativeTun) getTUN() (*os.File, windows.Handle, error) {
+func (tun *NativeTun) getTUN() (*os.File, windows.Handle, error) {
tun.tunLock.Lock()
defer tun.tunLock.Unlock()
@@ -182,19 +182,19 @@ func (tun *nativeTun) getTUN() (*os.File, windows.Handle, error) {
return tun.tunFile, tun.tunDataAvail, nil
}
-func (tun *nativeTun) Name() (string, error) {
+func (tun *NativeTun) Name() (string, error) {
return tun.wt.GetInterfaceName()
}
-func (tun *nativeTun) File() *os.File {
+func (tun *NativeTun) File() *os.File {
return nil
}
-func (tun *nativeTun) Events() chan TUNEvent {
+func (tun *NativeTun) Events() chan TUNEvent {
return tun.events
}
-func (tun *nativeTun) Close() error {
+func (tun *NativeTun) Close() error {
windows.SetEvent(tun.userClose)
err := windows.CloseHandle(tun.userClose)
@@ -215,11 +215,11 @@ func (tun *nativeTun) Close() error {
return err
}
-func (tun *nativeTun) MTU() (int, error) {
+func (tun *NativeTun) MTU() (int, error) {
return 1500, nil
}
-func (tun *nativeTun) Read(buff []byte, offset int) (int, error) {
+func (tun *NativeTun) Read(buff []byte, offset int) (int, error) {
select {
case err := <-tun.errors:
return 0, err
@@ -292,7 +292,7 @@ func (tun *nativeTun) Read(buff []byte, offset int) (int, error) {
// Note: flush() and putTunPacket() assume the caller comes only from a single thread; there's no locking.
-func (tun *nativeTun) flush() error {
+func (tun *NativeTun) flush() error {
// Get TUN data pipe.
file, _, err := tun.getTUN()
if err != nil {
@@ -312,7 +312,7 @@ func (tun *nativeTun) flush() error {
return nil
}
-func (tun *nativeTun) putTunPacket(buff []byte) error {
+func (tun *NativeTun) putTunPacket(buff []byte) error {
size := uint32(len(buff))
if size == 0 {
return errors.New("Empty packet")
@@ -341,7 +341,7 @@ func (tun *nativeTun) putTunPacket(buff []byte) error {
return nil
}
-func (tun *nativeTun) Write(buff []byte, offset int) (int, error) {
+func (tun *NativeTun) Write(buff []byte, offset int) (int, error) {
err := tun.putTunPacket(buff[offset:])
if err != nil {
return 0, err