android: Check netlink available on monitor create

This commit is contained in:
世界 2023-09-25 17:15:15 +08:00
parent b6d323004e
commit 8adce0ea02
No known key found for this signature in database
GPG key ID: CD109927C34A63C4

View file

@ -2,6 +2,7 @@ package tun
import ( import (
"os" "os"
"runtime"
"sync" "sync"
"github.com/sagernet/netlink" "github.com/sagernet/netlink"
@ -20,12 +21,19 @@ type networkUpdateMonitor struct {
} }
func NewNetworkUpdateMonitor(logger logger.Logger) (NetworkUpdateMonitor, error) { func NewNetworkUpdateMonitor(logger logger.Logger) (NetworkUpdateMonitor, error) {
return &networkUpdateMonitor{ monitor := &networkUpdateMonitor{
routeUpdate: make(chan netlink.RouteUpdate, 2), routeUpdate: make(chan netlink.RouteUpdate, 2),
linkUpdate: make(chan netlink.LinkUpdate, 2), linkUpdate: make(chan netlink.LinkUpdate, 2),
close: make(chan struct{}), close: make(chan struct{}),
logger: logger, logger: logger,
}, nil }
if runtime.GOOS == "android" {
_, err := netlink.LinkList()
if err != nil {
return nil, err
}
}
return monitor, nil
} }
func (m *networkUpdateMonitor) Start() error { func (m *networkUpdateMonitor) Start() error {