tun: windows: registration of write buffer no longer required
This commit is contained in:
		
							parent
							
								
									d8448f8a02
								
							
						
					
					
						commit
						5c3d333f10
					
				@ -2,8 +2,6 @@
 | 
			
		||||
 | 
			
		||||
This is an implementation of WireGuard in Go.
 | 
			
		||||
 | 
			
		||||
***WARNING:*** This is a work in progress and not ready for prime time, with no official "releases" yet. It is extremely rough around the edges and leaves much to be desired. There are bugs and we are not yet in a position to make claims about its security. Beware.
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
Most Linux kernel WireGuard users are used to adding an interface with `ip link add wg0 type wireguard`. With wireguard-go, instead simply run:
 | 
			
		||||
 | 
			
		||||
@ -11,11 +11,11 @@ import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
	"sync"
 | 
			
		||||
	"sync/atomic"
 | 
			
		||||
	"time"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/windows"
 | 
			
		||||
 | 
			
		||||
	"golang.zx2c4.com/wireguard/tun/wintun"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -42,7 +42,6 @@ type NativeTun struct {
 | 
			
		||||
	wt                        *wintun.Wintun
 | 
			
		||||
	tunFileRead               *os.File
 | 
			
		||||
	tunFileWrite              *os.File
 | 
			
		||||
	haveRegisteredWriteBuffer int32
 | 
			
		||||
	tunLock                   sync.Mutex
 | 
			
		||||
	close                     bool
 | 
			
		||||
	rdBuff                    *exchgBufRead
 | 
			
		||||
@ -142,7 +141,6 @@ func (tun *NativeTun) openTUN() error {
 | 
			
		||||
			}
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		atomic.StoreInt32(&tun.haveRegisteredWriteBuffer, 0)
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
@ -321,15 +319,6 @@ func (tun *NativeTun) Flush() error {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if atomic.CompareAndSwapInt32(&tun.haveRegisteredWriteBuffer, 0, 1) {
 | 
			
		||||
			firstSize := (*uint32)(unsafe.Pointer(&tun.wrBuff.data[0]))
 | 
			
		||||
			saved := *firstSize
 | 
			
		||||
			*firstSize = 0
 | 
			
		||||
			// Set the maximum buffer length with an invalid write.
 | 
			
		||||
			tun.tunFileWrite.Write(tun.wrBuff.data[:])
 | 
			
		||||
			*firstSize = saved
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for {
 | 
			
		||||
			_, err = file.Write(tun.wrBuff.data[:tun.wrBuff.offset])
 | 
			
		||||
			if err != nil {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user