Add DefaultInterfaceMonitor.MyInterface
This commit is contained in:
parent
2121bc3f01
commit
f57754918d
5 changed files with 19 additions and 2 deletions
|
|
@ -30,6 +30,8 @@ type DefaultInterfaceMonitor interface {
|
||||||
AndroidVPNEnabled() bool
|
AndroidVPNEnabled() bool
|
||||||
RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback]
|
RegisterCallback(callback DefaultInterfaceUpdateCallback) *list.Element[DefaultInterfaceUpdateCallback]
|
||||||
UnregisterCallback(element *list.Element[DefaultInterfaceUpdateCallback])
|
UnregisterCallback(element *list.Element[DefaultInterfaceUpdateCallback])
|
||||||
|
RegisterMyInterface(interfaceName string)
|
||||||
|
MyInterface() string
|
||||||
}
|
}
|
||||||
|
|
||||||
type DefaultInterfaceMonitorOptions struct {
|
type DefaultInterfaceMonitorOptions struct {
|
||||||
|
|
|
||||||
|
|
@ -42,11 +42,12 @@ type defaultInterfaceMonitor struct {
|
||||||
androidVPNEnabled bool
|
androidVPNEnabled bool
|
||||||
noRoute bool
|
noRoute bool
|
||||||
networkMonitor NetworkUpdateMonitor
|
networkMonitor NetworkUpdateMonitor
|
||||||
|
logger logger.Logger
|
||||||
checkUpdateTimer *time.Timer
|
checkUpdateTimer *time.Timer
|
||||||
element *list.Element[NetworkUpdateCallback]
|
element *list.Element[NetworkUpdateCallback]
|
||||||
access sync.Mutex
|
access sync.Mutex
|
||||||
callbacks list.List[DefaultInterfaceUpdateCallback]
|
callbacks list.List[DefaultInterfaceUpdateCallback]
|
||||||
logger logger.Logger
|
myInterface string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDefaultInterfaceMonitor(networkMonitor NetworkUpdateMonitor, logger logger.Logger, options DefaultInterfaceMonitorOptions) (DefaultInterfaceMonitor, error) {
|
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)
|
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 {
|
func (t *NativeTun) Start() error {
|
||||||
|
t.options.InterfaceMonitor.RegisterMyInterface(t.options.Name)
|
||||||
return t.setRoutes()
|
return t.setRoutes()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,7 @@ func (t *NativeTun) Start() error {
|
||||||
if t.options.FileDescriptor != 0 {
|
if t.options.FileDescriptor != 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
t.options.InterfaceMonitor.RegisterMyInterface(t.options.Name)
|
||||||
tunLink, err := netlink.LinkByName(t.options.Name)
|
tunLink, err := netlink.LinkByName(t.options.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,7 @@ func (t *NativeTun) Name() (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *NativeTun) Start() error {
|
func (t *NativeTun) Start() error {
|
||||||
|
t.options.InterfaceMonitor.RegisterMyInterface(t.options.Name)
|
||||||
if !t.options.AutoRoute {
|
if !t.options.AutoRoute {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue