mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 20:22:44 +08:00 
			
		
		
		
	Fix issue with netclient failing when interface doesnt exist, issue #221
This commit is contained in:
		| @@ -6,6 +6,7 @@ import ( | ||||
| 	"errors" | ||||
| 	"log" | ||||
| 	"strings" | ||||
| 	"os" | ||||
|  | ||||
| 	nodepb "github.com/gravitl/netmaker/grpc" | ||||
| 	"github.com/gravitl/netmaker/models" | ||||
| @@ -226,7 +227,12 @@ func Pull(network string, manual bool) (*models.Node, error) { | ||||
| 		} | ||||
| 	} else { | ||||
| 		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) | ||||
|   | ||||
| @@ -234,7 +234,7 @@ func SetWGConfig(network string, peerupdate bool) error { | ||||
| 		return err | ||||
| 	} | ||||
| 	if peerupdate { | ||||
| 		SetPeers(nodecfg.Interface, nodecfg.PersistentKeepalive, peers) | ||||
| 		err = SetPeers(nodecfg.Interface, nodecfg.PersistentKeepalive, peers) | ||||
| 	} else { | ||||
| 		err = InitWireguard(&nodecfg, privkey, peers, hasGateway, gateways) | ||||
| 	} | ||||
| @@ -245,22 +245,22 @@ func SetWGConfig(network string, peerupdate bool) error { | ||||
| 	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() | ||||
| 	if err != nil { | ||||
| 		log.Println("failed to start wgctrl") | ||||
| 		return | ||||
| 		return err | ||||
| 	} | ||||
| 	device, err := client.Device(iface) | ||||
| 	if err != nil { | ||||
| 		log.Println("failed to parse interface") | ||||
| 		return | ||||
| 		return err | ||||
| 	} | ||||
| 	devicePeers := device.Peers | ||||
| 	if len(devicePeers) > 1 && len(peers) == 0 { | ||||
| 		log.Println("no peers pulled") | ||||
| 		return | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	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 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Emika
					Emika