diff --git a/tun/tun.go b/tun/tun.go index b1057ff..4b651ca 100644 --- a/tun/tun.go +++ b/tun/tun.go @@ -5,19 +5,12 @@ import ( "io" "log" "mpbl3p/proxy" - "net" "os" - "strings" - "sync" - "time" ) type SourceSink struct { tun wgtun.Device mtu int - - up bool - upMu sync.Mutex } func NewTun(name string, mtu int) (t wgtun.Device, err error) { @@ -34,46 +27,14 @@ func NewFromFile(fd uintptr, mtu int) (ss *SourceSink, err error) { } ss.mtu = mtu - - ss.upMu.Lock() - go func() { - defer ss.upMu.Unlock() - - for { - tunName, err := ss.tun.Name() - if err != nil { - panic(err) - } - iface, err := net.InterfaceByName(tunName) - if err != nil { - panic(err) - } - - if strings.Contains(iface.Flags.String(), "up") { - log.Println("tun is up") - ss.up = true - return - } - time.Sleep(100 * time.Millisecond) - } - }() - return } func (t *SourceSink) Close() error { - t.upMu.Lock() - t.up = false - return t.tun.Close() } func (t *SourceSink) Source() (proxy.Packet, error) { - if !t.up { - t.upMu.Lock() - t.upMu.Unlock() - } - buf := make([]byte, t.mtu) read, err := t.tun.Read(buf, 4) @@ -85,17 +46,12 @@ func (t *SourceSink) Source() (proxy.Packet, error) { return nil, io.EOF } - return proxy.SimplePacket(buf[:read]), nil + return proxy.SimplePacket(buf[4:read]), nil } var good, bad float64 func (t *SourceSink) Sink(packet proxy.Packet) error { - if !t.up { - t.upMu.Lock() - t.upMu.Unlock() - } - _, err := t.tun.Write(packet.Contents(), 4) if err != nil { switch err.(type) {