mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 00:43:58 +08:00
update logic for determing when to check for free port
This commit is contained in:
@@ -23,7 +23,7 @@ func GetLocalListenPort(ifacename string) (int32, error) {
|
|||||||
defer client.Close()
|
defer client.Close()
|
||||||
device, err := client.Device(ifacename)
|
device, err := client.Device(ifacename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Log(0, "failed to parse interface")
|
logger.Log(0, "failed to parse interface", ifacename)
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
return int32(device.ListenPort), nil
|
return int32(device.ListenPort), nil
|
||||||
@@ -35,7 +35,7 @@ func UpdateLocalListenPort(nodeCfg *config.ClientConfig) error {
|
|||||||
ifacename := getRealIface(nodeCfg.Node.Interface, nodeCfg.Node.Address)
|
ifacename := getRealIface(nodeCfg.Node.Interface, nodeCfg.Node.Address)
|
||||||
localPort, err := GetLocalListenPort(ifacename)
|
localPort, err := GetLocalListenPort(ifacename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Log(1, "error encountered checking local listen port: ", err.Error())
|
logger.Log(1, "error encountered checking local listen port: ", ifacename, err.Error())
|
||||||
} else if nodeCfg.Node.LocalListenPort != localPort && localPort != 0 {
|
} else if nodeCfg.Node.LocalListenPort != localPort && localPort != 0 {
|
||||||
logger.Log(1, "local port has changed from ", strconv.Itoa(int(nodeCfg.Node.LocalListenPort)), " to ", strconv.Itoa(int(localPort)))
|
logger.Log(1, "local port has changed from ", strconv.Itoa(int(nodeCfg.Node.LocalListenPort)), " to ", strconv.Itoa(int(localPort)))
|
||||||
nodeCfg.Node.LocalListenPort = localPort
|
nodeCfg.Node.LocalListenPort = localPort
|
||||||
|
@@ -34,7 +34,7 @@ func UpdateLocalListenPort(nodeCfg *config.ClientConfig) error {
|
|||||||
var err error
|
var err error
|
||||||
localPort, err := GetLocalListenPort(nodeCfg.Node.Interface)
|
localPort, err := GetLocalListenPort(nodeCfg.Node.Interface)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Log(1, "error encountered checking local listen port: ", err.Error())
|
logger.Log(1, "error encountered checking local listen port for interface : ",nodeCfg.Node.Interface err.Error())
|
||||||
} else if nodeCfg.Node.LocalListenPort != localPort && localPort != 0 {
|
} else if nodeCfg.Node.LocalListenPort != localPort && localPort != 0 {
|
||||||
logger.Log(1, "local port has changed from ", strconv.Itoa(int(nodeCfg.Node.LocalListenPort)), " to ", strconv.Itoa(int(localPort)))
|
logger.Log(1, "local port has changed from ", strconv.Itoa(int(nodeCfg.Node.LocalListenPort)), " to ", strconv.Itoa(int(localPort)))
|
||||||
nodeCfg.Node.LocalListenPort = localPort
|
nodeCfg.Node.LocalListenPort = localPort
|
||||||
|
@@ -106,12 +106,17 @@ func NodeUpdate(client mqtt.Client, msg mqtt.Message) {
|
|||||||
file := ncutils.GetNetclientPathSpecific() + nodeCfg.Node.Interface + ".conf"
|
file := ncutils.GetNetclientPathSpecific() + nodeCfg.Node.Interface + ".conf"
|
||||||
|
|
||||||
if ifaceDelta { // if a change caused an ifacedelta we need to notify the server to update the peers
|
if ifaceDelta { // if a change caused an ifacedelta we need to notify the server to update the peers
|
||||||
err = ncutils.ModPort(&newNode)
|
if newNode.ListenPort != nodeCfg.Node.LocalListenPort {
|
||||||
if err != nil {
|
if err := wireguard.RemoveConf(newNode.Interface, false); err != nil {
|
||||||
logger.Log(0, "error modifying node port on", newNode.Name, "-", err.Error())
|
logger.Log(0, "error remove interface", newNode.Interface, err.Error())
|
||||||
return
|
}
|
||||||
|
err = ncutils.ModPort(&newNode)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(0, "error modifying node port on", newNode.Name, "-", err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
informPortChange(&newNode)
|
||||||
}
|
}
|
||||||
informPortChange(&newNode)
|
|
||||||
if err := wireguard.UpdateWgInterface(file, privateKey, nameserver, newNode); err != nil {
|
if err := wireguard.UpdateWgInterface(file, privateKey, nameserver, newNode); err != nil {
|
||||||
logger.Log(0, "error updating wireguard config "+err.Error())
|
logger.Log(0, "error updating wireguard config "+err.Error())
|
||||||
return
|
return
|
||||||
|
@@ -62,7 +62,10 @@ func Pull(network string, iface bool) (*models.Node, error) {
|
|||||||
logger.Log(0, "unable to update server config: "+err.Error())
|
logger.Log(0, "unable to update server config: "+err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if nodeGET.Node.ListenPort != cfg.Node.ListenPort {
|
if nodeGET.Node.ListenPort != cfg.Node.LocalListenPort {
|
||||||
|
if err := wireguard.RemoveConf(resNode.Interface, false); err != nil {
|
||||||
|
logger.Log(0, "error remove interface", resNode.Interface, err.Error())
|
||||||
|
}
|
||||||
err = ncutils.ModPort(&resNode)
|
err = ncutils.ModPort(&resNode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@@ -548,7 +548,7 @@ func GetDevicePeers(iface string) ([]wgtypes.Peer, error) {
|
|||||||
defer client.Close()
|
defer client.Close()
|
||||||
device, err := client.Device(iface)
|
device, err := client.Device(iface)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Log(0, "failed to parse interface")
|
logger.Log(0, "failed to parse interface", iface)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return device.Peers, nil
|
return device.Peers, nil
|
||||||
|
Reference in New Issue
Block a user