X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Ftap.go;h=9010c55b6c3a89eb0b224298c74c4aa002c5aa0b;hb=a11b0bda178937e6891770f40f800d69b5640313;hp=6e545b4decfeae9262a73f82e00348e60c89c609;hpb=cecb63f12f4a9f523276a0c19c7feb7437c7f53a;p=govpn.git diff --git a/src/cypherpunks.ru/govpn/tap.go b/src/cypherpunks.ru/govpn/tap.go index 6e545b4..9010c55 100644 --- a/src/cypherpunks.ru/govpn/tap.go +++ b/src/cypherpunks.ru/govpn/tap.go @@ -26,9 +26,6 @@ type TAP struct { Name string Sink chan []byte dev io.ReadWriter - buf0 []byte - buf1 []byte - bufZ bool } var ( @@ -43,24 +40,25 @@ func NewTAP(ifaceName string, mtu int) (*TAP, error) { tap := TAP{ Name: ifaceName, dev: tapRaw, - buf0: make([]byte, mtu), - buf1: make([]byte, mtu), Sink: make(chan []byte), } go func() { var n int var err error var buf []byte + buf0 := make([]byte, mtu) + buf1 := make([]byte, mtu) + bufZ := false for { - if tap.bufZ { - buf = tap.buf0 + if bufZ { + buf = buf0 } else { - buf = tap.buf1 + buf = buf1 } - tap.bufZ = !tap.bufZ + bufZ = !bufZ n, err = tap.dev.Read(buf) if err != nil { - panic("Reading TAP:" + err.Error()) + panic("Reading TUN/TAP:" + err.Error()) } tap.Sink <- buf[:n] }