mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-06 01:07:03 +08:00
Chore(tun): remove with options
This commit is contained in:
@@ -1,15 +0,0 @@
|
|||||||
package tun
|
|
||||||
|
|
||||||
type Option func(*TUN)
|
|
||||||
|
|
||||||
func WithName(name string) Option {
|
|
||||||
return func(t *TUN) {
|
|
||||||
t.name = name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func WithMTU(mtu uint32) Option {
|
|
||||||
return func(t *TUN) {
|
|
||||||
t.mtu = mtu
|
|
||||||
}
|
|
||||||
}
|
|
@@ -23,12 +23,8 @@ type TUN struct {
|
|||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
func Open(opts ...Option) (device.Device, error) {
|
func Open(name string, mtu uint32) (device.Device, error) {
|
||||||
t := &TUN{}
|
t := &TUN{name: name, mtu: mtu}
|
||||||
|
|
||||||
for _, opt := range opts {
|
|
||||||
opt(t)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(t.name) >= unix.IFNAMSIZ {
|
if len(t.name) >= unix.IFNAMSIZ {
|
||||||
return nil, fmt.Errorf("interface name too long: %s", t.name)
|
return nil, fmt.Errorf("interface name too long: %s", t.name)
|
||||||
@@ -46,11 +42,11 @@ func Open(opts ...Option) (device.Device, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mtu, err := rawfile.GetMTU(t.name)
|
_mtu, err := rawfile.GetMTU(t.name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("get mtu: %w", err)
|
return nil, fmt.Errorf("get mtu: %w", err)
|
||||||
}
|
}
|
||||||
t.mtu = mtu
|
t.mtu = _mtu
|
||||||
|
|
||||||
ep, err := fdbased.New(&fdbased.Options{
|
ep, err := fdbased.New(&fdbased.Options{
|
||||||
MTU: t.mtu,
|
MTU: t.mtu,
|
||||||
|
@@ -19,12 +19,8 @@ type TUN struct {
|
|||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
func Open(opts ...Option) (device.Device, error) {
|
func Open(name string, mtu uint32) (device.Device, error) {
|
||||||
t := &TUN{}
|
t := &TUN{name: name, mtu: mtu}
|
||||||
|
|
||||||
for _, opt := range opts {
|
|
||||||
opt(t)
|
|
||||||
}
|
|
||||||
|
|
||||||
forcedMTU := defaultMTU
|
forcedMTU := defaultMTU
|
||||||
if t.mtu > 0 {
|
if t.mtu > 0 {
|
||||||
@@ -37,11 +33,11 @@ func Open(opts ...Option) (device.Device, error) {
|
|||||||
}
|
}
|
||||||
t.nt = nt.(*tun.NativeTun)
|
t.nt = nt.(*tun.NativeTun)
|
||||||
|
|
||||||
mtu, err := nt.MTU()
|
_mtu, err := nt.MTU()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("get mtu: %w", err)
|
return nil, fmt.Errorf("get mtu: %w", err)
|
||||||
}
|
}
|
||||||
t.mtu = uint32(mtu)
|
t.mtu = uint32(_mtu)
|
||||||
|
|
||||||
ep, err := rwbased.New(t, t.mtu)
|
ep, err := rwbased.New(t, t.mtu)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@@ -27,7 +27,7 @@ func parseDevice(s string, mtu uint32) (device.Device, error) {
|
|||||||
|
|
||||||
switch driver {
|
switch driver {
|
||||||
case tun.Driver:
|
case tun.Driver:
|
||||||
return tun.Open(tun.WithName(name), tun.WithMTU(mtu))
|
return tun.Open(name, mtu)
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unsupported driver: %s", driver)
|
return nil, fmt.Errorf("unsupported driver: %s", driver)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user