mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-13 00:24:31 +08:00
Fix issue with netclient failing when interface doesnt exist, issue #221
This commit is contained in:
parent
80dd97455e
commit
fa5de4e777
2 changed files with 14 additions and 6 deletions
|
@ -6,6 +6,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
|
"os"
|
||||||
|
|
||||||
nodepb "github.com/gravitl/netmaker/grpc"
|
nodepb "github.com/gravitl/netmaker/grpc"
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
|
@ -226,7 +227,12 @@ func Pull(network string, manual bool) (*models.Node, error) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err = wireguard.SetWGConfig(network, true); err != nil {
|
if err = wireguard.SetWGConfig(network, true); err != nil {
|
||||||
return nil, err
|
if errors.Is(err, os.ErrNotExist) {
|
||||||
|
log.Println("readding interface")
|
||||||
|
return Pull(network, true)
|
||||||
|
} else {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setDNS(&resNode, servercfg, &cfg.Node)
|
setDNS(&resNode, servercfg, &cfg.Node)
|
||||||
|
|
|
@ -234,7 +234,7 @@ func SetWGConfig(network string, peerupdate bool) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if peerupdate {
|
if peerupdate {
|
||||||
SetPeers(nodecfg.Interface, nodecfg.PersistentKeepalive, peers)
|
err = SetPeers(nodecfg.Interface, nodecfg.PersistentKeepalive, peers)
|
||||||
} else {
|
} else {
|
||||||
err = InitWireguard(&nodecfg, privkey, peers, hasGateway, gateways)
|
err = InitWireguard(&nodecfg, privkey, peers, hasGateway, gateways)
|
||||||
}
|
}
|
||||||
|
@ -245,22 +245,22 @@ func SetWGConfig(network string, peerupdate bool) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
|
func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
||||||
|
|
||||||
client, err := wgctrl.New()
|
client, err := wgctrl.New()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("failed to start wgctrl")
|
log.Println("failed to start wgctrl")
|
||||||
return
|
return err
|
||||||
}
|
}
|
||||||
device, err := client.Device(iface)
|
device, err := client.Device(iface)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("failed to parse interface")
|
log.Println("failed to parse interface")
|
||||||
return
|
return err
|
||||||
}
|
}
|
||||||
devicePeers := device.Peers
|
devicePeers := device.Peers
|
||||||
if len(devicePeers) > 1 && len(peers) == 0 {
|
if len(devicePeers) > 1 && len(peers) == 0 {
|
||||||
log.Println("no peers pulled")
|
log.Println("no peers pulled")
|
||||||
return
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, peer := range peers {
|
for _, peer := range peers {
|
||||||
|
@ -316,6 +316,8 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func StorePrivKey(key string, network string) error {
|
func StorePrivKey(key string, network string) error {
|
||||||
|
|
Loading…
Add table
Reference in a new issue