diff --git a/core/device/fdbased/fd_unix.go b/core/device/fdbased/fd_unix.go index 678bf1e..56f3bc8 100644 --- a/core/device/fdbased/fd_unix.go +++ b/core/device/fdbased/fd_unix.go @@ -21,7 +21,7 @@ type FD struct { mtu uint32 } -func Open(name string, mtu uint32) (device.Device, error) { +func Open(name string, mtu uint32, offset int) (device.Device, error) { fd, err := strconv.Atoi(name) if err != nil { return nil, fmt.Errorf("cannot open fd: %s", name) @@ -29,7 +29,7 @@ func Open(name string, mtu uint32) (device.Device, error) { if mtu == 0 { mtu = defaultMTU } - return open(fd, mtu) + return open(fd, mtu, offset) } func (f *FD) Type() string { diff --git a/core/device/fdbased/fd_windows.go b/core/device/fdbased/fd_windows.go index 897108b..e9f0e0a 100644 --- a/core/device/fdbased/fd_windows.go +++ b/core/device/fdbased/fd_windows.go @@ -6,6 +6,6 @@ import ( "github.com/xjasonlyu/tun2socks/v2/core/device" ) -func Open(name string, mtu uint32) (device.Device, error) { +func Open(name string, mtu uint32, offset int) (device.Device, error) { return nil, errors.New("not supported") } diff --git a/core/device/fdbased/open_linux.go b/core/device/fdbased/open_linux.go index fc3e771..eccf6ca 100644 --- a/core/device/fdbased/open_linux.go +++ b/core/device/fdbased/open_linux.go @@ -10,7 +10,7 @@ import ( "github.com/xjasonlyu/tun2socks/v2/core/device" ) -func open(fd int, mtu uint32) (device.Device, error) { +func open(fd int, mtu uint32, offset int) (device.Device, error) { f := &FD{fd: fd, mtu: mtu} ep, err := fdbased.New(&fdbased.Options{ diff --git a/core/device/fdbased/open_others.go b/core/device/fdbased/open_others.go index bf514d9..1c1535f 100644 --- a/core/device/fdbased/open_others.go +++ b/core/device/fdbased/open_others.go @@ -10,10 +10,10 @@ import ( "github.com/xjasonlyu/tun2socks/v2/core/device/iobased" ) -func open(fd int, mtu uint32) (device.Device, error) { +func open(fd int, mtu uint32, offset int) (device.Device, error) { f := &FD{fd: fd, mtu: mtu} - ep, err := iobased.New(os.NewFile(uintptr(fd), f.Name()), mtu, 0) + ep, err := iobased.New(os.NewFile(uintptr(fd), f.Name()), mtu, offset) if err != nil { return nil, fmt.Errorf("create endpoint: %w", err) } diff --git a/engine/parse.go b/engine/parse.go index ec96d7e..bb3adc9 100644 --- a/engine/parse.go +++ b/engine/parse.go @@ -56,7 +56,7 @@ func parseDevice(s string, mtu uint32) (device.Device, error) { switch driver { case fdbased.Driver: - return fdbased.Open(name, mtu) + return fdbased.Open(name, mtu, 0) case tun.Driver: return tun.Open(name, mtu) default: