diff --git a/iface/iface_create.go b/iface/iface_create.go index cfc555f2e..f389019ed 100644 --- a/iface/iface_create.go +++ b/iface/iface_create.go @@ -1,4 +1,4 @@ -//go:build !android +//go:build (!android && !darwin) || ios package iface diff --git a/iface/iface_darwin.go b/iface/iface_darwin.go index 15e4a7817..f48f324c3 100644 --- a/iface/iface_darwin.go +++ b/iface/iface_darwin.go @@ -4,7 +4,9 @@ package iface import ( "fmt" + "time" + "github.com/cenkalti/backoff/v4" "github.com/pion/transport/v3" "github.com/netbirdio/netbird/iface/bind" @@ -36,3 +38,29 @@ func NewWGIFace(iFaceName string, address string, wgPort int, wgPrivKey string, func (w *WGIface) CreateOnAndroid([]string, string, []string) error { return fmt.Errorf("this function has not implemented on this platform") } + +// Create creates a new Wireguard interface, sets a given IP and brings it up. +// Will reuse an existing one. +// this function is different on Android +func (w *WGIface) Create() error { + w.mu.Lock() + defer w.mu.Unlock() + + backOff := &backoff.ExponentialBackOff{ + InitialInterval: 20 * time.Millisecond, + MaxElapsedTime: 500 * time.Millisecond, + Stop: backoff.Stop, + Clock: backoff.SystemClock, + } + + operation := func() error { + cfgr, err := w.tun.Create() + if err != nil { + return err + } + w.configurer = cfgr + return nil + } + + return backoff.Retry(operation, backOff) +} diff --git a/management/server/peer.go b/management/server/peer.go index 5fc6352ee..26e27617d 100644 --- a/management/server/peer.go +++ b/management/server/peer.go @@ -550,8 +550,6 @@ func (am *DefaultAccountManager) SyncPeer(ctx context.Context, sync PeerSync, ac } if peer.UserID != "" { - log.Infof("Peer has no userID") - user, err := account.FindUser(peer.UserID) if err != nil { return nil, nil, nil, err