mirror of
https://github.com/SagerNet/sing-tun.git
synced 2025-10-05 08:37:03 +08:00
Add DefaultInterfaceMonitor.MyInterface
This commit is contained in:
@@ -30,6 +30,8 @@ type DefaultInterfaceMonitor interface {
|
||||
AndroidVPNEnabled() bool
|
||||
RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback]
|
||||
UnregisterCallback(element *list.Element[DefaultInterfaceUpdateCallback])
|
||||
RegisterMyInterface(interfaceName string)
|
||||
MyInterface() string
|
||||
}
|
||||
|
||||
type DefaultInterfaceMonitorOptions struct {
|
||||
|
@@ -42,11 +42,12 @@ type defaultInterfaceMonitor struct {
|
||||
androidVPNEnabled bool
|
||||
noRoute bool
|
||||
networkMonitor NetworkUpdateMonitor
|
||||
logger logger.Logger
|
||||
checkUpdateTimer *time.Timer
|
||||
element *list.Element[NetworkUpdateCallback]
|
||||
access sync.Mutex
|
||||
callbacks list.List[DefaultInterfaceUpdateCallback]
|
||||
logger logger.Logger
|
||||
myInterface string
|
||||
}
|
||||
|
||||
func NewDefaultInterfaceMonitor(networkMonitor NetworkUpdateMonitor, logger logger.Logger, options DefaultInterfaceMonitorOptions) (DefaultInterfaceMonitor, error) {
|
||||
@@ -132,3 +133,15 @@ func (m *defaultInterfaceMonitor) emit(defaultInterface *control.Interface, flag
|
||||
callback(defaultInterface, flags)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultInterfaceMonitor) RegisterMyInterface(interfaceName string) {
|
||||
m.access.Lock()
|
||||
defer m.access.Unlock()
|
||||
m.myInterface = interfaceName
|
||||
}
|
||||
|
||||
func (m *defaultInterfaceMonitor) MyInterface() string {
|
||||
m.access.Lock()
|
||||
defer m.access.Unlock()
|
||||
return m.myInterface
|
||||
}
|
||||
|
@@ -82,6 +82,7 @@ func New(options Options) (Tun, error) {
|
||||
}
|
||||
|
||||
func (t *NativeTun) Start() error {
|
||||
t.options.InterfaceMonitor.RegisterMyInterface(t.options.Name)
|
||||
return t.setRoutes()
|
||||
}
|
||||
|
||||
|
@@ -264,7 +264,7 @@ func (t *NativeTun) Start() error {
|
||||
if t.options.FileDescriptor != 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
t.options.InterfaceMonitor.RegisterMyInterface(t.options.Name)
|
||||
tunLink, err := netlink.LinkByName(t.options.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -163,6 +163,7 @@ func (t *NativeTun) Name() (string, error) {
|
||||
}
|
||||
|
||||
func (t *NativeTun) Start() error {
|
||||
t.options.InterfaceMonitor.RegisterMyInterface(t.options.Name)
|
||||
if !t.options.AutoRoute {
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user