mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2025-02-23 01:13:15 +08:00
chore: don't start UpdateMonitor when AutoRoute not enabled
This commit is contained in:
parent
89b9438fc0
commit
f8557f5fd8
@ -132,7 +132,7 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
|
|||||||
if options.GSOMaxSize == 0 {
|
if options.GSOMaxSize == 0 {
|
||||||
options.GSOMaxSize = 65536
|
options.GSOMaxSize = 65536
|
||||||
}
|
}
|
||||||
if !supportRedirect {
|
if !supportRedirect || !options.AutoRoute {
|
||||||
options.AutoRedirect = false
|
options.AutoRedirect = false
|
||||||
}
|
}
|
||||||
tunName := options.Device
|
tunName := options.Device
|
||||||
@ -264,31 +264,35 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
|
|||||||
|
|
||||||
interfaceFinder := DefaultInterfaceFinder
|
interfaceFinder := DefaultInterfaceFinder
|
||||||
|
|
||||||
networkUpdateMonitor, err := tun.NewNetworkUpdateMonitor(log.SingLogger)
|
var networkUpdateMonitor tun.NetworkUpdateMonitor
|
||||||
if err != nil {
|
var defaultInterfaceMonitor tun.DefaultInterfaceMonitor
|
||||||
err = E.Cause(err, "create NetworkUpdateMonitor")
|
if options.AutoRoute { // don't start NetworkUpdateMonitor because netlink banned by google on Android14+
|
||||||
return
|
networkUpdateMonitor, err = tun.NewNetworkUpdateMonitor(log.SingLogger)
|
||||||
}
|
if err != nil {
|
||||||
l.networkUpdateMonitor = networkUpdateMonitor
|
err = E.Cause(err, "create NetworkUpdateMonitor")
|
||||||
err = networkUpdateMonitor.Start()
|
return
|
||||||
if err != nil {
|
}
|
||||||
err = E.Cause(err, "start NetworkUpdateMonitor")
|
l.networkUpdateMonitor = networkUpdateMonitor
|
||||||
return
|
err = networkUpdateMonitor.Start()
|
||||||
}
|
if err != nil {
|
||||||
|
err = E.Cause(err, "start NetworkUpdateMonitor")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
defaultInterfaceMonitor, err := tun.NewDefaultInterfaceMonitor(networkUpdateMonitor, log.SingLogger, tun.DefaultInterfaceMonitorOptions{OverrideAndroidVPN: true})
|
defaultInterfaceMonitor, err = tun.NewDefaultInterfaceMonitor(networkUpdateMonitor, log.SingLogger, tun.DefaultInterfaceMonitorOptions{OverrideAndroidVPN: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = E.Cause(err, "create DefaultInterfaceMonitor")
|
err = E.Cause(err, "create DefaultInterfaceMonitor")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
l.defaultInterfaceMonitor = defaultInterfaceMonitor
|
l.defaultInterfaceMonitor = defaultInterfaceMonitor
|
||||||
defaultInterfaceMonitor.RegisterCallback(func(event int) {
|
defaultInterfaceMonitor.RegisterCallback(func(event int) {
|
||||||
l.FlushDefaultInterface()
|
l.FlushDefaultInterface()
|
||||||
})
|
})
|
||||||
err = defaultInterfaceMonitor.Start()
|
err = defaultInterfaceMonitor.Start()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = E.Cause(err, "start DefaultInterfaceMonitor")
|
err = E.Cause(err, "start DefaultInterfaceMonitor")
|
||||||
return
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tunOptions := tun.Options{
|
tunOptions := tun.Options{
|
||||||
@ -331,7 +335,7 @@ func New(options LC.Tun, tunnel C.Tunnel, additions ...inbound.Addition) (l *Lis
|
|||||||
Context: ctx,
|
Context: ctx,
|
||||||
Handler: handler.TypeMutation(C.REDIR),
|
Handler: handler.TypeMutation(C.REDIR),
|
||||||
Logger: log.SingLogger,
|
Logger: log.SingLogger,
|
||||||
NetworkMonitor: networkUpdateMonitor,
|
NetworkMonitor: l.networkUpdateMonitor,
|
||||||
InterfaceFinder: interfaceFinder,
|
InterfaceFinder: interfaceFinder,
|
||||||
TableName: "mihomo",
|
TableName: "mihomo",
|
||||||
DisableNFTables: dErr == nil && disableNFTables,
|
DisableNFTables: dErr == nil && disableNFTables,
|
||||||
@ -489,7 +493,7 @@ func (l *Listener) updateRule(ruleProvider provider.RuleProvider, exclude bool,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *Listener) FlushDefaultInterface() {
|
func (l *Listener) FlushDefaultInterface() {
|
||||||
if l.options.AutoDetectInterface {
|
if l.options.AutoDetectInterface && l.defaultInterfaceMonitor != nil {
|
||||||
for _, destination := range []netip.Addr{netip.IPv4Unspecified(), netip.IPv6Unspecified(), netip.MustParseAddr("1.1.1.1")} {
|
for _, destination := range []netip.Addr{netip.IPv4Unspecified(), netip.IPv6Unspecified(), netip.MustParseAddr("1.1.1.1")} {
|
||||||
autoDetectInterfaceName := l.defaultInterfaceMonitor.DefaultInterfaceName(destination)
|
autoDetectInterfaceName := l.defaultInterfaceMonitor.DefaultInterfaceName(destination)
|
||||||
if autoDetectInterfaceName == l.tunName {
|
if autoDetectInterfaceName == l.tunName {
|
||||||
|
Loading…
Reference in New Issue
Block a user