From 8adce0ea02a97629d2755f795878019329d883cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 25 Sep 2023 17:15:15 +0800 Subject: [PATCH] android: Check netlink available on monitor create --- monitor_linux.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/monitor_linux.go b/monitor_linux.go index 50885d9..33b5308 100644 --- a/monitor_linux.go +++ b/monitor_linux.go @@ -2,6 +2,7 @@ package tun import ( "os" + "runtime" "sync" "github.com/sagernet/netlink" @@ -20,12 +21,19 @@ type networkUpdateMonitor struct { } func NewNetworkUpdateMonitor(logger logger.Logger) (NetworkUpdateMonitor, error) { - return &networkUpdateMonitor{ + monitor := &networkUpdateMonitor{ routeUpdate: make(chan netlink.RouteUpdate, 2), linkUpdate: make(chan netlink.LinkUpdate, 2), close: make(chan struct{}), logger: logger, - }, nil + } + if runtime.GOOS == "android" { + _, err := netlink.LinkList() + if err != nil { + return nil, err + } + } + return monitor, nil } func (m *networkUpdateMonitor) Start() error {