Style: code style

This commit is contained in:
yaling888
2022-03-15 02:55:06 +08:00
parent 5abd03e241
commit 20b66d9550
20 changed files with 110 additions and 109 deletions

View File

@ -6,6 +6,7 @@ import (
"fmt"
"runtime"
"github.com/Dreamacro/clash/common/pool"
"github.com/Dreamacro/clash/listener/tun/device"
"github.com/Dreamacro/clash/listener/tun/device/iobased"
@ -19,6 +20,7 @@ type TUN struct {
mtu uint32
name string
offset int
buff []byte
}
func Open(name string, mtu uint32) (_ device.Device, err error) {
@ -37,7 +39,12 @@ func Open(name string, mtu uint32) (_ device.Device, err error) {
defaultMTU = 0 /* auto */
}
t := &TUN{name: name, mtu: mtu, offset: offset}
t := &TUN{
name: name,
mtu: mtu,
offset: offset,
buff: make([]byte, offset+pool.RelayBufferSize),
}
forcedMTU := defaultMTU
if t.mtu > 0 {
@ -64,14 +71,14 @@ func (t *TUN) Read(packet []byte) (int, error) {
return t.nt.Read(packet, t.offset)
}
buff := make([]byte, t.offset+cap(packet))
n, err := t.nt.Read(buff, t.offset)
n, err := t.nt.Read(t.buff, t.offset)
if err != nil {
return 0, err
}
copy(packet, buff[t.offset:t.offset+n])
_ = t.buff[:t.offset]
copy(packet, t.buff[t.offset:t.offset+n])
return n, err
}

View File

@ -5,7 +5,7 @@ import (
"net"
)
var ROUTES = []string{"1.0.0.0/8", "2.0.0.0/7", "4.0.0.0/6", "8.0.0.0/5", "16.0.0.0/4", "32.0.0.0/3", "64.0.0.0/2", "128.0.0.0/1"}
var Routes = []string{"1.0.0.0/8", "2.0.0.0/7", "4.0.0.0/6", "8.0.0.0/5", "16.0.0.0/4", "32.0.0.0/3", "64.0.0.0/2", "128.0.0.0/1"}
func IPv4MaskString(bits int) string {
m := net.CIDRMask(bits, 32)

View File

@ -43,7 +43,7 @@ func ConfigInterfaceAddress(dev device.Device, addr netip.Prefix, forceMTU int,
}
func configInterfaceRouting(interfaceName string, addr netip.Prefix) error {
routes := append(ROUTES, addr.String())
routes := append(Routes, addr.String())
for _, route := range routes {
if err := execRouterCmd("add", "-inet", route, interfaceName); err != nil {

View File

@ -36,7 +36,7 @@ func ConfigInterfaceAddress(dev device.Device, addr netip.Prefix, forceMTU int,
func configInterfaceRouting(interfaceName string, addr netip.Prefix) error {
linkIP := addr.Masked().Addr().Next()
for _, route := range ROUTES {
for _, route := range Routes {
if err := execRouterCmd("add", route, interfaceName, linkIP.String()); err != nil {
return err
}

View File

@ -26,8 +26,8 @@ func GetAutoDetectInterface() (string, error) {
func ConfigInterfaceAddress(dev device.Device, addr netip.Prefix, forceMTU int, autoRoute bool) error {
retryOnFailure := StartedAtBoot()
tryTimes := 0
startOver:
var err error
startOver:
if tryTimes > 0 {
log.Infoln("Retrying interface configuration after failure because system just booted (T+%v): %v", windows.DurationSinceBoot(), err)
time.Sleep(time.Second)
@ -35,12 +35,8 @@ startOver:
}
tryTimes++
luid := winipcfg.LUID(dev.(*tun.TUN).LUID())
if guid, err1 := luid.GUID(); err1 == nil {
log.Infoln("[wintun]: tun adapter GUID: %s", guid.String())
}
var (
luid = winipcfg.LUID(dev.(*tun.TUN).LUID())
ip = addr.Masked().Addr().Next()
addresses = []netip.Prefix{netip.PrefixFrom(ip, addr.Bits())}
@ -82,8 +78,12 @@ startOver:
foundDefault6 := false
if autoRoute {
var allowedIPs []netip.Prefix
routeArr := ROUTES
var (
allowedIPs []netip.Prefix
// add default
routeArr = []string{"0.0.0.0/0"}
)
for _, route := range routeArr {
allowedIPs = append(allowedIPs, netip.MustParsePrefix(route))
@ -117,7 +117,7 @@ startOver:
deduplicatedRoutes = append(deduplicatedRoutes, &r)
}
// append the gateway
// add gateway
deduplicatedRoutes = append(deduplicatedRoutes, &winipcfg.RouteData{
Destination: addr.Masked(),
NextHop: addr.Addr(),
@ -221,7 +221,7 @@ func cleanupAddressesOnDisconnectedInterfaces(family winipcfg.AddressFamily, add
if ip, _ := netip.AddrFromSlice(address.Address.IP()); addrHash[ip] {
prefix := netip.PrefixFrom(ip, int(address.OnLinkPrefixLength))
log.Infoln("Cleaning up stale address %s from interface %s", prefix.String(), iface.FriendlyName())
iface.LUID.DeleteIPAddress(prefix)
_ = iface.LUID.DeleteIPAddress(prefix)
}
}
}

View File

@ -5,6 +5,7 @@ import (
"net"
"net/netip"
"github.com/Dreamacro/clash/common/pool"
"github.com/Dreamacro/clash/listener/tun/ipstack/system/mars/tcpip"
)
@ -26,7 +27,7 @@ func Start(
udp := &UDP{
calls: map[*call]struct{}{},
device: device,
buf: [65535]byte{},
buf: [pool.UDPBufferSize]byte{},
}
tcp := &TCP{
listener: listener,
@ -40,7 +41,7 @@ func Start(
defer tcp.Close()
defer udp.Close()
buf := make([]byte, 65535)
buf := make([]byte, pool.RelayBufferSize)
for {
n, err := device.Read(buf)
@ -137,7 +138,6 @@ func Start(
t.SetSourcePort(port)
t.SetDestinationPort(gatewayPort)
ip.DecTimeToLive()
ip.ResetChecksum()
t.ResetChecksum(ip.PseudoSum())
@ -164,7 +164,6 @@ func Start(
ip.SetSourceIP(destination)
ip.SetDestinationIP(source)
ip.DecTimeToLive()
ip.ResetChecksum()
i.ResetChecksum()
@ -183,7 +182,6 @@ func Start(
ip.SetSourceIP(destination)
ip.SetDestinationIP(source)
ip.DecTimeToLive()
ip.ResetChecksum()
i.ResetChecksum(ip.PseudoSum())

View File

@ -7,6 +7,7 @@ import (
"net/netip"
"sync"
"github.com/Dreamacro/clash/common/pool"
"github.com/Dreamacro/clash/listener/tun/ipstack/system/mars/tcpip"
)
@ -24,7 +25,7 @@ type UDP struct {
calls map[*call]struct{}
device io.Writer
bufLock sync.Mutex
buf [65535]byte
buf [pool.UDPBufferSize]byte
}
func (u *UDP) ReadFrom(buf []byte) (int, net.Addr, net.Addr, error) {

View File

@ -23,22 +23,24 @@ import (
// New TunAdapter
func New(tunConf *config.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- *inbound.PacketAdapter) (ipstack.Stack, error) {
devName := tunConf.Device
var (
tunAddress = netip.MustParsePrefix("198.18.255.254/16")
devName = tunConf.Device
stackType = tunConf.Stack
autoRoute = tunConf.AutoRoute
mtu = 9000
tunDevice device.Device
tunStack ipstack.Stack
err error
)
if devName == "" {
devName = generateDeviceName()
}
tunAddress := netip.MustParsePrefix("198.18.255.254/16")
autoRoute := tunConf.AutoRoute
stackType := tunConf.Stack
mtu := 9000
var tunDevice device.Device
var tunStack ipstack.Stack
var err error
// new tun device
// open tun device
tunDevice, err = parseDevice(devName, uint32(mtu))
if err != nil {
return nil, fmt.Errorf("can't open tun: %w", err)
@ -58,7 +60,8 @@ func New(tunConf *config.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- *inbound.
DNSAdds: tunConf.DNSHijack,
TCPIn: tcpIn, UDPIn: udpIn,
},
gvisor.WithDefault())
gvisor.WithDefault(),
)
if err != nil {
_ = tunDevice.Close()
@ -68,7 +71,7 @@ func New(tunConf *config.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- *inbound.
err = tunDevice.UseIOBased()
if err != nil {
_ = tunDevice.Close()
return nil, fmt.Errorf("can't attach endpoint to tun: %w", err)
return nil, fmt.Errorf("can't New system stack: %w", err)
}
tunStack, err = system.New(tunDevice, tunConf.DNSHijack, tunAddress, tcpIn, udpIn)
@ -77,7 +80,7 @@ func New(tunConf *config.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- *inbound.
return nil, fmt.Errorf("can't New system stack: %w", err)
}
default:
// ignore it, should never happen
// never happen
}
// setting address and routing