diff --git a/client/internal/connect.go b/client/internal/connect.go index 747146d10..d4d17e30b 100644 --- a/client/internal/connect.go +++ b/client/internal/connect.go @@ -43,12 +43,12 @@ func RunClientMobile(ctx context.Context, config *Config, statusRecorder *peer.S return runClient(ctx, config, statusRecorder, mobileDependency) } -func RunClientiOS(ctx context.Context, config *Config, statusRecorder *peer.Status, fileDescriptor int32, routeListener routemanager.RouteListener, dnsManager dns.IosDnsManager, interfaceName string) error { +func RunClientiOS(ctx context.Context, config *Config, statusRecorder *peer.Status, fileDescriptor int32, networkChangeListener listener.NetworkChangeListener, dnsManager dns.IosDnsManager, interfaceName string) error { mobileDependency := MobileDependency{ - FileDescriptor: fileDescriptor, - InterfaceName: interfaceName, - RouteListener: routeListener, - DnsManager: dnsManager, + FileDescriptor: fileDescriptor, + InterfaceName: interfaceName, + NetworkChangeListener: networkChangeListener, + DnsManager: dnsManager, } return runClient(ctx, config, statusRecorder, mobileDependency) } diff --git a/client/internal/dns/notifier.go b/client/internal/dns/notifier.go index 85c270e58..35cb6ff82 100644 --- a/client/internal/dns/notifier.go +++ b/client/internal/dns/notifier.go @@ -52,6 +52,6 @@ func (n *notifier) notify() { } go func(l listener.NetworkChangeListener) { - l.OnNetworkChanged() + l.OnNetworkChanged("") }(n.listener) } diff --git a/client/internal/dns/server.go b/client/internal/dns/server.go index 122aae7b5..185818ed5 100644 --- a/client/internal/dns/server.go +++ b/client/internal/dns/server.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "net/netip" + "runtime" "sync" "github.com/miekg/dns" diff --git a/client/internal/listener/network_change.go b/client/internal/listener/network_change.go index ff9cb11f5..08bf5fd52 100644 --- a/client/internal/listener/network_change.go +++ b/client/internal/listener/network_change.go @@ -3,5 +3,6 @@ package listener // NetworkChangeListener is a callback interface for mobile system type NetworkChangeListener interface { // OnNetworkChanged invoke when network settings has been changed - OnNetworkChanged() + OnNetworkChanged(string) + SetInterfaceIP(string) } diff --git a/client/internal/routemanager/notifier.go b/client/internal/routemanager/notifier.go index a10c76ac0..6de1646f5 100644 --- a/client/internal/routemanager/notifier.go +++ b/client/internal/routemanager/notifier.go @@ -2,18 +2,15 @@ package routemanager import ( "sort" + "strings" "sync" + log "github.com/sirupsen/logrus" + + "github.com/netbirdio/netbird/client/internal/listener" "github.com/netbirdio/netbird/route" ) -// RouteListener is a callback interface for mobile system -// type RouteListener interface { -// // OnNewRouteSetting invoke when new route setting has been arrived -// OnNewRouteSetting(string) -// SetInterfaceIP(string) -// } - type notifier struct { initialRouteRangers []string routeRangers []string diff --git a/client/ios/NetBirdSDK/client.go b/client/ios/NetBirdSDK/client.go index c5580c8d6..8e46267d0 100644 --- a/client/ios/NetBirdSDK/client.go +++ b/client/ios/NetBirdSDK/client.go @@ -10,15 +10,15 @@ import ( "github.com/netbirdio/netbird/client/internal" "github.com/netbirdio/netbird/client/internal/auth" "github.com/netbirdio/netbird/client/internal/dns" + "github.com/netbirdio/netbird/client/internal/listener" "github.com/netbirdio/netbird/client/internal/peer" - "github.com/netbirdio/netbird/client/internal/routemanager" "github.com/netbirdio/netbird/client/system" "github.com/netbirdio/netbird/formatter" ) // RouteListener export internal RouteListener for mobile -type RouteListener interface { - routemanager.RouteListener +type NetworkChangeListener interface { + listener.NetworkChangeListener } // DnsManager export internal dns Manager for mobile @@ -39,30 +39,30 @@ func init() { // Client struct manage the life circle of background service type Client struct { - cfgFile string - recorder *peer.Status - ctxCancel context.CancelFunc - ctxCancelLock *sync.Mutex - deviceName string - osName string - osVersion string - routeListener routemanager.RouteListener - onHostDnsFn func([]string) - dnsManager dns.IosDnsManager - loginComplete bool + cfgFile string + recorder *peer.Status + ctxCancel context.CancelFunc + ctxCancelLock *sync.Mutex + deviceName string + osName string + osVersion string + networkChangeListener listener.NetworkChangeListener + onHostDnsFn func([]string) + dnsManager dns.IosDnsManager + loginComplete bool } // NewClient instantiate a new Client -func NewClient(cfgFile, deviceName string, osVersion string, osName string, routeListener RouteListener, dnsManager DnsManager) *Client { +func NewClient(cfgFile, deviceName string, osVersion string, osName string, networkChangeListener NetworkChangeListener, dnsManager DnsManager) *Client { return &Client{ - cfgFile: cfgFile, - deviceName: deviceName, - osName: osName, - osVersion: osVersion, - recorder: peer.NewRecorder(""), - ctxCancelLock: &sync.Mutex{}, - routeListener: routeListener, - dnsManager: dnsManager, + cfgFile: cfgFile, + deviceName: deviceName, + osName: osName, + osVersion: osVersion, + recorder: peer.NewRecorder(""), + ctxCancelLock: &sync.Mutex{}, + networkChangeListener: networkChangeListener, + dnsManager: dnsManager, } } @@ -98,7 +98,7 @@ func (c *Client) Run(fd int32, interfaceName string) error { // todo do not throw error in case of cancelled context ctx = internal.CtxInitState(ctx) c.onHostDnsFn = func([]string) {} - return internal.RunClientiOS(ctx, cfg, c.recorder, fd, c.routeListener, c.dnsManager, interfaceName) + return internal.RunClientiOS(ctx, cfg, c.recorder, fd, c.networkChangeListener, c.dnsManager, interfaceName) } // Stop the internal client and free the resources